Skip to content

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

Description

@spendres

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.

Activity

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions