An iOS Build Failure That Was Really a Precompiled Hermes Problem
TL;DR
- iOS archive failed repeatedly with
rsyncunable to find certain files. - The missing files were ARM64 Hermes directories that React Native’s precompiled dependencies never set up.
- Standard cleaning — pods, Podfile.lock, derived data — didn’t touch it, because the cause was upstream of all that.
- Disabling the precompilation flag in the Podfile and reinstalling clean fixed it.
- Precompiled dependencies promise faster builds and deliver a new failure mode.
A slog through React Native iOS build failures. The build failed repeatedly no matter how thoroughly I cleaned and reinstalled, which should have told me sooner that cleaning wasn’t the answer.
What I tried first
I validated the obvious settings in Xcode — signing team, bundle identifier — and tried building from Xcode directly rather than the CLI. No difference.
Then the standard ritual: delete derived data, delete the Podfile lock and existing pods, reinstall. Archive still failed. I also cleared the Watchman cache in case something stale was hiding there.
Repeating a cleanup that isn’t working is a trap, and I stayed in it longer than I should have.
The actual error
The build was failing on rsync being unable to find certain files. My first thought was that rsync wasn’t installed locally, which it was.
Reading the paths more carefully, the missing files were tied to React Native’s dependencies — specifically a missing directory related to the ARM64 architecture. Cross-referencing terminal history and build logs, the picture resolved: React Native’s dependency precompilation wasn’t fully setting up the Hermes directories.
That’s why cleaning did nothing. Every reinstall faithfully reproduced the same incomplete precompiled setup. The missing link was Hermes not being fully compiled into the React Native core, and no amount of clearing derived data changes what the precompiled binaries contain.
The fix
Remove the environment flag enabling React Native dependency precompilation from the Podfile, then purge everything — build folder, pods, Podfile.lock, derived data — so no residual precompiled binaries survive, and reinstall without the feature.
The app built and released.
Worth reporting
Precompiled dependencies exist to cut build times, and that’s a real benefit. But when the precompilation doesn’t lay down every directory it should, the failure surfaces as a confusing rsync error several layers away from the cause. Nothing in that error suggests “your Hermes build is incomplete.”
Reverting to the standard build process was the right call here. I’ll write this up for the React Native and Hermes folks, because the error message is the actual problem — the underlying bug is findable, but only if you already suspect precompilation.
ryer.io