Skip to content

fix(messaging,ios): fix an issue where the scene initializer could be called twice in latest Flutter versions#18051

Merged
Lyokone merged 2 commits intomainfrom
fix/18037
Mar 3, 2026
Merged

fix(messaging,ios): fix an issue where the scene initializer could be called twice in latest Flutter versions#18051
Lyokone merged 2 commits intomainfrom
fix/18037

Conversation

@Lyokone
Copy link
Contributor

@Lyokone Lyokone commented Mar 3, 2026

Description

Fix EXC_BAD_ACCESS crash on iOS when tapping a notification under UIScene lifecycle (FlutterImplicitEngineDelegate).

setupNotificationHandlingWithRemoteNotification: was called twice (from UIApplicationDidFinishLaunchingNotification + scene:willConnectToSession:), causing _originalNotificationCenterDelegate to point to self → infinite recursion on notification tap.

Added a guard so delegate/swizzler setup only runs once, while still allowing the second call to process the launch notification.

No test: requires a real push notification tap delivered by the OS under UIScene lifecycle — not possible from E2E or unit tests.

Related Issues

Fixes #18037

Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (melos run analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

  • Yes, this is a breaking change.
  • No, this is not a breaking change.

@gemini-code-assist
Copy link
Contributor

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

@Lyokone Lyokone merged commit 5b60210 into main Mar 3, 2026
33 of 35 checks passed
@Lyokone Lyokone deleted the fix/18037 branch March 3, 2026 14:26
@cdeil
Copy link

cdeil commented Mar 13, 2026

Our Flutter app also crashes because of this issue.

Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[Runner.AppDelegate initialNotificationCallback]:
unrecognized selector sent to instance 0x102251780'

Coding agent is recommending to put this into the AppDelegate as workaround but I don't know if that's proper:

  // Required for firebase_messaging compatibility with Flutter 3.41+.
  // Without this, the plugin adds a donor method to AppDelegate that crashes
  // because `self` is the AppDelegate instead of the plugin instance.
  override func application(
    _ application: UIApplication,
    didReceiveRemoteNotification userInfo: [AnyHashable: Any],
    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
  ) {
    super.application(application, didReceiveRemoteNotification: userInfo, fetchCompletionHandler: completionHandler)
  }

Could you please release a new version with this fix?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants