diff --git a/.changeset/config.json b/.changeset/config.json index d94a90f458c1..83c142522a99 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -6,7 +6,7 @@ "changelog": "@changesets/cli/changelog", "commit": false, "fixed": [["react-native-macos", "@react-native-macos/virtualized-lists"]], - "ignore": ["react-native-macos", "@react-native/tester"], + "ignore": [], "privatePackages": { "version": false, "tag": false diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000000..7cfd02b41a8c --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,41 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "@react-native/asset-utils": "0.87.0-rc.1", + "@react-native/assets-registry": "0.87.0-rc.1", + "@react-native/babel-plugin-codegen": "0.87.0-rc.1", + "@react-native/community-cli-plugin": "0.87.0-rc.1", + "@react-native/debugger-frontend": "0.87.0-rc.1", + "@react-native/debugger-shell": "0.87.0-rc.1", + "@react-native/dev-middleware": "0.87.0-rc.1", + "@react-native/eslint-config": "0.87.0-rc.1", + "@react-native/eslint-plugin": "0.87.0-rc.1", + "@react-native/eslint-plugin-specs": "0.87.0-rc.1", + "@react-native/gradle-plugin": "0.87.0-rc.1", + "@react-native/jest-preset": "0.87.0-rc.1", + "@react-native/metro-config": "0.87.0-rc.1", + "@react-native/new-app-screen": "0.87.0-rc.1", + "@react-native/normalize-colors": "0.87.0-rc.1", + "@react-native/js-polyfills": "0.87.0-rc.1", + "react-native-macos": "0.87.0-rc.0", + "@react-native/babel-preset": "0.87.0-rc.1", + "@react-native/metro-babel-transformer": "0.87.0-rc.1", + "@react-native/codegen": "0.87.0-rc.1", + "@react-native/compatibility-check": "0.87.0-rc.1", + "react-native-macos-init": "2.1.3", + "@react-native/popup-menu-android": "0.87.0-rc.1", + "@react-native/oss-library-example": "0.81.0-main", + "react-native-test-library-apple": "0.87.0-main", + "react-native-test-library-common": "0.87.0-main", + "@react-native/tester": "0.87.0-rc.1", + "@react-native/typescript-config": "0.87.0-rc.1", + "@react-native-macos/virtualized-lists": "0.87.0-rc.0", + "@react-native/core-cli-utils": "0.0.0", + "@react-native/eslint-plugin-monorepo": "0.0.0", + "@react-native/monorepo-tests": "0.0.0", + "@react-native/codegen-typescript-test": "0.0.0", + "@react-native/fantom": "0.0.0" + }, + "changesets": [] +} diff --git a/.changeset/stable-sync.md b/.changeset/stable-sync.md new file mode 100644 index 000000000000..fdec15b918b5 --- /dev/null +++ b/.changeset/stable-sync.md @@ -0,0 +1,6 @@ +--- +"react-native-macos": patch +"@react-native-macos/virtualized-lists": patch +--- + +Sync to upstream React Native 0.87.0-rc.1. diff --git a/.github/actions/build-npm-package/action.yml b/.github/actions/build-npm-package/action.yml index 2c5dd61a7d67..e3771ce3d51a 100644 --- a/.github/actions/build-npm-package/action.yml +++ b/.github/actions/build-npm-package/action.yml @@ -31,6 +31,15 @@ runs: pattern: ReactCore* path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts merge-multiple: true + # ReactNativeDependenciesHeaders* is already covered by the + # ReactNativeDependencies* pattern above; ReactNativeHeaders* needs its own. + - name: Download ReactNativeHeaders artifacts + if: ${{ inputs.skip-apple-prebuilts != 'true' }} + uses: actions/download-artifact@v7 + with: + pattern: ReactNativeHeaders* + path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts + merge-multiple: true - name: Print Artifacts Directory if: ${{ inputs.skip-apple-prebuilts != 'true' }} shell: bash diff --git a/.github/actions/test-ios-rntester/action.yml b/.github/actions/test-ios-rntester/action.yml index 2b62f554daa1..cdc2f5213a25 100644 --- a/.github/actions/test-ios-rntester/action.yml +++ b/.github/actions/test-ios-rntester/action.yml @@ -27,6 +27,13 @@ inputs: config of the 2026-07-03 SocketRocket dual-copy regression). required: false default: auto + build-from-source: + description: >- + Force building ReactCore/ReactNativeDependencies from source, disabling the + prebuilt Maven fallback (RCT_USE_PREBUILT_RNCORE / RCT_USE_RN_DEP, which + otherwise default to '1'). Used by the from-source dynamic-frameworks lane. + required: false + default: false runs: using: composite @@ -100,6 +107,17 @@ runs: export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz" export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz" fi + if [[ "${{ inputs.build-from-source }}" == "true" ]]; then + # Force building ReactCore/ReactNativeDependencies from source. Both + # RCT_USE_PREBUILT_RNCORE and RCT_USE_RN_DEP default to '1', so on a stable + # branch (where released Maven artifacts exist for the current version) the + # install would otherwise consume those prebuilts instead of building from + # source. That is wrong for the from-source dynamic-frameworks lane and also + # fails when a published artifact predates newer podspec layout changes + # (e.g. a React core tarball without ReactNativeHeaders.xcframework). + export RCT_USE_PREBUILT_RNCORE=0 + export RCT_USE_RN_DEP=0 + fi cd packages/rn-tester diff --git a/.github/scripts/__tests__/publishing-contract.test.mjs b/.github/scripts/__tests__/publishing-contract.test.mjs index 685d9e821cd5..24c735d75245 100644 --- a/.github/scripts/__tests__/publishing-contract.test.mjs +++ b/.github/scripts/__tests__/publishing-contract.test.mjs @@ -199,10 +199,13 @@ test('repository Changesets policy follows the actual public and private workspa assert.ok(corePackage && !corePackage.private, 'Missing public core workspace'); assert.ok(listsPackage, 'Missing lists workspace'); const main = corePackage.version === '1000.0.0'; + if (!main) parseVersion(corePackage.version); + const prereleaseReview = !main && semver.prerelease(corePackage.version) !== null + && releasePolicy.baseBranch === 'origin/main'; assert.deepEqual(releasePolicy.ignore, main ? mainPolicy.ignore : []); - assert.equal(releasePolicy.baseBranch, main ? 'origin/main' + assert.equal(releasePolicy.baseBranch, main || prereleaseReview ? 'origin/main' : `origin/${semver.major(corePackage.version)}.${semver.minor(corePackage.version)}-stable`); - assert.equal(Boolean(listsPackage.private), main, 'Lists must be public on stable and private on main'); + assert.equal(Boolean(listsPackage.private), main, 'Lists must be public on release graphs and private in development'); assert.equal(listsPackage.version, corePackage.version); const publicPackages = [corePackage, listsPackage]; // Derive expectations from manifests, never from the policy or release-plan output. @@ -302,8 +305,9 @@ test('repository Changesets policy couples public stable packages without regist }); test('real Yarn constraints preserve private upstream versions, align public versions, and preserve workspace fork edges', t => { - for (const main of [true, false]) { - const workspaces = graph(main ? '1000.0.0' : '0.83.2'); + for (const [version, upstreamVersion] of [['1000.0.0', '0.83.1'], ['0.83.2', '0.83.1'], ['0.87.0-rc.0', '0.87.1']]) { + const main = version === '1000.0.0'; + const workspaces = graph(version); workspaces[1].private = main; workspaces[1].version = '0.82.0'; workspaces[2].version = '0.82.7'; @@ -314,7 +318,7 @@ test('real Yarn constraints preserve private upstream versions, align public ver if (index !== 1) workspaces[index][field][lists] = '*'; } } - if (!main) workspaces[0].peerDependencies['react-native'] = '0.83.1'; + if (!main) workspaces[0].peerDependencies['react-native'] = upstreamVersion; const {root} = releaseFixture(t, {workspaces}); writeFileSync(join(root, 'yarn.lock'), ''); writeFileSync(join(root, 'yarn.config.cjs'), `module.exports = require(${JSON.stringify(join(repositoryRoot, 'yarn.config.cjs'))});\n`); @@ -327,18 +331,26 @@ test('real Yarn constraints preserve private upstream versions, align public ver yarn(['constraints']); const actual = workspaces.map((_, index) => JSON.parse(readFileSync(join(root, `packages/p${index}/package.json`), 'utf8'))); assert.equal(actual[0].version, workspaces[0].version); - assert.equal(actual[1].version, main ? '1000.0.0' : '0.83.2'); + assert.equal(actual[1].version, version); assert.equal(actual[2].private, true); assert.equal(actual[2].version, '0.82.7'); assert.equal(actual[3].version, '1000.0.0'); assert.equal(actual[5].private, true); - assert.equal(actual[5].version, main ? '0.83.0' : '0.83.1'); + assert.equal(actual[5].version, main ? '0.83.0' : upstreamVersion); for (const index of [0, 1, 3]) { for (const field of ['dependencies', 'devDependencies', 'peerDependencies']) { - assert.equal(actual[index][field]['@react-native/codegen'], main || index === 3 ? 'workspace:*' : '0.83.1'); + assert.equal(actual[index][field]['@react-native/codegen'], main || index === 3 ? 'workspace:*' : upstreamVersion); if (index !== 1) assert.equal(actual[index][field][lists], 'workspace:*'); } } + if (!main) { + const archive = join(root, 'core.tgz'); + yarn(['workspace', core, 'pack', '--out', archive]); + const packed = JSON.parse(execFileSync('tar', ['-xOf', archive, 'package/package.json'], {encoding: 'utf8'})); + assert.equal(packed.version, version); + assert.equal(packed.dependencies[lists], version); + assert.equal(packed.dependencies['@react-native/codegen'], upstreamVersion); + } } }); diff --git a/.github/scripts/publishing-contract.md b/.github/scripts/publishing-contract.md index 43cd64cbc27c..8dbf2a345d5b 100644 --- a/.github/scripts/publishing-contract.md +++ b/.github/scripts/publishing-contract.md @@ -14,7 +14,9 @@ Pending Changesets come from the declared `@changesets/get-release-plan` API, wi Stable branches must already have their initial release version and React Native peer configured. The publication script does not turn `1000.0.0` into a release. All public release packages must match the core version and branch. Private runtime workspace links are invalid; explicit registry references to the separately published upstream `@react-native/*` packages are valid. Development-only private workspace links are allowed. -Main and merge-stage branches keep the `1000.0.0` development graph, including private virtualized-lists and upstream workspace links. Their Changesets config defers `react-native-macos` with `ignore`; `@react-native/tester` is also listed for compatibility with older Changesets' dependent validation. This preserves pending core changesets until stable preparation, without changing package privacy or enabling private versions or tags. The independent init package remains versionable. Stable preparation must clear `ignore`, set the stable `baseBranch`, make virtualized-lists public, and configure the release versions and upstream registry dependencies before versioning. The repository-graph test checks these branch-specific source settings. +Development graphs on main and merge-stage branches keep `1000.0.0`, including private virtualized-lists and upstream workspace links. Their Changesets config defers `react-native-macos` with `ignore`; `@react-native/tester` is also listed for compatibility with older Changesets' dependent validation. This preserves pending core changesets until stable preparation, without changing package privacy or enabling private versions or tags. The independent init package remains versionable. Stable preparation must clear `ignore`, set the stable `baseBranch`, make virtualized-lists public, and configure the release versions and upstream registry dependencies before versioning. The repository-graph test checks these branch-specific source settings. + +Public prerelease review heads can retain `origin/main` while RNM and virtualized-lists have the same prerelease version and neither is private or ignored. They are distinct from the placeholder development graph; stable publication and version-wrapper branch guards still apply. The fork-local lists dependency uses `workspace:*` in source so Changesets tracks it, and Yarn packs it as the exact public version, including its prerelease suffix. Upstream registry dependencies keep their exact React Native peer version. ## Publication and tags diff --git a/.github/workflow-scripts/__tests__/maestro-ios-test.js b/.github/workflow-scripts/__tests__/maestro-ios-test.js new file mode 100644 index 000000000000..e77c0c05cfd0 --- /dev/null +++ b/.github/workflow-scripts/__tests__/maestro-ios-test.js @@ -0,0 +1,41 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +jest.mock('child_process', () => ({ + execSync: jest.fn(), + spawn: jest.fn(), +})); +const childProcess = require('child_process'); + +const {findAvailableSimulator} = require('../maestro-ios'); + +describe('Maestro iOS runner', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('selects an iPhone Pro simulator from the latest runtime', () => { + childProcess.execSync.mockReturnValue( + JSON.stringify({ + devices: { + 'iOS 18.5': [{name: 'iPhone 16 Pro', udid: 'old-pro'}], + 'iOS 26.5': [ + {name: 'iPhone 17 Pro Max', udid: 'new-pro-max'}, + {name: 'iPhone 17 Pro', udid: 'new-pro'}, + ], + }, + }), + ); + + expect(findAvailableSimulator()).toEqual({ + name: 'iPhone 17 Pro', + udid: 'new-pro', + }); + }); +}); diff --git a/.github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js b/.github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js index e77e7c4e2e49..8e9758f28609 100644 --- a/.github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js +++ b/.github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js @@ -22,6 +22,28 @@ jest.mock('../utils.js', () => ({ process.exit = mockExit; global.fetch = mockFetch; +const BASE_URL = + 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts'; + +// The verifier HEAD-checks the POM plus every classifier tarball attached to +// the react-native-artifacts publication (external-artifacts/build.gradle.kts). +const expectedUrls = version => [ + `${BASE_URL}/${version}/react-native-artifacts-${version}.pom`, + ...[ + 'reactnative-core-debug', + 'reactnative-core-release', + 'reactnative-dependencies-debug', + 'reactnative-dependencies-release', + 'reactnative-headers-debug', + 'reactnative-headers-release', + 'reactnative-dependencies-headers-debug', + 'reactnative-dependencies-headers-release', + ].map( + classifier => + `${BASE_URL}/${version}/react-native-artifacts-${version}-${classifier}.tar.gz`, + ), +]; + describe('#verifyArtifactsAreOnMaven', () => { beforeEach(jest.clearAllMocks); @@ -29,17 +51,18 @@ describe('#verifyArtifactsAreOnMaven', () => { mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => { throw new Error('Should not be called again!'); }); + // First attempt: the POM is not there yet. Second attempt: every URL is. mockFetch .mockReturnValueOnce(Promise.resolve({status: 404})) - .mockReturnValueOnce(Promise.resolve({status: 200})); + .mockReturnValue(Promise.resolve({status: 200})); const version = '0.78.1'; await verifyArtifactsAreOnMaven(version); expect(mockSleep).toHaveBeenCalledTimes(1); - expect(mockFetch).toHaveBeenCalledWith( - 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom', - ); + for (const url of expectedUrls('0.78.1')) { + expect(mockFetch).toHaveBeenCalledWith(url, {method: 'HEAD'}); + } }); it('waits for the packages to be published on maven, when version starts with v', async () => { @@ -48,27 +71,46 @@ describe('#verifyArtifactsAreOnMaven', () => { }); mockFetch .mockReturnValueOnce(Promise.resolve({status: 404})) - .mockReturnValueOnce(Promise.resolve({status: 200})); + .mockReturnValue(Promise.resolve({status: 200})); const version = 'v0.78.1'; await verifyArtifactsAreOnMaven(version); expect(mockSleep).toHaveBeenCalledTimes(1); - expect(mockFetch).toHaveBeenCalledWith( - 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom', - ); + for (const url of expectedUrls('0.78.1')) { + expect(mockFetch).toHaveBeenCalledWith(url, {method: 'HEAD'}); + } }); it('passes immediately if packages are already on Maven', async () => { - mockFetch.mockReturnValueOnce(Promise.resolve({status: 200})); + mockFetch.mockReturnValue(Promise.resolve({status: 200})); const version = '0.78.1'; await verifyArtifactsAreOnMaven(version); expect(mockSleep).toHaveBeenCalledTimes(0); - expect(mockFetch).toHaveBeenCalledWith( - 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom', - ); + // All nine URLs (POM + 8 classifier tarballs) are verified in one pass. + expect(mockFetch).toHaveBeenCalledTimes(9); + for (const url of expectedUrls('0.78.1')) { + expect(mockFetch).toHaveBeenCalledWith(url, {method: 'HEAD'}); + } + }); + + it('waits when a classifier artifact is missing even though the POM exists', async () => { + mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => { + throw new Error('Should not be called again!'); + }); + // First attempt: POM ok, first classifier missing. Second attempt: all ok. + mockFetch + .mockReturnValueOnce(Promise.resolve({status: 200})) + .mockReturnValueOnce(Promise.resolve({status: 404})) + .mockReturnValue(Promise.resolve({status: 200})); + + const version = '0.78.1'; + await verifyArtifactsAreOnMaven(version); + + expect(mockSleep).toHaveBeenCalledTimes(1); + expect(mockExit).not.toHaveBeenCalled(); }); it('tries 90 times and then exits', async () => { @@ -82,6 +124,7 @@ describe('#verifyArtifactsAreOnMaven', () => { expect(mockExit).toHaveBeenCalledWith(1); expect(mockFetch).toHaveBeenCalledWith( 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom', + {method: 'HEAD'}, ); }); }); diff --git a/.github/workflow-scripts/maestro-ios.js b/.github/workflow-scripts/maestro-ios.js index bad5f8a35248..0fcae5a54b89 100644 --- a/.github/workflow-scripts/maestro-ios.js +++ b/.github/workflow-scripts/maestro-ios.js @@ -23,25 +23,28 @@ node maestro-android.js /^iPhone .* Pro$/.test(device.name)); -const APP_PATH = args[0]; -const APP_ID = args[1]; -const MAESTRO_FLOW = args[2]; -const JS_ENGINE = args[3]; -const IS_DEBUG = args[4] === 'Debug'; -const WORKING_DIRECTORY = args[5]; + if (simulator == null) { + throw new Error('Unable to find an available iPhone Pro simulator'); + } -const MAX_ATTEMPTS = 5; + return simulator; +} -function launchSimulator(simulatorName) { - console.log(`Launching simulator ${simulatorName}`); +function launchSimulator(simulator) { + console.log(`Launching simulator ${simulator.name} (${simulator.udid})`); try { - childProcess.execSync(`xcrun simctl boot "${simulatorName}"`); + childProcess.execSync(`xcrun simctl boot "${simulator.udid}"`); } catch (error) { if ( !error.message.includes('Unable to boot device in current state: Booted') @@ -56,14 +59,6 @@ function installAppOnSimulator(appPath) { childProcess.execSync(`xcrun simctl install booted "${appPath}"`); } -function extractSimulatorUDID() { - console.log('Retrieving device UDID'); - const command = `xcrun simctl list devices booted -j | jq -r '[.devices[]] | add | first | .udid'`; - const udid = String(childProcess.execSync(command)).trim(); - console.log(`UDID is ${udid}`); - return udid; -} - function bringSimulatorInForeground() { console.log('Bringing simulator in foreground'); childProcess.execSync('open -a simulator'); @@ -151,26 +146,42 @@ function executeTestsWithRetries( } } -async function main() { +async function main(args = process.argv.slice(2)) { + if (args.length !== 6) { + throw new Error(`Invalid number of arguments.\n${usage}`); + } + + const appPath = args[0]; + const appId = args[1]; + const maestroFlow = args[2]; + const jsengine = args[3]; + const isDebug = args[4] === 'Debug'; + const workingDirectory = args[5]; + console.info('\n=============================='); console.info('Running tests for iOS with the following parameters:'); - console.info(`APP_PATH: ${APP_PATH}`); - console.info(`APP_ID: ${APP_ID}`); - console.info(`MAESTRO_FLOW: ${MAESTRO_FLOW}`); - console.info(`JS_ENGINE: ${JS_ENGINE}`); - console.info(`IS_DEBUG: ${IS_DEBUG}`); - console.info(`WORKING_DIRECTORY: ${WORKING_DIRECTORY}`); + console.info(`APP_PATH: ${appPath}`); + console.info(`APP_ID: ${appId}`); + console.info(`MAESTRO_FLOW: ${maestroFlow}`); + console.info(`JS_ENGINE: ${jsengine}`); + console.info(`IS_DEBUG: ${isDebug}`); + console.info(`WORKING_DIRECTORY: ${workingDirectory}`); console.info('==============================\n'); - const simulatorName = 'iPhone 16 Pro'; - launchSimulator(simulatorName); - installAppOnSimulator(APP_PATH); - const udid = extractSimulatorUDID(); + const simulator = findAvailableSimulator(); + launchSimulator(simulator); + installAppOnSimulator(appPath); bringSimulatorInForeground(); - await launchAppOnSimulator(APP_ID, udid, IS_DEBUG); - executeTestsWithRetries(APP_ID, udid, MAESTRO_FLOW, JS_ENGINE, 1); + await launchAppOnSimulator(appId, simulator.udid, isDebug); + executeTestsWithRetries(appId, simulator.udid, maestroFlow, jsengine, 1); console.log('Test finished'); process.exit(0); } -main(); +if (require.main === module) { + main(); +} + +module.exports = { + findAvailableSimulator, +}; diff --git a/.github/workflow-scripts/verifyArtifactsAreOnMaven.js b/.github/workflow-scripts/verifyArtifactsAreOnMaven.js index 1bb46163e0a2..5feb3777c032 100644 --- a/.github/workflow-scripts/verifyArtifactsAreOnMaven.js +++ b/.github/workflow-scripts/verifyArtifactsAreOnMaven.js @@ -7,6 +7,7 @@ * @format */ +// @flow const {log, sleep} = require('./utils'); const SLEEP_S = 60; // 1 minute @@ -15,23 +16,64 @@ const ARTIFACT_URL = 'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/'; const ARTIFACT_NAME = 'react-native-artifacts-'; -async function verifyArtifactsAreOnMaven(version, retries = MAX_RETRIES) { +// The primary xcframework classifier tarballs attached to the +// react-native-artifacts publication (external-artifacts/build.gradle.kts). +// The 4 dSYM classifiers (core/deps dSYM debug+release) are intentionally +// excluded — they are debug-symbol sidecars, not consumed at install time. +// The POM check alone would pass even when a classifier artifact never made +// it to Maven. +const ARTIFACT_CLASSIFIERS = [ + 'reactnative-core-debug', + 'reactnative-core-release', + 'reactnative-dependencies-debug', + 'reactnative-dependencies-release', + 'reactnative-headers-debug', + 'reactnative-headers-release', + 'reactnative-dependencies-headers-debug', + 'reactnative-dependencies-headers-release', +]; + +async function verifyArtifactsAreOnMaven( + version /*: string */, + retries /*: number */ = MAX_RETRIES, +) /*: Promise */ { if (version.startsWith('v')) { version = version.substring(1); } - const artifactUrl = `${ARTIFACT_URL}${version}/${ARTIFACT_NAME}${version}.pom`; + const urls = [ + `${ARTIFACT_URL}${version}/${ARTIFACT_NAME}${version}.pom`, + ...ARTIFACT_CLASSIFIERS.map( + classifier => + `${ARTIFACT_URL}${version}/${ARTIFACT_NAME}${version}-${classifier}.tar.gz`, + ), + ]; for (let currentAttempt = 1; currentAttempt <= retries; currentAttempt++) { - const response = await fetch(artifactUrl); - - if (response.status !== 200) { - log( - `${currentAttempt}) Artifact's for version ${version} are not on maven yet.\nURL: ${artifactUrl}\nLet's wait a minute and try again.\n`, - ); - await sleep(SLEEP_S); - } else { + let missingUrl = null; + for (const url of urls) { + try { + const response = await fetch(url, {method: 'HEAD'}); + if (response.status === 200) { + continue; + } + log(`Got status ${response.status} while checking ${url}`); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + log(`Network error while checking ${url}: ${message}`); + missingUrl = url; + break; + } + missingUrl = url; + break; + } + + if (missingUrl == null) { return; } + log( + `${currentAttempt}) Artifact's for version ${version} are not on maven yet.\nURL: ${missingUrl}\nLet's wait a minute and try again.\n`, + ); + await sleep(SLEEP_S); } log( diff --git a/.github/workflows/bump-podfile-lock.yml b/.github/workflows/bump-podfile-lock.yml index 94895d94e19b..9e5c42764430 100644 --- a/.github/workflows/bump-podfile-lock.yml +++ b/.github/workflows/bump-podfile-lock.yml @@ -5,7 +5,7 @@ on: jobs: bump-podfile-lock: - runs-on: macos-latest + runs-on: macos-15 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/e2e-ios-rntester.yml b/.github/workflows/e2e-ios-rntester.yml index cd53e954788c..f7ec8894d3d9 100644 --- a/.github/workflows/e2e-ios-rntester.yml +++ b/.github/workflows/e2e-ios-rntester.yml @@ -16,7 +16,7 @@ on: jobs: test: - runs-on: macos-15-large + runs-on: macos-26-large outputs: status: ${{ steps.report-status.outputs.status }} strategy: @@ -35,8 +35,6 @@ jobs: path: /tmp/RNTesterBuild/RNTester.app - name: Check downloaded folder content run: ls -lR /tmp/RNTesterBuild - - name: Setup xcode - uses: ./.github/actions/setup-xcode - name: Run E2E Tests id: run-tests continue-on-error: true diff --git a/.github/workflows/e2e-ios-templateapp.yml b/.github/workflows/e2e-ios-templateapp.yml index 44b64858bb48..20e5a9c5dff3 100644 --- a/.github/workflows/e2e-ios-templateapp.yml +++ b/.github/workflows/e2e-ios-templateapp.yml @@ -16,7 +16,7 @@ on: jobs: test: - runs-on: macos-15-large + runs-on: macos-26-large outputs: status: ${{ steps.report-status.outputs.status }} strategy: @@ -26,8 +26,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - name: Setup xcode - uses: ./.github/actions/setup-xcode - name: Setup node.js uses: ./.github/actions/setup-node - name: Run yarn diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 2eb06590225b..fad0e0b3a47d 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -201,7 +201,15 @@ jobs: post_publish: runs-on: ubuntu-latest needs: [determine_mode, publish_react_native] - if: needs.determine_mode.outputs.mode == 'release' + # Use always() so this job still runs in release mode even though some + # upstream jobs (e.g. build_android) are skipped and would otherwise + # poison the implicit success() gate. The explicit result checks below + # handle the real gating: only run for a successful release publish. + if: | + always() && + needs.determine_mode.result == 'success' && + needs.publish_react_native.result == 'success' && + needs.determine_mode.outputs.mode == 'release' env: REACT_NATIVE_BOT_GITHUB_TOKEN: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} steps: @@ -256,19 +264,38 @@ jobs: # ─── Release-only: changelog, podfile bump, draft release ──────── generate_changelog: needs: [determine_mode, publish_react_native] - if: needs.determine_mode.outputs.mode == 'release' + # always() + explicit result checks: run for a successful release publish + # even when skipped upstream jobs would trip the implicit success() gate. + if: | + always() && + needs.determine_mode.result == 'success' && + needs.publish_react_native.result == 'success' && + needs.determine_mode.outputs.mode == 'release' uses: ./.github/workflows/generate-changelog.yml secrets: inherit bump_podfile_lock: needs: [determine_mode, publish_react_native] - if: needs.determine_mode.outputs.mode == 'release' + # always() + explicit result checks: run for a successful release publish + # even when skipped upstream jobs would trip the implicit success() gate. + if: | + always() && + needs.determine_mode.result == 'success' && + needs.publish_react_native.result == 'success' && + needs.determine_mode.outputs.mode == 'release' uses: ./.github/workflows/bump-podfile-lock.yml secrets: inherit create_draft_release: needs: [determine_mode, generate_changelog, set_hermes_version] - if: needs.determine_mode.outputs.mode == 'release' + # always() + explicit result checks: run for a successful release even when + # skipped upstream jobs would trip the implicit success() gate. + if: | + always() && + needs.determine_mode.result == 'success' && + needs.generate_changelog.result == 'success' && + needs.set_hermes_version.result == 'success' && + needs.determine_mode.outputs.mode == 'release' uses: ./.github/workflows/create-draft-release.yml secrets: inherit with: diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index a65219271e15..9579037a44ab 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -136,6 +136,7 @@ jobs: with: flavor: ${{ matrix.flavor }} use-frameworks: true + build-from-source: true run-unit-tests: false # tests for dynamic frameworks are already run in the test_ios_rntester job; this is to just a test build from source (no prebuilds) test_ios_rntester: diff --git a/gradle.properties b/gradle.properties index 1028b5c5238e..0d5b4a717b54 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,8 +13,8 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # Controls whether to use Hermes from stable builds. This will force hermes version # set in the sdks/hermes-engine/version.properties file to be used. This has a higher # priority than react.internal.useHermesNightly. -react.internal.useHermesStable=false +react.internal.useHermesStable=true # Controls whether to use Hermes from nightly builds. This will speed up builds # but should NOT be turned on for CI or release builds. -react.internal.useHermesNightly=true +react.internal.useHermesNightly=false diff --git a/jest.config.js b/jest.config.js index 84fbdce8a36d..273b27feb344 100644 --- a/jest.config.js +++ b/jest.config.js @@ -51,10 +51,9 @@ module.exports = { }, // [macOS moduleNameMapper: { - // `resolver.js` strips `exports`; match this before the broad fork mapper. + // These mappers allow out-of-tree platforms tests to resolve RN imports '^react-native/setup-env$': '/packages/react-native/src/setup-env.js', - // These mappers allow out-of-tree platforms tests to resolve RN imports '^react-native/(.*)': '/packages/react-native/$1', '^react-native$': '/packages/react-native/index.js', }, diff --git a/packages/asset-utils/package.json b/packages/asset-utils/package.json index edfd02042443..00ac2c5cc4ff 100644 --- a/packages/asset-utils/package.json +++ b/packages/asset-utils/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/asset-utils", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Asset path utilities for React Native.", "license": "MIT", "repository": { diff --git a/packages/assets-registry/package.json b/packages/assets-registry/package.json index 4929f5a28fd1..a169616748f2 100644 --- a/packages/assets-registry/package.json +++ b/packages/assets-registry/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/assets-registry", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Asset support code for React Native.", "license": "MIT", "repository": { diff --git a/packages/babel-plugin-codegen/package.json b/packages/babel-plugin-codegen/package.json index 166bd3cb4dc9..e2c3229095c1 100644 --- a/packages/babel-plugin-codegen/package.json +++ b/packages/babel-plugin-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/babel-plugin-codegen", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Babel plugin to generate native module and view manager code for React Native.", "license": "MIT", "repository": { diff --git a/packages/community-cli-plugin/package.json b/packages/community-cli-plugin/package.json index 09a1228d7add..760af7fa61d3 100644 --- a/packages/community-cli-plugin/package.json +++ b/packages/community-cli-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/community-cli-plugin", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Core CLI commands for React Native", "keywords": [ "react-native", diff --git a/packages/debugger-frontend/package.json b/packages/debugger-frontend/package.json index c7a9e765eac7..1ef8f5e49d03 100644 --- a/packages/debugger-frontend/package.json +++ b/packages/debugger-frontend/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/debugger-frontend", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Debugger frontend for React Native based on Chrome DevTools", "keywords": [ "react-native", diff --git a/packages/debugger-shell/bin/react-native-devtools b/packages/debugger-shell/bin/react-native-devtools index 3c6f6a90b9fd..c4685c9f270c 100755 --- a/packages/debugger-shell/bin/react-native-devtools +++ b/packages/debugger-shell/bin/react-native-devtools @@ -1,6 +1,6 @@ #!/usr/bin/env dotslash -// @generated SignedSource<<01dcf5246a0b3f95d617d1d52bc1998e>> +// @generated SignedSource<<3542489cbb6fe7c6958575bcc6cf0ab3>> { @@ -11,6 +11,9 @@ "hash": "sha256", "digest": "020eea3cf10f77b8f4e1ae4a2aaa7d78a77c3802de6b00448866aa9c860509c4", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.87.1/React.Native.DevTools-linux-aarch64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQPgk_PO-qLmLS1ZUyNtm9PZa0Z6XoCXar8Mo-ZDooUwm7-0tv-ga6cl1eB-9o0pVmKxH0-9xTS4NmFyyF1Qwn_x4J0olUnVH8AEHASw1VlnpkN5EPuTII29SmB_1Gis6_twDOo8CwWXFsa2p4XxRceIj-_IINp-fqrGuekCH-Kwd7BqsDsnBykigqY" @@ -24,6 +27,9 @@ "hash": "sha256", "digest": "933aa98eb68da7f8d1b6e83e611e51f66d026f3b410dc13577faa6adf1b0f75c", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.87.1/React.Native.DevTools-linux-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQM0YWmFH-pEdvrIlqLqZfCcRl1DxhzvJDOHJnFrBIVxrxjq6LqnqU9fwc7qXsS3JHcg7miVifXIM4cZTAsjVeusaVbQTYj2SevDy-9ajAnzjZj92m_WAwfmcp9gb7s9axqohmC1E_LCiC1BTdV-KEIyEcJWvZNJpFu3f44f8vpctlucJgm79I5n" @@ -37,6 +43,9 @@ "hash": "sha256", "digest": "4a1c234b1cf27f1ff006fafce6628b8ef6993d7d3298c6ed2127e3055c93dcc6", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.87.1/React.Native.DevTools-macos-aarch64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQNRWwxQIl4mkFPfIFJaGmmhuPTZXHz3uDISd0w_ptFazAGOLvONiln4ntQBt2iaBaNomMlXRuqAkdCXjHMu2lDarvjjZUfgtFpt8NEeEgILgWxbdB1j2rSiJrFZQoRb-VC0gGq3ALskrTQrLof9QJ_MSz_by779saXHEa_Wcd6-rk-D3PZyY6iwXYvy" @@ -50,6 +59,9 @@ "hash": "sha256", "digest": "9f1de3cb78688befaea4d9e5f640a66833dd44ad58b05590a7e07bce279bf532", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.87.1/React.Native.DevTools-macos-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQMTN_mkHiVIEbUrA3teX7PDWCRTwVW9ffBc9X2rMjQOkZCzShBebMG1Zchl39m1P09Wxm0E_3r_Vg-ahgNsUzd1UzNiGmJ-4-T_xU_sEegXkheLn5Vi1_y5e0KVBQs0caeP5jUaUqn1JqrRRxwqwEPhV4YE8MCutcd3VXwluA4yI3ReI36c4BtgLg" @@ -63,6 +75,9 @@ "hash": "sha256", "digest": "5b56e22828549f12be49f0431fd74c54dcebfbfb4277e4b87573ec1ab084c288", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.87.1/React.Native.DevTools-windows-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQNoewIvekFkYIhisR8u_iD720Mh6OCyo-JLIwW3AE0RZlWKUVtiMpi95a4kEX2mUSkVwcImnvEgpiKH7Oxz0ZlTGwxXyoUN4QrDQtfF5V4ng2rbBvdovpfev0qdxA3WGF9qcWmgE2qA5vfiHQ_dhOpogBxu3ZYaUkrQ3oZS3MrT9NU7HmRDWPpu" diff --git a/packages/debugger-shell/package.json b/packages/debugger-shell/package.json index af7e305e600e..3d6efa042b25 100644 --- a/packages/debugger-shell/package.json +++ b/packages/debugger-shell/package.json @@ -1,7 +1,7 @@ { "name": "@react-native/debugger-shell", "productName": "React Native DevTools", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Experimental debugger shell for React Native for use with @react-native/debugger-frontend", "keywords": [ "react-native", diff --git a/packages/dev-middleware/package.json b/packages/dev-middleware/package.json index 7ff5ae0f37ff..014c8a54dea5 100644 --- a/packages/dev-middleware/package.json +++ b/packages/dev-middleware/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/dev-middleware", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Dev server middleware for React Native", "keywords": [ "react-native", diff --git a/packages/eslint-config-react-native/package.json b/packages/eslint-config-react-native/package.json index a22bdaaa74f4..bebbc9aaf1ae 100644 --- a/packages/eslint-config-react-native/package.json +++ b/packages/eslint-config-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-config", - "version": "0.87.0-main", + "version": "0.87.1", "description": "ESLint config for React Native", "license": "MIT", "repository": { diff --git a/packages/eslint-plugin-react-native/package.json b/packages/eslint-plugin-react-native/package.json index c0e163ca78d6..c974920925a2 100644 --- a/packages/eslint-plugin-react-native/package.json +++ b/packages/eslint-plugin-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-plugin", - "version": "0.87.0-main", + "version": "0.87.1", "description": "ESLint rules for @react-native/eslint-config", "license": "MIT", "repository": { diff --git a/packages/eslint-plugin-specs/package.json b/packages/eslint-plugin-specs/package.json index d73bc1dfef80..23906138acb9 100644 --- a/packages/eslint-plugin-specs/package.json +++ b/packages/eslint-plugin-specs/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-plugin-specs", - "version": "0.87.0-main", + "version": "0.87.1", "description": "ESLint rules to validate NativeModule and Component Specs", "license": "MIT", "repository": { diff --git a/packages/gradle-plugin/package.json b/packages/gradle-plugin/package.json index 2fac41a75815..d25a44c2590f 100644 --- a/packages/gradle-plugin/package.json +++ b/packages/gradle-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/gradle-plugin", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Gradle Plugin for React Native", "license": "MIT", "repository": { diff --git a/packages/jest-preset/jest-preset.js b/packages/jest-preset/jest-preset.js index fb819c04c701..07112331be45 100644 --- a/packages/jest-preset/jest-preset.js +++ b/packages/jest-preset/jest-preset.js @@ -18,8 +18,13 @@ module.exports = { platforms: ['android', 'ios', 'macos', 'native'], // [macOS] }, moduleNameMapper: { - // Resolve secondary entry points before the broad fork mapper. // [macOS] - '^react-native/setup-env$': `${path.dirname(require.resolve('react-native-macos'))}/src/setup-env.js`, // [macOS] + // `setup-env` is a secondary entry point exposed via the package's + // `exports`, but `./jest/resolver.js` strips `exports` and the generic + // mapper below resolves subpaths as literal directory paths. Alias it + // explicitly so it resolves to its `src/` implementation. + '^react-native/setup-env$': `${path.dirname( + require.resolve('react-native-macos'), // [macOS] + )}/src/setup-env.js`, '^react-native($|/.*)': `${path.dirname( require.resolve('react-native-macos'), // [macOS] )}/$1`, diff --git a/packages/jest-preset/package.json b/packages/jest-preset/package.json index 925dcfac00ae..9256a60b3a0e 100644 --- a/packages/jest-preset/package.json +++ b/packages/jest-preset/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/jest-preset", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Jest preset for React Native apps", "keywords": [ "jest", diff --git a/packages/metro-config/package.json b/packages/metro-config/package.json index c67db840623e..969303ade454 100644 --- a/packages/metro-config/package.json +++ b/packages/metro-config/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/metro-config", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Metro configuration for React Native.", "license": "MIT", "repository": { diff --git a/packages/new-app-screen/package.json b/packages/new-app-screen/package.json index e0fa4762e8b1..60db244be069 100644 --- a/packages/new-app-screen/package.json +++ b/packages/new-app-screen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/new-app-screen", - "version": "0.87.0-main", + "version": "0.87.1", "description": "NewAppScreen component for React Native", "keywords": [ "react-native" @@ -21,7 +21,7 @@ "peerDependencies": { "@types/react": "^19.1.0", "react": "*", - "react-native": "1000.0.0" + "react-native": "0.87.1" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/normalize-color/package.json b/packages/normalize-color/package.json index 78e61f03ac85..dfbcd60fe6bb 100644 --- a/packages/normalize-color/package.json +++ b/packages/normalize-color/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/normalize-colors", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Color normalization for React Native.", "license": "MIT", "repository": { diff --git a/packages/polyfills/package.json b/packages/polyfills/package.json index 72f0f872cef7..25d562532734 100644 --- a/packages/polyfills/package.json +++ b/packages/polyfills/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/js-polyfills", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Polyfills for React Native.", "license": "MIT", "repository": { diff --git a/packages/react-native-babel-preset/package.json b/packages/react-native-babel-preset/package.json index 61fe41c6a423..cfc4c0645859 100644 --- a/packages/react-native-babel-preset/package.json +++ b/packages/react-native-babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/babel-preset", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Babel preset for React Native applications", "repository": { "type": "git", diff --git a/packages/react-native-babel-transformer/package.json b/packages/react-native-babel-transformer/package.json index 2993f906aadc..5f90938aae97 100644 --- a/packages/react-native-babel-transformer/package.json +++ b/packages/react-native-babel-transformer/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/metro-babel-transformer", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Babel transformer for React Native applications.", "repository": { "type": "git", diff --git a/packages/react-native-codegen/package.json b/packages/react-native-codegen/package.json index df8059ba2fa0..36664b2743de 100644 --- a/packages/react-native-codegen/package.json +++ b/packages/react-native-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/codegen", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Code generation tools for React Native", "license": "MIT", "repository": { diff --git a/packages/react-native-compatibility-check/package.json b/packages/react-native-compatibility-check/package.json index d2be45f46dea..56c545e6c154 100644 --- a/packages/react-native-compatibility-check/package.json +++ b/packages/react-native-compatibility-check/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/compatibility-check", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Check a React Native app's boundary between JS and Native for incompatibilities", "license": "MIT", "repository": { diff --git a/packages/react-native-popup-menu-android/package.json b/packages/react-native-popup-menu-android/package.json index 07ee1ff97b81..50fd2a326666 100644 --- a/packages/react-native-popup-menu-android/package.json +++ b/packages/react-native-popup-menu-android/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/popup-menu-android", - "version": "0.87.0-main", + "version": "0.87.1", "description": "PopupMenu for the Android platform", "repository": { "type": "git", @@ -31,7 +31,7 @@ "peerDependencies": { "@types/react": "^19.1.0", "react": "*", - "react-native": "1000.0.0" + "react-native": "0.87.1" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/react-native-test-library/package.json b/packages/react-native-test-library/package.json index f097a59eec5d..af9dab3102e5 100644 --- a/packages/react-native-test-library/package.json +++ b/packages/react-native-test-library/package.json @@ -31,7 +31,7 @@ }, "peerDependencies": { "react": "*", - "react-native-macos": "*" + "react-native-macos": "0.87.0-rc.0" }, "codegenConfig": { "name": "OSSLibraryExampleSpec", diff --git a/packages/react-native/Libraries/Core/ReactNativeVersion.js b/packages/react-native/Libraries/Core/ReactNativeVersion.js index 1ff12f563e62..6839550b14eb 100644 --- a/packages/react-native/Libraries/Core/ReactNativeVersion.js +++ b/packages/react-native/Libraries/Core/ReactNativeVersion.js @@ -26,10 +26,10 @@ * ``` */ export default class ReactNativeVersion { - static major: number = 1000; - static minor: number = 0; + static major: number = 0; + static minor: number = 87; static patch: number = 0; - static prerelease: string | null = null; + static prerelease: string | null = 'rc.0'; static getVersionString(): string { return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`; diff --git a/packages/react-native/React/Base/RCTVersion.m b/packages/react-native/React/Base/RCTVersion.m index 69ce4f75320e..0cd9952b7031 100644 --- a/packages/react-native/React/Base/RCTVersion.m +++ b/packages/react-native/React/Base/RCTVersion.m @@ -21,10 +21,10 @@ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^(void){ __rnVersion = @{ - RCTVersionMajor: @(1000), - RCTVersionMinor: @(0), + RCTVersionMajor: @(0), + RCTVersionMinor: @(87), RCTVersionPatch: @(0), - RCTVersionPrerelease: [NSNull null], + RCTVersionPrerelease: @"rc.0", }; }); return __rnVersion; diff --git a/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts b/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts index 1ed2851218df..48a676d31c64 100644 --- a/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts +++ b/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts @@ -53,6 +53,30 @@ val reactNativeDependenciesReleaseDSYMArtifact: PublishArtifact = classifier = "reactnative-dependencies-dSYM-release" } +// [iOS] React Native Dependencies Headers — the headers-only LIBRARY-type +// sidecar (per-slice Headers/ + HeadersPath) that SwiftPM auto-serves; the +// binary xcframework above is framework-type and cannot expose headers to +// SwiftPM binaryTargets. Also shipped INSIDE the deps tarball for CocoaPods. +val reactNativeDependenciesHeadersDebugArtifactFile: RegularFile = + layout.projectDirectory.file("artifacts/ReactNativeDependenciesHeadersDebug.xcframework.tar.gz") +val reactNativeDependenciesHeadersDebugArtifact: PublishArtifact = + artifacts.add("externalArtifacts", reactNativeDependenciesHeadersDebugArtifactFile) { + type = "tgz" + extension = "tar.gz" + classifier = "reactnative-dependencies-headers-debug" + } + +val reactNativeDependenciesHeadersReleaseArtifactFile: RegularFile = + layout.projectDirectory.file( + "artifacts/ReactNativeDependenciesHeadersRelease.xcframework.tar.gz" + ) +val reactNativeDependenciesHeadersReleaseArtifact: PublishArtifact = + artifacts.add("externalArtifacts", reactNativeDependenciesHeadersReleaseArtifactFile) { + type = "tgz" + extension = "tar.gz" + classifier = "reactnative-dependencies-headers-release" + } + // [iOS] React Native Core val reactCoreDebugArtifactFile: RegularFile = layout.projectDirectory.file("artifacts/ReactCoreDebug.xcframework.tar.gz") @@ -89,6 +113,27 @@ val reactCoreReleaseDSYMArtifact: PublishArtifact = classifier = "reactnative-core-dSYM-release" } +// [iOS] React Native Headers — the pure-RN headers-only xcframework, published +// standalone (it also ships inside the ReactCore tarball for CocoaPods) so +// SwiftPM consumers can wire it as its own binaryTarget. +val reactNativeHeadersDebugArtifactFile: RegularFile = + layout.projectDirectory.file("artifacts/ReactNativeHeadersDebug.xcframework.tar.gz") +val reactNativeHeadersDebugArtifact: PublishArtifact = + artifacts.add("externalArtifacts", reactNativeHeadersDebugArtifactFile) { + type = "tgz" + extension = "tar.gz" + classifier = "reactnative-headers-debug" + } + +val reactNativeHeadersReleaseArtifactFile: RegularFile = + layout.projectDirectory.file("artifacts/ReactNativeHeadersRelease.xcframework.tar.gz") +val reactNativeHeadersReleaseArtifact: PublishArtifact = + artifacts.add("externalArtifacts", reactNativeHeadersReleaseArtifactFile) { + type = "tgz" + extension = "tar.gz" + classifier = "reactnative-headers-release" + } + apply(from = "../publish.gradle") publishing { @@ -99,10 +144,14 @@ publishing { artifact(reactNativeDependenciesReleaseArtifact) artifact(reactNativeDependenciesDebugDSYMArtifact) artifact(reactNativeDependenciesReleaseDSYMArtifact) + artifact(reactNativeDependenciesHeadersDebugArtifact) + artifact(reactNativeDependenciesHeadersReleaseArtifact) artifact(reactCoreDebugArtifact) artifact(reactCoreReleaseArtifact) artifact(reactCoreDebugDSYMArtifact) artifact(reactCoreReleaseDSYMArtifact) + artifact(reactNativeHeadersDebugArtifact) + artifact(reactNativeHeadersReleaseArtifact) } } } diff --git a/packages/react-native/ReactAndroid/gradle.properties b/packages/react-native/ReactAndroid/gradle.properties index 71b1bf4cf759..cbf112a44498 100644 --- a/packages/react-native/ReactAndroid/gradle.properties +++ b/packages/react-native/ReactAndroid/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=1000.0.0 +VERSION_NAME=0.87.0-rc.0 react.internal.publishingGroup=com.facebook.react react.internal.hermesPublishingGroup=com.facebook.hermes diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt index 108c628ce158..756dc4934b9b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt @@ -28,8 +28,14 @@ internal class SynchronousMountItem(private val reactTag: Int, private val props } override fun toString(): String { - val propsString = if (IS_DEVELOPMENT_ENVIRONMENT) props.toHashMap().toString() else "" - return "SYNC UPDATE PROPS [$reactTag]: $propsString" + // NOTE: Intentionally written as an early return rather than assigning the result of an + // `if` expression to a local `val`. The latter shape triggers a crash in the Android lint + // K2 UAST analyzer (resolveSyntheticJavaPropertyAccessorCall) while resolving the local + // variable's `if`-expression initializer, failing `lintVitalAnalyzeRelease`. + if (!IS_DEVELOPMENT_ENVIRONMENT) { + return "SYNC UPDATE PROPS [$reactTag]: " + } + return "SYNC UPDATE PROPS [$reactTag]: ${props.toHashMap()}" } override fun getSurfaceId(): Int = View.NO_ID diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt index 889fa4d728c4..334a5a99f7dc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -1,15 +1,20 @@ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * - * This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * * @generated by scripts/releases/set-version.js */ + package com.facebook.react.modules.systeminfo public object ReactNativeVersion { @JvmField - public val VERSION: Map = - mapOf("major" to 1000, "minor" to 0, "patch" to 0, "prerelease" to null) + public val VERSION: Map = mapOf( + "major" to 0, + "minor" to 87, + "patch" to 0, + "prerelease" to "rc.0" + ) } diff --git a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h index 25468f63f050..dda586e1c631 100644 --- a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h +++ b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h @@ -12,17 +12,17 @@ #include #include -#define REACT_NATIVE_VERSION_MAJOR 1000 -#define REACT_NATIVE_VERSION_MINOR 0 +#define REACT_NATIVE_VERSION_MAJOR 0 +#define REACT_NATIVE_VERSION_MINOR 87 #define REACT_NATIVE_VERSION_PATCH 0 namespace facebook::react { struct ReactNativeVersionType { - int32_t Major = 1000; - int32_t Minor = 0; + int32_t Major = 0; + int32_t Minor = 87; int32_t Patch = 0; - std::string_view Prerelease = ""; + std::string_view Prerelease = "rc.0"; }; constexpr ReactNativeVersionType ReactNativeVersion; diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 5ddc8b9ca9a7..a39a5158e00f 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -1,6 +1,6 @@ { "name": "react-native-macos", - "version": "1000.0.0", + "version": "0.87.0-rc.0", "description": "React Native for macOS", "license": "MIT", "repository": { @@ -147,7 +147,8 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.2.3" + "react": "^19.2.3", + "react-native": "0.87.1" }, "peerDependenciesMeta": { "@types/react": { @@ -156,11 +157,11 @@ }, "dependencies": { "@react-native-macos/virtualized-lists": "workspace:*", - "@react-native/asset-utils": "workspace:*", - "@react-native/codegen": "workspace:*", - "@react-native/community-cli-plugin": "workspace:*", - "@react-native/gradle-plugin": "workspace:*", - "@react-native/normalize-colors": "workspace:*", + "@react-native/asset-utils": "0.87.1", + "@react-native/codegen": "0.87.1", + "@react-native/community-cli-plugin": "0.87.1", + "@react-native/gradle-plugin": "0.87.1", + "@react-native/normalize-colors": "0.87.1", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-plugin-syntax-hermes-parser": "0.36.1", @@ -168,7 +169,7 @@ "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", - "hermes-compiler": "250829098.0.13", + "hermes-compiler": "250829098.0.17", "invariant": "^2.2.4", "memoize-one": "^5.0.0", "metro": "^0.87.0", diff --git a/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap b/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap index 9ce1c901040e..5e8048debe75 100644 --- a/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap +++ b/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap @@ -79,7 +79,7 @@ exports[`execute test-app "ReactAppDependencyProvider/ReactAppDependencyProvider # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.87.0-rc.0\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -399,7 +399,7 @@ exports[`execute test-app "ReactCodegen/ReactCodegen.podspec" should match snaps # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.87.0-rc.0\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -590,7 +590,7 @@ exports[`execute test-app-legacy "ReactAppDependencyProvider/ReactAppDependencyP # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.87.0-rc.0\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -882,7 +882,7 @@ exports[`execute test-app-legacy "ReactCodegen/ReactCodegen.podspec" should matc # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.87.0-rc.0\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. diff --git a/packages/react-native/sdks/.hermesv1version b/packages/react-native/sdks/.hermesv1version index a9e3c2c23080..94c1145b3fc4 100644 --- a/packages/react-native/sdks/.hermesv1version +++ b/packages/react-native/sdks/.hermesv1version @@ -1 +1 @@ -hermes-v250829098.0.13 +hermes-v250829098.0.17 \ No newline at end of file diff --git a/packages/react-native/sdks/hermes-engine/version.properties b/packages/react-native/sdks/hermes-engine/version.properties index 05a54e3d4e77..ef882bc7a2e0 100644 --- a/packages/react-native/sdks/hermes-engine/version.properties +++ b/packages/react-native/sdks/hermes-engine/version.properties @@ -1 +1 @@ -HERMES_VERSION_NAME=250829098.0.13 +HERMES_VERSION_NAME=250829098.0.17 diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 859b236e7497..4a969b502a30 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -2,17 +2,13 @@ PODS: - boost (1.84.0) - DoubleConversion (1.1.6) - fast_float (8.0.0) - - FBLazyVector (1000.0.0) + - FBLazyVector (0.87.0-rc.0) - fmt (12.1.0) - glog (0.3.5) - - hermes-engine (1000.0.0): - - hermes-engine/cdp (= 1000.0.0) - - hermes-engine/Hermes (= 1000.0.0) - - hermes-engine/Public (= 1000.0.0) - - hermes-engine/cdp (1000.0.0) - - hermes-engine/Hermes (1000.0.0) - - hermes-engine/Public (1000.0.0) - - MyNativeView (0.87.0-main): + - hermes-engine (250829098.0.17): + - hermes-engine/Pre-built (= 250829098.0.17) + - hermes-engine/Pre-built (250829098.0.17) + - MyNativeView (0.87.1): - boost - DoubleConversion - fast_float @@ -40,7 +36,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - NativeCxxModuleExample (0.87.0-main): + - NativeCxxModuleExample (0.87.1): - boost - DoubleConversion - fast_float @@ -88,31 +84,31 @@ PODS: - fast_float (= 8.0.0) - fmt (= 12.1.0) - glog - - RCTDeprecation (1000.0.0) - - RCTRequired (1000.0.0) - - RCTSwiftUI (1000.0.0): + - RCTDeprecation (0.87.0-rc.0) + - RCTRequired (0.87.0-rc.0) + - RCTSwiftUI (0.87.0-rc.0): - React-RCTUIKit - - RCTSwiftUIWrapper (1000.0.0): + - RCTSwiftUIWrapper (0.87.0-rc.0): - RCTSwiftUI - React-RCTUIKit - - RCTTypeSafety (1000.0.0): - - FBLazyVector (= 1000.0.0) - - RCTRequired (= 1000.0.0) - - React-Core (= 1000.0.0) - - React (1000.0.0): - - React-Core (= 1000.0.0) - - React-Core/DevSupport (= 1000.0.0) - - React-Core/RCTWebSocket (= 1000.0.0) - - React-RCTActionSheet (= 1000.0.0) - - React-RCTAnimation (= 1000.0.0) - - React-RCTBlob (= 1000.0.0) - - React-RCTImage (= 1000.0.0) - - React-RCTLinking (= 1000.0.0) - - React-RCTNetwork (= 1000.0.0) - - React-RCTSettings (= 1000.0.0) - - React-RCTText (= 1000.0.0) - - React-RCTVibration (= 1000.0.0) - - React-bridging (1000.0.0): + - RCTTypeSafety (0.87.0-rc.0): + - FBLazyVector (= 0.87.0-rc.0) + - RCTRequired (= 0.87.0-rc.0) + - React-Core (= 0.87.0-rc.0) + - React (0.87.0-rc.0): + - React-Core (= 0.87.0-rc.0) + - React-Core/DevSupport (= 0.87.0-rc.0) + - React-Core/RCTWebSocket (= 0.87.0-rc.0) + - React-RCTActionSheet (= 0.87.0-rc.0) + - React-RCTAnimation (= 0.87.0-rc.0) + - React-RCTBlob (= 0.87.0-rc.0) + - React-RCTImage (= 0.87.0-rc.0) + - React-RCTLinking (= 0.87.0-rc.0) + - React-RCTNetwork (= 0.87.0-rc.0) + - React-RCTSettings (= 0.87.0-rc.0) + - React-RCTText (= 0.87.0-rc.0) + - React-RCTVibration (= 0.87.0-rc.0) + - React-bridging (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -124,8 +120,8 @@ PODS: - React-jsi - React-timing - SocketRocket - - React-callinvoker (1000.0.0) - - React-Core (1000.0.0): + - React-callinvoker (0.87.0-rc.0) + - React-Core (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -135,7 +131,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 1000.0.0) + - React-Core/Default (= 0.87.0-rc.0) - React-cxxreact - React-featureflags - React-hermes @@ -151,7 +147,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/CoreModulesHeaders (1000.0.0): + - React-Core/CoreModulesHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -177,7 +173,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/Default (1000.0.0): + - React-Core/Default (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -202,7 +198,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/DevSupport (1000.0.0): + - React-Core/DevSupport (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -212,8 +208,8 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 1000.0.0) - - React-Core/RCTWebSocket (= 1000.0.0) + - React-Core/Default (= 0.87.0-rc.0) + - React-Core/RCTWebSocket (= 0.87.0-rc.0) - React-cxxreact - React-featureflags - React-hermes @@ -229,7 +225,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTActionSheetHeaders (1000.0.0): + - React-Core/RCTActionSheetHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -255,7 +251,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTAnimationHeaders (1000.0.0): + - React-Core/RCTAnimationHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -281,7 +277,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTBlobHeaders (1000.0.0): + - React-Core/RCTBlobHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -307,7 +303,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTImageHeaders (1000.0.0): + - React-Core/RCTImageHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -333,7 +329,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTLinkingHeaders (1000.0.0): + - React-Core/RCTLinkingHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -359,7 +355,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTNetworkHeaders (1000.0.0): + - React-Core/RCTNetworkHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -385,7 +381,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTPushNotificationHeaders (1000.0.0): + - React-Core/RCTPushNotificationHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -411,7 +407,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTSettingsHeaders (1000.0.0): + - React-Core/RCTSettingsHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -437,7 +433,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTTextHeaders (1000.0.0): + - React-Core/RCTTextHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -463,7 +459,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTVibrationHeaders (1000.0.0): + - React-Core/RCTVibrationHeaders (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -489,7 +485,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTWebSocket (1000.0.0): + - React-Core/RCTWebSocket (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -499,7 +495,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 1000.0.0) + - React-Core/Default (= 0.87.0-rc.0) - React-cxxreact - React-featureflags - React-hermes @@ -515,7 +511,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-CoreModules (1000.0.0): + - React-CoreModules (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -523,23 +519,23 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - RCTTypeSafety (= 1000.0.0) - - React-Core/CoreModulesHeaders (= 1000.0.0) + - RCTTypeSafety (= 0.87.0-rc.0) + - React-Core/CoreModulesHeaders (= 0.87.0-rc.0) - React-debug - React-featureflags - - React-jsi (= 1000.0.0) + - React-jsi (= 0.87.0-rc.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 1000.0.0) + - React-RCTImage (= 0.87.0-rc.0) - React-runtimeexecutor - React-utils - ReactCommon - SocketRocket - - React-cxxreact (1000.0.0): + - React-cxxreact (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -548,24 +544,24 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-debug (= 1000.0.0) - - React-jserrorhandler (= 1000.0.0) - - React-jsi (= 1000.0.0) + - React-callinvoker (= 0.87.0-rc.0) + - React-debug (= 0.87.0-rc.0) + - React-jserrorhandler (= 0.87.0-rc.0) + - React-jsi (= 0.87.0-rc.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) + - React-logger (= 0.87.0-rc.0) + - React-perflogger (= 0.87.0-rc.0) - React-runtimeexecutor - - React-timing (= 1000.0.0) + - React-timing (= 0.87.0-rc.0) - React-utils - SocketRocket - - React-cxxstableapi (1000.0.0) - - React-debug (1000.0.0): - - React-debug/redbox (= 1000.0.0) - - React-debug/redbox (1000.0.0) - - React-defaultsnativemodule (1000.0.0): + - React-cxxstableapi (0.87.0-rc.0) + - React-debug (0.87.0-rc.0): + - React-debug/redbox (= 0.87.0-rc.0) + - React-debug/redbox (0.87.0-rc.0) + - React-defaultsnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -589,7 +585,7 @@ PODS: - React-webperformancenativemodule - SocketRocket - Yoga - - React-domnativemodule (1000.0.0): + - React-domnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -610,7 +606,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric (1000.0.0): + - React-Fabric (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -625,25 +621,25 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animated (= 1000.0.0) - - React-Fabric/animationbackend (= 1000.0.0) - - React-Fabric/animations (= 1000.0.0) - - React-Fabric/attributedstring (= 1000.0.0) - - React-Fabric/bridging (= 1000.0.0) - - React-Fabric/componentregistry (= 1000.0.0) - - React-Fabric/componentregistrynative (= 1000.0.0) - - React-Fabric/components (= 1000.0.0) - - React-Fabric/consistency (= 1000.0.0) - - React-Fabric/core (= 1000.0.0) - - React-Fabric/dom (= 1000.0.0) - - React-Fabric/imagemanager (= 1000.0.0) - - React-Fabric/leakchecker (= 1000.0.0) - - React-Fabric/mounting (= 1000.0.0) - - React-Fabric/observers (= 1000.0.0) - - React-Fabric/scheduler (= 1000.0.0) - - React-Fabric/telemetry (= 1000.0.0) - - React-Fabric/uimanager (= 1000.0.0) - - React-Fabric/viewtransition (= 1000.0.0) + - React-Fabric/animated (= 0.87.0-rc.0) + - React-Fabric/animationbackend (= 0.87.0-rc.0) + - React-Fabric/animations (= 0.87.0-rc.0) + - React-Fabric/attributedstring (= 0.87.0-rc.0) + - React-Fabric/bridging (= 0.87.0-rc.0) + - React-Fabric/componentregistry (= 0.87.0-rc.0) + - React-Fabric/componentregistrynative (= 0.87.0-rc.0) + - React-Fabric/components (= 0.87.0-rc.0) + - React-Fabric/consistency (= 0.87.0-rc.0) + - React-Fabric/core (= 0.87.0-rc.0) + - React-Fabric/dom (= 0.87.0-rc.0) + - React-Fabric/imagemanager (= 0.87.0-rc.0) + - React-Fabric/leakchecker (= 0.87.0-rc.0) + - React-Fabric/mounting (= 0.87.0-rc.0) + - React-Fabric/observers (= 0.87.0-rc.0) + - React-Fabric/scheduler (= 0.87.0-rc.0) + - React-Fabric/telemetry (= 0.87.0-rc.0) + - React-Fabric/uimanager (= 0.87.0-rc.0) + - React-Fabric/viewtransition (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -655,7 +651,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animated (1000.0.0): + - React-Fabric/animated (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -682,7 +678,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animationbackend (1000.0.0): + - React-Fabric/animationbackend (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -708,7 +704,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animations (1000.0.0): + - React-Fabric/animations (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -734,7 +730,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/attributedstring (1000.0.0): + - React-Fabric/attributedstring (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -760,7 +756,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/bridging (1000.0.0): + - React-Fabric/bridging (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -786,7 +782,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistry (1000.0.0): + - React-Fabric/componentregistry (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -812,7 +808,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistrynative (1000.0.0): + - React-Fabric/componentregistrynative (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -838,7 +834,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components (1000.0.0): + - React-Fabric/components (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -853,10 +849,10 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 1000.0.0) - - React-Fabric/components/root (= 1000.0.0) - - React-Fabric/components/scrollview (= 1000.0.0) - - React-Fabric/components/view (= 1000.0.0) + - React-Fabric/components/legacyviewmanagerinterop (= 0.87.0-rc.0) + - React-Fabric/components/root (= 0.87.0-rc.0) + - React-Fabric/components/scrollview (= 0.87.0-rc.0) + - React-Fabric/components/view (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -868,7 +864,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (1000.0.0): + - React-Fabric/components/legacyviewmanagerinterop (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -894,7 +890,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/root (1000.0.0): + - React-Fabric/components/root (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -920,7 +916,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/scrollview (1000.0.0): + - React-Fabric/components/scrollview (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -946,7 +942,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/view (1000.0.0): + - React-Fabric/components/view (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -974,7 +970,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric/consistency (1000.0.0): + - React-Fabric/consistency (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1000,7 +996,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/core (1000.0.0): + - React-Fabric/core (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1026,7 +1022,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/dom (1000.0.0): + - React-Fabric/dom (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1052,7 +1048,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/imagemanager (1000.0.0): + - React-Fabric/imagemanager (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1078,7 +1074,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/leakchecker (1000.0.0): + - React-Fabric/leakchecker (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1104,7 +1100,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/mounting (1000.0.0): + - React-Fabric/mounting (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1131,7 +1127,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers (1000.0.0): + - React-Fabric/observers (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1146,9 +1142,9 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 1000.0.0) - - React-Fabric/observers/intersection (= 1000.0.0) - - React-Fabric/observers/mutation (= 1000.0.0) + - React-Fabric/observers/events (= 0.87.0-rc.0) + - React-Fabric/observers/intersection (= 0.87.0-rc.0) + - React-Fabric/observers/mutation (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -1160,7 +1156,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/events (1000.0.0): + - React-Fabric/observers/events (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1186,7 +1182,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/intersection (1000.0.0): + - React-Fabric/observers/intersection (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1212,7 +1208,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/mutation (1000.0.0): + - React-Fabric/observers/mutation (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1238,7 +1234,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/scheduler (1000.0.0): + - React-Fabric/scheduler (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1269,7 +1265,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/telemetry (1000.0.0): + - React-Fabric/telemetry (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1295,7 +1291,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager (1000.0.0): + - React-Fabric/uimanager (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1310,7 +1306,7 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 1000.0.0) + - React-Fabric/uimanager/consistency (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -1323,7 +1319,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager/consistency (1000.0.0): + - React-Fabric/uimanager/consistency (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1350,7 +1346,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/viewtransition (1000.0.0): + - React-Fabric/viewtransition (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1376,7 +1372,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-FabricComponents (1000.0.0): + - React-FabricComponents (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1391,8 +1387,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 1000.0.0) - - React-FabricComponents/textlayoutmanager (= 1000.0.0) + - React-FabricComponents/components (= 0.87.0-rc.0) + - React-FabricComponents/textlayoutmanager (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -1405,7 +1401,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components (1000.0.0): + - React-FabricComponents/components (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1420,16 +1416,16 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 1000.0.0) - - React-FabricComponents/components/iostextinput (= 1000.0.0) - - React-FabricComponents/components/modal (= 1000.0.0) - - React-FabricComponents/components/rncore (= 1000.0.0) - - React-FabricComponents/components/safeareaview (= 1000.0.0) - - React-FabricComponents/components/switch (= 1000.0.0) - - React-FabricComponents/components/text (= 1000.0.0) - - React-FabricComponents/components/textinput (= 1000.0.0) - - React-FabricComponents/components/unimplementedview (= 1000.0.0) - - React-FabricComponents/components/virtualview (= 1000.0.0) + - React-FabricComponents/components/inputaccessory (= 0.87.0-rc.0) + - React-FabricComponents/components/iostextinput (= 0.87.0-rc.0) + - React-FabricComponents/components/modal (= 0.87.0-rc.0) + - React-FabricComponents/components/rncore (= 0.87.0-rc.0) + - React-FabricComponents/components/safeareaview (= 0.87.0-rc.0) + - React-FabricComponents/components/switch (= 0.87.0-rc.0) + - React-FabricComponents/components/text (= 0.87.0-rc.0) + - React-FabricComponents/components/textinput (= 0.87.0-rc.0) + - React-FabricComponents/components/unimplementedview (= 0.87.0-rc.0) + - React-FabricComponents/components/virtualview (= 0.87.0-rc.0) - React-featureflags - React-graphics - React-jsi @@ -1442,7 +1438,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/inputaccessory (1000.0.0): + - React-FabricComponents/components/inputaccessory (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1469,7 +1465,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/iostextinput (1000.0.0): + - React-FabricComponents/components/iostextinput (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1496,7 +1492,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/modal (1000.0.0): + - React-FabricComponents/components/modal (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1523,7 +1519,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/rncore (1000.0.0): + - React-FabricComponents/components/rncore (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1550,7 +1546,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/safeareaview (1000.0.0): + - React-FabricComponents/components/safeareaview (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1577,7 +1573,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/switch (1000.0.0): + - React-FabricComponents/components/switch (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1604,7 +1600,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/text (1000.0.0): + - React-FabricComponents/components/text (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1631,7 +1627,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/textinput (1000.0.0): + - React-FabricComponents/components/textinput (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1658,7 +1654,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/unimplementedview (1000.0.0): + - React-FabricComponents/components/unimplementedview (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1685,7 +1681,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/virtualview (1000.0.0): + - React-FabricComponents/components/virtualview (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1712,7 +1708,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/textlayoutmanager (1000.0.0): + - React-FabricComponents/textlayoutmanager (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1739,7 +1735,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricImage (1000.0.0): + - React-FabricImage (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1748,21 +1744,21 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - RCTRequired (= 1000.0.0) - - RCTTypeSafety (= 1000.0.0) + - RCTRequired (= 0.87.0-rc.0) + - RCTTypeSafety (= 0.87.0-rc.0) - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 1000.0.0) + - React-jsiexecutor (= 0.87.0-rc.0) - React-logger - React-rendererdebug - React-utils - ReactCommon - SocketRocket - Yoga - - React-featureflags (1000.0.0): + - React-featureflags (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1771,7 +1767,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-featureflagsnativemodule (1000.0.0): + - React-featureflagsnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1786,7 +1782,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - SocketRocket - - React-graphics (1000.0.0): + - React-graphics (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1802,7 +1798,7 @@ PODS: - React-rendererdebug - React-utils - SocketRocket - - React-hermes (1000.0.0): + - React-hermes (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1811,18 +1807,18 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) + - React-cxxreact (= 0.87.0-rc.0) - React-jsi - - React-jsiexecutor (= 1000.0.0) + - React-jsiexecutor (= 0.87.0-rc.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-oscompat - - React-perflogger (= 1000.0.0) + - React-perflogger (= 0.87.0-rc.0) - React-runtimeexecutor - SocketRocket - - React-idlecallbacksnativemodule (1000.0.0): + - React-idlecallbacksnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1839,7 +1835,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - SocketRocket - - React-ImageManager (1000.0.0): + - React-ImageManager (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1854,7 +1850,7 @@ PODS: - React-rendererdebug - React-utils - SocketRocket - - React-intersectionobservernativemodule (1000.0.0): + - React-intersectionobservernativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1876,7 +1872,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-jserrorhandler (1000.0.0): + - React-jserrorhandler (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1890,7 +1886,7 @@ PODS: - React-featureflags - React-jsi - SocketRocket - - React-jsi (1000.0.0): + - React-jsi (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1900,7 +1896,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsiexecutor (1000.0.0): + - React-jsiexecutor (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1921,7 +1917,7 @@ PODS: - React-runtimeexecutor - React-utils - SocketRocket - - React-jsinspector (1000.0.0): + - React-jsinspector (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1936,11 +1932,11 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 1000.0.0) + - React-perflogger (= 0.87.0-rc.0) - React-runtimeexecutor - React-utils - SocketRocket - - React-jsinspectorcdp (1000.0.0): + - React-jsinspectorcdp (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1949,7 +1945,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsinspectornetwork (1000.0.0): + - React-jsinspectornetwork (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1959,7 +1955,7 @@ PODS: - RCT-Folly/Fabric - React-jsinspectorcdp - SocketRocket - - React-jsinspectortracing (1000.0.0): + - React-jsinspectortracing (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1974,7 +1970,7 @@ PODS: - React-timing - React-utils - SocketRocket - - React-jsitooling (1000.0.0): + - React-jsitooling (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -1983,18 +1979,18 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) + - React-cxxreact (= 0.87.0-rc.0) - React-debug - - React-jsi (= 1000.0.0) + - React-jsi (= 0.87.0-rc.0) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - React-utils - SocketRocket - - React-jsitracing (1000.0.0): + - React-jsitracing (0.87.0-rc.0): - React-jsi - - React-logger (1000.0.0): + - React-logger (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2003,7 +1999,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-Mapbuffer (1000.0.0): + - React-Mapbuffer (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2013,7 +2009,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-microtasksnativemodule (1000.0.0): + - React-microtasksnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2027,7 +2023,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - SocketRocket - - React-mutationobservernativemodule (1000.0.0): + - React-mutationobservernativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2049,7 +2045,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-NativeModulesApple (1000.0.0): + - React-NativeModulesApple (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2070,7 +2066,7 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/core - SocketRocket - - React-networking (1000.0.0): + - React-networking (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2083,8 +2079,8 @@ PODS: - React-performancetimeline - React-timing - SocketRocket - - React-oscompat (1000.0.0) - - React-perflogger (1000.0.0): + - React-oscompat (0.87.0-rc.0) + - React-perflogger (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2093,7 +2089,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-performancecdpmetrics (1000.0.0): + - React-performancecdpmetrics (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2107,7 +2103,7 @@ PODS: - React-runtimeexecutor - React-timing - SocketRocket - - React-performancetimeline (1000.0.0): + - React-performancetimeline (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2121,9 +2117,9 @@ PODS: - React-perflogger - React-timing - SocketRocket - - React-RCTActionSheet (1000.0.0): - - React-Core/RCTActionSheetHeaders (= 1000.0.0) - - React-RCTAnimatedModuleProvider (1000.0.0): + - React-RCTActionSheet (0.87.0-rc.0): + - React-Core/RCTActionSheetHeaders (= 0.87.0-rc.0) + - React-RCTAnimatedModuleProvider (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2138,7 +2134,7 @@ PODS: - ReactCommon - SocketRocket - Yoga - - React-RCTAnimation (1000.0.0): + - React-RCTAnimation (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2155,7 +2151,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTAppDelegate (1000.0.0): + - React-RCTAppDelegate (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2190,7 +2186,7 @@ PODS: - React-utils - ReactCommon - SocketRocket - - React-RCTBlob (1000.0.0): + - React-RCTBlob (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2209,7 +2205,7 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTFabric (1000.0.0): + - React-RCTFabric (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2246,7 +2242,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-RCTFBReactNativeSpec (1000.0.0): + - React-RCTFBReactNativeSpec (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2261,10 +2257,10 @@ PODS: - React-Core - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 1000.0.0) + - React-RCTFBReactNativeSpec/components (= 0.87.0-rc.0) - ReactCommon - SocketRocket - - React-RCTFBReactNativeSpec/components (1000.0.0): + - React-RCTFBReactNativeSpec/components (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2288,7 +2284,7 @@ PODS: - ReactCommon - SocketRocket - Yoga - - React-RCTImage (1000.0.0): + - React-RCTImage (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2304,14 +2300,14 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTLinking (1000.0.0): - - React-Core/RCTLinkingHeaders (= 1000.0.0) - - React-jsi (= 1000.0.0) + - React-RCTLinking (0.87.0-rc.0): + - React-Core/RCTLinkingHeaders (= 0.87.0-rc.0) + - React-jsi (= 0.87.0-rc.0) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 1000.0.0) - - React-RCTNetwork (1000.0.0): + - ReactCommon/turbomodule/core (= 0.87.0-rc.0) + - React-RCTNetwork (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2331,14 +2327,14 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTPushNotification (1000.0.0): + - React-RCTPushNotification (0.87.0-rc.0): - RCTTypeSafety - React-Core/RCTPushNotificationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTRuntime (1000.0.0): + - React-RCTRuntime (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2360,7 +2356,7 @@ PODS: - React-RuntimeHermes - React-utils - SocketRocket - - React-RCTSettings (1000.0.0): + - React-RCTSettings (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2375,7 +2371,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTTest (1000.0.0): + - React-RCTTest (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2383,16 +2379,16 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-Core (= 1000.0.0) - - React-CoreModules (= 1000.0.0) - - React-jsi (= 1000.0.0) - - ReactCommon/turbomodule/core (= 1000.0.0) + - React-Core (= 0.87.0-rc.0) + - React-CoreModules (= 0.87.0-rc.0) + - React-jsi (= 0.87.0-rc.0) + - ReactCommon/turbomodule/core (= 0.87.0-rc.0) - SocketRocket - - React-RCTText (1000.0.0): - - React-Core/RCTTextHeaders (= 1000.0.0) + - React-RCTText (0.87.0-rc.0): + - React-Core/RCTTextHeaders (= 0.87.0-rc.0) - Yoga - - React-RCTUIKit (1000.0.0) - - React-RCTVibration (1000.0.0): + - React-RCTUIKit (0.87.0-rc.0) + - React-RCTVibration (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2406,11 +2402,11 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-rendererconsistency (1000.0.0) - - React-renderercss (1000.0.0): + - React-rendererconsistency (0.87.0-rc.0) + - React-renderercss (0.87.0-rc.0): - React-debug - React-utils - - React-rendererdebug (1000.0.0): + - React-rendererdebug (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2420,7 +2416,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-RuntimeApple (1000.0.0): + - React-RuntimeApple (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2449,7 +2445,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-RuntimeCore (1000.0.0): + - React-RuntimeCore (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2471,7 +2467,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-runtimeexecutor (1000.0.0): + - React-runtimeexecutor (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2481,10 +2477,10 @@ PODS: - RCT-Folly/Fabric - React-debug - React-featureflags - - React-jsi (= 1000.0.0) + - React-jsi (= 0.87.0-rc.0) - React-utils - SocketRocket - - React-RuntimeHermes (1000.0.0): + - React-RuntimeHermes (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2505,7 +2501,7 @@ PODS: - React-runtimeexecutor - React-utils - SocketRocket - - React-runtimescheduler (1000.0.0): + - React-runtimescheduler (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2528,9 +2524,9 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (1000.0.0): + - React-timing (0.87.0-rc.0): - React-debug - - React-utils (1000.0.0): + - React-utils (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2540,9 +2536,9 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-debug - - React-jsi (= 1000.0.0) + - React-jsi (= 0.87.0-rc.0) - SocketRocket - - React-viewtransitionnativemodule (1000.0.0): + - React-viewtransitionnativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2560,7 +2556,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-webperformancenativemodule (1000.0.0): + - React-webperformancenativemodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2578,9 +2574,9 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/core - SocketRocket - - ReactAppDependencyProvider (1000.0.0): + - ReactAppDependencyProvider (0.87.0-rc.0): - ReactCodegen - - ReactCodegen (1000.0.0): + - ReactCodegen (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2606,7 +2602,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - ReactCommon (1000.0.0): + - ReactCommon (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2614,9 +2610,9 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 1000.0.0) + - ReactCommon/turbomodule (= 0.87.0-rc.0) - SocketRocket - - ReactCommon-Samples (1000.0.0): + - ReactCommon-Samples (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2633,7 +2629,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - ReactCommon/turbomodule (1000.0.0): + - ReactCommon/turbomodule (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2642,13 +2638,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-jsi (= 1000.0.0) - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) - - ReactCommon/turbomodule/core (= 1000.0.0) + - React-callinvoker (= 0.87.0-rc.0) + - React-jsi (= 0.87.0-rc.0) + - React-logger (= 0.87.0-rc.0) + - React-perflogger (= 0.87.0-rc.0) + - ReactCommon/turbomodule/core (= 0.87.0-rc.0) - SocketRocket - - ReactCommon/turbomodule/core (1000.0.0): + - ReactCommon/turbomodule/core (0.87.0-rc.0): - boost - DoubleConversion - fast_float @@ -2658,16 +2654,16 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-bridging - - React-callinvoker (= 1000.0.0) - - React-cxxreact (= 1000.0.0) - - React-debug (= 1000.0.0) - - React-featureflags (= 1000.0.0) - - React-jsi (= 1000.0.0) - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) - - React-utils (= 1000.0.0) + - React-callinvoker (= 0.87.0-rc.0) + - React-cxxreact (= 0.87.0-rc.0) + - React-debug (= 0.87.0-rc.0) + - React-featureflags (= 0.87.0-rc.0) + - React-jsi (= 0.87.0-rc.0) + - React-logger (= 0.87.0-rc.0) + - React-perflogger (= 0.87.0-rc.0) + - React-utils (= 0.87.0-rc.0) - SocketRocket - - ScreenshotManager (0.87.0-main): + - ScreenshotManager (0.87.1): - boost - DoubleConversion - fast_float @@ -2812,7 +2808,7 @@ EXTERNAL SOURCES: :podspec: "../react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v250829098.0.12 + :tag: hermes-v250829098.0.17 MyNativeView: :path: NativeComponentExample NativeCxxModuleExample: @@ -2982,94 +2978,94 @@ SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 - FBLazyVector: c2374c799daa208dabd7644bb46988206509cdfa + FBLazyVector: 77c6d52e07c3244868089f9339b533408d88863e fmt: 4cf0c5ec5864511c96d8d4bd7b03c3c69040af06 glog: 8fb6f603b9feab8ebedb130c6e0683bbeafa6fb0 - hermes-engine: b31af4df03103d006996baed689687ae884dc97d - MyNativeView: a375b47303122a6370f5525ee487d2bbf99921fc - NativeCxxModuleExample: f126739cc53d2c0db5b86574003d810654cb4f97 + hermes-engine: d0fbfceba80b8dd5585b16ac7b82318fc769e015 + MyNativeView: 141f787c73d215a1611732ff58fe87d7a9174a3f + NativeCxxModuleExample: c6b2a6f3d61dbc673694d990b79762d6285d9d7b OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 RCT-Folly: 4b76727f41b861e46e2214daabb8a335504c3b0f - RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: 80bd25e58b2af3a644729a5f116d4acbfef7a550 - RCTSwiftUI: 3f663e8f5b76fb667fee69689e010176193df20c - RCTSwiftUIWrapper: 5dcfe424c88d1b18ac45ea6755e551d221955f9c - RCTTypeSafety: 9d9eacc72c4fb7e7cefdeb91df6bb73a50396614 - React: 79dfabb43be7edb6a5ad484a591fb7bdac88916c - React-bridging: 96357198119596016a5d589fde76c690fc96e672 - React-callinvoker: 97b64a05ec040a916218a3418b000872977683a3 - React-Core: a170edc3eec503a130021fb68e67f26127daa806 - React-CoreModules: a0a435e2651362e40957f4adba9e7b9a1c2b7096 - React-cxxreact: 0e0869afaeceb045b47c6b8feb6a3a26c27f4482 - React-cxxstableapi: e21eaa16126d799c087cc78e21b6318318ac1642 - React-debug: 663372a6d14b31e78ddbcaebb4facfcc8488aa55 - React-defaultsnativemodule: bf564be62b7fbbfc3f5a58d8e59fbd3d7ec6752f - React-domnativemodule: 75d36924546cab2a27f6dfa38e2160374f2af300 - React-Fabric: e73c49b4e649915d969467b22903fb432aacb7a4 - React-FabricComponents: e0c374859e18e6166f9ef88c883dcf8c8eecdfae - React-FabricImage: 52ad8e8ff1636a76a60ccf68c6be4b725e16f1ae - React-featureflags: 6a6393d4dd30133ee3c74fa44c4ed867ff87dac6 - React-featureflagsnativemodule: 0df16dcd43a3d96017d41fe7c37e07836810968a - React-graphics: c9470ea68e3398ed845e96bd3790a40b36aee80e - React-hermes: 61b9c17ec1102088f839517eebe70da36c658a24 - React-idlecallbacksnativemodule: 448834507f68451335aab0498382bd2395d4cffa - React-ImageManager: 8eea1ea50245713a2c14a1234bb8457e25edf4dc - React-intersectionobservernativemodule: 235b856dd29165c15b83ecf7433e22b3e3ded7d8 - React-jserrorhandler: 28acbf24871c1f9ba0bbcf3ac1da78e9800abce7 - React-jsi: 10915051041f49b5eb9dbaf9edd78a4e3fc73584 - React-jsiexecutor: 00b60fa543d9468f4f8399620b41004b5c5064d2 - React-jsinspector: 9c99cc20d7465415bf6a5314994645846c3cdca4 - React-jsinspectorcdp: 0eaf03c623bc0fde367cfa93765aae25635e7521 - React-jsinspectornetwork: 241af6af062c646fa139e68d8e8cdcf339ac1fe4 - React-jsinspectortracing: 3db8ad02f6bdbe0a93b902eeb0288d98e198d00d - React-jsitooling: 3d958faeadcd296f5f0f83b6ecad3b6caa7589d7 - React-jsitracing: afed2d2431d638baed1d86a6a3ac25c87d2c4d85 - React-logger: 176173159a23947dd203b6fab3930382c99dd2ac - React-Mapbuffer: d85b8ff03ff36280539e1e19f1a0ea60ae0488d5 - React-microtasksnativemodule: c37a2c2ba3e9734775df8d2a92be2f125f489ca1 - React-mutationobservernativemodule: f885e0a98c2bbdb3bcbd75d8a1eb23008c0bf289 - React-NativeModulesApple: 368dc25e566d69e8646a58a2a9b4edc9c1978289 - React-networking: 8ad65d6b6d30452bea8ae7752490b62220bff964 - React-oscompat: e0675c5aed87c556bc673eda18c360d371058eb4 - React-perflogger: c3e6e46683158ef9aff3dff2657a36842ae4302f - React-performancecdpmetrics: c158e731458fa1f0bc24eb2b52cbb1aac0ea2ff5 - React-performancetimeline: c2252819d7ff69c2518d51ba167e88099cf0d46d - React-RCTActionSheet: 0a6f121ef2c1033ca358b62ddbac29065bb188ed - React-RCTAnimatedModuleProvider: 17e601f164290d55dd15793d7fe2e115367c2205 - React-RCTAnimation: de71b13bd00d747cde571d2a3cb8972b03ff8e93 - React-RCTAppDelegate: efd5dcd3387c84d3e72d283d074172104b4da3a9 - React-RCTBlob: 9498b46cde11ec16862f018df3cd22471508213f - React-RCTFabric: 3ac3cc30161acefd7b5147a4eb11e224de4ea207 - React-RCTFBReactNativeSpec: ecc900b84941787bf519960304ded415149601ff - React-RCTImage: e8e3f260f857012ac25bfd213717437663283ba9 - React-RCTLinking: 2c204fd4cd7b7e6f3ec0c152db96568561e6f28a - React-RCTNetwork: 0e16306ff544bebd318e77654f5a70bf852e065b - React-RCTPushNotification: 483999c7b5aa28e7d73c2f5e44f2b7de0c8b8547 - React-RCTRuntime: ee6f19688e9ab75630252ea8dbf5c97d473869ce - React-RCTSettings: cb0ac9770bc6862a3b30413c967f1dccd4437152 - React-RCTTest: a0f34da615ee8b2a7f532b8a24d689770feb228e - React-RCTText: b70675d991732b60b62d4f84a4d02e831e083f9e - React-RCTUIKit: 303ee4730febcd27ba1f0f9c1bcaf7316d3c8d69 - React-RCTVibration: 790ec31e5046e67bf26943b99b1bea75d25de5c7 - React-rendererconsistency: 5d2627148efd484fd9ec4b68fbd85e5c53c5139a - React-renderercss: 7cb1e9493ff5ca0f3ab20cbd10e96636272087e0 - React-rendererdebug: 3bd6f68616f04737d29c6869795d65b8508de446 - React-RuntimeApple: 9dc3e68723a7701cc41e221652c4a3ee9c097b84 - React-RuntimeCore: e3ac5247ba647d6cd10b1d4392e813285cf1e519 - React-runtimeexecutor: ae42a544c97af7c31bb6cd6471dca411fd39e32d - React-RuntimeHermes: 72c343cb221e7b155e300cec7dadb949870931f6 - React-runtimescheduler: ebb5c860644a67f114da27479d3cf278b4741340 - React-timing: 6380bdd56d2f84641e470d3e275f53ece5774535 - React-utils: 5a54df276fccf5dc532e53922c7cdf8b11093392 - React-viewtransitionnativemodule: 0ccc62281ebefc7c95ebfbc5b29a9c0901a99fc8 - React-webperformancenativemodule: 1b2e52aa69577dc953c700c9051a3c5c722b7f67 - ReactAppDependencyProvider: 95e56d1a824a86110a7cc6c228757e26b757770a - ReactCodegen: 9765a3d4c84e89ea7f0438ceeea31815e261767c - ReactCommon: 39c91e3cdfcb7aca6a230bd88187cf60542def40 - ReactCommon-Samples: 77ba8ded24703d02c91a0d72e08a08519c567457 - ScreenshotManager: ce1770eb65478f72a7d941562469a9eb1a8a65c2 + RCTDeprecation: 534cd867f984647bb0627a91c9e065c39e958782 + RCTRequired: 76b1b7ca897014b98067ddaf5a53bb20670191fa + RCTSwiftUI: 23a2854e4506222fe9e469001f8f9c30b3a01387 + RCTSwiftUIWrapper: 54e1269f7023a6c27771e9ba8df00eec7c86a2bd + RCTTypeSafety: 7d7c46e51926dcc5a85f11ea70abf28c24c975cf + React: 0fa5b2ddbb58528809545329288ec77bbe6aaeb5 + React-bridging: 869664130a145ca33bf4d76a4bea5dc72abfa973 + React-callinvoker: 768f26383d34f130fa99e62a9f231d2897cbdf7f + React-Core: 79c00ab186a2c7cd17905fb3c8db35e3414279ae + React-CoreModules: 57c26870d9a9ce80809b8b4465fcb60e7c0ff24c + React-cxxreact: 1fd2b216515aaa45540e98173b8e1938ad8525d5 + React-cxxstableapi: 33330a272d458dcd87e25ac5e64c91480948e648 + React-debug: c37098b62a7aafb061af9842455cfacde8e85905 + React-defaultsnativemodule: 9bad8107d06f189a1152e5de152e882dd6922197 + React-domnativemodule: 6d2356a248fa2e5d1e97b8a1084969703c17415d + React-Fabric: b92b4d69726d13fb842bd45ebaf95aaf380ce17f + React-FabricComponents: b9edb473760ff40e7282cc501feabe9630e773e6 + React-FabricImage: 7120a7fdf8f29edef86068c86a8fd8514ba26e06 + React-featureflags: db264ecfc262b2973815c9cbfa72bf92de75b3b5 + React-featureflagsnativemodule: b726028a8534b48ff3d06de97bddde0f2c5861ab + React-graphics: e2fc0cb047a3c64ca41fde9ea0efe42becd235fe + React-hermes: 5fa941a68122c6368da712b0c962a86a7151c630 + React-idlecallbacksnativemodule: 7d74425e65304bba291b61a42b6c56e37ad2dbc1 + React-ImageManager: 19a0c173cc054dac16b5776a59a377204af07dc9 + React-intersectionobservernativemodule: b653da263e9f42c520fe7cc0505f9d33565d6b83 + React-jserrorhandler: e4eda2b18d5565ba2c4fe2de7180ffb39522e1f0 + React-jsi: f67291f137e1d4a6b1f9ea5cec63c7783d3fa2bd + React-jsiexecutor: de772ca7923ece82282f65806853de147f1105b4 + React-jsinspector: 0e65415f74a494e42e75b9450d08893bba6de2d6 + React-jsinspectorcdp: 41a58387d918be349f65f4d236c40255a9ac601b + React-jsinspectornetwork: e0ca4f0cfcffa3da766b4ab99a51f2f0ed6ded37 + React-jsinspectortracing: c98bae6d985d64d40b7be0d84f6bed8934be8283 + React-jsitooling: 311ca8b75d908f89f2dce6e11c8948788b85b208 + React-jsitracing: f1f958182609b92fb1ea2b1c8791b80f7e518cac + React-logger: 943f65ce0000c0659da3498b3632fc47c42b7376 + React-Mapbuffer: 4f9cb7426877592e5e9067a7781ef07b3d675fcc + React-microtasksnativemodule: 439a6b9912bf9f3536ae3e1d33f85f9b012900d8 + React-mutationobservernativemodule: f294d7a9ce7ef590b7f1d22abbd34eeae5db9cca + React-NativeModulesApple: cce741796387ee3c1211d3e8ac0833c98568b705 + React-networking: abded2881f9a97ac6c91c7f70012ec06ac86c557 + React-oscompat: b6df13ad93d6ee04401fd3950a30d16a320944ef + React-perflogger: d24b326269815ff684c71928577928b36d7c0c46 + React-performancecdpmetrics: 70a2e227e940635a2a8d2c3d53c766781990f4d8 + React-performancetimeline: 3be31a7712bc1448603dab089f117734b28f4e49 + React-RCTActionSheet: 063c1500c5acf43d50bdd9d5ba441232b59f613a + React-RCTAnimatedModuleProvider: f321bc88784e43f64507bba6b581101ff76814e3 + React-RCTAnimation: 0820b1bf52947d045f1dd76430f12c3f6c9cf94e + React-RCTAppDelegate: c9381b79a492e0503b325d06e8e525ebc558cc1b + React-RCTBlob: e47f2882b1d6d5dbafb47d1de2efdbb003f905f4 + React-RCTFabric: 3ca41f0f6a74c6d1da4058bd10198f0baf3fe9a8 + React-RCTFBReactNativeSpec: a438f0641f279a44a4fc025aa6d9b5344691248d + React-RCTImage: c9e4f091cc194601e2437cfa708f6359d29ed689 + React-RCTLinking: 558822935ebbedca1fbc21fe7c19b6d927eb1dc3 + React-RCTNetwork: 62b42f47f77c7d365ea54b4e5e34aead70c97c33 + React-RCTPushNotification: 182300b7e6b875d9eb42c502f3c1cc5f0c8b0c23 + React-RCTRuntime: cccc80b283fdd0c80e73437d7fd7e9965b48b14d + React-RCTSettings: cdd1981df2c948e102cfd73c65e2ebafd45f8db4 + React-RCTTest: e5586f65708c679f4f1ed77cf5e55ca739667777 + React-RCTText: 600e10be930171879bba5849f0b82a33f1a5c6fc + React-RCTUIKit: 1a93d1868b39bb76916a31b21cdff26e6497a6c7 + React-RCTVibration: 2d22999fc9e49f8998f2ab22388afd03538a4642 + React-rendererconsistency: 38060d394974a372fc699e15f06eec923151557c + React-renderercss: a4fe0ab6a4e1ca7801ede4c71cc33bc954232835 + React-rendererdebug: a992206e42c2701dc0495731ea3c515496049181 + React-RuntimeApple: b28db40a0c9027986c8925121f3cbbaccaa0de90 + React-RuntimeCore: 8f37ec27225a4d9548f85d24b448767034b70ea5 + React-runtimeexecutor: 13b70ca2f8ffddb7ee393ff770e690fee4a112c2 + React-RuntimeHermes: 1742331a250a4a6ee781798ea102a1e7cbcb5adc + React-runtimescheduler: 9004c6921e42bf7563ea2c321d8d66a03545c08d + React-timing: a80860fabe3c8e2c9ccc001a5c07d4a299f40423 + React-utils: cf27d3350a6764aa4d7924d9db00f7da2357f414 + React-viewtransitionnativemodule: c6f98184d2c50c18b86b276724bc5f1eb069e8d2 + React-webperformancenativemodule: a3e82f688b7f20fdcec148b2239badde7b8034a3 + ReactAppDependencyProvider: 0f97709744e6d9ecafe3caa6027275a920a58c18 + ReactCodegen: f2c75aa7762a221edb8cd7a7d694b2423c9e4ecf + ReactCommon: eb48f1f649784b5bca60e372d49a3f8c95193e57 + ReactCommon-Samples: 75d305a3ab89d82fa241896bbf837b23b8e1a19e + ScreenshotManager: bff11f0a236d948764f63eb126a4dcbfb9d19c66 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: a03023f5aaf527d8a3fbfba2691d9329692bfdd9 + Yoga: 16f5b5688d92d1df3ccf32e3ff97225bbeed8d4f PODFILE CHECKSUM: 76dda25425afe238cbe0379633645d667998a038 diff --git a/packages/rn-tester/package.json b/packages/rn-tester/package.json index 857a58889885..94ff3b3cfca1 100644 --- a/packages/rn-tester/package.json +++ b/packages/rn-tester/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/tester", - "version": "0.87.0-main", + "version": "0.87.1", "private": true, "description": "React Native tester app.", "license": "MIT", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index b80428ab5cb1..fd74e3dc8a41 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/typescript-config", - "version": "0.87.0-main", + "version": "0.87.1", "description": "Default TypeScript configuration for React Native apps", "license": "MIT", "repository": { diff --git a/packages/virtualized-lists/package.json b/packages/virtualized-lists/package.json index 6bd5842abd6b..0c897294f356 100644 --- a/packages/virtualized-lists/package.json +++ b/packages/virtualized-lists/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-macos/virtualized-lists", - "version": "1000.0.0", + "version": "0.87.0-rc.0", "description": "Virtualized lists for React Native macOS.", "license": "MIT", "repository": { @@ -53,12 +53,11 @@ "peerDependencies": { "@types/react": "^19.2.0", "react": "*", - "react-native": "1000.0.0" + "react-native": "0.87.1" }, "peerDependenciesMeta": { "@types/react": { "optional": true } - }, - "private": true + } } diff --git a/private/helloworld/package.json b/private/helloworld/package.json index 4c3934f27c20..536a7ed0bd73 100644 --- a/private/helloworld/package.json +++ b/private/helloworld/package.json @@ -19,12 +19,12 @@ "@babel/core": "^7.25.2", "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", - "@react-native/babel-preset": "0.87.0-main", + "@react-native/babel-preset": "0.87.1", "@react-native/core-cli-utils": "*", - "@react-native/eslint-config": "0.87.0-main", - "@react-native/jest-preset": "0.87.0-main", - "@react-native/metro-config": "0.87.0-main", - "@react-native/typescript-config": "0.87.0-main", + "@react-native/eslint-config": "0.87.1", + "@react-native/jest-preset": "0.87.1", + "@react-native/metro-config": "0.87.1", + "@react-native/typescript-config": "0.87.1", "@types/jest": "^29.5.14", "commander": "^12.0.0", "eslint": "^8.19.0", diff --git a/scripts/e2e/init-project-e2e.js b/scripts/e2e/init-project-e2e.js index 30db3b9c33d2..2415e52993cd 100644 --- a/scripts/e2e/init-project-e2e.js +++ b/scripts/e2e/init-project-e2e.js @@ -122,7 +122,10 @@ async function initNewProjectFromSource( `${desc} ${styleText('dim', '.').repeat(Math.max(0, 72 - desc.length))} `, ); execSync( - `npm publish --registry ${VERDACCIO_SERVER_URL} --access public`, + // `--tag` is required by npm >= 11 when publishing a prerelease + // version. This is a throwaway local registry and the install step + // pins the exact version, so the dist-tag value is not significant. + `npm publish --registry ${VERDACCIO_SERVER_URL} --access public --tag react-native-e2e`, { cwd: packagePath, stdio: verbose ? 'inherit' : [process.stderr], diff --git a/scripts/releases/__tests__/__snapshots__/upload-release-assets-for-dotslash-test.js.snap b/scripts/releases/__tests__/__snapshots__/upload-release-assets-for-dotslash-test.js.snap index 210fcdc260df..0b52b3ef691e 100644 --- a/scripts/releases/__tests__/__snapshots__/upload-release-assets-for-dotslash-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/upload-release-assets-for-dotslash-test.js.snap @@ -28,7 +28,7 @@ Array [ Array [ Object { "asset_id": "1", - "owner": "facebook", + "owner": "react", "repo": "react-native", }, ], @@ -47,7 +47,7 @@ Array [ "content-type": "text/plain", }, "name": "test.tar.gz", - "owner": "facebook", + "owner": "react", "release_id": "1", "repo": "react-native", }, @@ -114,7 +114,7 @@ Array [ "content-type": "text/plain", }, "name": "test.tar.gz", - "owner": "facebook", + "owner": "react", "release_id": "1", "repo": "react-native", }, @@ -194,7 +194,7 @@ Array [ "content-type": "text/plain", }, "name": "test.tar.gz", - "owner": "facebook", + "owner": "react", "release_id": "1", "repo": "react-native", }, diff --git a/scripts/releases/upload-release-assets-for-dotslash.js b/scripts/releases/upload-release-assets-for-dotslash.js index d8e3441e6a95..cd808d9fff70 100644 --- a/scripts/releases/upload-release-assets-for-dotslash.js +++ b/scripts/releases/upload-release-assets-for-dotslash.js @@ -25,6 +25,10 @@ const nullthrows = require('nullthrows'); const path = require('path'); const {parseArgs} = require('util'); +// Upload POSTs are not preserved when GitHub redirects from the former owner. +const GITHUB_OWNER = 'react'; +const GITHUB_REPO = 'react-native'; + /*:: import type {DotSlashProvider, DotSlashHttpProvider, DotSlashArtifactInfo} from './utils/dotslash-utils'; import type {IOctokit} from './utils/octokit-utils'; @@ -138,8 +142,8 @@ async function getReleaseAssetMap( octokit /*: IOctokit */, ) /*: Promise */ { const existingAssets = await octokit.repos.listReleaseAssets({ - owner: 'facebook', - repo: 'react-native', + owner: GITHUB_OWNER, + repo: GITHUB_REPO, release_id: releaseId, }); return new Map(existingAssets.data.map(asset => [asset.name, asset])); @@ -305,8 +309,8 @@ async function maybeDeleteExistingReleaseAsset( } console.log(`[${name}] Deleting existing release asset...`); await octokit.repos.deleteReleaseAsset({ - owner: 'facebook', - repo: 'react-native', + owner: GITHUB_OWNER, + repo: GITHUB_REPO, asset_id: existingAsset.id, }); } @@ -360,8 +364,8 @@ async function uploadAndVerifyReleaseAsset( const { data: {browser_download_url}, } = await octokit.repos.uploadReleaseAsset({ - owner: 'facebook', - repo: 'react-native', + owner: GITHUB_OWNER, + repo: GITHUB_REPO, release_id: releaseId, name, data, diff --git a/yarn.config.cjs b/yarn.config.cjs index d8262bd655d2..2c6725d71415 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -92,9 +92,8 @@ function enforceReactNativeVersionConsistency({Yarn}) { } /** - * Enforce that all @react-native/ scoped dependencies use the same version - * as the react-native peer dependency declared in react-native-macos. - * Do not enforce on the main branch, where there is no published version of React Native to align to. + * Use the react-native peer version for upstream dependencies of public fork packages on release branches. + * Private consumers and all consumers on main use the upstream workspaces. * @param {Context} context */ function enforceReactNativeDependencyConsistency({Yarn}) { @@ -104,9 +103,11 @@ function enforceReactNativeDependencyConsistency({Yarn}) { const reactNativeVersion = getReactNativePeerDependency({Yarn}); const isRNM = dependency.workspace.ident === 'react-native-macos'; - const isRNMForkedPackage = dependency.workspace.ident?.startsWith('@react-native-macos/') && !dependency.workspace.manifest.private; + const isPublicRNMForkedPackage = + dependency.workspace.ident?.startsWith('@react-native-macos/') && + !dependency.workspace.manifest.private; - if (isRNM || isRNMForkedPackage) { + if (isRNM || isPublicRNMForkedPackage) { // Published upstream packages are registry inputs, not Changesets release dependencies. dependency.update(reactNativeVersion); } else { diff --git a/yarn.lock b/yarn.lock index 723ffbe6b082..76bbda8be3cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3498,14 +3498,14 @@ __metadata: peerDependencies: "@types/react": ^19.2.0 react: "*" - react-native: 1000.0.0 + react-native: 0.87.1 peerDependenciesMeta: "@types/react": optional: true languageName: unknown linkType: soft -"@react-native/asset-utils@workspace:*, @react-native/asset-utils@workspace:packages/asset-utils": +"@react-native/asset-utils@npm:0.87.1, @react-native/asset-utils@workspace:*, @react-native/asset-utils@workspace:packages/asset-utils": version: 0.0.0-use.local resolution: "@react-native/asset-utils@workspace:packages/asset-utils" languageName: unknown @@ -3606,7 +3606,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/codegen@workspace:*, @react-native/codegen@workspace:packages/react-native-codegen": +"@react-native/codegen@npm:0.87.1, @react-native/codegen@workspace:*, @react-native/codegen@workspace:packages/react-native-codegen": version: 0.0.0-use.local resolution: "@react-native/codegen@workspace:packages/react-native-codegen" dependencies: @@ -3634,7 +3634,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/community-cli-plugin@workspace:*, @react-native/community-cli-plugin@workspace:packages/community-cli-plugin": +"@react-native/community-cli-plugin@npm:0.87.1, @react-native/community-cli-plugin@workspace:packages/community-cli-plugin": version: 0.0.0-use.local resolution: "@react-native/community-cli-plugin@workspace:packages/community-cli-plugin" dependencies: @@ -3787,7 +3787,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/gradle-plugin@workspace:*, @react-native/gradle-plugin@workspace:packages/gradle-plugin": +"@react-native/gradle-plugin@npm:0.87.1, @react-native/gradle-plugin@workspace:packages/gradle-plugin": version: 0.0.0-use.local resolution: "@react-native/gradle-plugin@workspace:packages/gradle-plugin" languageName: unknown @@ -3850,14 +3850,14 @@ __metadata: peerDependencies: "@types/react": ^19.1.0 react: "*" - react-native: 1000.0.0 + react-native: 0.87.1 peerDependenciesMeta: "@types/react": optional: true languageName: unknown linkType: soft -"@react-native/normalize-colors@workspace:*, @react-native/normalize-colors@workspace:packages/normalize-color": +"@react-native/normalize-colors@npm:0.87.1, @react-native/normalize-colors@workspace:packages/normalize-color": version: 0.0.0-use.local resolution: "@react-native/normalize-colors@workspace:packages/normalize-color" languageName: unknown @@ -3872,7 +3872,7 @@ __metadata: react-native-macos: "workspace:*" peerDependencies: react: "*" - react-native-macos: "*" + react-native-macos: 0.87.0-rc.0 languageName: unknown linkType: soft @@ -3885,7 +3885,7 @@ __metadata: peerDependencies: "@types/react": ^19.1.0 react: "*" - react-native: 1000.0.0 + react-native: 0.87.1 peerDependenciesMeta: "@types/react": optional: true @@ -5708,12 +5708,12 @@ __metadata: linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.16 - resolution: "brace-expansion@npm:1.1.16" + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10c0/b2a915bbedbf4e45840d1fb9a4d391bbf26a79475bd134714d3cee34f1f0edb0ce982738028843be5fbaf8039429f71fa487df8c915b6065ced542c83e58fae6 + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 languageName: node linkType: hard @@ -7635,9 +7635,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.1.2": - version: 3.1.4 - resolution: "fast-uri@npm:3.1.4" - checksum: 10c0/f90948821ceb49980f64f89b8216ba498f5957f26035be813526a55b6145d26cbd63ef5618d5205a3292b31edc9c08589749350cd72bd86c7095eb434dceb757 + version: 3.1.2 + resolution: "fast-uri@npm:3.1.2" + checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d languageName: node linkType: hard @@ -8364,10 +8364,10 @@ __metadata: languageName: node linkType: hard -"hermes-compiler@npm:250829098.0.13": - version: 250829098.0.13 - resolution: "hermes-compiler@npm:250829098.0.13" - checksum: 10c0/8c56322abf897a25e62f0dce7d66830381fe3698895e553b9e74afb0f9e575a3e9d0dac5e4a7019aa7f303a1e3a3d403877dfa1bdabead9f60c2a08924a2eebe +"hermes-compiler@npm:250829098.0.17": + version: 250829098.0.17 + resolution: "hermes-compiler@npm:250829098.0.17" + checksum: 10c0/1bcfcb9268b18593e19e7d4e071dd644cbcff380535a74ea0318b417e30ba190b33e70086f8576c3b28deb2572ba01f57b1a9e5ae10f6841dedaff281b037200 languageName: node linkType: hard @@ -10209,11 +10209,11 @@ __metadata: linkType: hard "linkify-it@npm:^5.0.0": - version: 5.0.2 - resolution: "linkify-it@npm:5.0.2" + version: 5.0.0 + resolution: "linkify-it@npm:5.0.0" dependencies: uc.micro: "npm:^2.0.0" - checksum: 10c0/dd70b1735a13d41a2cff0a058ac3771166038f23f6aff004dd53873cf985c64b107902fe0b544a5b3d1ff6e63249cf9c648fb3ae9f285481db48f56887adb0d6 + checksum: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d languageName: node linkType: hard @@ -12330,11 +12330,11 @@ __metadata: resolution: "react-native-macos@workspace:packages/react-native" dependencies: "@react-native-macos/virtualized-lists": "workspace:*" - "@react-native/asset-utils": "workspace:*" - "@react-native/codegen": "workspace:*" - "@react-native/community-cli-plugin": "workspace:*" - "@react-native/gradle-plugin": "workspace:*" - "@react-native/normalize-colors": "workspace:*" + "@react-native/asset-utils": "npm:0.87.1" + "@react-native/codegen": "npm:0.87.1" + "@react-native/community-cli-plugin": "npm:0.87.1" + "@react-native/gradle-plugin": "npm:0.87.1" + "@react-native/normalize-colors": "npm:0.87.1" anser: "npm:^1.4.9" ansi-regex: "npm:^5.0.0" babel-plugin-syntax-hermes-parser: "npm:0.36.1" @@ -12342,7 +12342,7 @@ __metadata: commander: "npm:^12.0.0" flow-enums-runtime: "npm:^0.0.6" glob: "npm:^7.1.1" - hermes-compiler: "npm:250829098.0.13" + hermes-compiler: "npm:250829098.0.17" invariant: "npm:^2.2.4" memoize-one: "npm:^5.0.0" metro: "npm:^0.87.0" @@ -12366,6 +12366,7 @@ __metadata: peerDependencies: "@types/react": ^19.1.1 react: ^19.2.3 + react-native: 0.87.1 peerDependenciesMeta: "@types/react": optional: true