[Bug]: iOS crash during dev reload — NavModule event emitters called with invalid bridge

Ouverte
#539 3 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 5 jours

@jokerttu y travaille déjà.

Depuis le 1/3/2026.

  • #695 par @sr1k3sh — ouverte

Évaluation

Cette issue n'a pas encore été évaluée.

Description

priority: p3 type: bug

Bug Description

During React Native development reloads (e.g. CMD+R or fast refresh), the app crashes on iOS because callback methods in NavModule.mm attempt to emit events through the React Native bridge after it has been invalidated/torn down.

The crash occurs because navigation callbacks (onLocationChanged, onArrival, onRemainingTimeOrDistanceChanged, onRouteChanged, onReroutingRequestedByOffRoute, onStartGuidance, onTurnByTurn) continue to fire after the bridge is destroyed during reload, and the emit* calls throw exceptions when the bridge is unavailable.

Steps to Reproduce

  1. Start a React Native app using @googlemaps/react-native-navigation-sdk on iOS
  2. Begin an active navigation session (so callbacks are firing)
  3. Trigger a development reload (CMD+R or save a file with fast refresh)
  4. App crashes

Expected Behavior

The app should gracefully handle the bridge being unavailable during reload without crashing.

Suggested Fix

Wrap each emit* call in the INavigationCallback methods in NavModule.mm with a try-catch block to silently ignore exceptions when the bridge is invalid during reload. The affected methods are:

  • onLocationChanged:
  • onArrival:
  • onRemainingTimeOrDistanceChangedWithNavigator:
  • onRouteChanged
  • onReroutingRequestedByOffRoute
  • onStartGuidance
  • onTurnByTurn:

Example fix for one method:

- (void)onLocationChanged:(NSDictionary *)mappedLocation {
  try {
    [self emitOnLocationChanged:@{@"location" : mappedLocation}];
  } catch (...) {
    // Bridge may be invalid during dev reload - ignore to prevent crash
  }
}

The same pattern applies to all 7 callback methods listed above.

Environment

  • SDK version: 0.14.1
  • Platform: iOS
  • React Native: 0.76+
Langage dominant
TypeScript
Étoiles
226
Forks
39
Merge moyen
1 j 20 h
PR mergées (30 j)
7

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de googlemaps/react-native-navigation-sdk

Toutes les issues de googlemaps/react-native-navigation-sdk

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.