Skip to content

Commit d751f4c

Browse files
committed
Merge branch 'main' into feat/scene-delegate
2 parents b822bec + a6b76c0 commit d751f4c

599 files changed

Lines changed: 30143 additions & 10700 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ packages/*/dist
1313
packages/*/types_generated
1414
packages/debugger-frontend/dist/**/*
1515
packages/react-native-codegen/lib
16+
private/react-native-codegen-typescript-test/lib/**/*
1617
**/Pods/*
1718
**/*.macos.js
1819
**/*.windows.js

.flowconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ munge_underscores=true
6969
module.name_mapper='^react-native$' -> '<PROJECT_ROOT>/packages/react-native/index.js'
7070
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/packages/react-native/\1'
7171
module.name_mapper='^@react-native/dev-middleware$' -> '<PROJECT_ROOT>/packages/dev-middleware'
72-
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\|xml\|ktx\)$' -> '<PROJECT_ROOT>/packages/react-native/Libraries/Image/RelativeImageStub'
72+
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\|xml\|ktx\|heic\|heif\)$' -> '<PROJECT_ROOT>/packages/react-native/Libraries/Image/RelativeImageStub'
7373

7474
module.system.haste.module_ref_prefix=m#
7575

@@ -98,4 +98,4 @@ untyped-import
9898
untyped-type-import
9999

100100
[version]
101-
^0.291.0
101+
^0.294.0

.github/actions/build-android/action.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ runs:
2828
cache-read-only: "false"
2929
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
3030
- name: Restore Android ccache
31-
uses: actions/cache/restore@v4
31+
uses: actions/cache/restore@v5
3232
with:
3333
path: /github/home/.cache/ccache
3434
key: v2-ccache-android-${{ github.job }}-${{ github.ref }}-${{ hashFiles('packages/react-native/ReactAndroid/**/*.cpp', 'packages/react-native/ReactAndroid/**/*.h', 'packages/react-native/ReactCommon/**/*.cpp', 'packages/react-native/ReactAndroid/**/CMakeLists.txt', 'packages/react-native/ReactCommon/**/CMakeLists.txt') }}
@@ -45,33 +45,36 @@ runs:
4545
if [[ "${{ inputs.release-type }}" == "dry-run" ]]; then
4646
# dry-run: we only build ARM64 to save time/resources. For release/nightlies the default is to build all archs.
4747
export ORG_GRADLE_PROJECT_reactNativeArchitectures="arm64-v8a,x86" # x86 is required for E2E testing
48+
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesNightly=true"
4849
TASKS="publishAllToMavenTempLocal build"
4950
elif [[ "${{ inputs.release-type }}" == "nightly" ]]; then
5051
# nightly: we set isSnapshot to true so artifacts are sent to the right repository on Maven Central.
5152
export ORG_GRADLE_PROJECT_isSnapshot="true"
53+
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesNightly=true"
5254
TASKS="publishAllToMavenTempLocal publishAndroidToSonatype build"
5355
else
5456
# release: we want to build all archs (default)
57+
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesStable=true"
5558
TASKS="publishAllToMavenTempLocal publishAndroidToSonatype build"
5659
fi
57-
./gradlew $TASKS -PenableWarningsAsErrors=true
60+
env "$HERMES_PREBUILT_FLAG" ./gradlew $TASKS -PenableWarningsAsErrors=true
5861
- name: Save Android ccache
5962
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }}
60-
uses: actions/cache/save@v4
63+
uses: actions/cache/save@v5
6164
with:
6265
path: /github/home/.cache/ccache
6366
key: v2-ccache-android-${{ github.job }}-${{ github.ref }}-${{ hashFiles('packages/react-native/ReactAndroid/**/*.cpp', 'packages/react-native/ReactAndroid/**/*.h', 'packages/react-native/ReactCommon/**/*.cpp', 'packages/react-native/ReactAndroid/**/CMakeLists.txt', 'packages/react-native/ReactCommon/**/CMakeLists.txt') }}
6467
- name: Show ccache stats
6568
shell: bash
6669
run: ccache -s -v
6770
- name: Upload Maven Artifacts
68-
uses: actions/upload-artifact@v4.3.4
71+
uses: actions/upload-artifact@v6
6972
with:
7073
name: maven-local
7174
path: /tmp/maven-local
7275
- name: Upload test results
7376
if: ${{ always() }}
74-
uses: actions/upload-artifact@v4.3.4
77+
uses: actions/upload-artifact@v6
7578
with:
7679
name: build-android-results
7780
compression-level: 1
@@ -81,14 +84,14 @@ runs:
8184
packages/react-native/ReactAndroid/build/reports
8285
- name: Upload RNTester APK - hermes-debug
8386
if: ${{ always() }}
84-
uses: actions/upload-artifact@v4.3.4
87+
uses: actions/upload-artifact@v6
8588
with:
8689
name: rntester-debug
8790
path: packages/rn-tester/android/app/build/outputs/apk/debug/
8891
compression-level: 0
8992
- name: Upload RNTester APK - hermes-release
9093
if: ${{ always() }}
91-
uses: actions/upload-artifact@v4.3.4
94+
uses: actions/upload-artifact@v6
9295
with:
9396
name: rntester-release
9497
path: packages/rn-tester/android/app/build/outputs/apk/release/

.github/actions/build-npm-package/action.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ runs:
1818
shell: bash
1919
run: git config --global --add safe.directory '*'
2020
- name: Download ReactNativeDependencies
21-
uses: actions/download-artifact@v4
21+
uses: actions/download-artifact@v7
2222
with:
2323
pattern: ReactNativeDependencies*
2424
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
2525
merge-multiple: true
2626
- name: Download ReactCore artifacts
27-
uses: actions/download-artifact@v4
27+
uses: actions/download-artifact@v7
2828
with:
2929
pattern: ReactCore*
3030
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
@@ -65,7 +65,7 @@ runs:
6565
fi
6666
node ./scripts/releases-ci/publish-npm.js -t ${{ inputs.release-type }}
6767
- name: Upload npm logs
68-
uses: actions/upload-artifact@v4.3.4
68+
uses: actions/upload-artifact@v6
6969
with:
7070
name: npm-logs
7171
path: ~/.npm/_logs
@@ -80,7 +80,7 @@ runs:
8080
8181
echo "$FILENAME" > build/react-native-package-version
8282
- name: Upload release package
83-
uses: actions/upload-artifact@v4.3.4
83+
uses: actions/upload-artifact@v6
8484
if: ${{ inputs.release-type == 'dry-run' }}
8585
with:
8686
name: react-native-package

.github/actions/diff-js-api-breaking-changes/action.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: diff-js-api-changes
2+
description: Check for breaking changes in the public React Native JS API
3+
runs:
4+
using: composite
5+
steps:
6+
- name: Compute merge base with main
7+
id: merge_base
8+
shell: bash
9+
run: |
10+
git fetch origin main
11+
git fetch --deepen=500
12+
echo "merge_base=$(git merge-base HEAD origin/main)" >> $GITHUB_OUTPUT
13+
14+
- name: Output snapshot before state for comparison
15+
shell: bash
16+
env:
17+
SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes
18+
run: |
19+
mkdir -p $SCRATCH_DIR
20+
git show ${{ steps.merge_base.outputs.merge_base }}:packages/react-native/ReactNativeApi.d.ts > $SCRATCH_DIR/ReactNativeApi-before.d.ts \
21+
|| echo "" > $SCRATCH_DIR/ReactNativeApi-before.d.ts
22+
23+
- name: Run breaking change detection
24+
shell: bash
25+
env:
26+
SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes
27+
run: |
28+
node ./scripts/js-api/diff-api-snapshot \
29+
$SCRATCH_DIR/ReactNativeApi-before.d.ts \
30+
./packages/react-native/ReactNativeApi.d.ts \
31+
> $SCRATCH_DIR/output.json

.github/actions/maestro-android/action.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ inputs:
2222
required: false
2323
default: "."
2424
description: The directory from which metro should be started
25+
emulator-arch:
26+
required: false
27+
default: x86
28+
description: The architecture of the emulator to run
2529

2630
runs:
2731
using: composite
@@ -31,7 +35,7 @@ runs:
3135
run: export MAESTRO_VERSION=1.40.0; curl -Ls "https://get.maestro.mobile.dev" | bash
3236
- name: Set up JDK 17
3337
if: ${{ inputs.install-java == 'true' }}
34-
uses: actions/setup-java@v4
38+
uses: actions/setup-java@v5
3539
with:
3640
java-version: '17'
3741
distribution: 'zulu'
@@ -53,7 +57,7 @@ runs:
5357
uses: reactivecircus/android-emulator-runner@v2
5458
with:
5559
api-level: 24
56-
arch: x86
60+
arch: ${{ inputs.emulator-arch }}
5761
ram-size: '8192M'
5862
heap-size: '4096M'
5963
disk-size: '10G'
@@ -69,16 +73,16 @@ runs:
6973
NORM_APP_ID=$(echo "${{ inputs.app-id }}" | tr '.' '-')
7074
echo "app-id=$NORM_APP_ID" >> $GITHUB_OUTPUT
7175
- name: Store tests result
72-
uses: actions/upload-artifact@v4.3.4
76+
uses: actions/upload-artifact@v6
7377
if: always()
7478
with:
75-
name: e2e_android_${{ steps.normalize-app-id.outputs.app-id }}_report_${{ inputs.flavor }}_NewArch
79+
name: e2e_android_${{ steps.normalize-app-id.outputs.app-id }}_report_${{ inputs.flavor }}_${{ inputs.emulator-arch }}_NewArch
7680
path: |
7781
report.xml
7882
screen.mp4
7983
- name: Store Logs
8084
if: steps.run-tests.outcome == 'failure'
81-
uses: actions/upload-artifact@v4.3.4
85+
uses: actions/upload-artifact@v6
8286
with:
83-
name: maestro-logs-android-${{ steps.normalize-app-id.outputs.app-id }}-${{ inputs.flavor }}-NewArch
87+
name: maestro-logs-android-${{ steps.normalize-app-id.outputs.app-id }}-${{ inputs.flavor }}-${{ inputs.emulator-arch }}-NewArch
8488
path: /tmp/MaestroLogs

.github/actions/maestro-ios/action.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ runs:
3131
brew tap facebook/fb
3232
brew install facebook/fb/idb-companion
3333
- name: Set up JDK 11
34-
uses: actions/setup-java@v2
34+
uses: actions/setup-java@v5
3535
with:
3636
java-version: '17'
3737
distribution: 'zulu'
@@ -66,7 +66,7 @@ runs:
6666
"${{ inputs.working-directory }}"
6767
- name: Store video record
6868
if: always()
69-
uses: actions/upload-artifact@v4.3.4
69+
uses: actions/upload-artifact@v6
7070
with:
7171
name: e2e_ios_${{ inputs.app-id }}_report_${{ inputs.flavor }}_NewArch
7272
path: |
@@ -78,7 +78,7 @@ runs:
7878
report.xml
7979
- name: Store Logs
8080
if: failure() && steps.run-tests.outcome == 'failure'
81-
uses: actions/upload-artifact@v4.3.4
81+
uses: actions/upload-artifact@v6
8282
with:
8383
name: maestro-logs-${{ inputs.app-id }}-${{ inputs.flavor }}-NewArch
8484
path: /tmp/MaestroLogs
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: prepare-hermes-v1-app
2+
description: Prepares a React Native app with Hermes V1 enabled
3+
inputs:
4+
retry-count:
5+
description: 'Number of times to retry the yarn install on failure'
6+
runs:
7+
using: composite
8+
steps:
9+
- name: Create new app
10+
shell: bash
11+
run: |
12+
cd /tmp
13+
npx @react-native-community/cli init RNApp --skip-install --version nightly
14+
15+
- name: Select latest Hermes V1 version
16+
shell: bash
17+
run: |
18+
node "$GITHUB_WORKSPACE/.github/workflow-scripts/selectLatestHermesV1Version.js"
19+
20+
- name: Apply patch to enable Hermes V1
21+
shell: bash
22+
run: |
23+
cd /tmp/RNApp
24+
git apply --binary --3way --whitespace=nowarn "$GITHUB_WORKSPACE/.github/workflow-scripts/hermes-v1.patch"
25+
echo "✅ Patch applied successfully"
26+
27+
- name: Install app dependencies with retry
28+
uses: nick-fields/retry@v3
29+
with:
30+
timeout_minutes: 10
31+
max_attempts: ${{ inputs.retry-count }}
32+
retry_wait_seconds: 15
33+
shell: bash
34+
command: |
35+
cd /tmp/RNApp
36+
yarn install
37+
on_retry_command: |
38+
echo "Cleaning up for yarn retry..."
39+
cd /tmp/RNApp
40+
rm -rf node_modules yarn.lock || true
41+
yarn cache clean || true

.github/actions/run-fantom-tests/action.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ runs:
2727
cache-read-only: "false"
2828
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
2929
- name: Restore Fantom ccache
30-
uses: actions/cache/restore@v4
30+
uses: actions/cache/restore@v5
3131
with:
3232
path: /github/home/.cache/ccache
3333
key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles(
@@ -56,7 +56,7 @@ runs:
5656
CXX: clang++
5757
- name: Save Fantom ccache
5858
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }}
59-
uses: actions/cache/save@v4
59+
uses: actions/cache/save@v5
6060
with:
6161
path: /github/home/.cache/ccache
6262
key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles(
@@ -75,7 +75,7 @@ runs:
7575
run: ccache -s -v
7676
- name: Upload test results
7777
if: ${{ always() }}
78-
uses: actions/upload-artifact@v4.3.4
78+
uses: actions/upload-artifact@v6
7979
with:
8080
name: run-fantom-tests-results
8181
compression-level: 1

0 commit comments

Comments
 (0)