From 053ae024f2f19660e31442302e14fbaedee3c522 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 26 Aug 2026 15:57:07 +0200 Subject: [PATCH 1/2] chore(sample): Bump React Native sample to 0.87.0 Includes AGP 9 / Kotlin 2.2.0 migration required by RN 0.87: - gradle-wrapper 9.4.1, compileSdk/buildTools 37, kotlinVersion 2.2.0 - android.builtInKotlin=false and android.newDsl=false (AGP 9 opt-outs) - proguard-android-optimize.txt (AGP 9 requires it) - react-native-reanimated 4.6.0 + react-native-worklets 0.12.1 (RN 0.87 compat) Co-Authored-By: Claude Opus 4.8 --- samples/react-native/android/app/build.gradle | 2 +- samples/react-native/android/build.gradle | 6 +- .../react-native/android/gradle.properties | 5 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- samples/react-native/package.json | 16 +- yarn.lock | 557 +++++++++++++++++- 6 files changed, 555 insertions(+), 33 deletions(-) diff --git a/samples/react-native/android/app/build.gradle b/samples/react-native/android/app/build.gradle index 407fa5942e..65e245a1e0 100644 --- a/samples/react-native/android/app/build.gradle +++ b/samples/react-native/android/app/build.gradle @@ -189,7 +189,7 @@ android { // see https://reactnative.dev/docs/signed-apk-android. signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" testProguardFiles "proguard-rules.pro" proguardFile "${rootProject.projectDir}/../node_modules/detox/android/detox/proguard-rules-app.pro" } diff --git a/samples/react-native/android/build.gradle b/samples/react-native/android/build.gradle index 26cbcfca98..2bfa17b79e 100644 --- a/samples/react-native/android/build.gradle +++ b/samples/react-native/android/build.gradle @@ -1,12 +1,12 @@ buildscript { ext { - buildToolsVersion = "36.0.0" + buildToolsVersion = "37.0.0" minSdkVersion = 24 - compileSdkVersion = 36 + compileSdkVersion = 37 targetSdkVersion = 36 ndkVersion = "27.1.12297006" - kotlinVersion = "2.1.20" + kotlinVersion = "2.2.0" } repositories { google() diff --git a/samples/react-native/android/gradle.properties b/samples/react-native/android/gradle.properties index d71a974450..8569b73905 100644 --- a/samples/react-native/android/gradle.properties +++ b/samples/react-native/android/gradle.properties @@ -43,3 +43,8 @@ hermesEnabled=true # It's used for testing the native SDK auto-start feature. # true means manual native start is disabled and JS auto initializes native SDK. sentryDisableNativeStart=false + +# Opt out of built-in kotlin and new DSL behavior that ships with AGP 9. +# Starting from AGP 10.x these opt outs will be removed. +android.builtInKotlin=false +android.newDsl=false diff --git a/samples/react-native/android/gradle/wrapper/gradle-wrapper.properties b/samples/react-native/android/gradle/wrapper/gradle-wrapper.properties index 37f78a6af8..c61a118f7d 100644 --- a/samples/react-native/android/gradle/wrapper/gradle-wrapper.properties +++ b/samples/react-native/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/samples/react-native/package.json b/samples/react-native/package.json index efaf2fe600..6df0eadef3 100644 --- a/samples/react-native/package.json +++ b/samples/react-native/package.json @@ -41,7 +41,7 @@ }, "dependencies": { "@react-native-vector-icons/ionicons": "^12.3.0", - "@react-native/new-app-screen": "0.86.2", + "@react-native/new-app-screen": "0.87.0", "@react-navigation/bottom-tabs": "^7.4.5", "@react-navigation/native": "^7.1.17", "@react-navigation/native-stack": "^7.3.24", @@ -53,17 +53,17 @@ "@shopify/flash-list": "^2.0.2", "delay": "^6.0.0", "react": "19.2.3", - "react-native": "0.86.2", + "react-native": "0.87.0", "react-native-build-config": "^0.3.2", "react-native-gesture-handler": "^3.0.1", "react-native-image-picker": "^8.2.1", "react-native-launch-arguments": "^4.1.1", - "react-native-reanimated": "4.4.1", + "react-native-reanimated": "4.6.0", "react-native-safe-area-context": "^5.5.2", "react-native-screens": "^4.13.1", "react-native-svg": "^15.15.4", "react-native-webview": "^13.15.0", - "react-native-worklets": "0.9.2", + "react-native-worklets": "0.12.1", "react-redux": "^9.2.0", "setimmediate": "^1.0.5" }, @@ -74,10 +74,10 @@ "@react-native-community/cli": "20.1.3", "@react-native-community/cli-platform-android": "20.1.3", "@react-native-community/cli-platform-ios": "20.1.3", - "@react-native/babel-preset": "0.86.2", - "@react-native/jest-preset": "0.86.2", - "@react-native/metro-config": "0.86.2", - "@react-native/typescript-config": "0.86.2", + "@react-native/babel-preset": "0.87.0", + "@react-native/jest-preset": "0.87.0", + "@react-native/metro-config": "0.87.0", + "@react-native/typescript-config": "0.87.0", "@sentry/bundler-plugins": "10.71.0", "@testing-library/react-native": "^13.2.2", "@types/jest": "^29.5.14", diff --git a/yarn.lock b/yarn.lock index 3a8d0277a3..f6f490b452 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8878,6 +8878,13 @@ __metadata: languageName: node linkType: hard +"@react-native/asset-utils@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/asset-utils@npm:0.87.0" + checksum: 10c0/37b439b5fd72bd05702a48907e05486593d6b86197191fb29c8eb9586c0738e5f3db1c74ddc228bc2fa9c2dcb9c905bbc09647461b2de59c2e375017d91e720b + languageName: node + linkType: hard + "@react-native/assets-registry@npm:0.81.6": version: 0.81.6 resolution: "@react-native/assets-registry@npm:0.81.6" @@ -8932,6 +8939,16 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-plugin-codegen@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/babel-plugin-codegen@npm:0.87.0" + dependencies: + "@babel/traverse": "npm:^7.29.0" + "@react-native/codegen": "npm:0.87.0" + checksum: 10c0/76d094cc72c9f7db533a82213fd6b9ea5eead5d9afe9c03071934c40240bca4ebaab12b2fef0fcd1025e77eb8c5a1656adf39954a6dbca0ce92ebabd408b73da + languageName: node + linkType: hard + "@react-native/babel-preset@npm:0.79.2": version: 0.79.2 resolution: "@react-native/babel-preset@npm:0.79.2" @@ -9085,6 +9102,49 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-preset@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/babel-preset@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.25.4" + "@babel/plugin-transform-classes": "npm:^7.25.4" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-react-display-name": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/plugin-transform-typescript": "npm:^7.25.2" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@react-native/babel-plugin-codegen": "npm:0.87.0" + babel-plugin-syntax-hermes-parser: "npm:0.36.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + react-refresh: "npm:^0.14.0" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/9599f7e34143af8026031f7769183b90d2f749bb37294fc62a8631edd5849eaa030bf71a26c6cd83961ad69c55caa4175a74019ace324babe95f44bc94638247 + languageName: node + linkType: hard + "@react-native/codegen@npm:0.79.2": version: 0.79.2 resolution: "@react-native/codegen@npm:0.79.2" @@ -9151,6 +9211,23 @@ __metadata: languageName: node linkType: hard +"@react-native/codegen@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/codegen@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/parser": "npm:^7.29.0" + hermes-parser: "npm:0.36.1" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + tinyglobby: "npm:^0.2.15" + yargs: "npm:^17.6.2" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/b6eca6502b9b77eea367318ee2ae38c9643b76c20d4d1e6be97d88bde5ffb4a7caec61489042e280f65f3d15c3f7a382c0810d96063f1e6e0eefb7fdd1d09217 + languageName: node + linkType: hard + "@react-native/community-cli-plugin@npm:0.81.6": version: 0.81.6 resolution: "@react-native/community-cli-plugin@npm:0.81.6" @@ -9197,6 +9274,28 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/community-cli-plugin@npm:0.87.0" + dependencies: + "@react-native/asset-utils": "npm:0.87.0" + "@react-native/dev-middleware": "npm:0.87.0" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + metro: "npm:^0.87.0" + semver: "npm:^7.1.3" + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": 0.87.0 + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: 10c0/548eaacde40a590710682983feb929408b6266a3650083e372666bd8e5da18d10717f2c5be0769ceac780db073d2a8eba3f351ed5e8335f403e6ee79a77eed2b + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.79.2": version: 0.79.2 resolution: "@react-native/debugger-frontend@npm:0.79.2" @@ -9225,6 +9324,13 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-frontend@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/debugger-frontend@npm:0.87.0" + checksum: 10c0/a631ec47c18db292bfd8dde5ead36e9b1a6de7ee885185dea66c043ae750cb82936cce5dae70c30a7eef527ab98f0ce335abe232435829c7a678cf444cf2ae48 + languageName: node + linkType: hard + "@react-native/debugger-shell@npm:0.86.0": version: 0.86.0 resolution: "@react-native/debugger-shell@npm:0.86.0" @@ -9247,6 +9353,17 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-shell@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/debugger-shell@npm:0.87.0" + dependencies: + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.4.0" + fb-dotslash: "npm:0.5.8" + checksum: 10c0/3eb08b5dc26d95dd25499ad90a6c79b24442a3216a92609bbde876a165e6fc4e89b1b76b1359504613808b8ce143b1e44f93318becd8c3df0a6737af35228c98 + languageName: node + linkType: hard + "@react-native/dev-middleware@npm:0.79.2": version: 0.79.2 resolution: "@react-native/dev-middleware@npm:0.79.2" @@ -9325,6 +9442,26 @@ __metadata: languageName: node linkType: hard +"@react-native/dev-middleware@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/dev-middleware@npm:0.87.0" + dependencies: + "@isaacs/ttlcache": "npm:^1.4.1" + "@react-native/debugger-frontend": "npm:0.87.0" + "@react-native/debugger-shell": "npm:0.87.0" + chrome-launcher: "npm:^0.15.2" + chromium-edge-launcher: "npm:^0.3.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + open: "npm:^7.0.3" + serve-static: "npm:^1.16.2" + ws: "npm:^7.5.10" + checksum: 10c0/10ada5940b3b138f7e18c9615a5d8f829f9f2211ad30daba2417fac109b312f2a8eb8c5ebc8c2f582f8fe800870ab11168e511babf88d1f29984c4b5149b0f71 + languageName: node + linkType: hard + "@react-native/gradle-plugin@npm:0.81.6": version: 0.81.6 resolution: "@react-native/gradle-plugin@npm:0.81.6" @@ -9339,6 +9476,13 @@ __metadata: languageName: node linkType: hard +"@react-native/gradle-plugin@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/gradle-plugin@npm:0.87.0" + checksum: 10c0/1a9274ac000587336854f20145d1e2b91d092936a77d7f162da149cdf09329364998714b74324a04c22d975780849aeef092f7ccada198eac5d69a70e90552d3 + languageName: node + linkType: hard + "@react-native/jest-preset@npm:0.86.2": version: 0.86.2 resolution: "@react-native/jest-preset@npm:0.86.2" @@ -9354,6 +9498,21 @@ __metadata: languageName: node linkType: hard +"@react-native/jest-preset@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/jest-preset@npm:0.87.0" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@react-native/js-polyfills": "npm:0.87.0" + babel-jest: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + regenerator-runtime: "npm:^0.13.2" + peerDependencies: + react: ^19.2.3 + checksum: 10c0/22e86f6c415247d982302295a350e40e9b1c2c53cf72519afa98c94bd989632eff2cf6b98d0e87024fec4ccefcc7194c937510bfe271fafc15ca58d84aed0d7b + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.81.6": version: 0.81.6 resolution: "@react-native/js-polyfills@npm:0.81.6" @@ -9368,6 +9527,13 @@ __metadata: languageName: node linkType: hard +"@react-native/js-polyfills@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/js-polyfills@npm:0.87.0" + checksum: 10c0/aed86f4975323f9622154a79e113d7f722322124d366739b62db0dd6589b45d8c8601384cf0ad29bd775524a67b1c179305aa015184d1fc2f7e8bf5e36b4014d + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.81.6": version: 0.81.6 resolution: "@react-native/metro-babel-transformer@npm:0.81.6" @@ -9396,6 +9562,20 @@ __metadata: languageName: node linkType: hard +"@react-native/metro-babel-transformer@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/metro-babel-transformer@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@react-native/babel-preset": "npm:0.87.0" + hermes-parser: "npm:0.36.1" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/ee8661b5b321f9df62e7396ab250572e5e378c7a709fd9b5c352609e586b71582a739f0ea29973b73e49e22b3eb340d2fbd3f0595a18d271cdc8cb0db26a7f22 + languageName: node + linkType: hard + "@react-native/metro-config@npm:0.81.6": version: 0.81.6 resolution: "@react-native/metro-config@npm:0.81.6" @@ -9420,6 +9600,18 @@ __metadata: languageName: node linkType: hard +"@react-native/metro-config@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/metro-config@npm:0.87.0" + dependencies: + "@react-native/js-polyfills": "npm:0.87.0" + "@react-native/metro-babel-transformer": "npm:0.87.0" + metro-config: "npm:^0.87.0" + metro-runtime: "npm:^0.87.0" + checksum: 10c0/66cd5766f1abd7895ee7b18ae88eeed32c6353f13787490880e3d2d88212cb78160c372e8292a204307e6af1785d85b098a98f69dc8a91cf92aa03642b0217db + languageName: node + linkType: hard + "@react-native/new-app-screen@npm:0.86.2": version: 0.86.2 resolution: "@react-native/new-app-screen@npm:0.86.2" @@ -9434,6 +9626,20 @@ __metadata: languageName: node linkType: hard +"@react-native/new-app-screen@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/new-app-screen@npm:0.87.0" + peerDependencies: + "@types/react": ^19.1.0 + react: "*" + react-native: 0.87.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/c98d1d05211db746b0a721fd7bbf0f30fb3a9586bf8ff7c3afea378195181534e5115912c54521f10dd075fae44712810a50ec55b8b6c4d7889e736351b7f694 + languageName: node + linkType: hard + "@react-native/normalize-color@npm:^2.0.0": version: 2.1.0 resolution: "@react-native/normalize-color@npm:2.1.0" @@ -9469,6 +9675,13 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-colors@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/normalize-colors@npm:0.87.0" + checksum: 10c0/85c4ac262f2c1429b105c6f598614665732e24c9b18268acac7557a225c617ea2f3eff35512530af8e403074400b0a9126a09de447a3e9e680e758392099dbe7 + languageName: node + linkType: hard + "@react-native/normalize-colors@npm:^0.74.1": version: 0.74.87 resolution: "@react-native/normalize-colors@npm:0.74.87" @@ -9490,6 +9703,13 @@ __metadata: languageName: node linkType: hard +"@react-native/typescript-config@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/typescript-config@npm:0.87.0" + checksum: 10c0/0d5836325cc5af58206d093feeb8c28e302ba782ac275b9a8cd1c7f872e09555e660a036539e12e61428c501ada4747122a7a19ff927e93398d0683c3aeb928f + languageName: node + linkType: hard + "@react-native/virtualized-lists@npm:0.81.6": version: 0.81.6 resolution: "@react-native/virtualized-lists@npm:0.81.6" @@ -9524,6 +9744,23 @@ __metadata: languageName: node linkType: hard +"@react-native/virtualized-lists@npm:0.87.0": + version: 0.87.0 + resolution: "@react-native/virtualized-lists@npm:0.87.0" + dependencies: + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@types/react": ^19.2.0 + react: "*" + react-native: 0.87.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/1bfe0fbd1211a83c83392ad7f901a4eb6772106e94495a3d38cc063a864838a8cecd01b185676320b9e304cd07a84dad245a8cb48fee163cf7cc13663d202aa8 + languageName: node + linkType: hard + "@react-navigation/bottom-tabs@npm:^6.5.12": version: 6.6.1 resolution: "@react-navigation/bottom-tabs@npm:6.6.1" @@ -12653,7 +12890,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-syntax-hermes-parser@npm:^0.36.0": +"babel-plugin-syntax-hermes-parser@npm:0.36.1, babel-plugin-syntax-hermes-parser@npm:^0.36.0": version: 0.36.1 resolution: "babel-plugin-syntax-hermes-parser@npm:0.36.1" dependencies: @@ -22075,6 +22312,19 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.87.0": + version: 0.87.0 + resolution: "metro-babel-transformer@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + hermes-parser: "npm:0.36.1" + metro-cache-key: "npm:0.87.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/0a84ff061f0692f69738fd33d8e0571594c249cb03cd461c381a7dcea7c820ceefe84ee36a8aa57764aa64ddc25846bc1227769d4222bb2c18bac42982811b98 + languageName: node + linkType: hard + "metro-cache-key@npm:0.82.2": version: 0.82.2 resolution: "metro-cache-key@npm:0.82.2" @@ -22102,6 +22352,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.87.0": + version: 0.87.0 + resolution: "metro-cache-key@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/f75b20b43cd99f684d215c57b195611e04d2d2a9442ad4df17fa2a8929ec7f31a428331881ab950c25e585c65946dcda3c7377d58905c2c7b600a5b66286ec2d + languageName: node + linkType: hard + "metro-cache@npm:0.82.2": version: 0.82.2 resolution: "metro-cache@npm:0.82.2" @@ -22138,6 +22397,18 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.87.0": + version: 0.87.0 + resolution: "metro-cache@npm:0.87.0" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.87.0" + checksum: 10c0/150404598aa6ab7d2a98243214191009d698f841e8126dffe6de83d3861869bd7e4ab527ede6fdf6c738db9fff94f691998e9213fffe38cbc72dca8cd80a8f43 + languageName: node + linkType: hard + "metro-config@npm:0.82.2, metro-config@npm:^0.82.2": version: 0.82.2 resolution: "metro-config@npm:0.82.2" @@ -22186,6 +22457,21 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.87.0, metro-config@npm:^0.87.0": + version: 0.87.0 + resolution: "metro-config@npm:0.87.0" + dependencies: + connect: "npm:^3.6.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.87.0" + metro-cache: "npm:0.87.0" + metro-core: "npm:0.87.0" + metro-runtime: "npm:0.87.0" + checksum: 10c0/a3c5a131f875bf8a52cf9ccb528e0343abb501159a18c7985de218ce188768c91f66ce4348e5707eb885bcf09948219de76ece03498179ba4db5aeadf3ddf7ea + languageName: node + linkType: hard + "metro-core@npm:0.82.2": version: 0.82.2 resolution: "metro-core@npm:0.82.2" @@ -22219,6 +22505,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.87.0": + version: 0.87.0 + resolution: "metro-core@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.87.0" + checksum: 10c0/3ddefabf34f98e757a8b95768982dc0eb11f15eed001a9063d0144529fd85bcf22b7c33b770636aec3e1ba5b50219143486b87dd2e54b04e4d5b027ae02642b0 + languageName: node + linkType: hard + "metro-file-map@npm:0.82.2": version: 0.82.2 resolution: "metro-file-map@npm:0.82.2" @@ -22270,6 +22567,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.87.0": + version: 0.87.0 + resolution: "metro-file-map@npm:0.87.0" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + nullthrows: "npm:^1.1.1" + walker: "npm:^1.0.7" + checksum: 10c0/49b9d859c3a7d6da277699a04c55db8a77f404cebec0cacfa7916664ebec607d8e57f8120e2ba28a4aec615d4af33fd5a3cdb164dc80d78b1d9b722f2351aadc + languageName: node + linkType: hard + "metro-minify-terser@npm:0.82.2": version: 0.82.2 resolution: "metro-minify-terser@npm:0.82.2" @@ -22300,6 +22614,16 @@ __metadata: languageName: node linkType: hard +"metro-minify-terser@npm:0.87.0": + version: 0.87.0 + resolution: "metro-minify-terser@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + terser: "npm:^5.15.0" + checksum: 10c0/db0cff372672b9de914be0d0c6440873df88ccbc38ed5e299cf534bc806c2cc0caa005098f0c498cc2d3e51e4f3f6e05f7671b9c48c873cf62709557cc07689d + languageName: node + linkType: hard + "metro-react-native-babel-preset@npm:0.76.8": version: 0.76.8 resolution: "metro-react-native-babel-preset@npm:0.76.8" @@ -22376,6 +22700,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.87.0": + version: 0.87.0 + resolution: "metro-resolver@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/e2283f83d14794948eb0153a3f9d8b39519be25d21f5d482f27972c47702d58ed340f49c6ab87a175e3a340c53878eff49b4764cffdd508f86bce30079914c58 + languageName: node + linkType: hard + "metro-runtime@npm:0.82.2": version: 0.82.2 resolution: "metro-runtime@npm:0.82.2" @@ -22406,6 +22739,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.87.0, metro-runtime@npm:^0.87.0": + version: 0.87.0 + resolution: "metro-runtime@npm:0.87.0" + dependencies: + "@babel/runtime": "npm:^7.25.0" + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/6811ee32a759dbccaa3241d98ec26f3e26fd5e4a1cdd5929c98df94fd46329c20f026759da6ca055cb068f8a57dfc7054b6cfc7bb9fb7b3280144055d2f8d67f + languageName: node + linkType: hard + "metro-source-map@npm:0.82.2": version: 0.82.2 resolution: "metro-source-map@npm:0.82.2" @@ -22458,6 +22801,23 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.87.0, metro-source-map@npm:^0.87.0": + version: 0.87.0 + resolution: "metro-source-map@npm:0.87.0" + dependencies: + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.87.0" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.87.0" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10c0/8074cf0bb4ea7f1027924155b57a0e1205ed9381611abebddd1d7e5a92d0c231cb5c6dd65964711a3a2a2757486b478869d971246158b28dd95232daaef18eff + languageName: node + linkType: hard + "metro-symbolicate@npm:0.82.2": version: 0.82.2 resolution: "metro-symbolicate@npm:0.82.2" @@ -22506,6 +22866,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.87.0": + version: 0.87.0 + resolution: "metro-symbolicate@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-source-map: "npm:0.87.0" + nullthrows: "npm:^1.1.1" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + bin: + metro-symbolicate: src/index.js + checksum: 10c0/aacc80d9b46cefedd4078fd2fea0212978a570aa7f2eba6042b33d288858be1e5150d71320dd420bcc0d357c46237edb1b7312639693d288bf6d67fa502c4203 + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.82.2": version: 0.82.2 resolution: "metro-transform-plugins@npm:0.82.2" @@ -22548,6 +22924,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.87.0": + version: 0.87.0 + resolution: "metro-transform-plugins@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + nullthrows: "npm:^1.1.1" + checksum: 10c0/66e622b701e3fcb3e7034b7ac008c34351381d27e76c712d332814fde05eb6f1d98268bce16b62933a591b81b123e26cdd536c9744c8fbf122c087e7275c4e83 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.82.2": version: 0.82.2 resolution: "metro-transform-worker@npm:0.82.2" @@ -22611,6 +23001,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.87.0": + version: 0.87.0 + resolution: "metro-transform-worker@npm:0.87.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + metro: "npm:0.87.0" + metro-babel-transformer: "npm:0.87.0" + metro-cache: "npm:0.87.0" + metro-cache-key: "npm:0.87.0" + metro-minify-terser: "npm:0.87.0" + metro-source-map: "npm:0.87.0" + metro-transform-plugins: "npm:0.87.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/2fc3d49874bc9f76a055e14e0a4c5e6c5659efdae148a275ef13a261a013975114c2aacdb5f42815da0be01196ecfcb3a722b6691752edda69110b655b8522ba + languageName: node + linkType: hard + "metro@npm:0.82.2": version: 0.82.2 resolution: "metro@npm:0.82.2" @@ -22759,6 +23170,55 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.87.0, metro@npm:^0.87.0": + version: 0.87.0 + resolution: "metro@npm:0.87.0" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + accepts: "npm:^2.0.0" + ci-info: "npm:^2.0.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + error-stack-parser: "npm:^2.0.6" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + hermes-parser: "npm:0.36.1" + image-size: "npm:^1.0.2" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + jsc-safe-url: "npm:^0.2.2" + lodash.throttle: "npm:^4.1.1" + metro-babel-transformer: "npm:0.87.0" + metro-cache: "npm:0.87.0" + metro-cache-key: "npm:0.87.0" + metro-config: "npm:0.87.0" + metro-core: "npm:0.87.0" + metro-file-map: "npm:0.87.0" + metro-resolver: "npm:0.87.0" + metro-runtime: "npm:0.87.0" + metro-source-map: "npm:0.87.0" + metro-symbolicate: "npm:0.87.0" + metro-transform-plugins: "npm:0.87.0" + metro-transform-worker: "npm:0.87.0" + mime-types: "npm:^3.0.1" + nullthrows: "npm:^1.1.1" + serialize-error: "npm:^2.1.0" + source-map: "npm:^0.5.6" + throat: "npm:^5.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + bin: + metro: src/cli.js + checksum: 10c0/e7aa8b6968c45b4a68dfdf7f6d68e40be0ec888facd8d1bd304a2655ecec245533e9fbf525bd41bf01dd32a327c55a4fd81c229cd589d5796431a663777b0017 + languageName: node + linkType: hard + "micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": version: 4.0.8 resolution: "micromatch@npm:4.0.8" @@ -24086,6 +24546,15 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.87.0": + version: 0.87.0 + resolution: "ob1@npm:0.87.0" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/917478964d9d0876fb0f1d07232ba02115589505972c98468780a174fc61b15ef8ffe322667836df385271db7b4beaf7916cd837b559776b601e3e6a46ca56c3 + languageName: node + linkType: hard + "object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -26098,17 +26567,17 @@ __metadata: languageName: node linkType: hard -"react-native-reanimated@npm:4.4.1": - version: 4.4.1 - resolution: "react-native-reanimated@npm:4.4.1" +"react-native-reanimated@npm:4.6.0": + version: 4.6.0 + resolution: "react-native-reanimated@npm:4.6.0" dependencies: react-native-is-edge-to-edge: "npm:^1.3.1" semver: "npm:^7.7.3" peerDependencies: react: "*" - react-native: 0.83 - 0.86 - react-native-worklets: 0.9.x - checksum: 10c0/400db6b846c23ee523a74a0b449d07358c6ec20e4ac6e08d867eec3488b1572a2809bc324d4c860479a3fed4e2d182f51146761f24457de07dd10756ffc6de97 + react-native: 0.83 - 0.87 + react-native-worklets: 0.12.x + checksum: 10c0/947c9038b9c876a5e77364afd4b256327e05317537022b283aa76dc35af20b5cb4786989117fd1c3926c583595165703903e91ab3c204f90fdb6296022eff614 languageName: node linkType: hard @@ -26266,10 +26735,11 @@ __metadata: languageName: node linkType: hard -"react-native-worklets@npm:0.9.2": - version: 0.9.2 - resolution: "react-native-worklets@npm:0.9.2" +"react-native-worklets@npm:0.12.1": + version: 0.12.1 + resolution: "react-native-worklets@npm:0.12.1" dependencies: + "@babel/generator": "npm:^7.27.1" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" "@babel/plugin-transform-class-properties": "npm:^7.28.6" "@babel/plugin-transform-classes": "npm:^7.28.6" @@ -26279,6 +26749,7 @@ __metadata: "@babel/plugin-transform-template-literals": "npm:^7.27.1" "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" "@babel/preset-typescript": "npm:^7.28.5" + "@babel/traverse": "npm:^7.27.1" "@babel/types": "npm:^7.27.1" convert-source-map: "npm:^2.0.0" semver: "npm:^7.7.4" @@ -26286,8 +26757,8 @@ __metadata: "@babel/core": "*" "@react-native/metro-config": "*" react: "*" - react-native: 0.83 - 0.86 - checksum: 10c0/9e1bfd2030f51de14596eb7c394db9cabac2f9430508728407b2fea6adcf56761ee85cec03a62f1aed7c93e77ac254ddf03f38b4906885f9390b9e809cdbb065 + react-native: 0.83 - 0.87 + checksum: 10c0/86b9043ed2ceacd3dada3f94d62393a5bb54c7a26877e5bb54171cd4455b34f4148009a6b41bf53be70f265444bd7fff287f4d0fd8599e27d476c10e6cd7923f languageName: node linkType: hard @@ -26392,6 +26863,52 @@ __metadata: languageName: node linkType: hard +"react-native@npm:0.87.0": + version: 0.87.0 + resolution: "react-native@npm:0.87.0" + dependencies: + "@react-native/asset-utils": "npm:0.87.0" + "@react-native/codegen": "npm:0.87.0" + "@react-native/community-cli-plugin": "npm:0.87.0" + "@react-native/gradle-plugin": "npm:0.87.0" + "@react-native/normalize-colors": "npm:0.87.0" + "@react-native/virtualized-lists": "npm:0.87.0" + anser: "npm:^1.4.9" + ansi-regex: "npm:^5.0.0" + babel-plugin-syntax-hermes-parser: "npm:0.36.1" + base64-js: "npm:^1.5.1" + commander: "npm:^12.0.0" + flow-enums-runtime: "npm:^0.0.6" + hermes-compiler: "npm:250829098.0.16" + invariant: "npm:^2.2.4" + memoize-one: "npm:^5.0.0" + metro-runtime: "npm:^0.87.0" + metro-source-map: "npm:^0.87.0" + nullthrows: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + promise: "npm:^8.3.0" + react-devtools-core: "npm:^6.1.5" + react-refresh: "npm:^0.14.0" + regenerator-runtime: "npm:^0.13.2" + scheduler: "npm:0.27.0" + semver: "npm:^7.1.3" + stacktrace-parser: "npm:^0.1.10" + tinyglobby: "npm:^0.2.15" + whatwg-fetch: "npm:^3.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + peerDependencies: + "@types/react": ^19.1.1 + react: ^19.2.3 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + checksum: 10c0/0f3e8760b9417d79d1fa840d4be5891e8baf9087ddc4a523107166e14975f0f311bb3ee7aa122a99e93ae2fc1c1e1d3f95182ab6ae7fe6abb0206386392f982e + languageName: node + linkType: hard + "react-redux@npm:^9.2.0": version: 9.2.0 resolution: "react-redux@npm:9.2.0" @@ -27904,11 +28421,11 @@ __metadata: "@react-native-community/cli-platform-android": "npm:20.1.3" "@react-native-community/cli-platform-ios": "npm:20.1.3" "@react-native-vector-icons/ionicons": "npm:^12.3.0" - "@react-native/babel-preset": "npm:0.86.2" - "@react-native/jest-preset": "npm:0.86.2" - "@react-native/metro-config": "npm:0.86.2" - "@react-native/new-app-screen": "npm:0.86.2" - "@react-native/typescript-config": "npm:0.86.2" + "@react-native/babel-preset": "npm:0.87.0" + "@react-native/jest-preset": "npm:0.87.0" + "@react-native/metro-config": "npm:0.87.0" + "@react-native/new-app-screen": "npm:0.87.0" + "@react-native/typescript-config": "npm:0.87.0" "@react-navigation/bottom-tabs": "npm:^7.4.5" "@react-navigation/native": "npm:^7.1.17" "@react-navigation/native-stack": "npm:^7.3.24" @@ -27931,17 +28448,17 @@ __metadata: jest: "npm:^29.6.3" patch-package: "npm:^8.0.0" react: "npm:19.2.3" - react-native: "npm:0.86.2" + react-native: "npm:0.87.0" react-native-build-config: "npm:^0.3.2" react-native-gesture-handler: "npm:^3.0.1" react-native-image-picker: "npm:^8.2.1" react-native-launch-arguments: "npm:^4.1.1" - react-native-reanimated: "npm:4.4.1" + react-native-reanimated: "npm:4.6.0" react-native-safe-area-context: "npm:^5.5.2" react-native-screens: "npm:^4.13.1" react-native-svg: "npm:^15.15.4" react-native-webview: "npm:^13.15.0" - react-native-worklets: "npm:0.9.2" + react-native-worklets: "npm:0.12.1" react-redux: "npm:^9.2.0" react-test-renderer: "npm:19.2.3" sentry-react-native-samples-utils: "workspace:^" From 709f1cb8d78c1d2bb8e5c870dd70c8e4b2690a2f Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 27 Aug 2026 12:46:36 +0200 Subject: [PATCH 2/2] chore(sample): Bump react-native-screens and safe-area-context for RN 0.87 react-native-screens ^4.13.1 -> ^4.27.0 and react-native-safe-area-context ^5.5.2 -> ^5.9.1. The older versions fail to compile against React Native 0.87 (screens' iOS RNSModule.mm / Android Kotlin, and safe-area-context's Android SafeAreaView.kt uiImplementation reference). Co-Authored-By: Claude Opus 4.8 --- samples/react-native/package.json | 4 +-- yarn.lock | 43 ++++++++++++------------------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/samples/react-native/package.json b/samples/react-native/package.json index 6df0eadef3..dde37875ed 100644 --- a/samples/react-native/package.json +++ b/samples/react-native/package.json @@ -59,8 +59,8 @@ "react-native-image-picker": "^8.2.1", "react-native-launch-arguments": "^4.1.1", "react-native-reanimated": "4.6.0", - "react-native-safe-area-context": "^5.5.2", - "react-native-screens": "^4.13.1", + "react-native-safe-area-context": "^5.9.1", + "react-native-screens": "^4.27.0", "react-native-svg": "^15.15.4", "react-native-webview": "^13.15.0", "react-native-worklets": "0.12.1", diff --git a/yarn.lock b/yarn.lock index f6f490b452..f3c45cbffd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26461,16 +26461,6 @@ __metadata: languageName: node linkType: hard -"react-native-is-edge-to-edge@npm:^1.2.1": - version: 1.2.1 - resolution: "react-native-is-edge-to-edge@npm:1.2.1" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10c0/87d20b900aded7d44c90afb946a7aa03c23a94ca3dd547bdddc2303b85357e4aab22567a57b19f1558d6c8be7058e3dcf34faa1e15182d1604f90974266d9a1d - languageName: node - linkType: hard - "react-native-is-edge-to-edge@npm:^1.3.1": version: 1.3.1 resolution: "react-native-is-edge-to-edge@npm:1.3.1" @@ -26591,13 +26581,13 @@ __metadata: languageName: node linkType: hard -"react-native-safe-area-context@npm:^5.5.2": - version: 5.6.1 - resolution: "react-native-safe-area-context@npm:5.6.1" +"react-native-safe-area-context@npm:^5.9.1": + version: 5.9.1 + resolution: "react-native-safe-area-context@npm:5.9.1" peerDependencies: react: "*" react-native: "*" - checksum: 10c0/797ad7d749bd42cbec8e504d969de13e17ed48506c2fd5a639d05d78d88194c21d72b9dc4608e08a2e8edac23341802e7b4661875242dc3bdce3008cfda5bcbe + checksum: 10c0/ffe37c7d6ebd412673cb3042b370b2d2551b3ba32d73c51246fbd4f01bb6374ff3ec2511c96a55f62e895758ae645ac372e876fd93c690889cfd27a6daa4e389 languageName: node linkType: hard @@ -26624,30 +26614,29 @@ __metadata: languageName: node linkType: hard -"react-native-screens@npm:^4.13.1": - version: 4.16.0 - resolution: "react-native-screens@npm:4.16.0" +"react-native-screens@npm:^4.25.2, react-native-screens@npm:~4.25.2": + version: 4.25.2 + resolution: "react-native-screens@npm:4.25.2" dependencies: react-freeze: "npm:^1.0.0" - react-native-is-edge-to-edge: "npm:^1.2.1" warn-once: "npm:^0.1.0" peerDependencies: react: "*" - react-native: "*" - checksum: 10c0/8ec459ff52cbd317bfca598843a0010b4ca9070d05664f28d792594d8ceabb398b9d68abb578f40295e41f906308efe7ac7359046fba7aaf318a0d9d65446102 + react-native: ">=0.82.0" + checksum: 10c0/b1f155830e57c36e8ca60831f4b22079cd311f0e36f7c4465ff4094f9dec18e66cef2321a4ff8944aac51ead437720585080f1f4b2956106099a9ea7d9745d00 languageName: node linkType: hard -"react-native-screens@npm:^4.25.2, react-native-screens@npm:~4.25.2": - version: 4.25.2 - resolution: "react-native-screens@npm:4.25.2" +"react-native-screens@npm:^4.27.0": + version: 4.27.0 + resolution: "react-native-screens@npm:4.27.0" dependencies: react-freeze: "npm:^1.0.0" warn-once: "npm:^0.1.0" peerDependencies: react: "*" - react-native: ">=0.82.0" - checksum: 10c0/b1f155830e57c36e8ca60831f4b22079cd311f0e36f7c4465ff4094f9dec18e66cef2321a4ff8944aac51ead437720585080f1f4b2956106099a9ea7d9745d00 + react-native: "*" + checksum: 10c0/357674b881189ff8933f457acadbfc3030a376d0ccdfb4b6005462aabbf38287d4d0f39a301cb94c45df6c2e09be28bcfc4d71298c8d34b8ac87ebe639e46ff9 languageName: node linkType: hard @@ -28454,8 +28443,8 @@ __metadata: react-native-image-picker: "npm:^8.2.1" react-native-launch-arguments: "npm:^4.1.1" react-native-reanimated: "npm:4.6.0" - react-native-safe-area-context: "npm:^5.5.2" - react-native-screens: "npm:^4.13.1" + react-native-safe-area-context: "npm:^5.9.1" + react-native-screens: "npm:^4.27.0" react-native-svg: "npm:^15.15.4" react-native-webview: "npm:^13.15.0" react-native-worklets: "npm:0.12.1"