Skip to content
Latchkey

React Native "duplicate symbol(s)" (iOS link) in CI

ld requires each symbol to be defined once. "duplicate symbol ... for architecture arm64" means two linked objects define the same symbol: a pod linked both statically and dynamically, a library included twice, or a transitive duplicate.

What this error means

The link step fails with "duplicate symbol '_X' in: ...a.o ...b.o" and "ld: N duplicate symbols for architecture arm64".

ld
duplicate symbol '_OBJC_CLASS_$_RCTView' in:
    .../libReactCommon.a(RCTView.o)
    .../libReact-Core.a(RCTView.o)
ld: 1 duplicate symbol for architecture arm64

Common causes

A library linked more than once

A pod is pulled in by two paths (static and dynamic, or duplicated entries), so its symbols are defined twice.

use_frameworks mode mismatch

Switching between static and dynamic frameworks without a clean reinstall leaves both copies linked.

How to fix it

Clean and reinstall pods consistently

  1. Remove Pods and Podfile.lock, then pod install fresh.
  2. Pick one linkage mode (static or use_frameworks!) and keep it.
  3. Rebuild after a clean.
Terminal
cd ios && rm -rf Pods Podfile.lock && pod install

Remove the duplicate dependency entry

Ensure the pod or library is declared once and not also linked manually in the target.

How to prevent it

  • Use a single, consistent framework linkage mode.
  • Avoid declaring a pod and also linking it manually.
  • Do a clean pod install after changing use_frameworks settings.

Related guides

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