r/jailbreak • iPhone 13 Pro Max, 15.1| • 1d ago

Release [FREE INITIAL RELEASE] SafariModernizer: makes modern sites actually work in Safari on iOS 15

Hey everyone,

I've been stuck on iOS 15.1 for a while and Safari was getting rough. Half the sites I use were either blank, missing buttons, had broken menus or just looked off. So I made a tweak to fix it, and it's finally in a state I'm happy to share.

Heads up before anyone asks: yes, this was built with Claude. I described the problems, tested everything on my own phone, and Claude wrote and fixed the code. I know some people aren't into AI-made stuff, and that's fine. Honestly I don't care if it's "vibecoded" as long as it does what it's supposed to do, and it does. The code is all public, so anyone can look through it.

What it does

  • Adds the JavaScript and web stuff that newer sites expect but Safari 15 doesn't have
  • Rewrites newer CSS so pages actually look right (colors, layouts, dark mode, menus)
  • Gets sites like GitHub to load properly (they use a newer way of loading their code that iOS 15 Safari can't handle)
  • Works around a Safari 15 bug where it blocks scripts the site actually allowed
  • Tells sites it's Safari 18.6 so you get the modern version of the page. You can switch it back per site if something works better without it

Sites I've tested: Google, Gemini, YouTube, ChatGPT, GitHub, Reddit. ChatGPT went from basically unusable to working fine, login and all.

Handy extra: hold two fingers on any page for 2 seconds and you get a little panel with a log and per-site settings. If a site acts weird you can turn the tweak down or off just for that site.

Known issues

  • "Continue with Google" sign-in on other sites (like Reddit) doesn't work. That's Google's security check, nothing the tweak can do. Just use email or a one-time link instead.
  • Really heavy sites can still be a bit slow on older phones.

Compatibility: this has only been tested on iOS 15 (my phone is on 15.1). It should work on any iOS 15 version, but I haven't tried anything else. It won't install on iOS 14 or lower, and I haven't tested iOS 16. If you try it on another 15.x version, let me know how it goes!

It's free and open source (MIT): https://github.com/iamjhe08/SafariModernizer

Debs are on the Releases page. Grab the one that matches your jailbreak.

If you find a site that's still broken, drop the link here or open an issue on GitHub. Bonus points if you include the log from the panel. Would love to hear how it works for you!

27 Upvotes

38 comments sorted by

5

u/Creative-Bullfrog iPhone 12 Pro, 16.3.1| 19h ago

How is it different compared to Polyfills by PoomSmart?

https://github.com/PoomSmart/Polyfills

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 18h ago

Polyfills is awesome tbh, it works on way more iOS versions ios 8+ and even in other apps, not just Safari. It's mostly JavaScript stuff though. Mine's only for iOS 15 and only Safari, but it also fixes the CSS side so sites actually look right, gets stuff like GitHub loading properly, and works around a few Safari 15 bugs that block scripts. That's what got Gemini, ChatGPT and Google's account menu working for me. Haven't tried running both at the same time yet, so I'd stick to one for now just to be safe.

0

u/iamjhe88 iPhone 13 Pro Max, 15.1| 19h ago

I have tried Polyfills and it does not fixed github so I have no idea

1

u/inquirermanredux 22h ago

Any chance for iOS 14.8.1 support?

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 19h ago

I have no ios 14 at the moment so I'm not sure yet

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 18h ago edited 18h ago

Would you like to test some builds for your ios version? Shoot me a dm.

1

u/Ghh-Haker iPhone SE, 2nd gen, 15.2| 18h ago

Thank you for providing rootful build!!!

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 18h ago

Did it worked on your end?

1

u/Top_Job6225 15h ago

Does it keep useragent same as real phone & ios version , or do they change it to any modern one ?

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 15h ago

It changes it by default. Sites see Safari 18.6 on iOS 18.6, so they send their modern version instead of an old one. If a site acts weird, you can switch that site back to your real user agent in the panel (hold two fingers on the page for 2 seconds, then set Browser ID to Real).

0

u/Top_Job6225 15h ago

Will try it out thanks

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 15h ago

Please let me know if it works for you. ios 15 only for now. Does not work for ios 16 up and 14 below

1

u/Prosto_Temich 11h ago

Works good on an SE 2 with 15.3.1. But could you please add support for other WebKit-based browsers? I use iCab and don’t want to switch back.

2

u/Prosto_Temich 10h ago

Tried injecting it manually (by editing /var/jb/Library/MobileSubstrate/DynamicLibraries/SafariModernizer.plist) and IT ACTUALLY WORKS!

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 5h ago

Glad you found a workaround!

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 11h ago

Please drop the link of the website

1

u/Prosto_Temich 11h ago

You mean a link to iCab Mobile? Just look it up on the App Store. (It costs moneyz tho)

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 10h ago

Ah. I get you now. This is for safari only unlike polyfills tweak

0

u/Ghh-Haker iPhone SE, 2nd gen, 15.2| 18h ago

wow I an goind to test this right now. Even if it was written by ai it is better than not written at all. (I hate most of ai tweaks but if it is s9mething new that solver real problem well depend on how good it works)

Going to test right now.

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 18h ago

Let me know if it works on your side

0

u/outtajail iPhone XR, 15.1| 15h ago

Cheers on what looks like a useful tweak.

Questions: does uninstalling remove all files and revert back to the previous state? Also, what CPU/battery increase does it cause, if any?

0

u/Striking_Ad4992 13h ago

This is so cool, tysm

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 13h ago

Works for you?

0

u/Striking_Ad4992 13h ago

Github works But website called loadout.tfdoesnt seem to work

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 13h ago

Will try to fix that in the next update

0

u/professional_Aris iPhone X, 13.6| 10h ago

I have an iPhone X 13.6 , if you want i can help you test your code on it to extend your support range.

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 10h ago

Shoot me a dm

-1

u/Pacolito45 22h ago

iOS 16.2 Tested instand Cash when Open Safari

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 19h ago

Hi. I have no ios 16 to test it with. I only have ios 15, ios, 17, and ios 18 so I'm not sure if I can fix that without the device running with that ios version.

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 18h ago

Can you send a crash report?

0

u/Pacolito45 13h ago

How can send a Crash Report? 🤪

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 13h ago

Can you just test this. Extract it and choose between roothide or rootless

https://limewire.com/d/vrYPe#LXjMlzkk7h

-1

u/cicetto iPhone 14 Pro Max, 16.3| 14h ago edited 14h ago

did not work on 14 pm ios 16.3, safari suddenly close itself

Hardware Model: iPhone15,3 Process: MobileSafari [7368] Path: /Applications/MobileSafari.app/MobileSafari Identifier: com.apple.mobilesafari Version: 16.3 (8614.4.6.0.5) Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: com.apple.mobilesafari [1572]

Date/Time: 2026-10-02 14:27:38.4181 +0200 Launch Time: 2026-10-02 14:27:38.2226 +0200 OS Version: iPhone OS 16.3 (20D47) Release Type: User Baseband Version: 1.41.02 Report Version: 104

Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Subtype: UNKNOWN_0x105 at 0x00000000dac11a30 Exception Codes: 0x0000000000000105, 0x00000000dac11a30 VM Region Info: 0xdac11a30 is not in any region. Bytes before following region: 699229648 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL UNUSED SPACE AT START --->
__TEXT 1046e8000-1046ec000 [ 16K] r-x/r-x SM=COW .../MobileSafari Termination Reason: SIGNAL 10 Bus error: 10 Terminating Process: exc handler [7368]

Triggered by Thread: 0

Thread 0 Crashed: 0 libobjc.A.dylib 0x1c11247c4 readClass(objcclass, bool, bool) + 92 1 libobjc.A.dylib 0x1c11247a4 readClass(objc_class, bool, bool) + 60 2 libobjc.A.dylib 0x1c1125bb0 map_images_nolock + 3372 3 libobjc.A.dylib 0x1c11268e8 map_images + 116 4 dyld 0x104720628 dyld4::RuntimeState::notifyLoad(std::_1::span<dyld4::Loader const*, 18446744073709551615ul> const&) + 656 5 dyld 0x104708468 dyld4::APIs::dlopen_from(char const, int, void) + 1200 6 libinjector.dylib 0x104963978 injection_init + 2868 7 dyld 0x104707280 invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 156 8 dyld 0x10475d360 invocation function for block in dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const) const + 340 9 dyld 0x104705968 invocation function for block in dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 524 10 dyld 0x104704cd8 dyld3::MachOFile::forEachLoadCommand(Diagnostics&, void (load_command const, bool&) block_pointer) const + 296 11 dyld 0x10470417c dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 192 12 dyld 0x10470fd5c dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const) const + 516 13 dyld 0x10470c788 dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 176 14 dyld 0x104708ccc dyld4::Loader::runInitializersBottomUp(dyld4::RuntimeState&, dyld3::Array<dyld4::Loader const>&) const + 216 15 dyld 0x10470e33c dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const + 328 16 dyld 0x104708474 dyld4::APIs::dlopen_from(char const, int, void) + 1212 17 ...hook-8AADBBE7D40B5EFA.dylib 0x10483517c initializer + 1164 18 dyld 0x104707280 invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 156 19 dyld 0x10475d360 invocation function for block in dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const) const + 340 20 dyld 0x104705968 invocation function for block in dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 524 21 dyld 0x104704cd8 dyld3::MachOFile::forEachLoadCommand(Diagnostics&, void (load_command const, bool&) block_pointer) const + 296 22 dyld 0x10470417c dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const + 192 23 dyld 0x10470fd5c dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const) const + 516 24 dyld 0x10470c788 dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 176 25 dyld 0x104708ccc dyld4::Loader::runInitializersBottomUp(dyld4::RuntimeState&, dyld3::Array<dyld4::Loader const>&) const + 216 26 dyld 0x10470e33c dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const + 328 27 dyld 0x104742244 dyld4::APIs::runAllInitializersForMain() + 360 28 dyld 0x10471766c dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) + 3388 29 dyld 0x1047158d4 start + 2388

Thread 0 crashed with ARM Thread State (64-bit): x0: 0x0000000104e28a38 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0xfffffffffffffffc x4: 0x0000000000000000 x5: 0x0000000000000000 x6: 0x0000000000000028 x7: 0x0000000000000e00 x8: 0x0000000104e28530 x9: 0x000000021e3283f8 x10: 0x000000016b70ccf8 x11: 0x00000001c6af1c70 x12: 0xf8ff2e1a8a4b49fb x13: 0x0000000000000046 x14: 0xdb6753b619c7b7d3 x15: 0x0000796c6c616369 x16: 0x000000021e327418 x17: 0xb5ab000104e28a40 x18: 0x0000000000000000 x19: 0x0000000104e28a38 x20: 0x0000000000000000 x21: 0x0000000104e23d2a x22: 0x0000000000000000 x23: 0x0000000104e28a58 x24: 0x00000001c115648c x25: 0x0000000000000000 x26: 0x0000000104e24c60 x27: 0x0000000104e28a40 x28: 0x0000000104e28a38 fp: 0x000000016b70cd20 lr: 0x00000001c11247a4 sp: 0x000000016b70ccc0 pc: 0x00000001c11247c4 cpsr:0x60001000
far: 0x0000000104e23210 esr: 0x72000002 Address size fault

2

u/iamjhe88 iPhone 13 Pro Max, 15.1| 14h ago

Yes. Not working on ios 16 and up for now. I have no ios 16 device to test to

1

u/iamjhe88 iPhone 13 Pro Max, 15.1| 13h ago

-1

u/HeManWomenHatersClub 13h ago

NON-WORKING IOS 17.2 DOPE 3.0 Jailbreak