Skip to content

feat: add an fcm-core subspec for apps that get Firebase from Swift Package Manager - #689

Merged
Shahroz16 merged 3 commits into
mainfrom
feat/fcm-core-subspec
Oct 27, 2026
Merged

Shahroz16 merged 3 commits into
mainfrom
feat/fcm-core-subspec

Conversation

@Shahroz16

@Shahroz16 Shahroz16 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

React Native Firebase 26.1 and later adds Firebase through Swift Package Manager by default on React Native 0.75+, and 27 removed its CocoaPods option. Our fcm subspec also installs FirebaseMessaging from CocoaPods, so those apps end up with two copies of Firebase and the iOS build fails with Multiple commands produce ... FirebaseCore.framework. This predates 7.0.0: the fcm subspec has always brought its own Firebase, so 6.x has the same problem.

This adds an opt-in fcm-core subspec that depends on CioFirebaseWrapper/Core. That subspec links no Firebase and finds the app's FirebaseMessaging at runtime, which customerio-ios 5.0.0 already supports. fcm, apn and nopush are unchanged, and the README now explains when to use fcm-core. Merging releases 7.1.0.

Verified locally with the 7.0.0 example app (React Native 0.83.6) on an iOS 26.5 simulator, ad-hoc signed so the app gets a real APNs token:

Setup Build FCM token
React Native Firebase 26.4 defaults + fcm (today) fails, duplicate FirebaseCore n/a
React Native Firebase 26.4 defaults + fcm-core passes real token stored
React Native Firebase 27.1 defaults + fcm-core passes real token stored
No React Native Firebase + fcm (unchanged path) passes real token stored

A push tap and deep link with fcm-core on React Native Firebase 27.1 also passed in a Maestro run on Oct 26.

Follow-ups, outside this PR:

  • Expo: the plugin always writes fcm. Its generated extension targets also skip use_frameworks! when frameworks are dynamic, so Expo apps on React Native Firebase defaults need a plugin change.
  • CI: nothing builds fcm-core yet. That's tracked in MBL-2656.

Docs: customerio/docs#4691 documents the 26.x $RNFirebaseDisableSPM = true workaround now. Once 7.1.0 is out, those pages can point to fcm-core.

🤖 Generated with Claude Code

Shahroz16 and others added 2 commits October 27, 2026 09:54
…ackage Manager

React Native Firebase 26.1+ resolves Firebase through Swift Package Manager by default, and 27 has no
CocoaPods option. The fcm subspec also installs FirebaseMessaging from CocoaPods, so those apps end
up with two copies of Firebase and the iOS build fails. This predates 7.0.

fcm-core depends on CioFirebaseWrapper/Core, which links no Firebase and finds FirebaseMessaging at
runtime. The fcm subspec is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Shahroz16
Shahroz16 requested a review from a team as a code owner October 27, 2026 14:13
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Sample app builds 📱

Below you will find the list of the latest versions of the sample apps. It's recommended to always download the latest builds of the sample apps to accurately test the pull request.


Builds are in progress. This comment will be updated when they finish.

  • iOS APN: 689.3.0 (29885231)
  • iOS FCM: 689.3.0 (29885231)

Comment thread README.md Outdated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Shahroz16
Shahroz16 merged commit 195a10c into main Oct 27, 2026
19 checks passed
@Shahroz16
Shahroz16 deleted the feat/fcm-core-subspec branch October 27, 2026 15:25
cio-mobile-release Bot pushed a commit that referenced this pull request Oct 27, 2026
## [7.1.0](7.0.0...7.1.0) (2026-10-27)

### Features

* add an fcm-core subspec for apps that get Firebase from Swift Package Manager ([#689](#689)) ([195a10c](195a10c))
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.

3 participants