Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .claude/skills/deep-code-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ Evaluate the diff against the context gathered. Single checklist:
- **Performance** - Unbounded growth? Blocking operations?
- **Testing** - Coverage adequate? Happy path + edge cases + error cases?
- **Breaking changes** - API contracts preserved? Migration needed?
- **Native ABI** (prebuilt Swift/Kotlin packages: `expo-modules-core`, `expo-modules-jsi`) - A change can be source-compatible but binary-incompatible: consumers prebuilt against the old artifact fail at link/load. Removing/renaming a `public`/`open` symbol? Moving a method into a protocol extension (remangles it)? Changing a signature/generics/`@available`, or a conformance that alters the `.swiftinterface`? Only real if the symbol is already released on the PR's target branch (exempt if it's new there); a PR targeting an `sdk-*` release branch is the riskiest case. A forwarding shim preserves the old symbol. If practically-exposed, flag it as a `critical` inline comment on the symbol and recommend the `breaking: ABI` label (suggest only — don't apply it).
- **Stack coherence** (stacked PRs only) - Does the aggregate diff across the stack make sense as a whole?
- **Adversarial examples** - Study the public API and any example code in the PR(s). Devise alternative examples that exercise edge cases, misuse the API, or pass unexpected inputs. Report any that produce bugs, crashes, or incorrect behavior.

Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/android-unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ jobs:
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 📦 Install node modules
run: pnpm install --frozen-lockfile
- name: 💅 Run Spotless lint check
working-directory: apps/bare-expo/android
run: ./gradlew spotlessCheck || { echo '::error Spotless lint failed. Run `./gradlew spotlessApply` from `apps/bare-expo/android` to automatically fix formatting.' && exit 1; }
- name: 🎸 Run native Android unit tests
if: always()
timeout-minutes: 30
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/swift-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@ on:
- .swift-format
- scripts/swift-format.sh
- packages/expo-modules-jsi/**/*.swift
- packages/expo-app-metrics/**/*.swift
- packages/expo-observe/**/*.swift
pull_request:
paths:
- .github/workflows/swift-format.yml
- .swift-format
- scripts/swift-format.sh
- packages/expo-modules-jsi/**/*.swift
- packages/expo-app-metrics/**/*.swift
- packages/expo-observe/**/*.swift

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
Expand Down Expand Up @@ -70,3 +74,9 @@ jobs:
- name: 🧹 Lint expo-modules-jsi
run: ../../scripts/swift-format.sh --lint
working-directory: packages/expo-modules-jsi
- name: 🧹 Lint expo-app-metrics
run: ../../scripts/swift-format.sh --lint
working-directory: packages/expo-app-metrics
- name: 🧹 Lint expo-observe
run: ../../scripts/swift-format.sh --lint
working-directory: packages/expo-observe
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ class MainApplication : Application(), ReactApplication {
ExpoReactHostFactory.getDefaultReactHost(
context = applicationContext,
packageList =
expo.modules.benchmark.withBenchmarkingPackages(PackageList(this).packages).apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
}
expo.modules.benchmark.withBenchmarkingPackages(PackageList(this).packages).apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
}
)
}

Expand Down
12 changes: 6 additions & 6 deletions apps/bare-expo/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3017,7 +3017,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- RNGestureHandler (2.31.2):
- RNGestureHandler (2.32.0):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand Down Expand Up @@ -3528,7 +3528,7 @@ DEPENDENCIES:
- "RNCMaskedView (from `../../../node_modules/.pnpm/@react-native-masked-view+masked-view@0.3.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_b287539fe49ed5c16e1f5a35b43cdf77/node_modules/@react-native-masked-view/masked-view`)"
- "RNCPicker (from `../../../node_modules/.pnpm/@react-native-picker+picker@2.11.4_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-n_7aeabd3ff53aed0091871229c32b0005/node_modules/@react-native-picker/picker`)"
- "RNDateTimePicker (from `../../../node_modules/.pnpm/@react-native-community+datetimepicker@8.6.0_expo@packages+expo_react-native@0.86.0-rc._9e80907fd85038827b6ad15fb6ad321d/node_modules/@react-native-community/datetimepicker`)"
- "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler`)"
- "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler`)"
- "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated`)"
- "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+j_1caf6d0de913e20dc62f3784cee8a325/node_modules/react-native-screens`)"
- "RNSVG (from `../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+jest_8862e7d289ff7879e9d4b210ed280e3e/node_modules/react-native-svg`)"
Expand Down Expand Up @@ -3989,7 +3989,7 @@ EXTERNAL SOURCES:
RNDateTimePicker:
:path: "../../../node_modules/.pnpm/@react-native-community+datetimepicker@8.6.0_expo@packages+expo_react-native@0.86.0-rc._9e80907fd85038827b6ad15fb6ad321d/node_modules/@react-native-community/datetimepicker"
RNGestureHandler:
:path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler"
:path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler"
RNReanimated:
:path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated"
RNScreens:
Expand Down Expand Up @@ -4098,7 +4098,7 @@ SPEC CHECKSUMS:
EXUpdates: c6488f0bebe92d6decb5f9b685d33ee91feeccf0
EXUpdatesInterface: 25408a97d682355eb9fb37e5aa6e22caece1881f
FBLazyVector: 5466888598cde67aedb4d3a819adf471d1a3d8c9
hermes-engine: 4c998771d5218e20701b63d8358199a520a54447
hermes-engine: e355eb94d3f8b7f4c08531a4d42af958d36c13de
libavif: 5f8e715bea24debec477006f21ef9e95432e254d
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
Expand Down Expand Up @@ -4193,7 +4193,7 @@ SPEC CHECKSUMS:
RNCMaskedView: eb2b2e538afa907f05a5848a1a1ac26092e6fec9
RNCPicker: d74667bdfc08ed389a2a277d95b8faf2349290a9
RNDateTimePicker: b9e20c2a3af26f4ab10646359777205bbad1fdac
RNGestureHandler: 12ed45d9c6f0dada7bf9d1023769ad388fe7115d
RNGestureHandler: 92172e79df6e88e0e93b6341f9dcd8b5a02746ba
RNReanimated: 71f76da8b61687f1cf225de572209c4968be1f5e
RNScreens: 991cc417cd396602a6cf59a42139e5a9d91462a9
RNSVG: 3fe8590403ac9f107b4d14591bc6e54da4894e5c
Expand All @@ -4209,6 +4209,6 @@ SPEC CHECKSUMS:
Yoga: ebbcd9927b637646fb3b8704a6fe4d39f01ffced
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5

PODFILE CHECKSUM: d14e340f2737af660bbf5d876247725a8672947a
PODFILE CHECKSUM: b229a566660aa43dca796561f23bd1ec6adce812

COCOAPODS: 1.16.2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class StartupBenchmark {
packageName = "dev.expo.payments",
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
startupMode = StartupMode.COLD
) {
startActivityAndWait(
Intent(Intent.ACTION_MAIN).apply {
Expand Down
2 changes: 1 addition & 1 deletion apps/bare-expo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
"react": "^19.2.3",
"react-dom": "19.2.3",
"react-native": "0.86.0-rc.3",
"react-native-gesture-handler": "~2.31.2",
"react-native-gesture-handler": "~2.32.0",
"react-native-keyboard-controller": "^1.21.9",
"react-native-pager-view": "8.0.2",
"react-native-reanimated": "4.3.1",
Expand Down
2 changes: 1 addition & 1 deletion apps/brownfield-tester/expo-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"react": "19.2.3",
"react-dom": "19.2.3",
"react-native": "0.86.0-rc.3",
"react-native-gesture-handler": "~2.31.2",
"react-native-gesture-handler": "~2.32.0",
"react-native-worklets": "0.8.3",
"react-native-reanimated": "~4.3.1",
"react-native-safe-area-context": "~5.6.2",
Expand Down
12 changes: 6 additions & 6 deletions apps/brownfield-tester/integrated/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2087,7 +2087,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- RNGestureHandler (2.31.2):
- RNGestureHandler (2.32.0):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand Down Expand Up @@ -2424,7 +2424,7 @@ DEPENDENCIES:
- "ReactCommon/turbomodule/core (from `../../../../node_modules/.pnpm/react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.0-rc.3_@babe_fa57ac2619226ae98026112d284d2cba/node_modules/react-native/ReactCommon`)"
- "ReactNativeDependencies (from `../../../../node_modules/.pnpm/react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.0-rc.3_@babe_fa57ac2619226ae98026112d284d2cba/node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`)"
- "RNCMaskedView (from `../../../../node_modules/.pnpm/@react-native-masked-view+masked-view@0.3.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_b287539fe49ed5c16e1f5a35b43cdf77/node_modules/@react-native-masked-view/masked-view`)"
- "RNGestureHandler (from `../../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler`)"
- "RNGestureHandler (from `../../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler`)"
- "RNReanimated (from `../../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated`)"
- "RNScreens (from `../../../../node_modules/.pnpm/react-native-screens@4.25.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+j_1caf6d0de913e20dc62f3784cee8a325/node_modules/react-native-screens`)"
- "RNWorklets (from `../../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_14c70bd0e88f024ff3028384c1d4acce/node_modules/react-native-worklets`)"
Expand Down Expand Up @@ -2647,7 +2647,7 @@ EXTERNAL SOURCES:
RNCMaskedView:
:path: "../../../../node_modules/.pnpm/@react-native-masked-view+masked-view@0.3.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_b287539fe49ed5c16e1f5a35b43cdf77/node_modules/@react-native-masked-view/masked-view"
RNGestureHandler:
:path: "../../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler"
:path: "../../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler"
RNReanimated:
:path: "../../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated"
RNScreens:
Expand Down Expand Up @@ -2675,9 +2675,9 @@ SPEC CHECKSUMS:
ExpoKeepAwake: 359c47a1d9ccc3a3c519bca6e39562cce230c5bb
ExpoLinking: 82458b046854a5802092a37a5228a8a228f928a4
ExpoLogBox: 7aa03244fe5eeced5129e4ec7ad5bd9a3994378e
ExpoModulesCore: 282743e45a8da9844fac713bdb14427d584b6d6e
ExpoModulesCore: 7ee5c9715b287b20ec9caa7f2577007597adf25a
ExpoModulesJSI: f25a013ea9a79904bdd535e4bea0872e155cde09
ExpoModulesWorklets: c755176116ae553ede2268ca6837c31eb4081f8a
ExpoModulesWorklets: 874ceeb92a8da1dfa32adf197aa65f926e74b9c5
ExpoModulesWorkletsAdapter: d39cf2fa668e1f8940cc0c65ef7c4e8566df2872
ExpoRouter: 06524ed53f9833aabf49053a119bcc92c1442098
ExpoSymbols: b3c964ddc1f1c8d8ddb0eeb830e3a8e42b77ed2d
Expand Down Expand Up @@ -2763,7 +2763,7 @@ SPEC CHECKSUMS:
ReactCommon: 99c616c9c4ab3119765aef7b190ee1fd850f29e7
ReactNativeDependencies: 433d597bb42b6198313fcee60a265d749e19468e
RNCMaskedView: eb2b2e538afa907f05a5848a1a1ac26092e6fec9
RNGestureHandler: 12ed45d9c6f0dada7bf9d1023769ad388fe7115d
RNGestureHandler: 92172e79df6e88e0e93b6341f9dcd8b5a02746ba
RNReanimated: ee39e47dd4a63a6258b0e43526018bdbff00eb45
RNScreens: 991cc417cd396602a6cf59a42139e5a9d91462a9
RNWorklets: f8235564bb41484c62ddab7157139121f812f7ba
Expand Down
10 changes: 5 additions & 5 deletions apps/expo-go/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3623,7 +3623,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- RNGestureHandler (2.31.2):
- RNGestureHandler (2.32.0):
- boost
- DoubleConversion
- fast_float
Expand Down Expand Up @@ -4295,7 +4295,7 @@ DEPENDENCIES:
- "RNCMaskedView (from `../../../node_modules/.pnpm/@react-native-masked-view+masked-view@0.3.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_b287539fe49ed5c16e1f5a35b43cdf77/node_modules/@react-native-masked-view/masked-view`)"
- "RNCPicker (from `../../../node_modules/.pnpm/@react-native-picker+picker@2.11.4_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-n_7aeabd3ff53aed0091871229c32b0005/node_modules/@react-native-picker/picker`)"
- "RNDateTimePicker (from `../../../node_modules/.pnpm/@react-native-community+datetimepicker@9.1.0_expo@packages+expo_react-native@0.86.0-rc._62ff0edf26e6e75561f170036105235d/node_modules/@react-native-community/datetimepicker`)"
- "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler`)"
- "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler`)"
- "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated`)"
- "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.2_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+j_1caf6d0de913e20dc62f3784cee8a325/node_modules/react-native-screens`)"
- "RNSVG (from `../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-native+jest_8862e7d289ff7879e9d4b210ed280e3e/node_modules/react-native-svg`)"
Expand Down Expand Up @@ -4677,7 +4677,7 @@ EXTERNAL SOURCES:
RNDateTimePicker:
:path: "../../../node_modules/.pnpm/@react-native-community+datetimepicker@9.1.0_expo@packages+expo_react-native@0.86.0-rc._62ff0edf26e6e75561f170036105235d/node_modules/@react-native-community/datetimepicker"
RNGestureHandler:
:path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.31.2_patch_hash=e8fb2a67f1fa221dc758c27292b3ee21ed737178_ae4bd3b9eacd55f76fcbeda380f2c6c2/node_modules/react-native-gesture-handler"
:path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.32.0_react-native@0.86.0-rc.3_@babel+core@7.29.0_@react-_ca887e9234b849eb7759534fc37b34b6/node_modules/react-native-gesture-handler"
RNReanimated:
:path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_63efc6dcd9f06abe16d862207d24882e/node_modules/react-native-reanimated"
RNScreens:
Expand Down Expand Up @@ -4782,7 +4782,7 @@ SPEC CHECKSUMS:
GoogleAppMeasurement: 8a82b93a6400c8e6551c0bcd66a9177f2e067aed
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
hermes-engine: 42f0ed2cf70592b35e2ca49a6b725d31c8ad4136
hermes-engine: d5c6d584ad5c5461ad9e34e0afb5d40d56e428f5
libavif: 5f8e715bea24debec477006f21ef9e95432e254d
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
Expand Down Expand Up @@ -4880,7 +4880,7 @@ SPEC CHECKSUMS:
RNCMaskedView: 5ef8c95cbab95334a32763b72896a7b7d07e6299
RNCPicker: bf95ec4b2483e2ab256047130bc536b437cd916c
RNDateTimePicker: 73ffdd45f0ce1d00ff981031679a05206e619fdc
RNGestureHandler: 7d628c670dfcc1b9fa5840de5648b87ac0635362
RNGestureHandler: 83e66307c200b98c746bd03113c4403da5c9b486
RNReanimated: c4e75786b152ca857d55fd2d1fc44ede67c79970
RNScreens: 9269ab4971b2bd24917be84295d2c2ae7d06e9be
RNSVG: c6acd5c597d26625214295105756c5e488f5ae4c
Expand Down
2 changes: 1 addition & 1 deletion apps/expo-go/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
"lottie-react-native": "^7.3.8",
"react": "19.2.3",
"react-native": "0.86.0-rc.3",
"react-native-gesture-handler": "~2.31.2",
"react-native-gesture-handler": "~2.32.0",
"react-native-keyboard-controller": "^1.21.9",
"react-native-maps": "1.27.2",
"react-native-pager-view": "8.0.2",
Expand Down
2 changes: 1 addition & 1 deletion apps/native-component-list/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
"react-dom": "19.2.3",
"react-native": "0.86.0-rc.3",
"react-native-dropdown-picker": "^5.3.0",
"react-native-gesture-handler": "~2.31.2",
"react-native-gesture-handler": "~2.32.0",
"react-native-keyboard-controller": "^1.21.9",
"react-native-maps": "1.27.2",
"react-native-pager-view": "8.0.2",
Expand Down
Loading
Loading