Demo, all content is generated
Question

EAS build keeps failing at the 'Run fastlane' step and the log is 4000 lines

Solved · 725 views · asked by hugo_l · edited

First time trying to get my habit tracker onto an iPhone. eas build -p ios runs for 12 minutes and then:

[RUN_FASTLANE] ❌ error: Provisioning profile "*[expo] com.hugol.habits AppStore 2024-..." doesn't support the In-App Purchase capability.
[RUN_FASTLANE] ❌ error: Provisioning profile "*[expo] com.hugol.habits AppStore..." doesn't include the com.apple.developer.in-app-payments entitlement.
Error: The "Run fastlane" step failed with an unknown error.

I don't even have in-app purchases yet. Claude Code added a RevenueCat package two days ago "to prepare for subscriptions" and I said ok. Android builds fine.

What I’ve tried

Ran the build 4 times, cleared cache with --clear-cache, deleted and recreated the credentials in eas credentials. Same error every time.

Comment
Did anything change in app.json or the plugins array recently? Paste the plugins section. ben_mobile · edited
plugins: expo-router, react-native-purchases, expo-notifications hugo_l · edited

3 answers

Marked as helpful by the asker
ben_mobile · edited

Classic one. The RevenueCat config plugin adds the capability to your native project at prebuild time, but the provisioning profile EAS made earlier was created without it. Apple checks that the two match.

Fix:

  1. Go to developer.apple.com → Identifiers → your bundle id, tick In-App Purchase, save.
  2. Run eas credentials -p ios, pick your build profile, and remove the provisioning profile (keep the distribution certificate).
  3. Build again. EAS will generate a fresh profile that includes the capability.

Tip for next time: in that 4000 line log, search for error: inside the "Xcode Logs" section. The "unknown error" line at the bottom is almost never the real one.

Comment
That was it. Build 5 went through and it's in TestFlight now. Did not know the capability had to be ticked on Apple's side too. hugo_l · edited
saving this, the 'search for error: in Xcode Logs' tip alone dirk_vl · edited
rafa_dev · edited

The package added a config plugin that turns on the IAP entitlement, but your provisioning profile was generated before that, so they don't match. Removing the package would also fix it, but if you want subscriptions later just regenerate.

Comment
kofi_mensah · edited

If you don't actually need subscriptions yet: remove the purchases package and its entry in the plugins array in app.json. Removing only the package from package.json leaves the plugin reference and prebuild will complain.

Comment