googlemaps / googlemaps/react-native-navigation-sdk

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

Offen
#539 2 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @jokerttu Auf GitHub ansehen
priority: p3 type: bug
Vorherrschende Sprache
TypeScript
Sterne
227
Forks
38
Ø Merge
4 T. 8 Std.
Gemergte PRs (30 T.)
16

Beschreibung

## 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:

```objc
- (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+

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.