Reynard is a simple Gecko-based web browser for iOS 14+.
I still use devices that can’t be updated beyond iOS 15. On these versions, a lot of modern websites simply don’t work in Safari.
The core issue is WebKit, the browser engine behind Safari. It’s bundled with the OS, so if your device is stuck on an older iOS version, you’re stuck with an outdated browser. Although Apple now allows custom browser engines through the BrowserEngineKit framework, this only applies to iOS 17.4+ and only for users in the EU and Japan. There’s also the CyberKit project, which attempts to backport WebKit, but its current releases are far from usable.
With Reynard, my goal is to build a Gecko-based browser that does not depend on BrowserEngineKit, allowing it to run on older iOS and iPadOS versions.
Getting Started
For installation instructions, known issues, and FAQs, check out the Reynard Browser wiki.
Preview
These clips compare how several sites that are known to break in Safari on iOS 14 & 15 load versus how they load in Reynard. The screen recordings were captured on an iPhone 6S Plus running iOS 14.1 and an iPhone 7 running iOS 15.8.6.
iOS 14
| github.com | chatgpt.com | ||
|---|---|---|---|
| Safari | Reynard | Safari | Reynard |
![]() |
![]() |
![]() |
![]() |
iOS 15
| github.com | |
|---|---|
| Safari | Reynard |
![]() |
![]() |
iOS 26
And Reynard also works on iOS 26!
| apple.com |
|---|
![]() |
Changes
As of March 25, JIT compilation support is added. This means sites that rely on WebAssembly now work properly, and overall browsing performance is much faster. See Enabling JIT to get started.
The table below compares WASM support check, rendering WASM-heavy website (Shopify Winter 2026 edition), and browser performance on an iPhone 7 running iOS 15.8.6.
| JIT | Without JIT |
|---|---|
|
|
|
Changes on February 23, 2026
As of February 23, the browser uses a multi-process architecture, spawning child-processes (WebContent, Rendering, and Networking) through NSExtension. Most modern websites render correctly, including proper font and emoji support, and general browsing feels much smoother. While performance still does not match Safari, the browser is now reliable enough for everyday use.Changes on February 4, 2026
As of Feb 4th 2026, the browser uses a single-process architecture, which is the simplest way I found to get Gecko up and running. It's slow and laggy in terms of performance. Most webpages render correctly, but fonts fall back to the system default, and the browser can crash on sites with popup or redirect ads.Build
Warning
Build instructions are included below for reference. Please be aware that I do not provide support for issues or errors encountered during the build process.
Clone the repository.
git clone --recursive https://github.com/minh-ton/reynard-browser
cd reynard-browserDownload Gecko and apply patches.
./tools/development/update-gecko.sh ./tools/development/apply-patches.sh
Build dependencies and the Gecko engine.
./tools/development/build-idevice.sh ./tools/development/build-gecko.sh
To run Reynard, open Reynard.xcodeproj in Xcode and build/run it from there.
Notes
If you’ve come across this repository and find it interesting, I’d love to get help or collaborate on it. I’m learning as I go here and don’t have much prior experience with iOS app development or with Gecko itself, so any contributions, feedback, or pointers would be greatly appreciated.
License
This project is licensed under the MIT License, except for the patches directory containing the modifications to the Firefox Gecko engine and therefore is licensed under the Mozilla Public License 2.0.






