The MobileFrontend extension currently tries to mimic the watchlist in core but fails due to the fact the special watchlist class mixes rendering with model generation. Ideally it should be possible to skin the data by creating this separation.
Recreating the watchlist for mobile is very wasteful.
It causes additional work for other teams (see T159793).
The Watchlist special page also handles various user preferences which are currently overlooked by the mobile version.
== Solution 1
Construct an ApiMain with a derived RequestContext
Hit the API to source the data for rendering.
Being driven by the API would also help resolve T111074 and T70368
Note: Use of FauxRequest seems to be frowned upon... see T169266
== Solution 2
We do the separation in [[ https://github.com/wikimedia/mediawiki/blob/master/includes/specials/SpecialWatchlist.php#L405 | SpecialWatchlist ]]. There should be a simple method render which is passed data or a model and renders it.
= Solution 3
Make use of [[ https://github.com/wikimedia/mediawiki/blob/master/includes/WatchedItemQueryService.php | WatchedItemQueryService.php ]]
It would be useful if SpecialWatchlist::outputChangesList in core was refactored to use this. It would make skinning a lot easier....
= acceptance criteria
The following user preferences should be honoured
 Mobile watchlist should follow the same Show/Hide preferences as the desktop watchlist (see T69799 for more details)
 Mobile Watchlist does not take into account preference value of expand/aggregation into account (see T70367)
 Hide bot edits from the watch list not taken into account (see T70365)
 Pagination should be mor (was T111074)
 add screenshots showing desktop watchlist skinned in Minerva and mobile watchlist
 suggest architecture diagram
 tag with mediawiki core team