PSA: Do not update your development devices to iOS 18.4

Apple seems to have made a change and Flutter debug builds will not build / will crash on iOS 18.4. (Release and profile builds are fine.)

More details (copypasting @mraleph’s comment on that issue:

It seems that iOS 18.4 has finally closed a long existing loophole with get-task-allow allowing to bypass code signing restrictions. The app itself can no longer write into its own executable memory and flip permission RX->RW and back. The is a special path built into kernel to allow debugserver do these things (based on private entitlement). Some preliminary analysis of kernel changes available here.

What this means for us:

  • we need to go back and fallback to interpretation for development builds like we did in the early days of Flutter. That’s fairly straightforward - but we would need to tackle performance implications to the extent we can. (Another thing is dart:ffi - we would need to write generic stubs for ABI marshalling which do not rely on JIT code generation.)
  • In the interim we need to warn people that they would not be able to develop on iOS 18.4 (release and profile builds are fine though) - so they should not update their phones if they want to use hot reload and stuff.
11 Likes

Thanks for posting a heads up, Filip!

I want to jump in and confirm that the Flutter team is aware of this issue and is working on a fix. I probably can’t share much more than that, but please let us know if you are seeing issues developing on iOS 18.4.

6 Likes