googlemaps / googlemaps/react-native-navigation-sdk

TurnByTurn JS payload diverges from the TS types: step field names, maneuver type, missing/empty fields

Open
#641 1 comment 0 reactions 1 assignee Claimed by @jokerttu View on GitHub
Dominant language
TypeScript
Stars
227
Forks
38
Avg merge
5d 7h
Merged PRs (30d)
10

Description

While building CarPlay/Android Auto guidance on top of `onTurnByTurn` (SDK 0.16.3), we hit four places where the wire payload differs from the TypeScript declarations. Each cost us a real on-device defect (silently rejected car turn cards), so documenting them with sources:

1. **Step distance/time field names don't match.** `StepInfoSpec` (NativeNavModule) declares `distanceMeters`/`durationSeconds`, but both native layers emit `distanceFromPrevStepMeters`/`timeFromPrevStepSeconds` instead — see `ObjectTranslationUtil.getMapFromStepInfo` (Android) and `NavModule.mm`'s `getDictionaryFromStepInfo` (iOS). The spec-named fields are never present at runtime.

2. **`maneuver` is typed `string` but is a number on the wire.** Both platforms `putInt`/`numberWithInteger` the platform maneuver constant (which, helpfully, uses identical values 0–65 on both platforms).

3. **Fields emitted but untyped:** `fullRoadName` and `stepNumber` (both platforms), `roundaboutTurnNumber`/`exitNumber` (Android) are in the payload but absent from `StepInfoSpec`.

4. **`instruction` is empty on the final arrival tick** (iOS observed; the arrival step arrives with maneuver=DESTINATION and an empty instruction). Worth documenting since `instruction` reads as always-populated from the types.

Also: `TurnByTurnEvent` in the public API is an empty interface, so none of the above is even visible to consumers without reading native source. Happy to PR type updates if you'd take them — aligning `StepInfoSpec` with the actual emitters seems the minimal fix.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.