Skip to content
Latchkey

React Native "ld: symbol(s) not found" (iOS link) in CI

After compilation, ld resolves every referenced symbol against the linked libraries. "symbol(s) not found for architecture arm64" means a symbol a source uses is not provided by any linked framework or pod, so the link step fails.

What this error means

The iOS build fails at link time with "Undefined symbols for architecture arm64: ..." and "ld: symbol(s) not found for architecture arm64", listing the missing symbols.

ld
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_RNCAsyncStorage", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1

Common causes

A pod or framework is not linked

A native module was added but pods were not reinstalled, so the library providing the symbol is not linked into the target.

An architecture or build setting excludes the lib

Excluded archs, a missing search path, or a static/dynamic mismatch leaves the symbol unresolved for arm64.

How to fix it

Reinstall pods so the module links

Regenerate the Pods project so the native module is linked into the app target.

Terminal
npm ci
cd ios && pod install

Check library search paths and arch settings

Verify the framework is in the target and Library Search Paths include the pod output for arm64.

Terminal
cd ios && xcodebuild -workspace App.xcworkspace -scheme App -showBuildSettings | grep -i search_paths

How to prevent it

  • Run pod install whenever native modules change.
  • Avoid manual archs/search-path edits that drop arm64.
  • Keep the Podfile and lockfile in sync with installed modules.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →