CyberKit is a backport of WebKit to older iOS.
This browser's first release in April 2023 was contemporaneous to Google's Blink browser prototype. Although 9to5Google was able to run their browser in the iOS Simulator, upstream WebKit has allowed internal builds on the simulator have existed since 2009, and public support for builds on the simulator has existed since 2014. This project extended this work by being the first open source public project to provide an alternative browser engine for iOS on real hardware, successfully providing more usability under some conditions than the available stock iOS browsers, and provided a technical overview in 2024 to encourage more developers to work on developing browsers for iOS.
Following in the footsteps of the 2012 tweak Nitrous, the tweak Polyfills improves the functionality of stock WebKit by adding polyfills for newer JavaScript features. Due to political pressure in the EU, Apple released BrowserEngineKit in the 2024 updates iOS 17.4 and iPadOS 18.0. This has assisted Minh Ton's 2026 release of Reynard Browser based on Mozilla's Gecko.
Even if it has been out of necessity due to the lack of jailbreak releases for current iOS versions, CyberKit has helped pioneer the future of web browsers on iOS, and the release of other, less experimental, browsers has itself been a success of the project's goals — to demonstrate to the jailbreaking community it was possible and to document what it did along the way in hopes that others might follow in doing so. Thank you for your support of the project.
⚠️ Note: CyberKit development is on hiatus and more is still planned for the project.This is not an official deprecation notice, as per issue #52.
Please visit the releases.
Please visit the CyberKit wiki.
You can clone just the current development branch with git clone -b safari-7619.1.26.31-branch --single-branch https://github.com/UInt2048/CyberKit.git
- safari-7619.1.26.31-branch: 22 October 2024 - present (used in v0.0.9 nightly - present)
- Diverged 13 July 2024; built in Xcode 16.0
- safari-7617.1.4-branch: 9 December 2023 - 21 October 2024 (not used in release)
- Diverged 6 August 2023; built in Xcode 13.7
- safari-7616.1.27.211-branch: 2 October 2023 - 19 October 2024 (used in v0.0.9 alpha)
- Diverged 7 July 2023; built in Xcode 13.7
- safari-7616.1.12-branch: 11 May 2023 - 2 October 2023 (used in v0.0.7 alpha - v0.0.8 nightly)
- Diverged 22 April 2023; built in Xcode 14.3 before 688c678 (committed 31 July 2023), 13.7 starting with 688c678
- safari-7616.1.7-branch: 24 March 2023 - 11 May 2023 (used in v0.0.1 alpha - v0.0.6 alpha)
- Diverged 19 March 2023; built in Xcode 14.2 before fa2170c (committed 7 April 2023), 14.3 starting with fa2170c
- safari-7616.1.4-branch: 5 March 2023 - 24 March 2023 (not used in release)
- Diverged 25 February 2023; built in Xcode 14.2
- safari-7616.1.4pre-branch: 25 February 2023 - 5 March 2023 (not used in release)
- Diverged 25 February 2023; built in Xcode 14.2
- safari-7616.1.3-branch: 25 February 2023 (not used in release)
- Diverged 18 February 2023; built in Xcode 14.2
- safari-7615.1.15-branch: 31 January 2023 - 24 February 2023 (not used in release)
- Diverged 11 December 2022; built in Xcode 14.2
You may find https://en.wikipedia.org/w/index.php?title=Safari_version_history&oldid=1186257925 beneficial to view correspondence between Safari version and iOS version.
- safari-607-branch: 19 May 2023 - 21 July 2023 (used in v0.0.8 ref607)
- Diverged 7 January 2019; built in Xcode 11.7
- safari-608-branch: 21 July 2023 - 22 July 2023 (used in v0.0.8 ref608)
- Diverged 15 July 2019; built in Xcode 11.7
- safari-609-branch: 22 July 2023 - 24 July 2023 (used in v0.0.8 ref609)
- Diverged 3 January 2020; built in Xcode 11.7
- safari-610-branch: 24 July 2023 - present (not used in release)
- Diverged 21 August 2020; built in Xcode 11.7
If building yourself, you may wish to use the version of Xcode used at the time to build the commit you are building.
On branches diverging before 1 May 2024 (before safari-7619.1.12-branch, see WebKit#27941), you must run Tools/Scripts/configure-xcode-for-embedded-development before 1st build or any time you reinstall/update Xcode or its SDKs. If you need the xpc.h header, you can get it from https://github.com/theos/templates/tree/f0fb942c4bb90ef331126e2b38257974b18bc895/ios/xpc_service/headers.
Even now, it still may be useful to replace or supplement Xcode's SDK with one with private headers from https://github.com/theos/sdks. Officially, support for building on the public SDK was introduced in late 2014:
- JavaScript and bmalloc first built on the public SDK on 13 August 2014 (see 8af367f).
- WebCore first built on the public SDK on 17 September 2014 (see 226279b).
If a branch needs a newer configure script, you can grab one like this from the ref607 branch: OUT_FILE=~/Desktop/conf; git show 62f80e2:Tools/Scripts/configure-xcode-for-ios-development > $OUT_FILE; chmod 755 $OUT_FILE; $OUT_FILE
On branches diverging before 18 February 2016 (before safari-602.1.32-branch, see bbc738d), you must build LLVM. You can do so as documented in 1f5b857:
If there are already precompiled binaries:
- Obtain the precompiled binaries:
git checkout 1f5b857 WebKitLibraries/LLVMIncludesIOS9.tar.bz2 WebKitLibraries/LLVMLibrariesIOS9.tar.bz2 - Run the command
perl Tools/Scripts/copy-webkitlibraries-to-product-directory --llvm --sdk=iphoneos --use-llvm-includes=WebKitLibraries/LLVMIncludesIOS9.tar.bz2 --use-llvm-libraries=WebKitLibraries/LLVMLibrariesIOS9.tar.bz2 WebKitBuild/Debug-iphoneos
If you wish to create precompiled binaries:
- Attain the LLVM source code for an appropriately old release. For instance, from https://releases.llvm.org/download.html#3.6.2, choose http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz.
- You can confirm if the version you selected will work if adding the precompiled OS X headers to
HEADER_SEARCH_PATHSinLLVMForJSC.xcconfigallows you to build the targetllvmForJSC. Note this will not link on iOS, due to architecture issues.
- You can confirm if the version you selected will work if adding the precompiled OS X headers to
- If your CyberKit git repo is at
~/Documents/git/CyberKit, expand this archive to~/Documents/git/CyberKit/llvm. - If your branch diverged before 8 October 2015, run
git checkout 1f5b857 Tools/Scripts/copy-webkitlibraries-to-product-directory. - Theoretically, you can run the command
perl Tools/Scripts/copy-webkitlibraries-to-product-directory --llvm --sdk=iphoneos WebKitBuild/Debug-iphoneos. This step may require changes.
You may be able to ad hoc sign in some commits beginning 2 January 2024 without changes to CyberKit itself. Support for this is limited, but it may be the only method on some Apple Silicon VMs, as explained below.
You will build the "Everything up to CyberKit" target then the appropriate app.
Development is performed on macOS using Xcode. However, owing to the number of Xcode versions required, you may need to virtualize or emulate other macOS versions.
Xcode versions are chosen based on the date of commits and the iOS versions supported. The minimum deployment targets can be viewed at https://developer.apple.com/support/xcode/#minimum-requirements. Note that Xcode below 10 did not have a minimum deployment target, so running Xcode 9.4.1 on macOS Mojave should be the earliest Xcode you need to use for any branch.
If you need to emulate an Intel version of macOS on Apple Silicon, you can use UTM:
- Obtain the requisite macOS install files via https://github.com/corpnewt/gibMacOS. If you don't get a full installer, you can use BaseSystem.dmg or RestoreImage.dmg instead.
- Obtain the UTM configuration file from https://github.com/adespoton/utmconfigs.
- Import the macOS install file you obtained in the UTM configuration and install macOS.
For later versions, you can dualboot or use the built-in virtualization framework. Note that Apple Silicon VMs require both the host and guest to be on, and have been created on, macOS 15 or later, in order to sign in to your Apple ID in Xcode due to entitlement issues.
If you are running under Intel, I previously had success with virtualizing older macOS versions with https://github.com/myspaghetti/macos-virtualbox but it is no longer maintained. You might consider dualbooting for performance reasons, or check out other methods like https://github.com/kholia/OSX-KVM.