Skip to content

Feat/rn 087 spm - #82

Draft
trevor-lambert wants to merge 5 commits into
mainfrom
feat/rn-087-spm
Draft

trevor-lambert wants to merge 5 commits into
mainfrom
feat/rn-087-spm

Conversation

@trevor-lambert

@trevor-lambert trevor-lambert commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

No description provided.

@vercel

vercel Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
react-native-ionic-portals Ready Ready Preview Oct 8, 2026 6:39pm UTC

Request Review

The 0.13.0-rn.1 Android build still gates every Portal behind the
registration screen, while register() has been a no-op since registration
was deprecated, so Android portals showed "Register Product" instead of the
web app. Portals 0.13.1 removes registration. iOS moves to ~> 0.13.1 to
match. Also turns on the New Architecture in the Android example, which
RN 0.82+ requires.
Upgrades the example app to RN 0.87.1 (AGP 9, Gradle 9.4, Kotlin 2.2.0,
compileSdk 37) and the library's Android build to Java 17 and Kotlin 2.2.0.
Removes the pre-0.71 podspec branch, moves TypeScript to bundler module
resolution for RN's exports-based types, and replaces Metro's removed
exclusionList with blockList.
Ships a hand-written Package.swift so apps using React Native 0.87's
experimental SwiftPM mode (npx react-native spm) can add this package.
Portals and Capacitor then resolve through capacitor-swift-pm, so the app
links a single Capacitor and Capacitor plugins from SwiftPM are discovered.

SwiftPM can't mix Swift and Objective-C++ in one target, so the Swift
sources move to ios/Swift and build as their own target. The autolinked
name is pinned to ReactNativePortals in react-native.config.js and
package.json. Portals now logs when a plugin class isn't a CAPPlugin of the
Capacitor it uses instead of dropping it silently. The example app moves
from the deprecated RCTAppDelegate to RCTReactNativeFactory, which builds
in both CocoaPods and SwiftPM mode.
React Native 0.87 requires Xcode 16.1 or later, and the macos-14 image
defaults to Xcode 15.4, so pod install failed.
In SwiftPM mode the .mm files that register the bridge modules are in a
separate target from the Swift classes. Release builds give internal
@objc classes a local symbol, so IONPortalPubSub, IONPortalViewManager and
IONPortalsWebVitals failed to link. Debug builds and CocoaPods mode were
unaffected. Adds a test that every class registered with RCT_EXTERN_MODULE
is public.

This branch was successfully deployed

1 active deployment
Preview — d1cec898 Deployed Oct 8, 2026 by vercel[bot]
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.

1 participant