iOS 26: JIT and Flutter

https://x.com/jamonholmgren/status/1932200003096990131

https://x.com/squirelBoy360/status/1932215179585974504

So, we’ll lose hot reload?

First of all, fuck Apple and their continued anti-competitive and anti-consumer bullshit. They have pulled this same kind of nonsense for over a decade now on the web platform and it’s always been about trapping people onto various lock in schemes and never once about doing the right thing.

I personally refuse to develop for their platform at this point. The first thing I do when building a flutter app is to remove osx and iOS support out of spite and because I’m never going to pay them 30% of my revenue.

However, I digress, so despite this news, I’m actually under the impression that this doesn’t impact simulators and so a lot of common development workflows aren’t impacted and additionally that there are other ways to approach this that essentially use a interpreter or some kind of dynamic modules situation.

The good news on that front however seems to be that the team as usual was able to think a few steps ahead here in anticipating Apple’s bullshit and there is a as yet unannounced but experimental new bytecode compiler that AFAIK fits into this problem space here sdk/pkg/dart2bytecode at main · dart-lang/sdk · GitHub

Hopefully, we can get some kind of official confirmation before too long regarding what things will look like moving forward as I’m mostly guessing and reading the tea leaves here so don’t take it as facts in the meantime please.

3 Likes

Good to hear that Flutter team is ahead of this!. Apple being apple lol

1 Like

Worst case scenario - we’ll still have hot reload on simulator. But there does seem to be a workaround in the works. You can track this here

1 Like

Curious what that means for shorebird @eseidel?

Shorebird doesn’t seem to be using JIT. AFAIK app store regulations don’t allow that

It does like during debugging. Actually I am wondering if JIT even applies to Flutter as Dart is interpreted not JIT compiled in debug if I recall that correctly

Google also charges 30% (both charges 15% in some instances, like mine). In all regards to payments and stores, Google is as bad or even worst than Apple. Don’t get me wrong: I despise Apple, but Google is not far behind, so let’s fix that to: they both suck a lot.

Again: I totally agree with all you said about Apple. I think they are the 2nd worst company in the planet (just behind Meta).

But…

Old people (oh boy) will remember the days Excel didn’t even had a splash screen, because it just opened. Visual Studio 6 used to take a couple of seconds to open. All of that in a Pentium processor with what? 166Mhz? 8Mb of RAM? A harddisk slower than a 56 RPM vinyl? Why today we have clocks at 5Ghz, 8Gb of RAM is not even acceptable and nvme’s with 7Gb/sec read speed and still things are slow as crap? In my opinion, most of it because of crap software, written in crap languages (yes, JavaScript, I’m talking about you).

So, is it really wrong from Apple to protect its hardware against crap interpreted software, so the developers are forced to actually write a good piece of software that runs at barely minimum 60FPS?

Sorry if I’m mistaken about what is really happening, but, as far as I could understand, protecting an ecosystem against slow software is something every company should be doing, especially Google (since Android devices can be as crap as possible, especially on TVs).

1 Like

Problem will be solved soon :trade_mark:

https://x.com/mraleph/status/1932515982637175252?t=vqR9-uFMVf5NsGDvRxtlag&s=19

2 Likes

Clearly Apple hasn’t learnt a thing from having a judge rip them a new hole for their illegal, anti competitive practises or the EU fines been big enough to make an impact, so perhaps its time for a Apple exec to do some jail time for perjury to properly get the attention of the bean counter in charge of the company along with his cabal of nasty VPs…

On the bright side, the Dart to bytecode compiler looks very interesting!!

2 Likes

If im not mistaken flutter does use JIT in debug mode and by extension so does shorebird. A Bytecode interpreter has been in the works and will probably be the long term fix to this issue

Shorebird has its own interpreter that they came up with that’s used for applying the patches I think

1 Like

also their users generate much more revenue compared to android users if the app is including in app purchases.

Will this affect the Flutter Shorebird?

Official take is that it should not affect shorebird:


Source: https://x.com/_eseidel/status/1932468126194811231


screenshot_20250611_141147
Source: shorebird discord

Correct. The JIT restrictions have no affect on Shorebird.

2 Likes

@eseidel why is that so? Doesn’t Shorebird interpret the part that gets patched?

Correct. We Interpret in an Interpreter, not a JIT. The restriction from Apple is getting a page of memory to be executable that has ever been writable. That’s only needed for generating machine code on the device, which we do not do.

The irony of this all is that that’s exactly what their lldb does, and Dart’s JIT support only ever worked when lldb was connected, so it’s not exactly as though Apple is providing developers a level playing field here… They have a “jit” permission, they just need to let normal devs use it in developer mode. :slight_smile:

I thought Flutter also interprets while in debug mode? Where does it currently use JIT?

Flutter uses JIT in debug mode.

For me one of the coolest explanation of how the JIT works in Dart was in this talk by Samir Jindel who used to work on the Dart team

4 Likes