Skip to content

About

An experimental Gecko-based web browser for iOS 14+.

Resources

Stars

3 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

84 Commits

Folders and files

Repository files navigation

Reynard Browser

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.

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

Issues

  • The JIT backend for child processes is disabled, which means that the JS interpreter, JIT compiler, and WebAssembly are currently not available. As a result, performance will be slower on several sites and features requiring WebAssembly will not work.
  • Some POST request responses like dynamically loaded scripts and video streams are not fully delivered, which can cause Google reCAPTCHA to fail during loading or lead to stalled playback on YouTube. A workaround would be to set the user-agent string to a generic Firefox on Android one. I observed this behavior through debug logs and never fully understood it.
  • On some websites that use -apple-system or BlinkMacSystemFont, the rendered text falls back to an overly thin SF UI variant.
  • Video playback has no sound output.
  • Child processes responsible for WebContent and Rendering crashes due to "fault hit memory shortage" quite frequently on devices such as the iPad Air 2 on iOS 15.

Installation

Important

I would highly recommend that you sideload Reynard using TrollStore, SideStore, or AltStore.

When sideloading through SideStore or AltStore, you must enable Keep App Extensions. Reynard relies on an app extension to launch child processes and will not function properly without it.

Please note that LiveContainer is not supported, as it does not currently support signing the app extension required for running Reynard.

The latest experimental Reynard .ipa builds are available on the Releases page. Please note that this project is under active development and there is no formal release yet, so these experimental builds are updated frequently and may contain significant bugs.

Changes

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.

Here's Reynard running on iPadOS 15...

…and on iOS 26

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-browser

Download 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.

About

An experimental Gecko-based web browser for iOS 14+.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages