Repository navigation
Conversation
iOS: React Native 0.88 removed RCTCxxBridge and its declaration in RCTBridge+Private.h, so JSIInstaller and WMDatabaseBridge no longer compiled. The installer now takes a plain RCTBridge and declares the -runtime selector itself; both the legacy RCTCxxBridge and the bridgeless RCTBridgeProxy respond to it, so JSI installs on either. Android: AGP 9 stops generating BuildConfig for library modules, but the Java sources read BuildConfig.DEBUG, so the module enables buildFeatures.buildConfig explicitly. The module has had no Kotlin sources since the Java rewrite, and applying kotlin-android collides with AGP 9's built-in Kotlin extension, so the plugin, its classpath and the stdlib dependency go. Fixes Nozbe#1969, fixes Nozbe#1974 (same root cause), related to Nozbe#1769. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
iOS: React Native 0.88 removed RCTCxxBridge; the JSI installer takes a plain RCTBridge and declares -runtime itself, so it works on the bridge and in bridgeless mode. Android: enable buildFeatures.buildConfig for AGP 9 and drop the unused Kotlin plugin, which collides with AGP 9's built-in Kotlin support. Same change as Nozbe#1978.
… bridgeless via a prebuild plugin RN 0.88 removed RCTCxxBridge, so the WatermelonDB 0.28.0 pod (and 0.28.1-0, and upstream master) fails with "unknown type name 'RCTCxxBridge'". No published release fixes it; upstream's open PR Nozbe/WatermelonDB#1978 makes the same change. withWatermelonBridgelessJsi takes a plain RCTBridge and declares -runtime in a category: in bridgeless mode the module's bridge is an RCTBridgeProxy, which still returns the live jsi::Runtime, and initializeJSI stays a blocking sync call so the JS thread is parked during the install. A dangerous mod, anchor-or-throw and idempotent like withWatermelonBusyTimeout, because the pod compiles from node_modules and the repo has no patch-package. The contract test reads the installed sources so a WatermelonDB bump that moves an anchor fails in jest, not in an EAS build. Delete the plugin once a release ships #1978. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hi @joker-777, thank you so much for putting this together! I maintain NitromelonDB, a maintained fork of WatermelonDB (New Architecture, Nitro Modules). It already builds on Expo SDK 58 / React Native 0.88 and AGP 9: the native side goes through Nitro, so there is no If you're already on 0.88, you'd be very welcome to give it a try. Existing SQLite files, schema and models keep working, and there's a migration guide. The fork was also rewritten in TypeScript (strict mode) to reduce the chance of bugs slipping through, so any feedback or PRs from you would be really appreciated. Happy to help if anything comes up. Thanks! |
React Native 0.88 removed
RCTCxxBridge(and its declaration inRCTBridge+Private.h), soJSIInstaller.h/.mmandWMDatabaseBridge.mno longer compile. AGP 9 (Expo SDK 54+) stops generatingBuildConfigfor library modules and ships its own Kotlin support, which fails when a module also applieskotlin-android.iOS
installWatermelonJSItakes a plainRCTBridge *and declares the-runtimeselector in a category. Both the legacyRCTCxxBridgeand the bridgelessRCTBridgeProxyrespond to it, so JSI installs on the bridge and in bridgeless mode alike. No behaviour change on React Native < 0.88.Android
buildFeatures { buildConfig true }: the Java sources readBuildConfig.DEBUG.kotlin-androidplugin, its classpath entry and the stdlib dependency are removed. This is the same conflict fix(android): skip explicit Kotlin plugin when AGP registers the kotlin extension #1974 guards against; removing the plugin removes the cause.Tested
jsi: false, and the installer path compiles and runs withjsi: trueas well).buildConfigline is what we previously injected from an Expo config plugin for the same builds.yarn ci:checksuites for the touched JS areas pass; this PR changes no JavaScript.Fixes #1969, fixes #1974 (same root cause), related to #1769.