Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
847a572
chore(core): Bump sample app to React Native 0.84.1
antonis Mar 31, 2026
8ef850b
fix(core): Patch react-native-build-config for Gradle 9 compatibility
antonis Mar 31, 2026
ead10c6
fix(core): Patch react-native-launch-arguments for Gradle 9 compatibiโ€ฆ
antonis Mar 31, 2026
fb4a398
chore(core): Bump react-native-reanimated to 4.3.0 for RN 0.84 support
antonis Mar 31, 2026
68eaa2d
fix(core): Replace deprecated rncore.h with FBReactNativeSpec.h
antonis Mar 31, 2026
158e678
Lint issue
antonis Mar 31, 2026
4157b02
fix(ci): Bump Node to 22 in sample app CI workflows
antonis Apr 1, 2026
f3d0cf2
fix(ios): Fix podspec compiler flags being overridden by install_moduโ€ฆ
antonis Apr 1, 2026
4280fa9
revert: Remove redundant OTHER_CFLAGS from pod_target_xcconfig
antonis Apr 1, 2026
64f0b09
refactor(core): Remove yarn patches in favor of version bumps and depโ€ฆ
antonis Apr 1, 2026
1f23e0f
fix(ci): Remove legacy arch from sample app CI matrix
antonis Apr 1, 2026
dadeb89
fix(core): Fix tsconfig resolution and Detox R8 error for RN 0.84
antonis Apr 1, 2026
6c2d293
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 1, 2026
5662d30
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 1, 2026
30c5cad
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 1, 2026
eb71e76
fix(core): Restore react-native-build-config and update Node constraints
antonis Apr 1, 2026
90b00f2
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 1, 2026
5774bb3
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 2, 2026
e4ceaf1
Merge branch 'main' into antonis/bump-sample-rn-0.84.1
antonis Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/buildandtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock
- name: Install Dependencies
Expand Down
19 changes: 8 additions & 11 deletions .github/workflows/sample-application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,9 @@ jobs:
strategy:
fail-fast: false
matrix:
rn-architecture: ['legacy', 'new']
ios-use-frameworks: ['no-frameworks', 'dynamic-frameworks']
rn-architecture: ['new']
ios-use-frameworks: ['no-frameworks']
build-type: ['dev', 'production']
exclude:
- rn-architecture: 'new'
ios-use-frameworks: 'dynamic-frameworks'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

Expand All @@ -72,7 +69,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock

Expand Down Expand Up @@ -152,7 +149,7 @@ jobs:
strategy:
fail-fast: false
matrix:
rn-architecture: ['legacy', 'new']
rn-architecture: ['new']
build-type: ['dev', 'production']
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Expand All @@ -163,7 +160,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock

Expand Down Expand Up @@ -238,7 +235,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock

Expand Down Expand Up @@ -325,7 +322,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock

Expand Down Expand Up @@ -407,7 +404,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
package-manager-cache: false
node-version: 18
node-version: 22
cache: 'yarn'
cache-dependency-path: yarn.lock

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff --git a/android/build.gradle b/android/build.gradle
index 8eb2638fe8f4eddfe5daaa3d54ba39cf4e11e6f8..f7d77d75f57004438998cded63ce694d0753dcf4 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,13 +1,3 @@
-buildscript {
- repositories {
- jcenter()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:1.3.0'
- }
-}
-
apply plugin: 'com.android.library'

android {
@@ -19,7 +9,7 @@ android {
versionCode 1
versionName "1.0"
}
- lintOptions {
+ lint {
abortOnError false
}
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@
"@appium/base-driver@npm:10.2.2/path-to-regexp": "^8.4.0",
"router@npm:2.2.0/path-to-regexp": "^8.4.0",
"yaml": "^2.8.3",
"react-native-build-config@^0.3.2": "patch:react-native-build-config@npm%3A0.3.2#./.yarn/patches/react-native-build-config-npm-0.3.2-0e671629bd.patch",
"minimatch@npm:5.1.9/brace-expansion": "^2.0.3",
"minimatch@npm:8.0.7/brace-expansion": "^2.0.3",
"minimatch@npm:9.0.9/brace-expansion": "^2.0.3",
Expand Down
1 change: 1 addition & 0 deletions samples/react-native/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ android {
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
testProguardFiles "proguard-rules.pro"
proguardFile "${rootProject.projectDir}/../node_modules/detox/android/detox/proguard-rules-app.pro"
}
}
Expand Down
3 changes: 3 additions & 0 deletions samples/react-native/android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@
# Detox Release tests were failing on missing kotlin.Result
# It should be covered by node_modules/detox/android/detox/proguard-rules-app.pro but it seems missing
-keep class kotlin.** { *; }

# Detox references bridge classes removed in RN 0.84
-dontwarn com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,23 @@ import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import io.sentry.react.RNSentrySDK

class MainApplication :
Application(),
ReactApplication {
override val reactNativeHost: ReactNativeHost =
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
override val reactHost: ReactHost by lazy {
getDefaultReactHost(
context = applicationContext,
packageList =
PackageList(this).packages.apply {
add(SamplePackage())
add(TurboSamplePackage())
}

override fun getJSMainModuleName(): String = "index"

override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}

override val reactHost: ReactHost
get() = getDefaultReactHost(applicationContext, reactNativeHost)
},
)
}

override fun onCreate() {
super.onCreate()
Expand All @@ -46,11 +33,7 @@ class MainApplication :
throw RuntimeException("This was intentional test crash before JS started.")
}

SoLoader.init(this, OpenSourceMergedSoMapping)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load()
}
loadReactNative(this)
}

private fun shouldCrashOnStart(): Boolean {
Expand Down
6 changes: 3 additions & 3 deletions samples/react-native/android/app/src/main/jni/OnLoad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@

#include <DefaultComponentsRegistry.h>
#include <DefaultTurboModuleManagerDelegate.h>
#include <FBReactNativeSpec.h>
#include <NativeSampleModule.h>
#include <autolinking.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <rncore.h>

#ifdef REACT_NATIVE_APP_CODEGEN_HEADER
# include REACT_NATIVE_APP_CODEGEN_HEADER
Expand Down Expand Up @@ -91,7 +91,7 @@ javaModuleProvider(const std::string &name, const JavaTurboModule::InitParams &p
// if (module != nullptr) {
// return module;
// }
// return rncore_ModuleProvider(name, params);
// return FBReactNativeSpec_ModuleProvider(name, params);

// We link app local modules if available
#ifdef REACT_NATIVE_APP_MODULE_PROVIDER
Expand All @@ -102,7 +102,7 @@ javaModuleProvider(const std::string &name, const JavaTurboModule::InitParams &p
#endif

// We first try to look up core modules
if (auto module = rncore_ModuleProvider(name, params)) {
if (auto module = FBReactNativeSpec_ModuleProvider(name, params)) {
return module;
}

Expand Down
6 changes: 3 additions & 3 deletions samples/react-native/android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@

buildscript {
ext {
buildToolsVersion = "35.0.0"
buildToolsVersion = "36.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "27.1.12297006"
kotlinVersion = "2.0.21"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
5 changes: 4 additions & 1 deletion samples/react-native/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ require Pod::Executable.execute_command('node', ['-p',
{paths: [process.argv[1]]},
)', __dir__]).strip

# In the monorepo, the SDK podspec resolves react-native to its own devDependency.
# Point it to the sample app's react-native so it detects the correct version for build flags.
ENV['REACT_NATIVE_NODE_MODULES_DIR'] ||= File.expand_path(File.join(__dir__, '..', 'node_modules', 'react-native'))

platform :ios, min_ios_version_supported
prepare_react_native_project!

Expand Down Expand Up @@ -54,7 +58,6 @@ target 'sentryreactnativesample' do
new_contents = text.gsub('#define FOLLY_HAS_COROUTINES 1', '#define FOLLY_HAS_COROUTINES 0')
File.open(file, "w") { |file| file.puts new_contents }
end
# https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
react_native_post_install(
installer,
config[:reactNativePath],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,7 @@
OTHER_CFLAGS = (
"$(inherited)",
"-DRN_FABRIC_ENABLED",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
Expand All @@ -623,6 +624,7 @@
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
Expand All @@ -631,6 +633,7 @@
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
SWIFT_ENABLE_EXPLICIT_MODULES = NO;
USE_HERMES = true;
};
name = Debug;
Expand Down Expand Up @@ -691,6 +694,7 @@
OTHER_CFLAGS = (
"$(inherited)",
"-DRN_FABRIC_ENABLED",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
Expand All @@ -699,13 +703,15 @@
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ENABLE_EXPLICIT_MODULES = NO;
USE_HERMES = true;
VALIDATE_PRODUCT = YES;
};
Expand Down
29 changes: 15 additions & 14 deletions samples/react-native/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
},
"dependencies": {
"@react-native-vector-icons/ionicons": "^12.3.0",
"@react-native/new-app-screen": "0.80.2",
"@react-native/new-app-screen": "0.84.1",
"@react-navigation/bottom-tabs": "^7.4.5",
"@react-navigation/native": "^7.1.17",
"@react-navigation/native-stack": "^7.3.24",
Expand All @@ -52,30 +52,31 @@
"@sentry/react-native": "8.7.0",
"@shopify/flash-list": "^2.0.2",
"delay": "^6.0.0",
"react": "19.1.0",
"react-native": "0.80.2",
"react": "19.2.3",
"react-native": "0.84.1",
"react-native-build-config": "^0.3.2",
"react-native-gesture-handler": "^2.28.0",
"react-native-image-picker": "^8.2.1",
"react-native-launch-arguments": "^4.1.0",
"react-native-reanimated": "3.19.1",
"react-native-launch-arguments": "^4.1.1",
"react-native-reanimated": "4.3.0",
"react-native-safe-area-context": "^5.5.2",
"react-native-screens": "^4.13.1",
"react-native-svg": "^15.12.1",
"react-native-webview": "^13.15.0",
"react-native-worklets": "0.8.1",
"react-redux": "^9.2.0",
"setimmediate": "^1.0.5"
},
"devDependencies": {
"@babel/core": "^7.26.7",
"@babel/preset-env": "^7.26.7",
"@babel/runtime": "^7.26.7",
"@react-native-community/cli": "19.1.2",
"@react-native-community/cli-platform-android": "19.1.1",
"@react-native-community/cli-platform-ios": "19.1.1",
"@react-native/babel-preset": "0.80.2",
"@react-native/metro-config": "0.80.2",
"@react-native/typescript-config": "0.80.2",
"@react-native-community/cli": "20.1.0",
"@react-native-community/cli-platform-android": "20.1.0",
"@react-native-community/cli-platform-ios": "20.1.0",
"@react-native/babel-preset": "0.84.1",
"@react-native/metro-config": "0.84.1",
"@react-native/typescript-config": "0.84.1",
"@sentry/babel-plugin-component-annotate": "5.1.1",
"@testing-library/react-native": "^13.2.2",
"@types/jest": "^29.5.14",
Expand All @@ -87,16 +88,16 @@
"detox": "^20.33.0",
"jest": "^29.6.3",
"patch-package": "^8.0.0",
"react-test-renderer": "19.1.0",
"react-test-renderer": "19.2.3",
"sentry-react-native-samples-utils": "workspace:^",
"ts-jest": "^29.3.1",
"typescript": "5.0.4"
},
"engines": {
"node": ">=18"
"node": ">=22.11.0"
},
"volta": {
"node": "18.20.8",
"node": "22.22.2",
"yarn": "3.6.4"
},
"codegenConfig": {
Expand Down
4 changes: 4 additions & 0 deletions samples/react-native/scripts/pod-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ echo "ENABLE_NEW_ARCH=$ENABLE_NEW_ARCH"
cd "${thisFilePath}/.."
bundle install

# In the monorepo, the SDK's packages/core resolves react-native to its own devDependency version.
# We need to point the podspec to the sample app's react-native so it detects the correct version.
export REACT_NATIVE_NODE_MODULES_DIR="${PWD}/node_modules/react-native"

cd ios
PRODUCTION=$ENABLE_PROD RCT_NEW_ARCH_ENABLED=$ENABLE_NEW_ARCH bundle exec pod update

Expand Down
2 changes: 1 addition & 1 deletion samples/react-native/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// prettier-ignore
{
"extends": "@react-native/typescript-config/tsconfig.json",
"extends": "@react-native/typescript-config",
"compilerOptions": {
/* Visit https://aka.ms/tsconfig.json to read more about this file */

Expand Down
Loading
Loading