mapbox / mapbox/mapbox-navigation-ios

DYLD "Symbol not found: GestureType.singleTap" at launch — vendored MapboxNavigationCore xcframework vs CocoaPods-distributed MapboxMaps ABI mismatch?

Open
#4,836 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
918
Forks
326
Avg merge
1h 16m
Merged PRs (30d)
3

Description

## Summary

App crashes at launch (before any app code executes — dyld-level failure)
with a missing Swift symbol from MapboxMaps, despite the exact
Navigation↔Maps version pairing documented as required in this SDK's own
release notes being correctly resolved by CocoaPods.

## Crash (raw .ips excerpt)

```json
{
"code": 4,
"flags": 518,
"namespace": "DYLD",
"indicator": "Symbol missing",
"details": ["(terminated at launch; ignore backtrace)"],
"reasons": [
"Symbol not found: _$s10MapboxMaps11GestureTypeO9singleTapyA2CmFWC",
"Referenced from: <6639BD74-BED2-3BD2-8D0C-25DE8A4F3A1B> /Volumes/VOLUME/*/Navio.app/Frameworks/MapboxNavigationCore.framework/MapboxNavigationCore",
"Expected in: <0149B9A2-22C8-3E74-8C84-AE6C804CC83B> /Volumes/VOLUME/*/Navio.app/Frameworks/MapboxMaps.framework/MapboxMaps"
]
}
```

`GestureType.singleTap` exists in MapboxMaps' current public API — this
isn't a case that was removed. The symbol itself
(`_$s10MapboxMaps11GestureTypeO9singleTapyA2CmFWC`) is a Swift protocol
conformance witness table entry, consistent with a library-evolution ABI
mismatch between two different builds of "the same" MapboxMaps version,
rather than an actual API-level incompatibility. Note the two distinct
binary UUIDs above (`6639BD74-...` for MapboxNavigationCore,
`0149B9A2-...` for MapboxMaps) — happy to provide the full `.ips` if a
specific UUID lookup on Mapbox's side would help confirm which exact
build each one corresponds to.

## Setup

- **MapboxNavigationCore / MapboxNavigationUIKit / MapboxDirections /
_MapboxNavigationHelpers**: v3.11.0, vendored as precompiled xcframeworks
downloaded from `mapbox-navigation-ios-build-artifacts` (official
distribution channel).
- **MapboxMaps / MapboxCommon / MapboxCoreMaps / Turf**: installed via
CocoaPods, through `@rnmapbox/maps` (`RNMapboxMapsVersion: "11.14.0"`).
- This 11.14.0 pairing is exactly what v3.11.0's own release notes state
is required ("Packaging: MapboxNavigationCore now requires MapboxMaps
v11.14.0").
- Confirmed via a real `pod install` log that CocoaPods resolves
`MapboxMaps (11.14.0)` correctly — this isn't a version-resolution
problem.
- Confirmed via a second crash report on a genuinely fresh build (app
fully uninstalled/reinstalled beforehand) — not a stale-binary artifact,
and the identical symbol reappeared.
- React Native 0.79.6, Expo SDK 53, New Architecture (Fabric) enabled,
`useFrameworks: static`, `@rnmapbox/maps` 10.1.44.

## Question

Is `mapbox-navigation-ios-build-artifacts`'s precompiled build of
MapboxNavigationCore guaranteed to be ABI-identical to the MapboxMaps
binary distributed via CocoaPods at the same version number? Or are these
two distribution channels (official precompiled artifacts vs. CocoaPods)
built through different pipelines that could produce non-ABI-identical
binaries for "the same" released version?

This seems related to the guidance given by @kried on #4703 regarding
vendoring MapboxNavigationCore alongside a separately-sourced MapboxMaps —
any clarification on whether that guidance still applies as of v3.11.0,
and specifically whether it explains this exact symbol-missing crash,
would help a lot.

## What's already been ruled out

- Wrong version pairing (confirmed exact match to release notes)
- CocoaPods resolving the wrong MapboxMaps version (confirmed via pod
install log)
- Stale/cached build (confirmed via a second crash on a fresh install,
identical symbol)
- `GestureType.singleTap` being removed from the API (confirmed still
present)

Happy to provide the full `.ips` crash report, Podfile.lock, or any other
diagnostic information needed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the full .ips crash report, Podfile.lock, the v3.11.0 release notes, and the documented guidance from issue #4703. Compare the referenced binary UUIDs and the MapboxNavigationCore xcframework with the CocoaPods-distributed MapboxMaps binary. Done means establishing whether the distribution channels are ABI-compatible and documenting the applicable v3.11.0 integration guidance.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, react-native, swift
Domain
build-system, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.