Skip to content

fix(crashlytics, ios): resolve target-folder GoogleService-Info.plist for SPM dSYM upload - #9305

Open
russellwheatley wants to merge 1 commit into
mainfrom
feature/cprn-439-9304-iosspmcrashlytics-dsym-upload-symbols-hardcodes
Open

fix(crashlytics, ios): resolve target-folder GoogleService-Info.plist for SPM dSYM upload#9305
russellwheatley wants to merge 1 commit into
mainfrom
feature/cprn-439-9304-iosspmcrashlytics-dsym-upload-symbols-hardcodes

Conversation

@russellwheatley

Copy link
Copy Markdown
Member

The SPM upload-symbols branches in ios_config.sh hardcoded ${PROJECT_DIR}/GoogleService-Info.plist. Both Expo's config plugin and RNFB's documented manual/CLI setup place the plist at ios/<TargetName>/GoogleService-Info.plist instead, so any SPM Crashlytics setup following those docs failed the dSYM upload build phase. CocoaPods setups were unaffected since upload-symbols there resolves the plist from inside the Pods sandbox.

  • Resolve the plist path once, checking the target-folder location first and falling back to the PROJECT_DIR root
  • Reuse that resolved path in both existing upload-symbols invocations instead of duplicating the check
  • Warn and skip the upload instead of hard-failing when the plist is at neither location
  • Add packages/crashlytics/__tests__/ios_config.test.ts, running the script against a stubbed upload-symbols binary in a temp sandbox, covering the target-folder path, the root fallback, and the neither-found warn-and-skip case

Maintainer note: Fixes internal CPRN-439

@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.49%. Comparing base (695161f) to head (7be1cc1).

Additional details and impacted files
@@            Coverage Diff            @@
##               main    #9305   +/-   ##
=========================================
  Coverage     69.49%   69.49%           
  Complexity     2129     2129           
=========================================
  Files           439      439           
  Lines         25472    25472           
  Branches       4251     4251           
=========================================
  Hits          17700    17700           
  Misses         6365     6365           
  Partials       1407     1407           
Flag Coverage Δ
android-native 65.92% <ø> (ø)
e2e-ts-android 54.44% <ø> (ø)
e2e-ts-ios 53.91% <ø> (ø)
e2e-ts-macos 49.96% <ø> (ø)
ios-ruby 100.00% <ø> (ø)
jest 47.57% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

… for SPM dSYM upload

ios_config.sh hardcoded ${PROJECT_DIR}/GoogleService-Info.plist for the SPM
upload-symbols branches. Both Expo's config plugin and RNFB's documented
manual/CLI setup place the plist at ios/<TargetName>/GoogleService-Info.plist
instead, so any SPM Crashlytics setup following those docs failed the dSYM
upload build phase.

Resolve the plist path once (target-folder first, falling back to the
PROJECT_DIR root), reuse it in both upload-symbols invocations, and warn and
skip the upload instead of hard-failing when neither location has it.

Fixes #9304
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🔥 [iOS][SPM][Crashlytics] dSYM upload-symbols script hardcodes ${PROJECT_DIR}/GoogleService-Info.plist, ignoring Expo/target-folder location

1 participant