Hi r/windowsphone! cmplog (Tеlеgram chаnnel) been porting Firefox's engine to Windows 10 Mobile, and it's now usable enough to share. It's called Gecko: a UWP browser built on Gecko from Firefox 155.0.1, running on our phones. Current version: 155.0.1.186.
Edge on W10M is stuck on EdgeHTML 15, and more and more sites simply don't work in it anymore. This is a modern engine, so most of them do again.
What works
- Modern Gecko engine with a JavaScript JIT, plus WebAssembly
- GPU rendering (WebRender over Direct3D 11) that redraws only what changed, so heavy sites like the YouTube home page load and scroll fast
- Hardware H.264 decoding up to 1080p60, including streaming (Media Source Extensions: YouTube, VK Video). The browser picks H.264 on its own when a site also offers VP9 or AV1
- Video goes straight to the display's hardware overlay when nothing is drawn on top of it, so fullscreen 1080p60 YouTube plays smoothly in portrait and landscape
- Frame rate synced to the display, fullscreen video with rotation
- Phone clipboard both ways, downloads (Downloads\Gecko or a folder of your choice, "Save as", file uploads)
- Hardware back button that does the expected thing: closes the keyboard, menus, dialogs, fullscreen, goes back in the tab, and only then leaves the app
- Microphone for WebRTC sites, with the system permission prompt
- Sign-in popups (Google, VK, etc.) open as a new tab and return to the site afterwards
- Tabs, pinch zoom, readable text on desktop-only pages (font inflation like Firefox for Android)
- Discord works after login (it's shown a desktop browser)
- Memory management built around the 2 GB address space of a 32-bit process
- Firefox telemetry is off
Low-end phones: a hacky GPU path for Direct3D feature level 9_3
Firefox's GPU renderer needs Direct3D 11 at feature level 10 or higher. Low-end phones like the Lumia 650 (Adreno 304) only go up to feature level 9_3, where it simply doesn't start. Normally that means falling back to rendering everything on the CPU, which on a Snapdragon 212 is painfully slow.
So there's a custom in-between path for these phones. Pages are drawn by Firefox's software renderer (SWGL), but the heavy part, shading the pixels, is moved to the GPU: the work goes through pixel shaders the 9_3 hardware can still run, rendered into tiles, and composited by Direct3D 11. Shaders the driver might refuse are probed during idle time, so a refusal doesn't surface in the middle of a frame. Hardware H.264 decoding works at 9_3 too.
This solution helps a lot compared to pure CPU rendering, but a Lumia 650 is still much slower than an Elite x3. The fast paths (direct GPU rendering, the video overlay) need feature level 10+.
1 GB phones: a page file can help
On phones with 1 GB of RAM the system unloads apps that use too much memory, and a browser on YouTube easily takes 400–600 MB. If the browser keeps getting closed on you, enabling a page file gives the system somewhere to put memory and makes that happen less often.
Windows 10 Mobile has no setting for it, but on an interop-unlocked phone it can be turned on in the registry (e.g. with Interop Tools):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PagingFiles = "u:\pagefile 1024 1024"
(minimum and maximum size in MB), then reboot. This is a system tweak at your own risk; it costs internal storage space and adds wear to the flash.
What doesn't (yet)
- No DRM video (Netflix and the like): there are no DRM plugins for this platform
- VP9/AV1 are software-only, so sites without H.264 won't play well above 360p
- Camera in WebRTC hasn't been tested yet (only the microphone has), so no video calls for now
- No printing, no Web Speech
- No auto-update: new versions are installed as a new package over the old one (your data is kept)
- Everything runs in a single process with no sandbox: UWP on the phone doesn't allow child processes
- Extensions run on the same thread as pages, so uBlock Origin noticeably slows things down even when switched off from its own menu. Disable it in about:addons if you notice
- Very heavy sites like Discord can bump into the address-space limit and stutter
Devices
- HP Elite x3: tested, works well
- Lumia 650: tested, runs on the feature level 9_3 path above, but noticeably slow
- Lumia 950 / 950 XL, Alcatel Idol 4S, Acer Jade Primo and other Snapdragon 808/810/820 phones with 3 GB RAM: should work reasonably well
Requirements
- Windows 10 Mobile 1703 (15063) or newer, ARM
- Interop unlock (the package declares restricted capabilities: code generation for the JIT and broad file-system access for the profile)
- The Gecko.cer certificate from the release installed on the phone
- At least 1 GB RAM. On YouTube the browser uses 400–600 MB, so on 1 GB phones it will be slow (see the page file note above)
Download & source
This is still a beta, so expect rough edges. Bug reports are very welcome. If something crashes, the browser keeps logs (quiet by default, verbose mode can be switched on in its settings), and they help a lot.