diff --git a/.ado/scripts/export-versions.mjs b/.ado/scripts/export-versions.mjs deleted file mode 100644 index 53fb6ae28323..000000000000 --- a/.ado/scripts/export-versions.mjs +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check -import * as fs from "node:fs"; -import { URL } from "node:url"; - -/** - * @param {string} version - * @returns {string} - */ -function coerce(version) { - const [major, minor = 0] = version.split("-")[0].split("."); - return `${major}.${minor}`; -} - -/** - * @param {string} name - * @param {unknown} value - */ -function exportValue(name, value) { - console.log(`##vso[task.setvariable variable=${name}]${value}`); -} - -const manifestPath = new URL("../../packages/react-native/package.json", import.meta.url); -const json = fs.readFileSync(manifestPath, { encoding: "utf-8" }); -const { dependencies, peerDependencies } = JSON.parse(json); - -exportValue("react_version", peerDependencies["react"]); -exportValue("react_native_version", coerce(dependencies["@react-native/codegen"])); diff --git a/.config/1espt/PipelineAutobaseliningConfig.yml b/.config/1espt/PipelineAutobaseliningConfig.yml index 3cbad7d6135a..6601c710049a 100644 --- a/.config/1espt/PipelineAutobaseliningConfig.yml +++ b/.config/1espt/PipelineAutobaseliningConfig.yml @@ -7,19 +7,19 @@ pipelines: credscan: lastModifiedDate: 2024-12-04 eslint: - lastModifiedDate: 2024-12-04 + lastModifiedDate: 2026-06-05 bandit: - lastModifiedDate: 2024-12-04 + lastModifiedDate: 2026-06-05 psscriptanalyzer: - lastModifiedDate: 2024-12-04 + lastModifiedDate: 2026-06-05 armory: - lastModifiedDate: 2024-12-04 + lastModifiedDate: 2026-06-05 binary: credscan: lastModifiedDate: 2025-03-26 binskim: - lastModifiedDate: 2025-03-26 + lastModifiedDate: 2026-06-04 prefast: - lastModifiedDate: 2025-03-26 + lastModifiedDate: 2026-06-04 roslyn: - lastModifiedDate: 2025-03-26 + lastModifiedDate: 2026-06-04 diff --git a/.flowconfig b/.flowconfig index 067d84d58273..aebb534c864b 100644 --- a/.flowconfig +++ b/.flowconfig @@ -66,6 +66,11 @@ munge_underscores=true module.name_mapper='^react-native$' -> '/packages/react-native/index.js' module.name_mapper='^react-native/\(.*\)$' -> '/packages/react-native/\1' module.name_mapper='^@react-native/dev-middleware$' -> '/packages/dev-middleware' +; [macOS] Resolve workspace self-references (incl. @react-native/fantom) in yarn pnpm mode +module.name_mapper='^@react-native/fantom$' -> '/private/react-native-fantom/src/index.js' +module.name_mapper='^@react-native/fantom/\(.*\)$' -> '/private/react-native-fantom/\1' +module.name_mapper='^@react-native/core-cli-utils$' -> '/packages/core-cli-utils/src/index.flow.js' +; macOS] module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\|xml\|ktx\|heic\|heif\)$' -> '/packages/react-native/Libraries/Image/RelativeImageStub' module.system.haste.module_ref_prefix=m# diff --git a/.github/actions/microsoft-setup-toolchain/action.yml b/.github/actions/microsoft-setup-toolchain/action.yml index 8e8b6120536d..d6fc8ead611c 100644 --- a/.github/actions/microsoft-setup-toolchain/action.yml +++ b/.github/actions/microsoft-setup-toolchain/action.yml @@ -18,7 +18,7 @@ inputs: default: "22" xcode-developer-dir: description: Set the path for the active Xcode developer directory - default: "/Applications/Xcode.app" + default: "/Applications/Xcode_26.2.app" cmake-version: description: CMake version to install. Set to 'system' to skip installation and use the runner's pre-installed cmake. default: "3.31.9" diff --git a/.github/actions/setup-xcode/action.yml b/.github/actions/setup-xcode/action.yml index 19e3f3e6f06e..79ce3d47aa79 100644 --- a/.github/actions/setup-xcode/action.yml +++ b/.github/actions/setup-xcode/action.yml @@ -4,7 +4,11 @@ inputs: xcode-version: description: 'The xcode version to use' required: false - default: '16.4.0' + default: '26.2' + platform: + description: 'The platform to use. Valid values are: ios, ios-simulator, macos, mac-catalyst, tvos, tvos-simulator, xros, xros-simulator' + required: false + default: 'macos' runs: using: "composite" steps: @@ -12,3 +16,21 @@ runs: uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd with: xcode-version: ${{ inputs.xcode-version }} + - name: Setup Platform ${{ inputs.platform }} + if: ${{ inputs.platform != 'macos' && inputs.platform != 'mac-catalyst' }} + shell: bash + run: | + # https://github.com/actions/runner-images/issues/12541 + sudo xcodebuild -runFirstLaunch + sudo xcrun simctl list + + # Install platform based on the platform + if [[ "${{ inputs.platform }}" == "xros" || "${{ inputs.platform }}" == "xros-simulator" ]]; then + sudo xcodebuild -downloadPlatform visionOS + elif [[ "${{ inputs.platform }}" == "tvos" || "${{ inputs.platform }}" == "tvos-simulator" ]]; then + sudo xcodebuild -downloadPlatform tvOS + else + sudo xcodebuild -downloadPlatform iOS + fi + + sudo xcodebuild -runFirstLaunch diff --git a/.github/scripts/export-versions.mts b/.github/scripts/export-versions.mts new file mode 100644 index 000000000000..f2658034cb8e --- /dev/null +++ b/.github/scripts/export-versions.mts @@ -0,0 +1,30 @@ +#!/usr/bin/env node +/** + * Export react and react-native version information from packages/react-native/package.json. + * + * Outputs (written to $GITHUB_OUTPUT): + * react_version – the React peer dependency version (e.g. "19.0.0") + * react_native_version – the coerced major.minor React Native version (e.g. "0.79") + */ +import * as fs from "node:fs"; +import manifest from "../../packages/react-native/package.json" with { type: "json" }; + +function coerce(version: string): string { + const [major, minor = "0"] = version.split("-")[0].split("."); + return `${major}.${minor}`; +} + +function exportValue(name: string, value: string): void { + const githubOutput = process.env.GITHUB_OUTPUT; + if (githubOutput) { + fs.appendFileSync(githubOutput, `${name}=${value}\n`); + } else { + // Fallback: print to stdout for local debugging + console.log(`${name}=${value}`); + } +} + +const { dependencies, peerDependencies } = manifest; + +exportValue("react_version", peerDependencies["react"]); +exportValue("react_native_version", coerce(dependencies["@react-native/codegen"])); diff --git a/.github/scripts/resolve-hermes.mts b/.github/scripts/resolve-hermes.mts index 8d6289573593..77fb5d9a1abe 100644 --- a/.github/scripts/resolve-hermes.mts +++ b/.github/scripts/resolve-hermes.mts @@ -16,12 +16,6 @@ import { $, echo, fs, path } from 'zx'; // Use createRequire to import CommonJS modules from ESM context const require = createRequire(import.meta.url); -const { - findMatchingHermesVersion, - findVersionAtMergeBase, - getLatestStableVersionFromNPM, - hermesCommitAtMergeBase, -} = require('../../packages/react-native/scripts/ios-prebuild/microsoft-hermes.js'); const { computeNightlyTarballURL, } = require('../../packages/react-native/scripts/ios-prebuild/utils.js'); @@ -34,90 +28,115 @@ function setActionOutput(key: string, value: string) { } /** - * Downloads the upstream Hermes tarball from Maven or Sonatype. - * - * Tries multiple version resolution strategies in order: - * 1. Mapped version from peerDependencies (stable branches) - * 2. Version at merge base with facebook/react-native (main branch) - * 3. Latest stable version from npm (last resort) + * Reads the Hermes artifact version from + * packages/react-native/sdks/hermes-engine/version.properties. * - * Returns {tarballPath, version} on success, or null if no tarball is available. + * Returns HERMES_V1_VERSION_NAME when RCT_HERMES_V1_ENABLED=1, otherwise + * HERMES_VERSION_NAME. Returns null if the file or the key is missing. */ -async function downloadUpstreamHermesTarball( - buildType: string = 'Debug', -): Promise<{ tarballPath: string; version: string } | null> { - const packageJsonPath = path.resolve( - import.meta.dirname!, '..', '..', 'packages', 'react-native', 'package.json', +function resolveHermesArtifactVersion(): string | null { + const propsPath = path.resolve( + import.meta.dirname!, '..', '..', + 'packages', 'react-native', 'sdks', 'hermes-engine', 'version.properties', ); - - // Build a list of candidate versions to try (in priority order) - const candidates: string[] = []; - - const mapped = findMatchingHermesVersion(packageJsonPath); - if (mapped != null) { - candidates.push(mapped); - } - - const mergeBaseVersion = findVersionAtMergeBase(); - if (mergeBaseVersion != null && !candidates.includes(mergeBaseVersion)) { - candidates.push(mergeBaseVersion); + try { + const props: Record = {}; + for (const line of fs.readFileSync(propsPath, 'utf8').split('\n')) { + const eq = line.indexOf('='); + if (eq > 0) { + props[line.slice(0, eq).trim()] = line.slice(eq + 1).trim(); + } + } + const key = + process.env.RCT_HERMES_V1_ENABLED === '1' + ? 'HERMES_V1_VERSION_NAME' + : 'HERMES_VERSION_NAME'; + const version = props[key]; + return version != null && version.length > 0 ? version : null; + } catch { + return null; } +} +/** + * Reads the pinned Hermes tag from packages/react-native/sdks/.hermesversion + * (or .hermesv1version when RCT_HERMES_V1_ENABLED=1). The value is a git tag in + * facebook/hermes. Returns null if the file is missing or empty. + */ +function resolveHermesTag(): string | null { + const tagFile = + process.env.RCT_HERMES_V1_ENABLED === '1' + ? '.hermesv1version' + : '.hermesversion'; + const tagPath = path.resolve( + import.meta.dirname!, '..', '..', + 'packages', 'react-native', 'sdks', tagFile, + ); try { - const latestStable = await getLatestStableVersionFromNPM(); - if (!candidates.includes(latestStable)) { - candidates.push(latestStable); - } + const tag = fs.readFileSync(tagPath, 'utf8').trim(); + return tag.length > 0 ? tag : null; } catch { - // npm lookup failed, continue with what we have + return null; } +} - if (candidates.length === 0) { - echo('Could not determine any upstream version to download Hermes tarball'); +/** + * Downloads the prebuilt Hermes tarball from Maven (release) or Sonatype + * snapshots (nightly), under com/facebook/hermes/hermes-ios/. + * + * Returns {tarballPath, version} on success, or null if no tarball is available + * (callers then build Hermes from source). + */ +async function downloadUpstreamHermesTarball( + buildType: string = 'Debug', +): Promise<{ tarballPath: string; version: string } | null> { + const version = resolveHermesArtifactVersion(); + if (version == null) { + echo('Could not read Hermes version from sdks/hermes-engine/version.properties'); return null; } const mavenRepoUrl = 'https://repo1.maven.org/maven2'; - const namespace = 'com/facebook/react'; - - for (const version of candidates) { - const releaseUrl = `${mavenRepoUrl}/${namespace}/react-native-artifacts/${version}/react-native-artifacts-${version}-hermes-ios-${buildType.toLowerCase()}.tar.gz`; - const nightlyUrl = await computeNightlyTarballURL( - version, - buildType, - 'react-native-artifacts', - `hermes-ios-${buildType.toLowerCase()}.tar.gz`, - ); - const urlsToTry = [releaseUrl]; - if (nightlyUrl) { - urlsToTry.push(nightlyUrl); - } + const namespace = 'com/facebook/hermes'; + const flavor = buildType.toLowerCase(); - for (const tarballUrl of urlsToTry) { - echo(`Trying upstream Hermes tarball (version: ${version}, ${buildType}) at ${tarballUrl}...`); - - try { - const response = await fetch(tarballUrl); - if (!response.ok) { - echo(`Tarball not available: ${response.status} ${response.statusText}`); - continue; - } - - const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hermes-')); - const tarballPath = path.join(tmpDir, 'hermes-ios.tar.gz'); - const buffer = await response.arrayBuffer(); - fs.writeFileSync(tarballPath, Buffer.from(buffer)); - - echo(`Downloaded upstream Hermes tarball (${version}) to ${tarballPath}`); - return { tarballPath, version }; - } catch (e: any) { - echo(`Error downloading tarball for ${version}: ${e.message}`); + const releaseUrl = `${mavenRepoUrl}/${namespace}/hermes-ios/${version}/hermes-ios-${version}-hermes-ios-${flavor}.tar.gz`; + const nightlyUrl = await computeNightlyTarballURL( + version, + buildType, + 'hermes-ios', + `hermes-ios-${flavor}.tar.gz`, + ); + + const urlsToTry = [releaseUrl]; + if (nightlyUrl) { + urlsToTry.push(nightlyUrl); + } + + for (const tarballUrl of urlsToTry) { + echo(`Trying upstream Hermes tarball (version: ${version}, ${buildType}) at ${tarballUrl}...`); + + try { + const response = await fetch(tarballUrl); + if (!response.ok) { + echo(`Tarball not available: ${response.status} ${response.statusText}`); continue; } + + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hermes-')); + const tarballPath = path.join(tmpDir, 'hermes-ios.tar.gz'); + const buffer = await response.arrayBuffer(); + fs.writeFileSync(tarballPath, Buffer.from(buffer)); + + echo(`Downloaded upstream Hermes tarball (${version}) to ${tarballPath}`); + return { tarballPath, version }; + } catch (e: any) { + echo(`Error downloading tarball for ${version}: ${e.message}`); + continue; } } - echo('No upstream Hermes tarball found for any candidate version — will build from source.'); + echo('No upstream Hermes tarball found — will build from source.'); return null; } @@ -125,14 +144,16 @@ async function downloadUpstreamHermesTarball( * Extracts an upstream Hermes tarball and recomposes the xcframework to include * the macOS slice, if needed. * - * Upstream tarballs ship a universal xcframework (iOS, simulator, catalyst, - * tvOS, visionOS) plus a standalone macosx/hermes.framework. This function + * The tarball ships a universal `hermesvm.xcframework` (iOS, simulator, + * catalyst, tvOS, visionOS) plus a standalone `macosx/hermesvm.framework`. This * merges the standalone macOS framework into the universal xcframework using * `xcodebuild -create-xcframework`. * - * NOTE: Once upstream Hermes includes macOS in the universal xcframework - * natively, this function will detect the existing macOS slice and skip - * the recompose. At that point, this step can be removed entirely. + * NOTE: The universal xcframework gained a native macOS slice in Hermes V1 + * 250829098.0.15 (facebook/hermes#1971); the V0 line (0.14.x) does not include + * it. When the tarball already contains a macOS slice this detects it and skips + * the recompose, so once the pinned versions include it natively this step can + * be removed entirely. * Tracking PRs: * - https://github.com/facebook/hermes/pull/1958 * - https://github.com/facebook/hermes/pull/1970 @@ -147,7 +168,7 @@ async function recomposeHermesXcframework( await $`tar -xzf ${tarballPath} -C ${destroot} --strip-components=2`; const frameworksDir = path.join(destroot, 'Library', 'Frameworks'); - const xcfwPath = path.join(frameworksDir, 'universal', 'hermes.xcframework'); + const xcfwPath = path.join(frameworksDir, 'universal', 'hermesvm.xcframework'); echo('Upstream tarball contents:'); await $`ls -la ${frameworksDir}`; @@ -167,16 +188,16 @@ async function recomposeHermesXcframework( } // Check for standalone macOS framework - const standaloneMacFw = path.join(frameworksDir, 'macosx', 'hermes.framework'); + const standaloneMacFw = path.join(frameworksDir, 'macosx', 'hermesvm.framework'); if (!fs.existsSync(standaloneMacFw)) { - echo('ERROR: Upstream tarball missing macosx/hermes.framework'); + echo('ERROR: Upstream tarball missing macosx/hermesvm.framework'); return false; } // Collect existing frameworks from inside the universal xcframework const frameworkArgs: string[] = []; for (const entry of xcfwContents) { - const fwPath = path.join(xcfwPath, entry, 'hermes.framework'); + const fwPath = path.join(xcfwPath, entry, 'hermesvm.framework'); if (fs.existsSync(fwPath) && fs.statSync(fwPath).isDirectory()) { echo(`Found slice: ${fwPath}`); frameworkArgs.push('-framework', fwPath); @@ -188,7 +209,7 @@ async function recomposeHermesXcframework( frameworkArgs.push('-framework', standaloneMacFw); // Build new xcframework at a temp path (frameworks reference paths inside the old xcfw) - const xcfwNew = path.join(frameworksDir, 'universal', 'hermes-new.xcframework'); + const xcfwNew = path.join(frameworksDir, 'universal', 'hermesvm-new.xcframework'); const sliceCount = frameworkArgs.filter(f => f !== '-framework').length; echo(`Creating new universal xcframework with ${sliceCount} slices...`); await $`xcodebuild -create-xcframework ${frameworkArgs} -output ${xcfwNew} -allow-internal-distribution`; @@ -239,9 +260,13 @@ switch (command) { break; } case 'resolve-commit': { - const { commit } = hermesCommitAtMergeBase(); - setActionOutput('hermes-commit', commit); - echo(`Resolved Hermes commit: ${commit}`); + const tag = resolveHermesTag(); + if (tag == null) { + echo('Could not read pinned Hermes tag from sdks/.hermesversion or sdks/.hermesv1version'); + process.exit(1); + } + setActionOutput('hermes-commit', tag); + echo(`Resolved Hermes tag: ${tag}`); break; } default: diff --git a/.github/workflows/microsoft-backport.yml b/.github/workflows/microsoft-backport.yml index de0a66eb52ec..1d2cc76875c5 100644 --- a/.github/workflows/microsoft-backport.yml +++ b/.github/workflows/microsoft-backport.yml @@ -45,7 +45,7 @@ jobs: COMMENT_BODY: ${{ github.event.comment.body }} run: | # Extract everything after "/backport " and split into branch names - BRANCHES=$(echo "$COMMENT_BODY" | head -1 | sed 's|^/backport ||' | xargs) + BRANCHES=$(printf '%s\n' "$COMMENT_BODY" | head -n 1 | tr -d '\r' | sed 's|^/backport ||' | xargs) if [ -z "$BRANCHES" ]; then echo "::error::No target branches specified" exit 1 diff --git a/.github/workflows/microsoft-build-rntester.yml b/.github/workflows/microsoft-build-rntester.yml index 20797e8f8d07..e78f4669dcc2 100644 --- a/.github/workflows/microsoft-build-rntester.yml +++ b/.github/workflows/microsoft-build-rntester.yml @@ -5,14 +5,16 @@ on: jobs: build-rntester: - name: "${{ matrix.platform }}, ${{ matrix.arch }}" + name: "${{ matrix.platform }}, ${{ matrix.linkage }}" runs-on: macos-26 timeout-minutes: 90 strategy: fail-fast: false matrix: platform: [macos, ios, visionos] - arch: [oldarch, newarch] + # React Native 0.83 removed the legacy architecture; the New Architecture + # is the only supported runtime path, so we only build/test new arch. + linkage: [static, dynamic] include: # Platform-specific properties - platform: macos @@ -27,11 +29,11 @@ jobs: sdk: xrsimulator scheme: RNTester-visionOS packager_platform: ios - # Architecture-specific properties - - arch: oldarch - new_arch_enabled: '0' - - arch: newarch - new_arch_enabled: '1' + # Linkage-specific properties + - linkage: static + use_frameworks: '' + - linkage: dynamic + use_frameworks: 'dynamic' steps: - uses: actions/checkout@v4 @@ -51,14 +53,27 @@ jobs: - name: Install Pods working-directory: packages/rn-tester + # Dynamic frameworks are still a work in progress on this fork (see RCT-Folly / + # header plumbing). Run those jobs for coverage but don't let pod install / build + # failures fail the check; the real result is still visible in the step logs. + # Static builds stay strict/required. + continue-on-error: ${{ matrix.linkage == 'dynamic' }} env: - RCT_NEW_ARCH_ENABLED: ${{ matrix.new_arch_enabled }} + RCT_NEW_ARCH_ENABLED: '1' + USE_FRAMEWORKS: ${{ matrix.use_frameworks }} run: | set -eox pipefail + # USE_FRAMEWORKS is empty for static-library builds; unset it so the + # Podfile keeps its default (static libraries) instead of coercing an + # empty linkage value. + if [[ -z "$USE_FRAMEWORKS" ]]; then + unset USE_FRAMEWORKS + fi bundle install bundle exec pod install --verbose - name: Build ${{ matrix.scheme }} + continue-on-error: ${{ matrix.linkage == 'dynamic' }} # [macOS] Dynamic frameworks WIP; keep the check green while building for coverage env: USE_CCACHE: 0 run: | diff --git a/.github/workflows/microsoft-pr.yml b/.github/workflows/microsoft-pr.yml index ee3a01e5dd01..6b7e015073e1 100644 --- a/.github/workflows/microsoft-pr.yml +++ b/.github/workflows/microsoft-pr.yml @@ -3,7 +3,7 @@ name: PR on: pull_request: types: [opened, synchronize, edited] - branches: [ "main", "*-stable", "release/*" ] + branches: [ "main", "*-stable", "release/*", "*-merge" ] concurrency: # Ensure single build of a pull request. `main` should not be affected. @@ -149,13 +149,11 @@ jobs: if: ${{ endsWith(github.base_ref, '-stable') }} uses: ./.github/workflows/microsoft-test-react-native-macos-init.yml - # https://github.com/microsoft/react-native-macos/issues/2344 - # Disable these tests because verdaccio hangs - # react-native-test-app-integration: - # name: "Test react-native-test-app integration" - # permissions: {} - # if: ${{ endsWith(github.base_ref, '-stable') }} - # uses: ./.github/workflows/microsoft-react-native-test-app-integration.yml + react-native-test-app-integration: + name: "Test react-native-test-app integration" + permissions: {} + if: ${{ endsWith(github.base_ref, '-stable') }} + uses: ./.github/workflows/microsoft-react-native-test-app-integration.yml PR: name: "PR" @@ -171,7 +169,7 @@ jobs: - build-rntester - prebuild-macos-core - test-react-native-macos-init - # - react-native-test-app-integration + - react-native-test-app-integration steps: - name: Check for failures or cancellations if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} diff --git a/.github/workflows/microsoft-prebuild-macos-core.yml b/.github/workflows/microsoft-prebuild-macos-core.yml index 878678e7efef..14c249919ebf 100644 --- a/.github/workflows/microsoft-prebuild-macos-core.yml +++ b/.github/workflows/microsoft-prebuild-macos-core.yml @@ -27,7 +27,7 @@ jobs: id: cache-slice uses: actions/cache/restore@v4 with: - key: v1-macos-core-${{ matrix.platform }}-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} + key: v1-macos-core-${{ matrix.platform }}-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactApple/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} path: | packages/react-native/.build/output/spm/Debug/Build/Products packages/react-native/.build/headers @@ -72,7 +72,7 @@ jobs: if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/') && endsWith(github.ref, '-stable') }} uses: actions/cache/save@v4 with: - key: v1-macos-core-${{ matrix.platform }}-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} + key: v1-macos-core-${{ matrix.platform }}-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactApple/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} path: | packages/react-native/.build/output/spm/Debug/Build/Products packages/react-native/.build/headers @@ -104,7 +104,7 @@ jobs: id: cache-xcframework uses: actions/cache/restore@v4 with: - key: v1-macos-core-xcframework-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} + key: v1-macos-core-xcframework-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactApple/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} path: | packages/react-native/.build/output/xcframeworks/ReactCoreDebug.xcframework.tar.gz packages/react-native/.build/output/xcframeworks/ReactCoreDebug.framework.dSYM.tar.gz @@ -165,7 +165,7 @@ jobs: if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/') && endsWith(github.ref, '-stable') }} uses: actions/cache/save@v4 with: - key: v1-macos-core-xcframework-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} + key: v1-macos-core-xcframework-Debug-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactApple/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }} path: | packages/react-native/.build/output/xcframeworks/ReactCoreDebug.xcframework.tar.gz packages/react-native/.build/output/xcframeworks/ReactCoreDebug.framework.dSYM.tar.gz diff --git a/.github/workflows/microsoft-react-native-test-app-integration.yml b/.github/workflows/microsoft-react-native-test-app-integration.yml index 8725a42a9cd0..7c85f8c86935 100644 --- a/.github/workflows/microsoft-react-native-test-app-integration.yml +++ b/.github/workflows/microsoft-react-native-test-app-integration.yml @@ -25,64 +25,70 @@ jobs: run: yarn install - name: Build community CLI plugin - run: yarn build + run: | + yarn build + # yarn build rewrites package.json exports; restore them + git checkout -- packages/*/package.json - name: Build react-native-macos-init working-directory: packages/react-native-macos-init run: yarn build - - name: Start Verdaccio server - run: | - set -euo pipefail - nohup npx --yes verdaccio --config .ado/verdaccio/config.yaml >/dev/null 2>&1 & - echo $! > $RUNNER_TEMP/verdaccio.pid - - name: Wait for Verdaccio to be ready - run: node .ado/scripts/waitForVerdaccio.mjs http://localhost:4873 - - - name: Configure npm for Verdaccio - run: .ado/scripts/verdaccio.sh init + - name: Export versions + id: versions + run: node .github/scripts/export-versions.mts - - name: Publish to Verdaccio - run: .ado/scripts/verdaccio.sh publish --branch origin/${{ github.base_ref }} + - name: Pack local react-native-macos + working-directory: packages/react-native + run: | + set -eox pipefail + yarn pack -o ${{ runner.temp }}/react-native-macos.tgz - name: Clone react-native-test-app run: | git clone --filter=blob:none --progress https://github.com/microsoft/react-native-test-app.git - - name: Export versions - run: node .ado/scripts/export-versions.mjs - - name: Configure react-native-test-app dependencies + working-directory: react-native-test-app/packages/example-macos + run: | + node ../app/scripts/internal/set-react-version.mts ${{ steps.versions.outputs.react_native_version }} --overrides '{ "react-native-macos": "file:${{ runner.temp }}/react-native-macos.tgz" }' + + - name: Pin @types/react to avoid duplicate react-native-macos working-directory: react-native-test-app run: | - npm run set-react-version $(cat ${{ github.workspace }}/.react_native_version) -- --overrides '{ "react-native-macos": "1000.0.0" }' + # The test app tree carries both @types/react 19.1.x (example-macos) + # and 19.2.x (app), both satisfying react-native-macos's peer. Under + # Yarn's pnpm nodeLinker this virtualizes react-native-macos twice and + # trips the metro duplicate-dependency checker. Pin to a single version. + node -e " + const fs = require('fs'); + const root = JSON.parse(fs.readFileSync('package.json', 'utf8')); + root.resolutions = root.resolutions || {}; + root.resolutions['@types/react'] = '~19.1.0'; + fs.writeFileSync('package.json', JSON.stringify(root, null, 2) + '\n'); + " - name: Install dependencies in test app working-directory: react-native-test-app + env: + YARN_ENABLE_HARDENED_MODE: 0 + YARN_NPM_MINIMAL_AGE_GATE: 0 run: | set -eo pipefail - ${{ github.workspace }}/.ado/scripts/verdaccio.sh configure yarn --no-immutable - name: Bundle JavaScript - working-directory: react-native-test-app/example + working-directory: react-native-test-app/packages/example-macos run: | yarn build:macos || yarn build:macos - name: Install Pods - working-directory: react-native-test-app/example + working-directory: react-native-test-app/packages/example-macos run: | rm -f macos/Podfile.lock pod install --project-directory=macos - name: Build test app - working-directory: react-native-test-app/example - run: | - ../scripts/build/xcodebuild.sh macos/Example.xcworkspace build - - - name: Stop Verdaccio - if: always() + working-directory: react-native-test-app/packages/example-macos run: | - if [ -f "$RUNNER_TEMP/verdaccio.pid" ]; then - kill "$(cat $RUNNER_TEMP/verdaccio.pid)" || true - fi + ../../scripts/xcodebuild.sh macos/Example.xcworkspace build diff --git a/.github/workflows/microsoft-resolve-hermes.yml b/.github/workflows/microsoft-resolve-hermes.yml index 78f590715ddc..ab153d6e8290 100644 --- a/.github/workflows/microsoft-resolve-hermes.yml +++ b/.github/workflows/microsoft-resolve-hermes.yml @@ -3,7 +3,8 @@ # Strategy (fast path first): # 1. Download upstream Hermes tarball from Maven/Sonatype # 2. If found → recompose xcframework (add macOS slice) → upload artifact → done -# 3. If not found → resolve Hermes commit at merge base → check cache → upload if cached +# 3. If not found → resolve pinned Hermes tag from sdks/.hermesversion or +# sdks/.hermesv1version → check cache → upload if cached # # Build-from-source fallback (only when recomposed != true AND cache-hit != true): # build-hermesc → build 5 platform slices in parallel → assemble universal xcframework @@ -67,9 +68,9 @@ jobs: path: hermes-destroot retention-days: 30 - # Step 3 (fallback): No upstream tarball — resolve the Hermes commit hash - # at the merge base with facebook/react-native and check the build cache. - - name: Resolve Hermes commit at merge base + # Step 3 (fallback): No upstream tarball — resolve the pinned Hermes tag + # from sdks/.hermesversion or sdks/.hermesv1version and check the build cache. + - name: Resolve pinned Hermes tag if: steps.recompose.outputs.recomposed != 'true' id: resolve run: node .github/scripts/resolve-hermes.mts resolve-commit diff --git a/.yarnrc.yml b/.yarnrc.yml index 2d4e1303d05c..2fb7124f02d3 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,7 +1,44 @@ enableScripts: false -nodeLinker: node-modules +nodeLinker: pnpm # [macOS] npmMinimalAgeGate: 7d yarnPath: .yarn/releases/yarn-4.12.0.cjs + +# [macOS] Declare direct dependencies that upstream package manifests omit and that +# were previously resolved via a hoisted node_modules. In yarn pnpm mode the strict, +# non-hoisted layout requires them. Centralizing them here keeps the upstream-tracked +# manifests pristine. Third-party only: yarn.config.cjs constraints don't govern +# packageExtensions, so no @react-native/* deps belong here (they must stay in a +# manifest to remain under release-branch version-pinning). +packageExtensions: + "@react-native/codegen@*": + dependencies: + "@babel/parser": "^7.25.2" + "@react-native/babel-plugin-codegen@*": + dependencies: + "@babel/plugin-syntax-flow": "^7.25.0" + "@react-native/core-cli-utils@*": + dependencies: + "metro": "^0.82.5" + "@react-native/metro-babel-transformer@*": + dependencies: + "metro-babel-transformer": "^0.82.5" + "@react-native/compatibility-check@*": + dependencies: + "invariant": "^2.2.4" + "@react-native/tester@*": + dependencies: + "metro-config": "^0.82.5" + "@react-native/eslint-plugin-monorepo@*": + dependencies: + "hermes-estree": "0.29.1" + "@react-native/fantom@*": + dependencies: + "jest-docblock": "^29.7.0" + "jest-message-util": "^29.7.0" + "metro": "^0.82.5" + "metro-config": "^0.82.5" + "source-map": "^0.6.1" +# macOS] diff --git a/docsite/.yarnrc.yml b/docsite/.yarnrc.yml new file mode 100644 index 000000000000..dc4cc3e1cf71 --- /dev/null +++ b/docsite/.yarnrc.yml @@ -0,0 +1,2 @@ +# Keep the standalone docsite on node-modules; Docusaurus needs hoisted deps. +nodeLinker: node-modules diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 14e801c4524b..56bfd7c26ced 100644 --- a/docsite/yarn.lock +++ b/docsite/yarn.lock @@ -249,6 +249,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/code-frame@npm:7.29.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.29.7" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/169fc2080169a40c1760155eaaaf739bcb882df0bec76a83adbda5493645bc17270a3434b8848c494b1933e96fe1d147370001e3cda09a39f43ae30f08ef2069 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": version: 7.27.7 resolution: "@babel/compat-data@npm:7.27.7" @@ -292,6 +303,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/generator@npm:7.29.7" + dependencies: + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" @@ -359,6 +383,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-globals@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-globals@npm:7.29.7" + checksum: 10c0/f38417c40b1129a1b2b519ca961b9040c8827d1444fd74068702286b91b77089431dc76b6b9d5c1496e5da2a4f3ad329c6946e688ba3fa0d1d0b3d2b4f34f36a + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" @@ -379,6 +410,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-imports@npm:7.29.7" + dependencies: + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/6adf60d97356027413342a092f818d9678c4f5caff716a33e3284b5ae14e47a9e88059d421dde4ee4894691260039a12602c0e7becadc175602194b40dfa345d + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-module-transforms@npm:7.27.3" @@ -392,6 +433,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-transforms@npm:7.29.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ee5a2172c24a42be696836f4b0d947489c9729d8adf5821885cf77d1ad5333e3c447368e9a71f67df1099570490553dccf9f888ef0a92a48aa63cb086bd8c7e1 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" @@ -408,6 +462,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-plugin-utils@npm:7.29.7" + checksum: 10c0/380477a06133274a2759f9355929cb60a95e8b8fee624a1ae1fa349e1d1645b89daca456f72833f6d1062bffa12ee4271c5bf0cc5a61c0166cdc24c7591e2408 + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" @@ -451,6 +512,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-string-parser@npm:7.29.7" + checksum: 10c0/194bc0f1716e396d5ffde56ad6119745fb9557662c98611590e5e454906783a4ccb21ce93056b8eb69a4909044834e45d96e50ac695bbe9e3221648fe033c06c + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-identifier@npm:7.27.1" @@ -458,6 +526,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-identifier@npm:7.29.7" + checksum: 10c0/4795354e7ae0dcafa72de1cd04ec51252dc1498517170beaf019e03effc5b7bf13c6b21a3949a77e07b8125be7f106ed1131350d8ebd4566ae874094a726d62b + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-option@npm:7.27.1" @@ -497,6 +572,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/parser@npm:7.29.7" + dependencies: + "@babel/types": "npm:^7.29.7" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/65133038f80b54a714d6027cb77cee3f9a6b5c4c6842ce674301e13947cbcbfa8055e63acaf1b84c085d34226a14425b2c2b97b829e0e226d2e8f1299942a51d + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" @@ -917,16 +1003,16 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-systemjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" + version: 7.29.7 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 + checksum: 10c0/7b950bcc4a4b077b742b9299c8c9d4285e15854e23816d0b1c1177fafda4c153f3c3c4487c1b965afbf7a69a8788fc75656d0c591b91f0a5a543faabe738ca58 languageName: node linkType: hard @@ -1453,6 +1539,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/template@npm:7.29.7" + dependencies: + "@babel/code-frame": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/8bb7f900dcab0e9e1c5ffbc33ca10e0d26b7b2e2ca804becb73ee771b9c4ed6e2908a4ae4a14c08560febb45d2b6b9a173955e42ad404d05f8b04840a14d9c58 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.7": version: 7.27.7 resolution: "@babel/traverse@npm:7.27.7" @@ -1468,6 +1565,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/traverse@npm:7.29.7" + dependencies: + "@babel/code-frame": "npm:^7.29.7" + "@babel/generator": "npm:^7.29.7" + "@babel/helper-globals": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/template": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + debug: "npm:^4.3.1" + checksum: 10c0/e256a1fbdb956555b76f3c285b1e453f6bedec8b3afb61751d99d933efd11c7d79caf5ddf2493570058a9f7deaa1b48324380d7c1aa1443fd9508becbf56331a + languageName: node + linkType: hard + "@babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.27.7, @babel/types@npm:^7.4.4": version: 7.27.7 resolution: "@babel/types@npm:7.27.7" @@ -1478,6 +1590,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/types@npm:7.29.7" + dependencies: + "@babel/helper-string-parser": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + checksum: 10c0/b6623994c69717fa27294f5fa46d59140338e2d86c6c1c13085c84ef7d53086ee357fbf4fe9abe3dd3da75734dc77c4c0df2f90fb29e667558bb3b3fb705e88f + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -2698,6 +2820,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.12": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.8 resolution: "@jridgewell/gen-mapping@npm:0.3.8" @@ -2740,6 +2872,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -2750,6 +2889,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + "@jsonjoy.com/base64@npm:17.67.0": version: 17.67.0 resolution: "@jsonjoy.com/base64@npm:17.67.0" @@ -4591,11 +4740,11 @@ __metadata: linkType: hard "brace-expansion@npm:^5.0.2": - version: 5.0.5 - resolution: "brace-expansion@npm:5.0.5" + version: 5.0.6 + resolution: "brace-expansion@npm:5.0.6" dependencies: balanced-match: "npm:^4.0.2" - checksum: 10c0/4d238e14ed4f5cc9c07285550a41cef23121ca08ba99fa9eb5b55b580dcb6bf868b8210aa10526bdc9f8dc97f33ca2a7259039c4cc131a93042beddb424c48e3 + checksum: 10c0/8c919869b90f61d533b341d3340be5ee4413232ea89b8246cbc2f38eb014f1d8182785c98a006eaf6111d02dc9eeffefdc240d5ac158625b2ed084dccd4bbf9b languageName: node linkType: hard @@ -6298,9 +6447,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.6 - resolution: "fast-uri@npm:3.0.6" - checksum: 10c0/74a513c2af0584448aee71ce56005185f81239eab7a2343110e5bad50c39ad4fb19c5a6f99783ead1cac7ccaf3461a6034fda89fffa2b30b6d99b9f21c2f9d29 + version: 3.1.2 + resolution: "fast-uri@npm:3.1.2" + checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d languageName: node linkType: hard @@ -9040,12 +9189,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.11": - version: 3.3.11 - resolution: "nanoid@npm:3.3.11" +"nanoid@npm:^3.3.12": + version: 3.3.12 + resolution: "nanoid@npm:3.3.12" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + checksum: 10c0/ba142b7b39e11e80c16dd74b0365d407880c87c1cf7e1480956981ae940ee36060fa5b6f092cd1e315184dd19244c657bd017d03327bd3c62247d691c5e8edfb languageName: node linkType: hard @@ -10393,13 +10542,13 @@ __metadata: linkType: hard "postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.33, postcss@npm:^8.5.4": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" + version: 8.5.15 + resolution: "postcss@npm:8.5.15" dependencies: - nanoid: "npm:^3.3.11" + nanoid: "npm:^3.3.12" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 + checksum: 10c0/7f2e63ae22fbe43aace1bf652bd99da4e90737c64194d49e51ddc9cd0f9e51ff2861a7d734379b494deffa03a880a5c65eec70bc29ee9ebaa7136dde3eee8f31 languageName: node linkType: hard @@ -12476,8 +12625,8 @@ __metadata: linkType: hard "webpack-dev-server@npm:^5.2.2": - version: 5.2.3 - resolution: "webpack-dev-server@npm:5.2.3" + version: 5.2.4 + resolution: "webpack-dev-server@npm:5.2.4" dependencies: "@types/bonjour": "npm:^3.5.13" "@types/connect-history-api-fallback": "npm:^1.5.4" @@ -12516,7 +12665,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 10c0/a716f1d509635ad9f2779baf242657740e6ad516ce210fe094cbf3b16f25f114e477c45a751ad2bbf1c601cbbe67b6ba9b8b43159b7c01fc3342c95b985fe963 + checksum: 10c0/42f8afe11b7bfe65d72e30d861ddf1e4d05f27202c4c1162d204cb41a4a858dffc91c5a02bf44ec08acc8c02b4a57aaf46924ec12a5e5b97c307991379282669 languageName: node linkType: hard diff --git a/package.json b/package.json index 4a91a55aac46..64c4ed2303a0 100644 --- a/package.json +++ b/package.json @@ -57,10 +57,14 @@ "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.2", "@babel/plugin-syntax-typescript": "^7.25.4", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/preset-env": "^7.25.3", "@babel/preset-flow": "^7.24.7", + "@babel/runtime": "^7.25.2", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "@changesets/cli": "^2.28.1", "@electron/packager": "^18.3.6", "@expo/spawn-async": "^1.7.2", @@ -68,10 +72,16 @@ "@microsoft/api-extractor": "^7.52.2", "@nx/js": "^21.4.1", "@octokit/rest": "^22.0.0", + "@react-native/babel-preset": "workspace:*", + "@react-native/eslint-config": "workspace:*", + "@react-native/eslint-plugin": "workspace:*", + "@react-native/eslint-plugin-monorepo": "workspace:*", + "@react-native/eslint-plugin-specs": "workspace:*", "@react-native/metro-babel-transformer": "workspace:*", "@react-native/metro-config": "workspace:*", "@tsconfig/node22": "22.0.2", "@types/react": "^19.1.0", + "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "@yarnpkg/types": "^4.0.1", "ansi-regex": "^5.0.0", @@ -99,19 +109,25 @@ "flow-api-translator": "0.32.0", "flow-bin": "^0.295.0", "hermes-eslint": "0.32.0", + "hermes-estree": "0.32.0", "hermes-transform": "0.32.0", "ini": "^5.0.0", "inquirer": "^7.1.0", + "invariant": "^2.2.4", "jest": "^29.7.0", "jest-config": "^29.7.0", "jest-diff": "^29.7.0", "jest-junit": "^16.0.0", "jest-snapshot": "^29.7.0", + "jsonc-eslint-parser": "^2.3.0", "jsonc-parser": "2.2.1", "markdownlint-cli2": "^0.22.0", "markdownlint-rule-relative-links": "^3.0.0", "memfs": "^4.38.2", + "metro": "^0.83.3", "metro-babel-register": "^0.83.3", + "metro-config": "^0.83.3", + "metro-memory-fs": "^0.82.5", "metro-transform-plugins": "^0.83.3", "micromatch": "^4.0.4", "node-fetch": "^2.2.0", @@ -130,6 +146,7 @@ "tinyglobby": "^0.2.15", "typescript": "5.8.3", "ws": "^7.5.10", + "yargs": "^17.6.2", "zx": "^8.2.4" }, "resolutions": { diff --git a/packages/react-native-codegen/scripts/build.js b/packages/react-native-codegen/scripts/build.js index 5b0d668fd56d..a469fc00a7a6 100644 --- a/packages/react-native-codegen/scripts/build.js +++ b/packages/react-native-codegen/scripts/build.js @@ -63,14 +63,22 @@ async function buildFile(file, silent) { fs.mkdirSync(path.dirname(destPath), {recursive: true}); - if (micromatch.isMatch(file, IGNORE_PATTERN)) { + // micromatch's `**` does not traverse dot-directories (e.g. a checkout + // living under `.claude/worktrees/...`) unless `dot: true` is set, so + // matching against the absolute `file` path can silently fail to match + // any pattern when the repo itself is nested under a dotfile/dotdir. + // Match against the path relative to the package dir instead, which is + // never affected by where the repo happens to be checked out. + const relativeFile = path.relative(PACKAGE_DIR, file); + + if (micromatch.isMatch(relativeFile, IGNORE_PATTERN)) { silent || process.stdout.write( styleText('dim', ' \u2022 ') + path.relative(PACKAGE_DIR, file) + ' (ignore)\n', ); - } else if (!micromatch.isMatch(file, JS_FILES_PATTERN)) { + } else if (!micromatch.isMatch(relativeFile, JS_FILES_PATTERN)) { fs.createReadStream(file).pipe(fs.createWriteStream(destPath)); silent || process.stdout.write( diff --git a/packages/react-native-codegen/src/cli/combine/combine-js-to-schema.js b/packages/react-native-codegen/src/cli/combine/combine-js-to-schema.js index c8cec5079b0f..032f9d22351c 100644 --- a/packages/react-native-codegen/src/cli/combine/combine-js-to-schema.js +++ b/packages/react-native-codegen/src/cli/combine/combine-js-to-schema.js @@ -71,6 +71,16 @@ function expandDirectoriesIntoFiles( onlyFiles: true, absolute: true, cwd: file, + // [macOS] Exclude node_modules so that scanning a library's own + // jsSrcsDir (e.g. "." for RNTester, which self-depends on + // react-native-macos for CLI resolution, see #2529) doesn't also + // recursively pick up and duplicate every Native*.js spec file + // belonging to react-native core / other dependencies, which are + // already discovered and codegen'd separately per-library. Without + // this, duplicate ObjC/C++ symbols are emitted across the app's + // ReactCodegen pod and e.g. React-RCTFBReactNativeSpec, causing + // linker "duplicate symbol" errors. + ignore: ['**/node_modules/**'], }); }) .filter(element => filterJSFile(element, platform, exclude)); diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js index 51a224eb76b6..14921eb99d20 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js @@ -98,7 +98,7 @@ const AccessibilityInfo = { * See https://reactnative.dev/docs/accessibilityinfo#isBoldTextEnabled */ isBoldTextEnabled(): Promise { - if (Platform.OS === 'android' || Platform.OS === 'macos' /* [macOS] */) { + if (Platform.OS === 'android') { return Promise.resolve(false); } else { return new Promise((resolve, reject) => { @@ -331,7 +331,7 @@ const AccessibilityInfo = { * See https://reactnative.dev/docs/accessibilityinfo#isReduceTransparencyEnabled */ isReduceTransparencyEnabled(): Promise { - if (Platform.OS === 'android' || Platform.OS === 'macos' /* [macOS] */) { + if (Platform.OS === 'android') { return Promise.resolve(false); } else { return new Promise((resolve, reject) => { diff --git a/packages/react-native/Libraries/Text/Text.js b/packages/react-native/Libraries/Text/Text.js index 57ca49ea93c2..67e1dc4a31de 100644 --- a/packages/react-native/Libraries/Text/Text.js +++ b/packages/react-native/Libraries/Text/Text.js @@ -14,7 +14,6 @@ import type {GestureResponderEvent} from '../Types/CoreEventTypes'; import type {NativeTextProps} from './TextNativeComponent'; import type {PressRetentionOffset, TextProps} from './TextProps'; -import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags'; import * as PressabilityDebug from '../Pressability/PressabilityDebug'; import usePressability from '../Pressability/usePressability'; import flattenStyle from '../StyleSheet/flattenStyle'; @@ -36,664 +35,303 @@ type TextForwardRef = React.ElementRef< * * @see https://reactnative.dev/docs/text */ -let _TextImpl; -if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { - const TextImplNoDefaultProps: component( - ref?: React.RefSetter, - ...props: TextProps - ) = ({ - ref: forwardedRef, - accessible, - accessibilityLabel, - accessibilityRole, - accessibilityState, - allowFontScaling, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-disabled': ariaDisabled, - 'aria-expanded': ariaExpanded, - 'aria-hidden': ariaHidden, - 'aria-label': ariaLabel, - 'aria-selected': ariaSelected, - children, - ellipsizeMode, - disabled, - id, - nativeID, - numberOfLines, - onLongPress, - onPress, - onPressIn, - onPressOut, - onResponderGrant, - onResponderMove, - onResponderRelease, - onResponderTerminate, - onResponderTerminationRequest, - onStartShouldSetResponder, - pressRetentionOffset, - role, - selectable, - selectionColor, - suppressHighlighting, - style, - ...restProps - }: { - ref?: React.RefSetter, - ...TextProps, - }) => { - const processedProps = restProps as { - ...NativeTextProps, - }; - const _accessibilityLabel = ariaLabel ?? accessibilityLabel; - let _accessibilityState: ?TextProps['accessibilityState'] = - accessibilityState; - if ( - ariaBusy != null || - ariaChecked != null || - ariaDisabled != null || - ariaExpanded != null || - ariaSelected != null - ) { - if (_accessibilityState != null) { - _accessibilityState = { - busy: ariaBusy ?? _accessibilityState.busy, - checked: ariaChecked ?? _accessibilityState.checked, - disabled: ariaDisabled ?? _accessibilityState.disabled, - expanded: ariaExpanded ?? _accessibilityState.expanded, - selected: ariaSelected ?? _accessibilityState.selected, - }; - } else { - _accessibilityState = { - busy: ariaBusy, - checked: ariaChecked, - disabled: ariaDisabled, - expanded: ariaExpanded, - selected: ariaSelected, - }; - } - } - - const _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; - - // If the disabled prop and accessibilityState.disabled are out of sync but not both in - // falsy states we need to update the accessibilityState object to use the disabled prop. - if ( - _accessibilityState != null && - _disabled !== _accessibilityStateDisabled && - ((_disabled != null && _disabled !== false) || - (_accessibilityStateDisabled != null && - _accessibilityStateDisabled !== false)) - ) { - _accessibilityState.disabled = _disabled; - } - - if (ariaHidden !== undefined) { - processedProps.accessibilityElementsHidden = ariaHidden; - if (ariaHidden === true) { - processedProps.importantForAccessibility = 'no-hide-descendants'; - } - } - - const _accessible = Platform.select({ - ios: accessible !== false, - android: - accessible == null - ? onPress != null || onLongPress != null - : accessible, - default: accessible, - }); - - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; - - const shouldUseLinkRole = - ReactNativeFeatureFlags.shouldUseLinkRoleForPressableText() && - isPressable && - accessibilityRole == null && - role == null; - - const _accessibilityRole = - accessibilityRole ?? (shouldUseLinkRole ? 'link' : undefined); - - const _role = shouldUseLinkRole ? undefined : role; - - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; - - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; - } +const TextImpl: component( + ref?: React.RefSetter, + ...props: TextProps +) = ({ + ref: forwardedRef, + accessible, + accessibilityLabel, + accessibilityRole, + accessibilityState, + allowFontScaling, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + children, + ellipsizeMode, + disabled, + id, + nativeID, + numberOfLines, + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + role, + selectable, + selectionColor, + suppressHighlighting, + style, + ...restProps +}: { + ref?: React.RefSetter, + ...TextProps, +}) => { + const processedProps = restProps as { + ...NativeTextProps, + }; + const _accessibilityLabel = ariaLabel ?? accessibilityLabel; + let _accessibilityState: ?TextProps['accessibilityState'] = + accessibilityState; + if ( + ariaBusy != null || + ariaChecked != null || + ariaDisabled != null || + ariaExpanded != null || + ariaSelected != null + ) { + if (_accessibilityState != null) { + _accessibilityState = { + busy: ariaBusy ?? _accessibilityState.busy, + checked: ariaChecked ?? _accessibilityState.checked, + disabled: ariaDisabled ?? _accessibilityState.disabled, + expanded: ariaExpanded ?? _accessibilityState.expanded, + selected: ariaSelected ?? _accessibilityState.selected, + }; + } else { + _accessibilityState = { + busy: ariaBusy, + checked: ariaChecked, + disabled: ariaDisabled, + expanded: ariaExpanded, + selected: ariaSelected, + }; } - - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { - if (__DEV__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); - } - _numberOfLines = 0; + } + + const _accessibilityStateDisabled = _accessibilityState?.disabled; + const _disabled = disabled ?? _accessibilityStateDisabled; + + // If the disabled prop and accessibilityState.disabled are out of sync but not both in + // falsy states we need to update the accessibilityState object to use the disabled prop. + if ( + _accessibilityState != null && + _disabled !== _accessibilityStateDisabled && + ((_disabled != null && _disabled !== false) || + (_accessibilityStateDisabled != null && + _accessibilityStateDisabled !== false)) + ) { + _accessibilityState.disabled = _disabled; + } + + if (ariaHidden !== undefined) { + processedProps.accessibilityElementsHidden = ariaHidden; + if (ariaHidden === true) { + processedProps.importantForAccessibility = 'no-hide-descendants'; } + } - let _selectable = selectable; - - let processedStyle = flattenStyle(_style); - if (processedStyle != null) { - let overrides: ?{...TextStyleInternal} = null; - if (typeof processedStyle.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.fontWeight = - // $FlowFixMe[incompatible-type] - (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); - } + const _accessible = Platform.select({ + ios: accessible !== false, + android: + accessible == null ? onPress != null || onLongPress != null : accessible, + default: accessible, + }); - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; - } + const isPressable = + (onPress != null || + onLongPress != null || + onStartShouldSetResponder != null) && + _disabled !== true; - if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.textAlignVertical = - verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; - overrides.verticalAlign = undefined; - } + const shouldUseLinkRole = + isPressable && accessibilityRole == null && role == null; - // [macOS - // For some reason on macOS, Setting backgroundColor without borderRadius on Text will - // cause the color to spill pass the frame of the Text. We can solve this by setting a dummy - // value for borderRadius. - if (Platform.OS === 'macos') { - if ( - 'backgroundColor' in processedStyle && - !('borderRadius' in processedStyle) - ) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.borderRadius = Number.MIN_VALUE; - } - } - // macOS] + const _accessibilityRole = + accessibilityRole ?? (shouldUseLinkRole ? 'link' : undefined); - if (overrides != null) { - // $FlowFixMe[incompatible-type] - _style = [_style, overrides]; - } - } + const _role = shouldUseLinkRole ? undefined : role; - const _nativeID = id ?? nativeID; + // TODO: Move this processing to the view configuration. + const _selectionColor = + selectionColor != null ? processColor(selectionColor) : undefined; - if (_accessibilityLabel !== undefined) { - processedProps.accessibilityLabel = _accessibilityLabel; - } - if (_accessibilityRole !== undefined) { - processedProps.accessibilityRole = _accessibilityRole; - } - if (_accessibilityState !== undefined) { - processedProps.accessibilityState = _accessibilityState; - } - if (_nativeID !== undefined) { - processedProps.nativeID = _nativeID; - } - if (_numberOfLines !== undefined) { - processedProps.numberOfLines = _numberOfLines; - } - if (_selectable !== undefined) { - processedProps.selectable = _selectable; - } - if (_style !== undefined) { - processedProps.style = _style; - } - if (_selectionColor !== undefined) { - processedProps.selectionColor = _selectionColor; - } - if (_role !== undefined) { - processedProps.role = _role; - } - - let textPressabilityProps: ?TextPressabilityProps; - if (isPressable) { - textPressabilityProps = { - onLongPress, - onPress, - onPressIn, - onPressOut, - onResponderGrant, - onResponderMove, - onResponderRelease, - onResponderTerminate, - onResponderTerminationRequest, - onStartShouldSetResponder, - pressRetentionOffset, - suppressHighlighting, - }; - } - - const hasTextAncestor = useContext(TextAncestorContext); - if (hasTextAncestor) { - processedProps.disabled = disabled; - processedProps.children = children; - if (isPressable) { - return ( - - ); - } - return ; + let _style = style; + if (__DEV__) { + if (PressabilityDebug.isEnabled() && onPress != null) { + _style = [style, {color: 'magenta'}]; } + } - let nativeText = null; - - processedProps.accessible = _accessible; - processedProps.allowFontScaling = allowFontScaling !== false; - processedProps.disabled = _disabled; - processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; - processedProps.children = children; - - if (isPressable) { - nativeText = ( - + let _numberOfLines = numberOfLines; + if (_numberOfLines != null && !(_numberOfLines >= 0)) { + if (__DEV__) { + console.error( + `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, ); - } else { - nativeText = ; - } - - if (children == null) { - return nativeText; - } - - // If the children do not contain a JSX element it would not be possible to have a - // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper - // which has a performance overhead. Since we do this for performance reasons we need - // to keep the check simple to avoid regressing overall perf. For this reason the - // `children.length` constant is set to `3`, this should be a reasonable tradeoff - // to capture the majority of `Text` uses but also not make this check too expensive. - if (Array.isArray(children) && children.length <= 3) { - let hasNonTextChild = false; - for (let child of children) { - if (child != null && typeof child === 'object') { - hasNonTextChild = true; - break; - } - } - if (!hasNonTextChild) { - return nativeText; - } - } else if (typeof children !== 'object') { - return nativeText; - } - - return {nativeText}; - }; - _TextImpl = TextImplNoDefaultProps; -} else { - const TextImplLegacy: component( - ref?: React.RefSetter, - ...props: TextProps - ) = ({ - ref: forwardedRef, - accessible, - accessibilityElementsHidden, - importantForAccessibility, - accessibilityLabel, - accessibilityRole, - accessibilityState, - allowFontScaling, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-disabled': ariaDisabled, - 'aria-expanded': ariaExpanded, - 'aria-hidden': ariaHidden, - 'aria-label': ariaLabel, - 'aria-selected': ariaSelected, - children, - ellipsizeMode, - disabled, - id, - nativeID, - numberOfLines, - onLongPress, - onPress, - onPressIn, - onPressOut, - onResponderGrant, - onResponderMove, - onResponderRelease, - onResponderTerminate, - onResponderTerminationRequest, - onStartShouldSetResponder, - pressRetentionOffset, - role, - selectable, - selectionColor, - suppressHighlighting, - style, - ...restProps - }: { - ref?: React.RefSetter, - ...TextProps, - }) => { - const _accessibilityLabel = ariaLabel ?? accessibilityLabel; - - let _accessibilityState: ?TextProps['accessibilityState'] = - accessibilityState; - if ( - ariaBusy != null || - ariaChecked != null || - ariaDisabled != null || - ariaExpanded != null || - ariaSelected != null - ) { - if (_accessibilityState != null) { - _accessibilityState = { - busy: ariaBusy ?? _accessibilityState.busy, - checked: ariaChecked ?? _accessibilityState.checked, - disabled: ariaDisabled ?? _accessibilityState.disabled, - expanded: ariaExpanded ?? _accessibilityState.expanded, - selected: ariaSelected ?? _accessibilityState.selected, - }; - } else { - _accessibilityState = { - busy: ariaBusy, - checked: ariaChecked, - disabled: ariaDisabled, - expanded: ariaExpanded, - selected: ariaSelected, - }; - } } + _numberOfLines = 0; + } - const _accessibilityStateDisabled = _accessibilityState?.disabled; - const _disabled = disabled ?? _accessibilityStateDisabled; + let _selectable = selectable; - let _accessibilityElementsHidden = - ariaHidden ?? accessibilityElementsHidden; - let _importantForAccessibility = importantForAccessibility; - if (ariaHidden === true) { - _importantForAccessibility = 'no-hide-descendants'; + let processedStyle = flattenStyle(_style); + if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; + if (typeof processedStyle.fontWeight === 'number') { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-type] + (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); } - const isPressable = - (onPress != null || - onLongPress != null || - onStartShouldSetResponder != null) && - _disabled !== true; - - const shouldUseLinkRole = - ReactNativeFeatureFlags.shouldUseLinkRoleForPressableText() && - isPressable && - accessibilityRole == null && - role == null; - - const _accessibilityRole = - accessibilityRole ?? (shouldUseLinkRole ? 'link' : undefined); - - const _role = shouldUseLinkRole ? undefined : role; - - // TODO: Move this processing to the view configuration. - const _selectionColor = - selectionColor != null ? processColor(selectionColor) : undefined; - - let _style = style; - if (__DEV__) { - if (PressabilityDebug.isEnabled() && onPress != null) { - _style = [style, {color: 'magenta'}]; - } + if (processedStyle.userSelect != null) { + _selectable = userSelectToSelectableMap[processedStyle.userSelect]; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; } - let _numberOfLines = numberOfLines; - if (_numberOfLines != null && !(_numberOfLines >= 0)) { - if (__DEV__) { - console.error( - `'numberOfLines' in must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`, - ); - } - _numberOfLines = 0; + if (processedStyle.verticalAlign != null) { + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = + verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; + overrides.verticalAlign = undefined; } - let _selectable = selectable; - - let processedStyle = flattenStyle(_style); - if (processedStyle != null) { - let overrides: ?{...TextStyleInternal} = null; - if (typeof processedStyle.fontWeight === 'number') { + // [macOS + // For some reason on macOS, Setting backgroundColor without borderRadius on Text will + // cause the color to spill pass the frame of the Text. We can solve this by setting a dummy + // value for borderRadius. + if (Platform.OS === 'macos') { + if ( + 'backgroundColor' in processedStyle && + !('borderRadius' in processedStyle) + ) { overrides = overrides || ({}: {...TextStyleInternal}); - overrides.fontWeight = - // $FlowFixMe[incompatible-type] - (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); - } - - if (processedStyle.userSelect != null) { - _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.userSelect = undefined; - } - - if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.textAlignVertical = - verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; - overrides.verticalAlign = undefined; - } - - // [macOS - // For some reason on macOS, Setting backgroundColor without borderRadius on Text will - // cause the color to spill pass the frame of the Text. We can solve this by setting a dummy - // value for borderRadius. - if (Platform.OS === 'macos') { - if ( - 'backgroundColor' in processedStyle && - !('borderRadius' in processedStyle) - ) { - overrides = overrides || ({}: {...TextStyleInternal}); - overrides.borderRadius = Number.MIN_VALUE; - } - } - // macOS] - - if (overrides != null) { - // $FlowFixMe[incompatible-type] - _style = [_style, overrides]; - } - } - - const _nativeID = id ?? nativeID; - - const hasTextAncestor = useContext(TextAncestorContext); - if (hasTextAncestor) { - if (isPressable) { - return ( - - ); + overrides.borderRadius = Number.MIN_VALUE; } - - return ( - - {children} - - ); } + // macOS] - // If the disabled prop and accessibilityState.disabled are out of sync but not both in - // falsy states we need to update the accessibilityState object to use the disabled prop. - if ( - _disabled !== _accessibilityStateDisabled && - ((_disabled != null && _disabled !== false) || - (_accessibilityStateDisabled != null && - _accessibilityStateDisabled !== false)) - ) { - _accessibilityState = {..._accessibilityState, disabled: _disabled}; + if (overrides != null) { + // $FlowFixMe[incompatible-type] + _style = [_style, overrides]; } + } + + const _nativeID = id ?? nativeID; + + if (_accessibilityLabel !== undefined) { + processedProps.accessibilityLabel = _accessibilityLabel; + } + if (_accessibilityRole !== undefined) { + processedProps.accessibilityRole = _accessibilityRole; + } + if (_accessibilityState !== undefined) { + processedProps.accessibilityState = _accessibilityState; + } + if (_nativeID !== undefined) { + processedProps.nativeID = _nativeID; + } + if (_numberOfLines !== undefined) { + processedProps.numberOfLines = _numberOfLines; + } + if (_selectable !== undefined) { + processedProps.selectable = _selectable; + } + if (_style !== undefined) { + processedProps.style = _style; + } + if (_selectionColor !== undefined) { + processedProps.selectionColor = _selectionColor; + } + if (_role !== undefined) { + processedProps.role = _role; + } + + let textPressabilityProps: ?TextPressabilityProps; + if (isPressable) { + textPressabilityProps = { + onLongPress, + onPress, + onPressIn, + onPressOut, + onResponderGrant, + onResponderMove, + onResponderRelease, + onResponderTerminate, + onResponderTerminationRequest, + onStartShouldSetResponder, + pressRetentionOffset, + suppressHighlighting, + }; + } - const _accessible = Platform.select({ - ios: accessible !== false, - android: - accessible == null - ? onPress != null || onLongPress != null - : accessible, - default: accessible, - }); - - let nativeText = null; + const hasTextAncestor = useContext(TextAncestorContext); + if (hasTextAncestor) { + processedProps.disabled = disabled; + processedProps.children = children; if (isPressable) { - nativeText = ( - ); - } else { - nativeText = ( - - {children} - - ); } - - if (children == null) { - return nativeText; - } - - // If the children do not contain a JSX element it would not be possible to have a - // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper - // which has a performance overhead. Since we do this for performance reasons we need - // to keep the check simple to avoid regressing overall perf. For this reason the - // `children.length` constant is set to `3`, this should be a reasonable tradeoff - // to capture the majority of `Text` uses but also not make this check too expensive. - if (Array.isArray(children) && children.length <= 3) { - let hasNonTextChild = false; - for (let child of children) { - if (child != null && typeof child === 'object') { - hasNonTextChild = true; - break; - } + return ; + } + + let nativeText = null; + + processedProps.accessible = _accessible; + processedProps.allowFontScaling = allowFontScaling !== false; + processedProps.disabled = _disabled; + processedProps.ellipsizeMode = ellipsizeMode ?? 'tail'; + processedProps.children = children; + + if (isPressable) { + nativeText = ( + + ); + } else { + nativeText = ; + } + + if (children == null) { + return nativeText; + } + + // If the children do not contain a JSX element it would not be possible to have a + // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper + // which has a performance overhead. Since we do this for performance reasons we need + // to keep the check simple to avoid regressing overall perf. For this reason the + // `children.length` constant is set to `3`, this should be a reasonable tradeoff + // to capture the majority of `Text` uses but also not make this check too expensive. + if (Array.isArray(children) && children.length <= 3) { + let hasNonTextChild = false; + for (let child of children) { + if (child != null && typeof child === 'object') { + hasNonTextChild = true; + break; } - if (!hasNonTextChild) { - return nativeText; - } - } else if (typeof children !== 'object') { + } + if (!hasNonTextChild) { return nativeText; } + } else if (typeof children !== 'object') { + return nativeText; + } - return {nativeText}; - }; - _TextImpl = TextImplLegacy; -} - -const TextImpl: component( - ref?: React.RefSetter, - ...props: TextProps -) = _TextImpl; + return {nativeText}; +}; TextImpl.displayName = 'Text'; diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm index 9cf1c48d9fdb..8e7169c30d33 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -275,6 +275,11 @@ - (void)setEnableFocusRing:(BOOL)enableFocusRing [super setFocusRingType:self.focusRingType]; [self setKeyboardFocusRingNeedsDisplayInRect:self.bounds]; } + +- (BOOL)enableFocusRing +{ + return _enableFocusRing; +} #endif // macOS] - (void)setDefaultTextAttributes:(NSDictionary *)defaultTextAttributes @@ -301,6 +306,7 @@ - (void)textDidChange - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts { + _disableKeyboardShortcuts = disableKeyboardShortcuts; #if TARGET_OS_IOS // Initialize the initial values only once if (_initialValueLeadingBarButtonGroups == nil) { @@ -317,7 +323,6 @@ - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts self.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups; self.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups; } - _disableKeyboardShortcuts = disableKeyboardShortcuts; #endif } diff --git a/packages/react-native/Package.swift b/packages/react-native/Package.swift index e04e787ed397..d6097f85b724 100644 --- a/packages/react-native/Package.swift +++ b/packages/react-native/Package.swift @@ -75,13 +75,14 @@ let reactOSCompat = RNTarget( let rctSwiftUI = RNTarget( name: .rctSwiftUI, - path: "ReactApple/RCTSwiftUI" + path: "ReactApple/RCTSwiftUI", + dependencies: [.reactRCTUIKit] // [macOS] ) let rctSwiftUIWrapper = RNTarget( name: .rctSwiftUIWrapper, path: "ReactApple/RCTSwiftUIWrapper", - dependencies: [.rctSwiftUI] + dependencies: [.rctSwiftUI, .reactRCTUIKit] // [macOS] ) // React-rendererconsistency.podspec diff --git a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm index 47d5c67a29af..0bb5a4d97816 100644 --- a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm +++ b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm @@ -93,7 +93,7 @@ - (void)initialize _currentInterfaceDimensions = [self _exportedDimensions]; -#if !TARGET_OS_OSX // [macOS] +#if TARGET_OS_IOS // [macOS] [visionOS] [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interfaceOrientationDidChange) name:UIApplicationDidBecomeActiveNotification diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 05f89aa01ecf..55a16bb9c45e 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -792,11 +792,6 @@ - (void)prepareForRecycle _isJSResponder = NO; _removeClippedSubviews = NO; _reactSubviews = [NSMutableArray new]; -#if TARGET_OS_OSX // [macOS - _allowsVibrancy = NO; - self.acceptsFirstMouse = NO; - self.mouseDownCanMoveWindow = YES; -#endif // macOS] } - (void)setPropKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN:(NSSet *_Nullable)props @@ -1081,13 +1076,13 @@ - (RCTPlatformView *)effectiveContentView // [macOS] return self; } - UIView *effectiveContentView = self; + RCTPlatformView *effectiveContentView = self; // [macOS] if (self.styleNeedsSwiftUIContainer) { if (_swiftUIWrapper == nullptr) { _swiftUIWrapper = [RCTSwiftUIContainerViewWrapper new]; - UIView *swiftUIContentView = [[UIView alloc] init]; - for (UIView *subview = nullptr in self.subviews) { + RCTPlatformView *swiftUIContentView = [[RCTPlatformView alloc] init]; // [macOS] + for (RCTPlatformView *subview = nullptr in self.subviews) { // [macOS] [swiftUIContentView addSubview:subview]; } swiftUIContentView.clipsToBounds = self.clipsToBounds; @@ -1104,8 +1099,8 @@ - (RCTPlatformView *)effectiveContentView // [macOS] effectiveContentView = _swiftUIWrapper.contentView; } else { if (_swiftUIWrapper != nullptr) { - UIView *swiftUIContentView = _swiftUIWrapper.contentView; - for (UIView *subview = nullptr in swiftUIContentView.subviews) { + RCTPlatformView *swiftUIContentView = _swiftUIWrapper.contentView; // [macOS] + for (RCTPlatformView *subview = nullptr in swiftUIContentView.subviews) { // [macOS] [self addSubview:subview]; } self.clipsToBounds = swiftUIContentView.clipsToBounds; @@ -1944,7 +1939,13 @@ - (void)blur // correct AppKit equivalent is `makeFirstResponder:nil`, which clears // the current first responder. Mirrors the working pattern at // RCTTextInputComponentView.mm:995-997. - [[self window] makeFirstResponder:nil]; + // + // Guard on firstResponder == self so we don't steal focus away from an + // unrelated view that became first responder after this one blurred + // (upstream d64dcd3c1b7). + if ([[self window] firstResponder] == self) { + [[self window] makeFirstResponder:nil]; + } } - (BOOL)needsPanelToBecomeKey diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec index 2dbf8f1cc084..2f87c01abca0 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec @@ -29,6 +29,7 @@ Pod::Spec.new do |s| s.public_header_files = "*.h" s.module_name = "RCTSwiftUI" s.header_dir = "RCTSwiftUI" + s.dependency "React-RCTUIKit" # [macOS] # [macOS] Expose the React_RCTUIKit clang module to Swift so # RCTSwiftUIContainerView.swift can `import React_RCTUIKit` and pick up diff --git a/packages/react-native/ReactCommon/React-FabricComponents.podspec b/packages/react-native/ReactCommon/React-FabricComponents.podspec index dda0797fc765..b410c7ec7338 100644 --- a/packages/react-native/ReactCommon/React-FabricComponents.podspec +++ b/packages/react-native/ReactCommon/React-FabricComponents.podspec @@ -101,16 +101,27 @@ Pod::Spec.new do |s| sss.header_dir = "react/renderer/components/safeareaview" end - ss.subspec "scrollview" do |sss| - sss.source_files = podspec_sources(["react/renderer/components/scrollview/*.{m,mm,cpp,h}", - "react/renderer/components/scrollview/platform/cxx/**/*.{m,mm,cpp,h}", - "react/renderer/components/scrollview/platform/ios/**/*.{m,mm,cpp,h}"], - ["react/renderer/components/scrollview/*.h", - "react/renderer/components/scrollview/platform/cxx/**/*.h", - "react/renderer/components/scrollview/platform/ios/**/*.h"]) - sss.exclude_files = "react/renderer/components/scrollview/tests" - sss.header_dir = "react/renderer/components/scrollview" - end + # [macOS The "scrollview" subspec below duplicates source_files already declared in + # React-Fabric.podspec's "scrollview" subspec (which uses a recursive + # `react/renderer/components/scrollview/**/*` glob). The overlap causes + # ScrollViewShadowNode.cpp and friends to be compiled into both the + # React-Fabric and React-FabricComponents Pods targets, breaking consumers + # that link both libraries via `-all_load` (duplicate symbols). Comment it + # out here so scrollview is only built into React-Fabric -- where + # React-Fabric's mounting/internal/CullingContext.cpp already needs + # ScrollViewShadowNode anyway. (upstream 6014c2c7767) + # + # ss.subspec "scrollview" do |sss| + # sss.source_files = podspec_sources(["react/renderer/components/scrollview/*.{m,mm,cpp,h}", + # "react/renderer/components/scrollview/platform/cxx/**/*.{m,mm,cpp,h}", + # "react/renderer/components/scrollview/platform/ios/**/*.{m,mm,cpp,h}"], + # ["react/renderer/components/scrollview/*.h", + # "react/renderer/components/scrollview/platform/cxx/**/*.h", + # "react/renderer/components/scrollview/platform/ios/**/*.h"]) + # sss.exclude_files = "react/renderer/components/scrollview/tests" + # sss.header_dir = "react/renderer/components/scrollview" + # end + # macOS] ss.subspec "text" do |sss| sss.source_files = podspec_sources(["react/renderer/components/text/*.{m,mm,cpp,h}", diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.h b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.h deleted file mode 100644 index 63db973168d0..000000000000 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.mm b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.mm deleted file mode 100644 index ddea64bfd235..000000000000 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.mm +++ /dev/null @@ -1,47 +0,0 @@ -#import "AppDelegate.h" - -#import -#import - -@implementation AppDelegate - -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - self.moduleName = @"HelloWorld"; - // You can add your custom initial props in the dictionary below. - // They will be passed down to the ViewController used by React Native. - self.initialProps = @{}; - self.dependencyProvider = [RCTAppDependencyProvider new]; - - return [super applicationDidFinishLaunching:notification]; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ - return [self bundleURL]; -} - -- (NSURL *)bundleURL -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. -/// -/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html -/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). -/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. -- (BOOL)concurrentRootEnabled -{ -#ifdef RN_FABRIC_ENABLED - return true; -#else - return false; -#endif -} - -@end diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.swift b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.swift new file mode 100644 index 000000000000..1a9040193722 --- /dev/null +++ b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.swift @@ -0,0 +1,62 @@ +import SwiftUI +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +struct HelloWorldApp: App { + @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate + + var body: some Scene { + Window("HelloWorld", id: "main") { + ReactNativeView(factory: appDelegate.reactNativeFactory) + } + .defaultSize(width: 1280, height: 720) + } +} + +// MARK: - App Delegate + +class AppDelegate: NSObject, NSApplicationDelegate { + private let reactNativeDelegate: ReactNativeDelegate + let reactNativeFactory: RCTReactNativeFactory + + override init() { + super.init() + + let delegate = ReactNativeDelegate() + let factory = RCTReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + } +} + +// MARK: - React Native Delegate + +class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { + override func sourceURL(for bridge: RCTBridge) -> URL? { + bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} + +// MARK: - React Native SwiftUI View + +struct ReactNativeView: NSViewRepresentable { + let factory: RCTReactNativeFactory + + func makeNSView(context: Context) -> NSView { + factory.rootViewFactory.view(withModuleName: "HelloWorld") + } + + func updateNSView(_ nsView: NSView, context: Context) {} +} diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Base.lproj/Main.storyboard b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Base.lproj/Main.storyboard deleted file mode 100644 index a3afa65f0c0e..000000000000 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Base.lproj/Main.storyboard +++ /dev/null @@ -1,684 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - - - Left to Right - - - - - - - Right to Left - - - - - - - - - - - Default - - - - - - - Left to Right - - - - - - - Right to Left - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Info.plist b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Info.plist index 5c7ebb780201..5a46616ce88d 100644 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Info.plist +++ b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Info.plist @@ -35,8 +35,6 @@ - NSMainStoryboardFile - Main NSPrincipalClass NSApplication NSSupportsAutomaticTermination diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/main.m b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/main.m deleted file mode 100644 index 1f154fcf69b0..000000000000 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/main.m +++ /dev/null @@ -1,5 +0,0 @@ -#import - -int main(int argc, const char *argv[]) { - return NSApplicationMain(argc, argv); -} diff --git a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld.xcodeproj/project.pbxproj b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld.xcodeproj/project.pbxproj index 63b8b0b4f7c5..452236213426 100644 --- a/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld.xcodeproj/project.pbxproj +++ b/packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld.xcodeproj/project.pbxproj @@ -7,21 +7,18 @@ objects = { /* Begin PBXBuildFile section */ - 5142014D2437B4B30078DB4F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5142014C2437B4B30078DB4F /* AppDelegate.mm */; }; + 5142014D2437B4B30078DB4F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5142014C2437B4B30078DB4F /* AppDelegate.swift */; }; 514201522437B4B40078DB4F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 514201512437B4B40078DB4F /* Assets.xcassets */; }; - 514201552437B4B40078DB4F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 514201532437B4B40078DB4F /* Main.storyboard */; }; - 514201582437B4B40078DB4F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 514201572437B4B40078DB4F /* main.m */; }; + /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 13B07F961A680F5B00A75B9A /* HelloWorld.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; }; 514201492437B4B30078DB4F /* HelloWorld.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 5142014B2437B4B30078DB4F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 5142014C2437B4B30078DB4F /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; + 5142014C2437B4B30078DB4F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 514201512437B4B40078DB4F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 514201542437B4B40078DB4F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 514201562437B4B40078DB4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 514201572437B4B40078DB4F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 514201592437B4B40078DB4F /* HelloWorld.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HelloWorld.entitlements; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -55,12 +52,10 @@ 5142014A2437B4B30078DB4F /* HelloWorld-macOS */ = { isa = PBXGroup; children = ( - 5142014B2437B4B30078DB4F /* AppDelegate.h */, - 5142014C2437B4B30078DB4F /* AppDelegate.mm */, + 5142014C2437B4B30078DB4F /* AppDelegate.swift */, + 514201512437B4B40078DB4F /* Assets.xcassets */, - 514201532437B4B40078DB4F /* Main.storyboard */, 514201562437B4B40078DB4F /* Info.plist */, - 514201572437B4B40078DB4F /* main.m */, 514201592437B4B40078DB4F /* HelloWorld.entitlements */, ); path = "HelloWorld-macOS"; @@ -159,7 +154,6 @@ hasScannedForEncodings = 0; knownRegions = ( en, - Base, ); mainGroup = 83CBB9F61A601CBA00E9B192; productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; @@ -185,7 +179,6 @@ buildActionMask = 2147483647; files = ( 514201522437B4B40078DB4F /* Assets.xcassets in Resources */, - 514201552437B4B40078DB4F /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -282,24 +275,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 514201582437B4B40078DB4F /* main.m in Sources */, - 5142014D2437B4B30078DB4F /* AppDelegate.mm in Sources */, + + 5142014D2437B4B30078DB4F /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - 514201532437B4B40078DB4F /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 514201542437B4B40078DB4F /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; diff --git a/packages/react-native/local-cli/runMacOS/runMacOS.js b/packages/react-native/local-cli/runMacOS/runMacOS.js index 9fad4f6555c6..400b9c6c44f4 100644 --- a/packages/react-native/local-cli/runMacOS/runMacOS.js +++ b/packages/react-native/local-cli/runMacOS/runMacOS.js @@ -37,22 +37,12 @@ const child_process = require('node:child_process'); const path = require('node:path'); +const {styleText} = require('node:util'); -const colors = (() => { - const {WriteStream} = require('node:tty'); - if (WriteStream.prototype.hasColors() && - !process.env.NODE_TEST_CONTEXT && - process.env.NODE_ENV !== 'test' - ) { - return { - bold: (s) => '\u001B[1m' + s + '\u001B[22m', - dim: (s) => '\u001B[2m' + s + '\u001B[22m', - } - } - - const passthrough = (s) => s; - return { bold: passthrough, dim: passthrough }; -})(); +const colors = { + bold: (/** @type {string} */ s) => styleText('bold', s), + dim: (/** @type {string} */ s) => styleText('dim', s), +}; const {logger, CLIError, getDefaultUserTerminal} = ((projectRoot = process.cwd()) => { const cli = require.resolve('@react-native-community/cli/package.json', {paths: [projectRoot]}); diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index 9ccb66223795..12316ec30dab 100644 --- a/packages/react-native/react-native.config.js +++ b/packages/react-native/react-native.config.js @@ -71,9 +71,13 @@ try { // [macOS let apple; try { + const iosPath = require.resolve('@react-native-community/cli-platform-ios', { + paths: [process.cwd()], + }); // $FlowFixMe[untyped-import] apple = findCommunityPlatformPackage( '@react-native-community/cli-platform-apple', + iosPath, ); } catch { if (verbose) { @@ -83,8 +87,19 @@ try { } } -// $FlowFixMe[untyped-import] -const macosCommands = require('./local-cli/runMacOS/runMacOS'); +let macosCommands; +// Loading `runMacOS` requires `@react-native-community/cli`which is an +// optional peer dependency and is not installed when using Expo CLI. +try { + // $FlowFixMe[untyped-import] + macosCommands = require('./local-cli/runMacOS/runMacOS'); +} catch (e) { + if (verbose) { + console.warn( + `Failed to load runMacOS commands, the react-native.config.js may be unusable: ${e instanceof Error ? e.message : String(e)}`, + ); + } +} const { bundleCommand, startCommand, @@ -157,7 +172,9 @@ if (android != null) { } // [macOS -config.commands.push(...macosCommands); +if (macosCommands != null) { + config.commands.push(...macosCommands); +} if (apple) { config.platforms.macos = { linkConfig: () => { @@ -185,8 +202,9 @@ if (apple) { }, projectConfig: apple.getProjectConfig({platformName: 'macos'}), dependencyConfig: apple.getProjectConfig({platformName: 'macos'}), - npmPackageName: require('./scripts/codegen/generate-artifacts-executor/constants') - .REACT_NATIVE, + npmPackageName: + require('./scripts/codegen/generate-artifacts-executor/constants') + .REACT_NATIVE, }; } // macOS] diff --git a/packages/react-native/scripts/cocoapods/autolinking.rb b/packages/react-native/scripts/cocoapods/autolinking.rb index d8e9c7cec2f5..a09280c2ea56 100644 --- a/packages/react-native/scripts/cocoapods/autolinking.rb +++ b/packages/react-native/scripts/cocoapods/autolinking.rb @@ -38,7 +38,8 @@ def list_native_modules!(config_command) config = JSON.parse(json) packages = config["dependencies"] - ios_project_root = Pathname.new(config["project"]["ios"]["sourceDir"]) + project_config = config["project"]["macos"] || config["project"]["ios"] # [macOS] + ios_project_root = Pathname.new(project_config["sourceDir"]) # [macOS] react_native_path = Pathname.new(config["reactNativePath"]) codegen_output_path = ios_project_root.join("build/generated/autolinking/autolinking.json") @@ -49,7 +50,7 @@ def list_native_modules!(config_command) found_pods = [] packages.each do |package_name, package| - next unless package_config = package["platforms"]["ios"] + next unless package_config = package["platforms"]["macos"] || package["platforms"]["ios"] # [macOS] name = package["name"] podspec_path = package_config["podspecPath"] diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js index 71ee4132cd08..78e1d55a95bb 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js @@ -282,6 +282,14 @@ function findExternalLibraries( return []; } } + // [macOS] Under Yarn's pnpm nodeLinker, a package whose `exports` blocks + // `./package.json` (e.g. commander, @react-native/new-app-screen) can't be + // found via `require.main.paths`, leaving `configFilePath` empty. Skip it + // rather than crashing on `fs.readFileSync('')` (matches upstream behavior + // for otherwise-unresolvable dependencies). + if (!configFilePath) { + return []; + } const configFile = JSON.parse(fs.readFileSync(configFilePath, 'utf8')); const codegenConfigFileDir = path.dirname(configFilePath); return extractLibrariesFromJSON(configFile, codegenConfigFileDir); diff --git a/packages/react-native/scripts/ios-prebuild/hermes.js b/packages/react-native/scripts/ios-prebuild/hermes.js index 02ef9fdc88cb..284eb56ba952 100644 --- a/packages/react-native/scripts/ios-prebuild/hermes.js +++ b/packages/react-native/scripts/ios-prebuild/hermes.js @@ -8,14 +8,9 @@ * @format */ -const { - findMatchingHermesVersion, - hermesCommitAtMergeBase, -} = require('./microsoft-hermes'); // [macOS] const {computeNightlyTarballURL, createLogger} = require('./utils'); const {execSync} = require('child_process'); const fs = require('fs'); -const os = require('os'); // [macOS] const path = require('path'); const stream = require('stream'); const {promisify} = require('util'); @@ -61,27 +56,6 @@ async function prepareHermesArtifactsAsync( // Resolve the version from the environment variable or use the default version let resolvedVersion = process.env.HERMES_VERSION ?? 'nightly'; - // [macOS] Map macOS version to upstream RN version for artifact lookup. - let allowBuildFromSource = false; - if (!process.env.HERMES_VERSION) { - const packageJsonPath = path.resolve( - __dirname, - '..', - '..', - 'package.json', - ); - const mappedVersion = findMatchingHermesVersion(packageJsonPath); - if (mappedVersion != null) { - hermesLog( - `Using mapped upstream version for Hermes lookup: ${mappedVersion}`, - ); - resolvedVersion = mappedVersion; - } else { - allowBuildFromSource = true; - } - } - // macOS] - if (resolvedVersion === 'nightly') { hermesLog('Using latest nightly tarball'); const hermesVersion = await getNightlyVersionFromNPM(); @@ -100,11 +74,7 @@ async function prepareHermesArtifactsAsync( return artifactsPath; } - const sourceType = await hermesSourceType( - resolvedVersion, - buildType, - allowBuildFromSource, // [macOS] - ); + const sourceType = await hermesSourceType(resolvedVersion, buildType); localPath = await resolveSourceFromSourceType( sourceType, resolvedVersion, @@ -154,7 +124,6 @@ type HermesEngineSourceType = | 'local_prebuilt_tarball' | 'download_prebuild_tarball' | 'download_prebuilt_nightly_tarball' - | 'build_from_hermes_commit' // [macOS] */ const HermesEngineSourceTypes /*:{ @@ -264,7 +233,6 @@ async function hermesArtifactExists( async function hermesSourceType( version /*: string */, buildType /*: BuildFlavor */, - allowBuildFromSource /*: boolean */ = false, // [macOS] ) /*: Promise */ { if (hermesEngineTarballEnvvarDefined()) { hermesLog('Using local prebuild tarball'); @@ -284,15 +252,6 @@ async function hermesSourceType( return HermesEngineSourceTypes.DOWNLOAD_PREBUILT_NIGHTLY_TARBALL; } - // [macOS] Fall back to building Hermes from the merge-base commit. - if (allowBuildFromSource) { - hermesLog( - 'No prebuilt Hermes artifact found. Will attempt to resolve from merge base with facebook/react-native.', - ); - return HermesEngineSourceTypes.BUILD_FROM_HERMES_COMMIT; - } - // macOS] - hermesLog( 'Using download prebuild nightly tarball - this is a fallback and might not work.', ); @@ -312,8 +271,6 @@ async function resolveSourceFromSourceType( return downloadPrebuildTarball(version, buildType, artifactsPath); case HermesEngineSourceTypes.DOWNLOAD_PREBUILT_NIGHTLY_TARBALL: return downloadPrebuiltNightlyTarball(version, buildType, artifactsPath); - case HermesEngineSourceTypes.BUILD_FROM_HERMES_COMMIT: // [macOS] - return buildFromHermesCommit(version, buildType, artifactsPath); default: abort( `[Hermes] Unsupported or invalid source type provided: ${sourceType}`, @@ -420,116 +377,6 @@ async function downloadHermesTarball( return destPath; } -// [macOS -/** - * Handles the case where no prebuilt Hermes artifacts are available. - * Determines the Hermes commit at the merge base with facebook/react-native - * and provides actionable guidance for building Hermes. - */ -async function buildFromHermesCommit( - version /*: string */, - buildType /*: BuildFlavor */, - artifactsPath /*: string */, -) /*: Promise */ { - const {commit, timestamp} = hermesCommitAtMergeBase(); - hermesLog( - `Building Hermes from source at commit ${commit} (merge base timestamp: ${timestamp})`, - ); - - const HERMES_GITHUB_URL = 'https://github.com/facebook/hermes.git'; - const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hermes-build-')); - const hermesDir = path.join(tmpDir, 'hermes'); - const inheritStdio = {stdio: 'inherit'}; - - try { - // Clone Hermes at the identified commit using the most efficient - // single-fetch pattern (see https://github.com/actions/checkout) - hermesLog(`Cloning Hermes at commit ${commit}...`); - execSync(`git init "${hermesDir}"`, inheritStdio); - execSync( - `git -C "${hermesDir}" remote add origin ${HERMES_GITHUB_URL}`, - inheritStdio, - ); - execSync( - `git -C "${hermesDir}" fetch --no-tags --depth 1 origin +${commit}:refs/remotes/origin/main`, - {...inheritStdio, timeout: 300000}, - ); - execSync(`git -C "${hermesDir}" checkout main`, inheritStdio); - - const reactNativeRoot = path.resolve(__dirname, '..', '..'); - const buildScript = path.join( - reactNativeRoot, - 'sdks', - 'hermes-engine', - 'utils', - 'build-ios-framework.sh', - ); - - const buildEnv = { - ...process.env, - BUILD_TYPE: buildType, - HERMES_PATH: hermesDir, - JSI_PATH: path.join(hermesDir, 'API', 'jsi'), - REACT_NATIVE_PATH: reactNativeRoot, - // Deployment targets matching react-native-macos minimums - IOS_DEPLOYMENT_TARGET: '15.1', - MAC_DEPLOYMENT_TARGET: '14.0', - XROS_DEPLOYMENT_TARGET: '1.0', - RELEASE_VERSION: version, - }; - - hermesLog(`Building Hermes frameworks (${buildType})...`); - execSync(`bash "${buildScript}"`, { - ...inheritStdio, - cwd: hermesDir, - timeout: 3600000, // 60 minutes - env: buildEnv, - }); - - // Create tarball from the destroot (same structure as Maven artifacts) - const tarballName = `hermes-ios-${buildType.toLowerCase()}.tar.gz`; - const tarballPath = path.join(artifactsPath, tarballName); - hermesLog('Creating Hermes tarball from build output...'); - execSync( - `tar -czf "${tarballPath}" -C "${hermesDir}" destroot`, - inheritStdio, - ); - - hermesLog(`Hermes built from source and packaged at ${tarballPath}`); - return tarballPath; - } catch (e) { - // Dump CMake error logs before cleanup for debugging - try { - const cmakeErrorLog = path.join( - hermesDir, - 'build_host_hermesc', - 'CMakeFiles', - 'CMakeError.log', - ); - if (fs.existsSync(cmakeErrorLog)) { - hermesLog('=== CMakeError.log ==='); - hermesLog(fs.readFileSync(cmakeErrorLog, 'utf8')); - } - } catch (_) { - // ignore - } - - abort( - `[Hermes] Failed to build Hermes from source at commit ${commit}.\n` + - `Error: ${e.message}\n` + - `To resolve, either:\n` + - ` 1. Set HERMES_ENGINE_TARBALL_PATH to a local Hermes tarball path\n` + - ` 2. Set HERMES_VERSION to an upstream RN version with published artifacts\n` + - ` 3. Build Hermes manually from commit ${commit} and provide the tarball path via HERMES_ENGINE_TARBALL_PATH`, - ); - return ''; // unreachable - } finally { - // Clean up - fs.rmSync(tmpDir, {recursive: true, force: true}); - } -} -// macOS] - function abort(message /*: string */) { hermesLog(message, 'error'); throw new Error(message); diff --git a/packages/react-native/scripts/ios-prebuild/microsoft-hermes.js b/packages/react-native/scripts/ios-prebuild/microsoft-hermes.js index 9bdeec72d8fc..968b8b2aafe2 100644 --- a/packages/react-native/scripts/ios-prebuild/microsoft-hermes.js +++ b/packages/react-native/scripts/ios-prebuild/microsoft-hermes.js @@ -4,11 +4,8 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * [macOS] Resolves Hermes artifacts for macOS fork branches. - * - * Library functions for version resolution and resolving Hermes commits. - * The CI entry point that orchestrates downloading, recomposing, and - * caching is at .github/scripts/resolve-hermes.mts. + * [macOS] Library functions for resolving React Native versions used by + * Hermes-related dependency artifacts. * * @flow * @format @@ -17,8 +14,6 @@ const {createLogger} = require('./utils'); const {execSync} = require('child_process'); const fs = require('fs'); -const os = require('os'); -const path = require('path'); const macosLog = createLogger('macOS'); @@ -56,88 +51,6 @@ function findMatchingHermesVersion( return null; } -/** - * Finds the Hermes commit at the merge base with facebook/react-native. - * Used on the main branch (1000.0.0) where no prebuilt artifacts exist. - * - * Since react-native-macos lags slightly behind facebook/react-native, we can't always use - * the latest Hermes commit because Hermes and JSI don't always guarantee backwards compatibility. - * Instead, we take the commit hash of Hermes at the time of the merge base with facebook/react-native. - * - * This is the JavaScript equivalent of the Ruby `hermes_commit_at_merge_base` - * in sdks/hermes-engine/hermes-utils.rb. - */ -function hermesCommitAtMergeBase() /*: {| commit: string, timestamp: string |} */ { - const HERMES_GITHUB_URL = 'https://github.com/facebook/hermes.git'; - - // Fetch upstream react-native - macosLog('Fetching facebook/react-native to find merge base...'); - try { - execSync('git fetch -q https://github.com/facebook/react-native.git', { - stdio: 'pipe', - }); - } catch (e) { - abort( - '[Hermes] Failed to fetch facebook/react-native into the local repository.', - ); - } - - // Find merge base between our HEAD and upstream's HEAD - const mergeBase = execSync('git merge-base FETCH_HEAD HEAD', { - encoding: 'utf8', - }).trim(); - if (!mergeBase) { - abort( - "[Hermes] Unable to find the merge base between our HEAD and upstream's HEAD.", - ); - } - - // Get timestamp of merge base - const timestamp = execSync(`git show -s --format=%ci ${mergeBase}`, { - encoding: 'utf8', - }).trim(); - if (!timestamp) { - abort( - `[Hermes] Unable to extract the timestamp for the merge base (${mergeBase}).`, - ); - } - - // Clone Hermes bare (minimal) into a temp directory and find the commit - macosLog( - `Merge base timestamp: ${timestamp}. Cloning Hermes to find matching commit...`, - ); - const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hermes-')); - const hermesGitDir = path.join(tmpDir, 'hermes.git'); - - try { - // Explicitly use Hermes 'main' branch since the default branch changed to 'static_h' (Hermes V1) - execSync( - `git clone -q --bare --filter=blob:none --single-branch --branch main ${HERMES_GITHUB_URL} "${hermesGitDir}"`, - {stdio: 'pipe', timeout: 120000}, - ); - - // Find the Hermes commit at the time of the merge base on branch 'main' - const commit = execSync( - `git --git-dir="${hermesGitDir}" rev-list -1 --before="${timestamp}" refs/heads/main`, - {encoding: 'utf8'}, - ).trim(); - - if (!commit) { - abort( - `[Hermes] Unable to find the Hermes commit hash at time ${timestamp} on branch 'main'.`, - ); - } - - macosLog( - `Using Hermes commit from the merge base with facebook/react-native: ${commit} (timestamp: ${timestamp})`, - ); - return {commit, timestamp}; - } finally { - // Clean up temp directory - fs.rmSync(tmpDir, {recursive: true, force: true}); - } -} - /** * Finds the upstream react-native version at the merge base with facebook/react-native. * Falls back to null if the version at merge base is also 1000.0.0 (i.e. merge base is @@ -145,8 +58,8 @@ function hermesCommitAtMergeBase() /*: {| commit: string, timestamp: string |} * */ function findVersionAtMergeBase() /*: ?string */ { try { - // hermesCommitAtMergeBase() already fetches facebook/react-native, but we - // might not have FETCH_HEAD if this runs standalone. Fetch it. + // Ensure facebook/react-native is fetched so FETCH_HEAD is available when + // this runs standalone. execSync('git fetch -q https://github.com/facebook/react-native.git', { stdio: 'pipe', timeout: 60000, @@ -188,14 +101,8 @@ async function getLatestStableVersionFromNPM() /*: Promise */ { return json.version; } -function abort(message /*: string */) { - macosLog(message, 'error'); - throw new Error(message); -} - module.exports = { findMatchingHermesVersion, - hermesCommitAtMergeBase, findVersionAtMergeBase, getLatestStableVersionFromNPM, }; diff --git a/packages/react-native/scripts/ios-prebuild/setup.js b/packages/react-native/scripts/ios-prebuild/setup.js index 4015dd858bc3..f6a1905c1604 100644 --- a/packages/react-native/scripts/ios-prebuild/setup.js +++ b/packages/react-native/scripts/ios-prebuild/setup.js @@ -151,7 +151,8 @@ async function setup( link('Libraries/LinkingIOS', 'React'); link('Libraries/Settings', 'React'); - link('React/RCTUIKit', 'React'); // [macOS] + link('ReactApple/Libraries/RCTUIKit', 'React'); // [macOS] + link('ReactApple/Libraries/RCTUIKit', 'RCTUIKit'); // [macOS] link('Libraries/PushNotificationIOS', 'React'); link('Libraries/Settings', 'React'); link('Libraries/Vibration', 'React'); diff --git a/packages/react-native/scripts/react_native_pods.rb b/packages/react-native/scripts/react_native_pods.rb index cf27f021b7d2..12042ea800a9 100644 --- a/packages/react-native/scripts/react_native_pods.rb +++ b/packages/react-native/scripts/react_native_pods.rb @@ -147,7 +147,7 @@ def use_react_native! ( if !ReactNativeCoreUtils.build_rncore_from_source() pod 'React-Core-prebuilt', :podspec => "#{prefix}/React-Core-prebuilt.podspec", :modular_headers => true end - pod 'React-RCTUIKit', :path => "#{prefix}/" + pod 'React-RCTUIKit', :path => "#{prefix}/" # [macOS] pod 'React-Core', :path => "#{prefix}/" pod 'React-CoreModules', :path => "#{prefix}/React/CoreModules" pod 'React-RCTRuntime', :path => "#{prefix}/React/Runtime" diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index bd534f086d39..9d7fb83bc398 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -21,6 +21,14 @@ end prepare_react_native_project! +# [macOS +# add_dependency() reads this while evaluating podspecs to generate +# per-platform framework header search paths for this multi-platform workspace. +$RN_PLATFORMS = %w[iOS macOS visionOS] +# macOS] + +IN_CI = ENV['CI'] == 'true' + @prefix_path = "../react-native" linkage = ENV['USE_FRAMEWORKS'] @@ -97,6 +105,25 @@ end # visionOS] post_install do |installer| - $RN_PLATFORMS = %w[iOS macOS visionOS] # [macOS] react_native_post_install(installer, @prefix_path, :mac_catalyst_enabled => false) + + # [macOS + # Disambiguate same-named per-platform framework targets. Without + # SUPPORTED_PLATFORMS, Xcode can pull multiple Hermes targets into one build + # and their script phases declare duplicate outputs. + if USE_FRAMEWORKS + supported_platforms_by_sdk = { + "iphoneos" => "iphoneos iphonesimulator", + "macosx" => "macosx", + "xros" => "xros xrsimulator", + } + installer.pods_project.native_targets.each do |target| + target.build_configurations.each do |config| + supported_platforms = supported_platforms_by_sdk[config.build_settings["SDKROOT"]] + config.build_settings["SUPPORTED_PLATFORMS"] = supported_platforms if supported_platforms + end + end + installer.pods_project.save + end + # macOS] end diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index f0a475d39a42..51986bb00540 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -1,14 +1,25 @@ PODS: - - FBLazyVector (0.85.3) + - boost (1.84.0) + - DoubleConversion (1.1.6) + - fast_float (8.0.0) + - FBLazyVector (0.85.4) + - fmt (12.1.0) + - glog (0.3.5) - hermes-engine (250829098.0.10): - hermes-engine/Pre-built (= 250829098.0.10) - hermes-engine/Pre-built (250829098.0.10) - MyNativeView (0.85.3): - - hermes-engine + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -23,14 +34,20 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - NativeCxxModuleExample (0.85.3): - - hermes-engine + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -45,37 +62,63 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - OCMock (3.9.4) - - RCTDeprecation (0.85.3) - - RCTRequired (0.85.3) - - RCTSwiftUI (0.85.3) - - RCTSwiftUIWrapper (0.85.3): + - RCT-Folly (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCT-Folly/Default (= 2024.11.18.00) + - RCT-Folly/Default (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCT-Folly/Fabric (2024.11.18.00): + - boost + - DoubleConversion + - fast_float (= 8.0.0) + - fmt (= 12.1.0) + - glog + - RCTDeprecation (0.85.4) + - RCTRequired (0.85.4) + - RCTSwiftUI (0.85.4): + - React-RCTUIKit + - RCTSwiftUIWrapper (0.85.4): - RCTSwiftUI - - RCTTypeSafety (0.85.3): - - FBLazyVector (= 0.85.3) - - RCTRequired (= 0.85.3) - - React-Core (= 0.85.3) - - React (0.85.3): - - React-Core (= 0.85.3) - - React-Core/DevSupport (= 0.85.3) - - React-Core/RCTWebSocket (= 0.85.3) - - React-RCTActionSheet (= 0.85.3) - - React-RCTAnimation (= 0.85.3) - - React-RCTBlob (= 0.85.3) - - React-RCTImage (= 0.85.3) - - React-RCTLinking (= 0.85.3) - - React-RCTNetwork (= 0.85.3) - - React-RCTSettings (= 0.85.3) - - React-RCTText (= 0.85.3) - - React-RCTVibration (= 0.85.3) - - React-callinvoker (0.85.3) - - React-Core (0.85.3): - - hermes-engine + - RCTTypeSafety (0.85.4): + - FBLazyVector (= 0.85.4) + - RCTRequired (= 0.85.4) + - React-Core (= 0.85.4) + - React (0.85.4): + - React-Core (= 0.85.4) + - React-Core/DevSupport (= 0.85.4) + - React-Core/RCTWebSocket (= 0.85.4) + - React-RCTActionSheet (= 0.85.4) + - React-RCTAnimation (= 0.85.4) + - React-RCTBlob (= 0.85.4) + - React-RCTImage (= 0.85.4) + - React-RCTLinking (= 0.85.4) + - React-RCTNetwork (= 0.85.4) + - React-RCTSettings (= 0.85.4) + - React-RCTText (= 0.85.4) + - React-RCTVibration (= 0.85.4) + - React-callinvoker (0.85.4) + - React-Core (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default (= 0.85.3) + - React-Core/Default (= 0.85.4) - React-cxxreact - React-featureflags - React-hermes @@ -85,17 +128,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core-prebuilt (0.85.3): - - ReactNativeDependencies - - React-Core/CoreModulesHeaders (0.85.3): - - hermes-engine + - React-Core/CoreModulesHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -106,15 +154,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/Default (0.85.3): - - hermes-engine + - React-Core/Default (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-cxxreact - React-featureflags - React-hermes @@ -124,17 +179,24 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/DevSupport (0.85.3): - - hermes-engine + - React-Core/DevSupport (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default (= 0.85.3) - - React-Core/RCTWebSocket (= 0.85.3) + - React-Core/Default (= 0.85.4) + - React-Core/RCTWebSocket (= 0.85.4) - React-cxxreact - React-featureflags - React-hermes @@ -144,15 +206,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTActionSheetHeaders (0.85.3): - - hermes-engine + - React-Core/RCTActionSheetHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -163,15 +232,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTAnimationHeaders (0.85.3): - - hermes-engine + - React-Core/RCTAnimationHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -182,15 +258,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTBlobHeaders (0.85.3): - - hermes-engine + - React-Core/RCTBlobHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -201,15 +284,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTImageHeaders (0.85.3): - - hermes-engine + - React-Core/RCTImageHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -220,15 +310,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTLinkingHeaders (0.85.3): - - hermes-engine + - React-Core/RCTLinkingHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -239,15 +336,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTNetworkHeaders (0.85.3): - - hermes-engine + - React-Core/RCTNetworkHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -258,15 +362,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTPushNotificationHeaders (0.85.3): - - hermes-engine + - React-Core/RCTPushNotificationHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -277,15 +388,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTSettingsHeaders (0.85.3): - - hermes-engine + - React-Core/RCTSettingsHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -296,15 +414,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTTextHeaders (0.85.3): - - hermes-engine + - React-Core/RCTTextHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -315,15 +440,22 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTVibrationHeaders (0.85.3): - - hermes-engine + - React-Core/RCTVibrationHeaders (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -334,16 +466,23 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Core/RCTWebSocket (0.85.3): - - hermes-engine + - React-Core/RCTWebSocket (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTDeprecation - - React-Core-prebuilt - - React-Core/Default (= 0.85.3) + - React-Core/Default (= 0.85.4) - React-cxxreact - React-featureflags - React-hermes @@ -353,50 +492,69 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-CoreModules (0.85.3): - - RCTTypeSafety (= 0.85.3) - - React-Core-prebuilt - - React-Core/CoreModulesHeaders (= 0.85.3) - - React-debug - - React-featureflags - - React-jsi (= 0.85.3) + - React-CoreModules (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - RCTTypeSafety (= 0.85.4) + - React-Core/CoreModulesHeaders (= 0.85.4) + - React-debug + - React-featureflags + - React-jsi (= 0.85.4) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.85.3) + - React-RCTImage (= 0.85.4) - React-runtimeexecutor - React-utils - ReactCommon - - ReactNativeDependencies - - React-cxxreact (0.85.3): - - hermes-engine - - React-callinvoker (= 0.85.3) - - React-Core-prebuilt - - React-debug (= 0.85.3) - - React-jsi (= 0.85.3) + - SocketRocket + - React-cxxreact (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.85.4) + - React-debug (= 0.85.4) + - React-jsi (= 0.85.4) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.85.3) - - React-perflogger (= 0.85.3) + - React-logger (= 0.85.4) + - React-perflogger (= 0.85.4) - React-runtimeexecutor - - React-timing (= 0.85.3) - - React-utils - - ReactNativeDependencies - - React-debug (0.85.3): - - React-debug/redbox (= 0.85.3) - - React-debug/redbox (0.85.3) - - React-defaultsnativemodule (0.85.3): - - hermes-engine - - React-Core-prebuilt + - React-timing (= 0.85.4) + - React-utils + - SocketRocket + - React-debug (0.85.4): + - React-debug/redbox (= 0.85.4) + - React-debug/redbox (0.85.4) + - React-defaultsnativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-domnativemodule - React-Fabric/animated - React-featureflags @@ -409,11 +567,17 @@ PODS: - React-mutationobservernativemodule - React-RCTFBReactNativeSpec - React-webperformancenativemodule - - ReactNativeDependencies + - SocketRocket - Yoga - - React-domnativemodule (0.85.3): - - hermes-engine - - React-Core-prebuilt + - React-domnativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-Fabric - React-Fabric/bridging - React-FabricComponents @@ -423,34 +587,40 @@ PODS: - React-RCTFBReactNativeSpec - React-runtimeexecutor - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Fabric (0.85.3): - - hermes-engine + - React-Fabric (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/animated (= 0.85.3) - - React-Fabric/animationbackend (= 0.85.3) - - React-Fabric/animations (= 0.85.3) - - React-Fabric/attributedstring (= 0.85.3) - - React-Fabric/bridging (= 0.85.3) - - React-Fabric/componentregistry (= 0.85.3) - - React-Fabric/componentregistrynative (= 0.85.3) - - React-Fabric/components (= 0.85.3) - - React-Fabric/consistency (= 0.85.3) - - React-Fabric/core (= 0.85.3) - - React-Fabric/dom (= 0.85.3) - - React-Fabric/imagemanager (= 0.85.3) - - React-Fabric/leakchecker (= 0.85.3) - - React-Fabric/mounting (= 0.85.3) - - React-Fabric/observers (= 0.85.3) - - React-Fabric/scheduler (= 0.85.3) - - React-Fabric/telemetry (= 0.85.3) - - React-Fabric/uimanager (= 0.85.3) + - React-Fabric/animated (= 0.85.4) + - React-Fabric/animationbackend (= 0.85.4) + - React-Fabric/animations (= 0.85.4) + - React-Fabric/attributedstring (= 0.85.4) + - React-Fabric/bridging (= 0.85.4) + - React-Fabric/componentregistry (= 0.85.4) + - React-Fabric/componentregistrynative (= 0.85.4) + - React-Fabric/components (= 0.85.4) + - React-Fabric/consistency (= 0.85.4) + - React-Fabric/core (= 0.85.4) + - React-Fabric/dom (= 0.85.4) + - React-Fabric/imagemanager (= 0.85.4) + - React-Fabric/leakchecker (= 0.85.4) + - React-Fabric/mounting (= 0.85.4) + - React-Fabric/observers (= 0.85.4) + - React-Fabric/scheduler (= 0.85.4) + - React-Fabric/telemetry (= 0.85.4) + - React-Fabric/uimanager (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -461,13 +631,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/animated (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/animated (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric/animationbackend @@ -481,13 +657,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/animationbackend (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/animationbackend (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -500,13 +682,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/animations (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/animations (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -519,13 +707,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/attributedstring (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/attributedstring (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -538,13 +732,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/bridging (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/bridging (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -557,13 +757,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/componentregistry (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/componentregistry (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -576,13 +782,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/componentregistrynative (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/componentregistrynative (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -595,19 +807,25 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/components (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/components (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.85.3) - - React-Fabric/components/root (= 0.85.3) - - React-Fabric/components/scrollview (= 0.85.3) - - React-Fabric/components/view (= 0.85.3) + - React-Fabric/components/legacyviewmanagerinterop (= 0.85.4) + - React-Fabric/components/root (= 0.85.4) + - React-Fabric/components/scrollview (= 0.85.4) + - React-Fabric/components/view (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -618,13 +836,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/components/legacyviewmanagerinterop (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/components/legacyviewmanagerinterop (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -637,13 +861,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/components/root (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/components/root (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -656,13 +886,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/components/scrollview (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/components/scrollview (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -675,13 +911,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/components/view (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/components/view (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -695,14 +937,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-Fabric/consistency (0.85.3): - - hermes-engine + - React-Fabric/consistency (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -715,13 +963,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/core (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/core (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -734,13 +988,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/dom (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/dom (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -753,13 +1013,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/imagemanager (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/imagemanager (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -772,13 +1038,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/leakchecker (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/leakchecker (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -791,13 +1063,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/mounting (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/mounting (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -810,18 +1088,24 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/observers (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/observers (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.85.3) - - React-Fabric/observers/intersection (= 0.85.3) - - React-Fabric/observers/mutation (= 0.85.3) + - React-Fabric/observers/events (= 0.85.4) + - React-Fabric/observers/intersection (= 0.85.4) + - React-Fabric/observers/mutation (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -832,13 +1116,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/observers/events (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/observers/events (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -851,13 +1141,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/observers/intersection (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/observers/intersection (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -870,13 +1166,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/observers/mutation (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/observers/mutation (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -889,13 +1191,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/scheduler (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/scheduler (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric/animationbackend @@ -912,13 +1220,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/telemetry (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/telemetry (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -931,16 +1245,22 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/uimanager (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/uimanager (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.85.3) + - React-Fabric/uimanager/consistency (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -952,13 +1272,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-Fabric/uimanager/consistency (0.85.3): - - hermes-engine + - SocketRocket + - React-Fabric/uimanager/consistency (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -972,50 +1298,24 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-FabricComponents (0.85.3): - - hermes-engine - - RCTRequired - - RCTTypeSafety - - React-Core - - React-Core-prebuilt - - React-cxxreact - - React-debug - - React-Fabric - - React-FabricComponents/components (= 0.85.3) - - React-FabricComponents/textlayoutmanager (= 0.85.3) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - ReactNativeDependencies - - Yoga - - React-FabricComponents/components (0.85.3): - - hermes-engine + - SocketRocket + - React-FabricComponents (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.85.3) - - React-FabricComponents/components/iostextinput (= 0.85.3) - - React-FabricComponents/components/modal (= 0.85.3) - - React-FabricComponents/components/rncore (= 0.85.3) - - React-FabricComponents/components/safeareaview (= 0.85.3) - - React-FabricComponents/components/scrollview (= 0.85.3) - - React-FabricComponents/components/switch (= 0.85.3) - - React-FabricComponents/components/text (= 0.85.3) - - React-FabricComponents/components/textinput (= 0.85.3) - - React-FabricComponents/components/unimplementedview (= 0.85.3) - - React-FabricComponents/components/virtualview (= 0.85.3) + - React-FabricComponents/components (= 0.85.4) + - React-FabricComponents/textlayoutmanager (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -1026,17 +1326,33 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/inputaccessory (0.85.3): - - hermes-engine + - React-FabricComponents/components (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.85.4) + - React-FabricComponents/components/iostextinput (= 0.85.4) + - React-FabricComponents/components/modal (= 0.85.4) + - React-FabricComponents/components/rncore (= 0.85.4) + - React-FabricComponents/components/safeareaview (= 0.85.4) + - React-FabricComponents/components/switch (= 0.85.4) + - React-FabricComponents/components/text (= 0.85.4) + - React-FabricComponents/components/textinput (= 0.85.4) + - React-FabricComponents/components/unimplementedview (= 0.85.4) + - React-FabricComponents/components/virtualview (= 0.85.4) - React-featureflags - React-graphics - React-jsi @@ -1047,14 +1363,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/iostextinput (0.85.3): - - hermes-engine + - React-FabricComponents/components/inputaccessory (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1068,14 +1390,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/modal (0.85.3): - - hermes-engine + - React-FabricComponents/components/iostextinput (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1089,14 +1417,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/rncore (0.85.3): - - hermes-engine + - React-FabricComponents/components/modal (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1110,14 +1444,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/safeareaview (0.85.3): - - hermes-engine + - React-FabricComponents/components/rncore (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1131,14 +1471,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/scrollview (0.85.3): - - hermes-engine + - React-FabricComponents/components/safeareaview (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1152,14 +1498,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/switch (0.85.3): - - hermes-engine + - React-FabricComponents/components/switch (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1173,14 +1525,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/text (0.85.3): - - hermes-engine + - React-FabricComponents/components/text (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1194,14 +1552,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/textinput (0.85.3): - - hermes-engine + - React-FabricComponents/components/textinput (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1215,14 +1579,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/unimplementedview (0.85.3): - - hermes-engine + - React-FabricComponents/components/unimplementedview (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1236,14 +1606,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/components/virtualview (0.85.3): - - hermes-engine + - React-FabricComponents/components/virtualview (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1257,14 +1633,20 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricComponents/textlayoutmanager (0.85.3): - - hermes-engine + - React-FabricComponents/textlayoutmanager (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1278,81 +1660,130 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-FabricImage (0.85.3): - - hermes-engine - - RCTRequired (= 0.85.3) - - RCTTypeSafety (= 0.85.3) - - React-Core-prebuilt + - React-FabricImage (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired (= 0.85.4) + - RCTTypeSafety (= 0.85.4) - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.85.3) + - React-jsiexecutor (= 0.85.4) - React-logger - React-rendererdebug - React-utils - ReactCommon - - ReactNativeDependencies + - SocketRocket - Yoga - - React-featureflags (0.85.3): - - React-Core-prebuilt - - ReactNativeDependencies - - React-featureflagsnativemodule (0.85.3): - - hermes-engine - - React-Core-prebuilt + - React-featureflags (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-featureflagsnativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-featureflags - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-graphics (0.85.3): - - hermes-engine - - React-Core-prebuilt + - SocketRocket + - React-graphics (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-Core - React-featureflags - React-jsi - React-jsiexecutor - React-utils - - ReactNativeDependencies - - React-hermes (0.85.3): + - SocketRocket + - React-hermes (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt - - React-cxxreact (= 0.85.3) + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact (= 0.85.4) - React-jsi - - React-jsiexecutor (= 0.85.3) + - React-jsiexecutor (= 0.85.4) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-oscompat - - React-perflogger (= 0.85.3) + - React-perflogger (= 0.85.4) - React-runtimeexecutor - - ReactNativeDependencies - - React-idlecallbacksnativemodule (0.85.3): + - SocketRocket + - React-idlecallbacksnativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - React-runtimeexecutor - React-runtimescheduler - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-ImageManager (0.85.3): - - React-Core-prebuilt + - SocketRocket + - React-ImageManager (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-Core/Default - React-debug - React-Fabric - React-graphics - React-rendererdebug - React-utils - - ReactNativeDependencies - - React-intersectionobservernativemodule (0.85.3): + - SocketRocket + - React-intersectionobservernativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-Fabric - React-Fabric/bridging @@ -1363,24 +1794,42 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-jserrorhandler (0.85.3): + - React-jserrorhandler (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-debug - React-featureflags - React-jsi - ReactCommon/turbomodule/bridging - - ReactNativeDependencies - - React-jsi (0.85.3): - - hermes-engine - - React-Core-prebuilt - - ReactNativeDependencies - - React-jsiexecutor (0.85.3): - - hermes-engine - - React-Core-prebuilt + - SocketRocket + - React-jsi (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-jsiexecutor (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-debug - React-jserrorhandler @@ -1392,68 +1841,122 @@ PODS: - React-perflogger - React-runtimeexecutor - React-utils - - ReactNativeDependencies - - React-jsinspector (0.85.3): + - SocketRocket + - React-jsinspector (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.85.3) + - React-perflogger (= 0.85.4) - React-runtimeexecutor - React-utils - - ReactNativeDependencies - - React-jsinspectorcdp (0.85.3): - - React-Core-prebuilt - - ReactNativeDependencies - - React-jsinspectornetwork (0.85.3): - - React-Core-prebuilt + - SocketRocket + - React-jsinspectorcdp (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-jsinspectornetwork (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-jsinspectorcdp - - ReactNativeDependencies - - React-jsinspectortracing (0.85.3): + - SocketRocket + - React-jsinspectortracing (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-jsi - React-jsinspectornetwork - React-oscompat - React-timing - React-utils - - ReactNativeDependencies - - React-jsitooling (0.85.3): + - SocketRocket + - React-jsitooling (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt - - React-cxxreact (= 0.85.3) + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact (= 0.85.4) - React-debug - - React-jsi (= 0.85.3) + - React-jsi (= 0.85.4) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - React-utils - - ReactNativeDependencies - - React-jsitracing (0.85.3): - - React-jsi - - React-logger (0.85.3): - - React-Core-prebuilt - - ReactNativeDependencies - - React-Mapbuffer (0.85.3): - - React-Core-prebuilt - - React-debug - - ReactNativeDependencies - - React-microtasksnativemodule (0.85.3): - - hermes-engine - - React-Core-prebuilt + - SocketRocket + - React-jsitracing (0.85.4): + - React-jsi + - React-logger (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-Mapbuffer (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - SocketRocket + - React-microtasksnativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-mutationobservernativemodule (0.85.3): + - SocketRocket + - React-mutationobservernativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-Fabric - React-Fabric/bridging @@ -1464,13 +1967,19 @@ PODS: - React-RCTFBReactNativeSpec - React-runtimeexecutor - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga - - React-NativeModulesApple (0.85.3): - - hermes-engine + - React-NativeModulesApple (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-callinvoker - React-Core - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1480,39 +1989,69 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactNativeDependencies - - React-networking (0.85.3): - - React-Core-prebuilt + - SocketRocket + - React-networking (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-jsinspectornetwork - React-jsinspectortracing - React-performancetimeline - React-timing - - ReactNativeDependencies - - React-oscompat (0.85.3) - - React-perflogger (0.85.3): - - React-Core-prebuilt - - ReactNativeDependencies - - React-performancecdpmetrics (0.85.3): - - hermes-engine - - React-Core-prebuilt + - SocketRocket + - React-oscompat (0.85.4) + - React-perflogger (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-performancecdpmetrics (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-jsi - React-performancetimeline - React-runtimeexecutor - React-timing - - ReactNativeDependencies - - React-performancetimeline (0.85.3): - - React-Core-prebuilt + - SocketRocket + - React-performancetimeline (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-featureflags - React-jsinspector - React-jsinspectortracing - React-perflogger - React-timing - - ReactNativeDependencies - - React-RCTActionSheet (0.85.3): - - React-Core/RCTActionSheetHeaders (= 0.85.3) - - React-RCTAnimation (0.85.3): + - SocketRocket + - React-RCTActionSheet (0.85.4): + - React-Core/RCTActionSheetHeaders (= 0.85.4) + - React-RCTAnimation (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - RCTTypeSafety - - React-Core-prebuilt - React-Core/RCTAnimationHeaders - React-debug - React-featureflags @@ -1520,13 +2059,19 @@ PODS: - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactNativeDependencies - - React-RCTAppDelegate (0.85.3): - - hermes-engine + - SocketRocket + - React-RCTAppDelegate (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-CoreModules - React-debug - React-defaultsnativemodule @@ -1548,10 +2093,16 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon - - ReactNativeDependencies - - React-RCTBlob (0.85.3): - - hermes-engine - - React-Core-prebuilt + - SocketRocket + - React-RCTBlob (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi @@ -1561,12 +2112,18 @@ PODS: - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - ReactNativeDependencies - - React-RCTFabric (0.85.3): - - hermes-engine + - SocketRocket + - React-RCTFabric (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTSwiftUIWrapper - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-FabricComponents @@ -1591,25 +2148,37 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies + - SocketRocket - Yoga - - React-RCTFBReactNativeSpec (0.85.3): - - hermes-engine + - React-RCTFBReactNativeSpec (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.85.3) + - React-RCTFBReactNativeSpec/components (= 0.85.4) - ReactCommon - - ReactNativeDependencies - - React-RCTFBReactNativeSpec/components (0.85.3): - - hermes-engine + - SocketRocket + - React-RCTFBReactNativeSpec/components (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -1619,28 +2188,40 @@ PODS: - React-rendererdebug - React-utils - ReactCommon - - ReactNativeDependencies + - SocketRocket - Yoga - - React-RCTImage (0.85.3): + - React-RCTImage (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - RCTTypeSafety - - React-Core-prebuilt - React-Core/RCTImageHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - ReactNativeDependencies - - React-RCTLinking (0.85.3): - - React-Core/RCTLinkingHeaders (= 0.85.3) - - React-jsi (= 0.85.3) + - SocketRocket + - React-RCTLinking (0.85.4): + - React-Core/RCTLinkingHeaders (= 0.85.4) + - React-jsi (= 0.85.4) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.85.3) - - React-RCTNetwork (0.85.3): + - ReactCommon/turbomodule/core (= 0.85.4) + - React-RCTNetwork (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - RCTTypeSafety - - React-Core-prebuilt - React-Core/RCTNetworkHeaders - React-debug - React-featureflags @@ -1651,19 +2232,24 @@ PODS: - React-networking - React-RCTFBReactNativeSpec - ReactCommon - - ReactNativeDependencies - - React-RCTPushNotification (0.85.3): + - SocketRocket + - React-RCTPushNotification (0.85.4): - RCTTypeSafety - - React-Core-prebuilt - React-Core/RCTPushNotificationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTRuntime (0.85.3): - - hermes-engine + - React-RCTRuntime (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-Core - - React-Core-prebuilt - React-debug - React-jsi - React-jsinspector @@ -1675,46 +2261,77 @@ PODS: - React-runtimeexecutor - React-RuntimeHermes - React-utils - - ReactNativeDependencies - - React-RCTSettings (0.85.3): + - SocketRocket + - React-RCTSettings (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - RCTTypeSafety - - React-Core-prebuilt - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactNativeDependencies - - React-RCTTest (0.85.3): - - React-Core (= 0.85.3) - - React-Core-prebuilt - - React-CoreModules (= 0.85.3) - - React-jsi (= 0.85.3) - - ReactCommon/turbomodule/core (= 0.85.3) - - ReactNativeDependencies - - React-RCTText (0.85.3): - - React-Core/RCTTextHeaders (= 0.85.3) + - SocketRocket + - React-RCTTest (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-Core (= 0.85.4) + - React-CoreModules (= 0.85.4) + - React-jsi (= 0.85.4) + - ReactCommon/turbomodule/core (= 0.85.4) + - SocketRocket + - React-RCTText (0.85.4): + - React-Core/RCTTextHeaders (= 0.85.4) - Yoga - - React-RCTVibration (0.85.3): - - React-Core-prebuilt + - React-RCTUIKit (0.85.4) + - React-RCTVibration (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactNativeDependencies - - React-rendererconsistency (0.85.3) - - React-renderercss (0.85.3): - - React-debug - - React-utils - - React-rendererdebug (0.85.3): - - React-Core-prebuilt - - React-debug - - ReactNativeDependencies - - React-RuntimeApple (0.85.3): - - hermes-engine + - SocketRocket + - React-rendererconsistency (0.85.4) + - React-renderercss (0.85.4): + - React-debug + - React-utils + - React-rendererdebug (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-debug + - SocketRocket + - React-RuntimeApple (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-callinvoker - - React-Core-prebuilt - React-Core/Default - React-CoreModules - React-cxxreact @@ -1733,10 +2350,16 @@ PODS: - React-RuntimeHermes - React-runtimescheduler - React-utils - - ReactNativeDependencies - - React-RuntimeCore (0.85.3): + - SocketRocket + - React-RuntimeCore (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-Fabric - React-featureflags @@ -1749,17 +2372,29 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - ReactNativeDependencies - - React-runtimeexecutor (0.85.3): - - React-Core-prebuilt + - SocketRocket + - React-runtimeexecutor (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric - React-debug - React-featureflags - - React-jsi (= 0.85.3) + - React-jsi (= 0.85.4) - React-utils - - ReactNativeDependencies - - React-RuntimeHermes (0.85.3): + - SocketRocket + - React-RuntimeHermes (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-featureflags - React-hermes - React-jsi @@ -1771,11 +2406,17 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-utils - - ReactNativeDependencies - - React-runtimescheduler (0.85.3): + - SocketRocket + - React-runtimescheduler (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - React-callinvoker - - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1787,18 +2428,30 @@ PODS: - React-runtimeexecutor - React-timing - React-utils - - ReactNativeDependencies - - React-timing (0.85.3): + - SocketRocket + - React-timing (0.85.4): - React-debug - - React-utils (0.85.3): + - React-utils (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-debug - - React-jsi (= 0.85.3) - - ReactNativeDependencies - - React-webperformancenativemodule (0.85.3): + - React-jsi (= 0.85.4) + - SocketRocket + - React-webperformancenativemodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog - hermes-engine - - React-Core-prebuilt + - RCT-Folly + - RCT-Folly/Fabric - React-cxxreact - React-jsi - React-jsiexecutor @@ -1806,15 +2459,21 @@ PODS: - React-RCTFBReactNativeSpec - React-runtimeexecutor - ReactCommon/turbomodule/core - - ReactNativeDependencies - - ReactAppDependencyProvider (0.85.3): + - SocketRocket + - ReactAppDependencyProvider (0.85.4): - ReactCodegen - - ReactCodegen (0.85.3): - - hermes-engine + - ReactCodegen (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-FabricImage @@ -1828,61 +2487,96 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactNativeDependencies - - ReactCommon (0.85.3): - - React-Core-prebuilt - - ReactCommon/turbomodule (= 0.85.3) - - ReactNativeDependencies - - ReactCommon-Samples (0.85.3): - - hermes-engine + - SocketRocket + - ReactCommon (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - ReactCommon/turbomodule (= 0.85.4) + - SocketRocket + - ReactCommon-Samples (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-cxxreact - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactNativeDependencies - - ReactCommon/turbomodule (0.85.3): - - hermes-engine - - React-callinvoker (= 0.85.3) - - React-Core-prebuilt - - React-cxxreact (= 0.85.3) - - React-jsi (= 0.85.3) - - React-logger (= 0.85.3) - - React-perflogger (= 0.85.3) - - ReactCommon/turbomodule/bridging (= 0.85.3) - - ReactCommon/turbomodule/core (= 0.85.3) - - ReactNativeDependencies - - ReactCommon/turbomodule/bridging (0.85.3): - - hermes-engine - - React-callinvoker (= 0.85.3) - - React-Core-prebuilt - - React-cxxreact (= 0.85.3) - - React-jsi (= 0.85.3) - - React-logger (= 0.85.3) - - React-perflogger (= 0.85.3) - - ReactNativeDependencies - - ReactCommon/turbomodule/core (0.85.3): - - hermes-engine - - React-callinvoker (= 0.85.3) - - React-Core-prebuilt - - React-cxxreact (= 0.85.3) - - React-debug (= 0.85.3) - - React-featureflags (= 0.85.3) - - React-jsi (= 0.85.3) - - React-logger (= 0.85.3) - - React-perflogger (= 0.85.3) - - React-utils (= 0.85.3) - - ReactNativeDependencies - - ReactNativeDependencies (0.85.3) + - SocketRocket + - ReactCommon/turbomodule (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.85.4) + - React-cxxreact (= 0.85.4) + - React-jsi (= 0.85.4) + - React-logger (= 0.85.4) + - React-perflogger (= 0.85.4) + - ReactCommon/turbomodule/bridging (= 0.85.4) + - ReactCommon/turbomodule/core (= 0.85.4) + - SocketRocket + - ReactCommon/turbomodule/bridging (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.85.4) + - React-cxxreact (= 0.85.4) + - React-jsi (= 0.85.4) + - React-logger (= 0.85.4) + - React-perflogger (= 0.85.4) + - SocketRocket + - ReactCommon/turbomodule/core (0.85.4): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-callinvoker (= 0.85.4) + - React-cxxreact (= 0.85.4) + - React-debug (= 0.85.4) + - React-featureflags (= 0.85.4) + - React-jsi (= 0.85.4) + - React-logger (= 0.85.4) + - React-perflogger (= 0.85.4) + - React-utils (= 0.85.4) + - SocketRocket - ScreenshotManager (0.85.3): - - hermes-engine + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric - RCTRequired - RCTTypeSafety - React-Core - - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -1897,16 +2591,23 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactNativeDependencies + - SocketRocket - Yoga + - SocketRocket (0.7.1) - Yoga (0.0.0) DEPENDENCIES: + - boost (from `../react-native/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../react-native/third-party-podspecs/DoubleConversion.podspec`) + - fast_float (from `../react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../react-native/Libraries/FBLazyVector`) + - fmt (from `../react-native/third-party-podspecs/fmt.podspec`) + - glog (from `../react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../react-native/sdks/hermes-engine/hermes-engine.podspec`) - MyNativeView (from `NativeComponentExample`) - NativeCxxModuleExample (from `NativeCxxModuleExample`) - OCMock (~> 3.9.1) + - RCT-Folly (from `../react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - RCTRequired (from `../react-native/Libraries/Required`) - RCTSwiftUI (from `../react-native/ReactApple/RCTSwiftUI`) @@ -1915,7 +2616,6 @@ DEPENDENCIES: - React (from `../react-native/`) - React-callinvoker (from `../react-native/ReactCommon/callinvoker`) - React-Core (from `../react-native/`) - - React-Core-prebuilt (from `../react-native/React-Core-prebuilt.podspec`) - React-Core/RCTWebSocket (from `../react-native/`) - React-CoreModules (from `../react-native/React/CoreModules`) - React-cxxreact (from `../react-native/ReactCommon/cxxreact`) @@ -1965,6 +2665,7 @@ DEPENDENCIES: - React-RCTSettings (from `../react-native/Libraries/Settings`) - React-RCTTest (from `./RCTTest`) - React-RCTText (from `../react-native/Libraries/Text`) + - React-RCTUIKit (from `../react-native/`) - React-RCTVibration (from `../react-native/Libraries/Vibration`) - React-rendererconsistency (from `../react-native/ReactCommon/react/renderer/consistency`) - React-renderercss (from `../react-native/ReactCommon/react/renderer/css`) @@ -1981,17 +2682,28 @@ DEPENDENCIES: - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon-Samples (from `../react-native/ReactCommon/react/nativemodule/samples`) - ReactCommon/turbomodule/core (from `../react-native/ReactCommon`) - - ReactNativeDependencies (from `../react-native/third-party-podspecs/ReactNativeDependencies.podspec`) - ScreenshotManager (from `NativeModuleExample`) + - SocketRocket (~> 0.7.1) - Yoga (from `../react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - OCMock + - SocketRocket EXTERNAL SOURCES: + boost: + :podspec: "../react-native/third-party-podspecs/boost.podspec" + DoubleConversion: + :podspec: "../react-native/third-party-podspecs/DoubleConversion.podspec" + fast_float: + :podspec: "../react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: :path: "../react-native/Libraries/FBLazyVector" + fmt: + :podspec: "../react-native/third-party-podspecs/fmt.podspec" + glog: + :podspec: "../react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-v250829098.0.10 @@ -1999,6 +2711,8 @@ EXTERNAL SOURCES: :path: NativeComponentExample NativeCxxModuleExample: :path: NativeCxxModuleExample + RCT-Folly: + :podspec: "../react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: :path: "../react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: @@ -2015,8 +2729,6 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/callinvoker" React-Core: :path: "../react-native/" - React-Core-prebuilt: - :podspec: "../react-native/React-Core-prebuilt.podspec" React-CoreModules: :path: "../react-native/React/CoreModules" React-cxxreact: @@ -2113,6 +2825,8 @@ EXTERNAL SOURCES: :path: "./RCTTest" React-RCTText: :path: "../react-native/Libraries/Text" + React-RCTUIKit: + :path: "../react-native/" React-RCTVibration: :path: "../react-native/Libraries/Vibration" React-rendererconsistency: @@ -2145,96 +2859,100 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon" ReactCommon-Samples: :path: "../react-native/ReactCommon/react/nativemodule/samples" - ReactNativeDependencies: - :podspec: "../react-native/third-party-podspecs/ReactNativeDependencies.podspec" ScreenshotManager: :path: NativeModuleExample Yoga: :path: "../react-native/ReactCommon/yoga" SPEC CHECKSUMS: - FBLazyVector: 24e62c765683b8d89006a88a2c8f5cf019f0074d - hermes-engine: f90d3ed4356353666bbee687f51d701f0685b494 - MyNativeView: a455cebb4ae40c78a3db9e064a62e4438c6c077b - NativeCxxModuleExample: eb5ef6fe39f4848c77c42257cd0a48df3933367e + boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd + DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab + fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 + FBLazyVector: 26614582945936cfd7321afdb7f07b1c898e6be8 + fmt: a64cf1f8dfdca979ce7a5c367ff664f52fa382a4 + glog: 8fb6f603b9feab8ebedb130c6e0683bbeafa6fb0 + hermes-engine: a3ecfb3833521bf21533665e8d0ab6ba406f7018 + MyNativeView: a3abb0ddbda3416fd6d0f7c2ca260f3c0c6a0260 + NativeCxxModuleExample: 72cc3561d69255e9db7c0539de740c5a67f04b74 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 - RCTDeprecation: a4c521821fab57cbb125b36effe84d897d0dfa12 - RCTRequired: 9f3a7e5645d4bc3f551593de7550bb66ab6e42bc - RCTSwiftUI: 239ed2eb9e73de5a6f518810630f0c95e01c8702 - RCTSwiftUIWrapper: 966ca7f5f22ac0b2b2255fb09cffc381f5440b03 - RCTTypeSafety: 2a6403ba3492c04510e7c15bd635461646c43bb2 - React: e2dc35338068bbd299c66f043ae0d7f25de8499e - React-callinvoker: 28b25d21b124c26cebaea713ba7d801b9351dc48 - React-Core: 02ed7d2ffb70437bdf2aba074a13078a7b0b9ff0 - React-Core-prebuilt: 2b7d031a3b625b8bdb93463386320f5e339ccd26 - React-CoreModules: b3a5a42dadcde3b5d47b325bd912eb2ced89e146 - React-cxxreact: fe8f88dda044e5905e99a00f41b7a874c3908716 - React-debug: 92944dc4d89f56d640e75498266cbde557a48189 - React-defaultsnativemodule: cd64bc09d7ca24112bbaf1b91edbbcf3d81ea7dc - React-domnativemodule: dacf5bc055ae041039574f38b73a20b91e368774 - React-Fabric: bb0baa33d91839631d315800eb23e9aaa4338a44 - React-FabricComponents: c504d0b0e2f3054b2ba19af839f175cb361153c0 - React-FabricImage: 91eaea1cc58d25ae2596a9277bcfe028f92374c3 - React-featureflags: 5ac0455da0af12ca79b40402e2f42c5c7556b638 - React-featureflagsnativemodule: df7da181b064f10f5959a7cd529b5aab3686ecb2 - React-graphics: d25b1195baf24c7918543f4aff9be89cc080906f - React-hermes: 663286153a8ad6bf752b742654c766ff5e8991e7 - React-idlecallbacksnativemodule: 0bd5392cb67f1ab25df736814b7c05213b1d3c68 - React-ImageManager: a03eed3e3d4222130dc0ad503a1a5f3aa89de746 - React-intersectionobservernativemodule: 5d0f1c3c7b30031b0f6f730ee52dd9d607e2c966 - React-jserrorhandler: d5d6e7e20c5a2d6e8607e18d31d8712d7de676f6 - React-jsi: eb7cc4cffcf24796cc302d5b2bca0e92544139a9 - React-jsiexecutor: 65006f60e64c72c6b82f62ef6bd17c84846e73f8 - React-jsinspector: 01e32e2247b2486117fbb143db7f7717ef462c6d - React-jsinspectorcdp: f1cbb34ca41d188ba22efd9b663cf258a911f6cd - React-jsinspectornetwork: f61acc94c881c41451f508abfe6efa748b956c21 - React-jsinspectortracing: 9395894d9bd4d17931b9afcf230c0e7f4cb3d674 - React-jsitooling: 03ead841daa12a93b18479f5e400ceab3732d36d - React-jsitracing: 4ae61c79e14360d1c6ab566031c62c490da78439 - React-logger: bf149dea4343a9037b74bade36cced8b63f03f46 - React-Mapbuffer: fec3e025f0ffba6b32cd2a1d7bbdee3e269aae90 - React-microtasksnativemodule: ab33a818d339f5a1da308893c11b487be66121a8 - React-mutationobservernativemodule: a42d1626651ccd7d0dc02a56e69d4ec77c248893 - React-NativeModulesApple: deba264b03bd79c6bd61014fa30e40321b5e443a - React-networking: 35e6070b084f435429f85c5db40b4d5b38652fe9 - React-oscompat: 64a0c7ef5441855dc6e2a6afe8ba8f92aa05075e - React-perflogger: ca04287f205086a1edb5c95882be7b6068458889 - React-performancecdpmetrics: cf1d0a3178ccd59353cedcacbda421f40100a889 - React-performancetimeline: c9771212e7a43032d6f8d5edfb58280d46a7ce1f - React-RCTActionSheet: ab545c1e7b5f1ce4f8b40b6fa06afe2869095884 - React-RCTAnimation: 343147a9cd68c93d0ca280799fedfc7102d76ce4 - React-RCTAppDelegate: 5054754e92aaa9f8bfabe0f1022b84e46f3dcb57 - React-RCTBlob: 8c7ae3422ca4e72bc64b7a0142fd730efc5d4dfb - React-RCTFabric: be458db054b206c4d8e4f20f666e75d5f2c2d420 - React-RCTFBReactNativeSpec: 06db2e8d0f352d9fa23321aed1dd2cde25a3e83c - React-RCTImage: 481457bca63e039eb997f7d16c7560472f49657e - React-RCTLinking: 76cbb871240cec2dc5e7aa26c60f59e0ebbcf5a2 - React-RCTNetwork: e23a778225b7672e38545d3c5c24e1f4aad6d15f - React-RCTPushNotification: 136efed68d943a7982a9b813e0b5f43e302b79e3 - React-RCTRuntime: 93c830b3ab3f7b494bbe7ae7289784f8b07b3947 - React-RCTSettings: 96196b535bef147381f96cc60ce9bda85d8be848 - React-RCTTest: bc9e88dc5ef7969c006a08cca0d321a8766c8045 - React-RCTText: 749ebbd1a999fd84d80f37002ea3bf597fcea6df - React-RCTVibration: 5b41a7f274757c2928845981d970916ef9e4ca14 - React-rendererconsistency: 6708acd4bc39c1c5b00164370d0010d93b324c1f - React-renderercss: 80eb778756fed511d6128fc005188ac9008b0baf - React-rendererdebug: b46f338fb9d3f0bea6cf0621016c6c5a7a18e72e - React-RuntimeApple: c494b2089fad4a0c553cf63c2bb265f7eca2285d - React-RuntimeCore: b0bb151c3e2b26c6309d45d05c54aa65a6e0c094 - React-runtimeexecutor: 00b18635b6216a1708f6eb35dbadfd993ec91c7b - React-RuntimeHermes: bb44c4c574ce1b9507cad2e6be015344d18b94a9 - React-runtimescheduler: e1631e57209cb94b3efc29002b6a049cac3f6599 - React-timing: 356b88317ca60d373b0d94b6e7a71b0a572899f5 - React-utils: ccc01da318979af773259c4f6cdb1876f6f86f1a - React-webperformancenativemodule: f8b97c2cb6cfa94e92a503c09ad6d491c50a1390 - ReactAppDependencyProvider: 25c9c516839be2c5e3d3344f95dc7da5f7e63fc2 - ReactCodegen: 28dac42f26a883eb156f07e95fea6ed6242c0291 - ReactCommon: 7dfc3250793bf36cf221096ff59e1179e13eef7f - ReactCommon-Samples: 1dde18234b13911594ca7584c062b011176965d2 - ReactNativeDependencies: 028b1b687447970188ce352a705294159af7a0cb - ScreenshotManager: 94a96bc645a2fff764e5ebc127f456dea08c89ed - Yoga: 77dfa8673de2874e1855002ae59c68b8be9b007b + RCT-Folly: e10aa376c9d355431790daf20769ccf9d5ac0bb3 + RCTDeprecation: 317060d554e8f53033cf5e7b23a9b522b2a51b7d + RCTRequired: 31e121b165e8e7621680ed4d846d11bfcfafa870 + RCTSwiftUI: 0696e0e67f4bc8d3337cde829807126e2628a944 + RCTSwiftUIWrapper: 3e80ed542c00e291025e01123728d5846a415b34 + RCTTypeSafety: da78eb39db6fa0cd1acb67245ce80e4b888d0848 + React: ea10ff61b9034d01366d54b95e35cc77033a3680 + React-callinvoker: 7ee167dd63cb49e9713db98ebb5306539c5fb06b + React-Core: ec93364ab5f47d41717a446c9f080a65085bdf71 + React-CoreModules: 5c53fc398ea8cd3c7b37b5d62556feb236b1b9d0 + React-cxxreact: 21990a400f1413fbc0f6fcdea8b8f895eda32980 + React-debug: 6634d8610a9d505bd63faa577ff459fe0203e356 + React-defaultsnativemodule: b3e60cadb26f33bb8ed6bd4eb8fd2655280dc0f6 + React-domnativemodule: 89e977893eecde0245468c3a768635a8ac018210 + React-Fabric: f2dc901f015a60938554ea40ee5cee7679fe83c7 + React-FabricComponents: 3198937ce124bfc23e483f43d001cb457fe9ec8d + React-FabricImage: 5cf36b43d67ed9f7967f9cdeadd6323f9da2419b + React-featureflags: 59e78b4e1345a09b5b9ad7d4ab2880fc464a2a73 + React-featureflagsnativemodule: fb0bcbe0f0f8f8c034046d52a4be8b332bc2b1f6 + React-graphics: 6636e8a154396604ac0db37dabe880ddd4ce59c4 + React-hermes: f4403a538ddd45377ab11d115577432934bf5127 + React-idlecallbacksnativemodule: 5e421f5184d03a75a4c648c80787fc9ec1aa032b + React-ImageManager: aa007d14058eaa3718a82bc34a0859b0a623d8c5 + React-intersectionobservernativemodule: 7568b5875b92da98685f56d2f717aec7d95b2f91 + React-jserrorhandler: 5156d271f85ee39bcf7d0d2524564c77aad98321 + React-jsi: 651a3480624c3b8cff2928599324c29213986e5b + React-jsiexecutor: cf5d4aebb3dbd2730966c2ff47596999f68ca242 + React-jsinspector: 8c92c1e0664dfb9ea73dd37b04181f7041bfcd32 + React-jsinspectorcdp: 51bd3069565c2a99455dfb7dca84656303a814d7 + React-jsinspectornetwork: 92f071255f5d1c2373679a158096c74eb805977a + React-jsinspectortracing: d25b4f5a03ea11052a5f8c72a79455f9a023ea10 + React-jsitooling: bb1c5222230d42374e3dd988cdfbae325568c574 + React-jsitracing: a0f1b24de9befffbad01b27ff4b5abf4adabb8ee + React-logger: f170ef20336076ee3c2db56815819d0bae88fb4f + React-Mapbuffer: 060e3d566e6a65e4227aa79bf2486c6abc988ea3 + React-microtasksnativemodule: 44fed3ba8fab5e7d0006865421c7ebbc8fcd704d + React-mutationobservernativemodule: db3b0c48e33ddcefbd43f7b85a95e67dfe9e845d + React-NativeModulesApple: 8db22c92aa00dd5eb53874226c0826e3df6054a8 + React-networking: d22ce41a90aa4b3e491b2cab0212a380bb1e20be + React-oscompat: f6d33ff9383944811b5d62927747f0bacde25b40 + React-perflogger: d39f700035ebca49638f2a0d673f478232fe78d1 + React-performancecdpmetrics: e90360626f5bbace8ed513cc3f00cc4997635207 + React-performancetimeline: 4c1f5a6047ed44e84375e5aba940603cbc60b90b + React-RCTActionSheet: 92792909ad4342c4a0b843235adfa9ee49a03b7c + React-RCTAnimation: d731343d46c8ae6647ef486ab846c7a7d7edcd14 + React-RCTAppDelegate: e5b96b6c90e4f83ffa25699c1826cb2c5b2569bf + React-RCTBlob: b338614e097c1e969173225d0b5f0f1c176a909b + React-RCTFabric: ce6d0178adca29c268028a12e39399eaeb2295c7 + React-RCTFBReactNativeSpec: 4ca17aff9e0b29aed1bf553b4fc9752e3a8a54f6 + React-RCTImage: f30ffbfa9d29fff8618b04202526d74d67392fd1 + React-RCTLinking: 9868d35900d25019da89b7bdf658559a7bd9c3ec + React-RCTNetwork: 9c7a1cf8b52b1af3754e71658467a6252d399331 + React-RCTPushNotification: 0be5b47506cf527c8b9bdb2b44205d1a3601413c + React-RCTRuntime: ce0e5b2631dd1da8a042efab7c711d282d456acc + React-RCTSettings: 497162935e079441e5f448651e95240bd301c88e + React-RCTTest: 7ec14ab46d7b39d710554928777af6ffce2f1b6f + React-RCTText: 5b3f1de12fb97f440d9bd12991835b2ed9480e13 + React-RCTUIKit: 03304568725486e9dcf97ec6b43c1be2964f0746 + React-RCTVibration: 99d39c9b41207542d2ff34a1a79345434cd590c6 + React-rendererconsistency: 242118c6cf93b58ba1aff536309e45ad3714f71a + React-renderercss: d7b518276f9b5716e019e483580da10a474c6213 + React-rendererdebug: a938e41a8d435af8853a8fc9e5e9512ce352178a + React-RuntimeApple: 6019c9a271a0482128d092d0d66c77f078ebcfbb + React-RuntimeCore: 68e879492e6fc5e2791a6e7cffa173e1ab60ea13 + React-runtimeexecutor: 0451f769d26ba4745305e681f5dbb8bffee8d75e + React-RuntimeHermes: 2322ef835286afbdf8c2cc747c4335d36da4c8a6 + React-runtimescheduler: 853968d68361ca8a446852eef96b0caecf3690ac + React-timing: 85ac4afd16d86da84a9ef8c882147e15707ecc41 + React-utils: 662ff6a1a6062b1ad7da3c2116e36e746dc84c67 + React-webperformancenativemodule: 9cb8f6964a582f8aaaf3b90c45c4aeb7bf72a694 + ReactAppDependencyProvider: afe8856dddade72bed22b19047324d4ec781c46f + ReactCodegen: 3460d582a8d8ef485c70833413d68f2cda9993c0 + ReactCommon: c69c86f807fe254e46bbc1672fb3f899f0918106 + ReactCommon-Samples: cccd09b11ba8cd2cf0ccdc8e50fd6d3cb9efeaeb + ScreenshotManager: 9d56f59c3c94353ab73722ed5882b2b36f52a72c + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + Yoga: e502aba4ae3cf960e4dc126c784e43ca5e53a5a1 -PODFILE CHECKSUM: 59f1e7d58cffbfafbeb3df31151743dd4c9a52e8 +PODFILE CHECKSUM: 76dda25425afe238cbe0379633645d667998a038 COCOAPODS: 1.15.2 diff --git a/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js b/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js index 85ae8d1bd7ce..ac5cb91a911d 100644 --- a/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js +++ b/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js @@ -318,8 +318,8 @@ function LegacyValidKeysExample(): React.Node { return ( - These components use the legacy validKeysDown / validKeysUp props. The - JS compat layer converts them to modern keyDownEvents / keyUpEvents + These components use the DEPRECATED validKeysDown / validKeysUp props. + The JS compat layer converts them to modern keyDownEvents / keyUpEvents under the hood. @@ -327,7 +327,7 @@ function LegacyValidKeysExample(): React.Node { validKeysDown: ['a', 'b', 'Enter'] (string format) - {/* $FlowFixMe[prop-missing] Legacy props not in type definitions */} + {/* $FlowFixMe[incompatible-type] deprecated keyboard props not in type definitions */} validKeysDown: [Cmd+s, Ctrl+z] (object format) - {/* $FlowFixMe[prop-missing] Legacy props not in type definitions */} + {/* $FlowFixMe[incompatible-type] Legacy props not in type definitions */} passthroughAllKeyEvents + validKeysDown: ['Enter'] - {/* $FlowFixMe[prop-missing] Legacy props not in type definitions */} + {/* $FlowFixMe[incompatible-type] Legacy props not in type definitions */} react-native-macos redirect in yarn pnpm mode }, platforms: ['ios', 'macos', 'android'], // [macOS] }, diff --git a/private/helloworld/Gemfile b/private/helloworld/Gemfile index 1ef5722cc7f7..49cac77082fb 100644 --- a/private/helloworld/Gemfile +++ b/private/helloworld/Gemfile @@ -12,7 +12,6 @@ gem 'bigdecimal' gem 'logger' gem 'benchmark' gem 'mutex_m' -gem 'nkf' gem 'base64' gem 'ffi', '>= 1.17.2' diff --git a/private/react-native-fantom/package.json b/private/react-native-fantom/package.json index f0f965fbba23..bc7682eea0ce 100644 --- a/private/react-native-fantom/package.json +++ b/private/react-native-fantom/package.json @@ -8,7 +8,9 @@ "build": "./build.sh" }, "dependencies": { - "babel-plugin-istanbul": "^7.0.0" + "babel-plugin-istanbul": "^7.0.0", + "metro": "^0.83.3", + "metro-babel-transformer": "^0.83.3" }, "peerDependencies": { "jest": "^29.7.0", diff --git a/yarn.lock b/yarn.lock index 816eb1095d84..b0b72ee0d2e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26,7 +26,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.29.7": +"@babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.29.7": version: 7.29.7 resolution: "@babel/code-frame@npm:7.29.7" dependencies: @@ -557,7 +557,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.3, @babel/parser@npm:^7.29.7": +"@babel/parser@npm:^7.25.2, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.29.7": version: 7.29.7 resolution: "@babel/parser@npm:7.29.7" dependencies: @@ -853,6 +853,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-flow@npm:^7.25.0": + version: 7.29.7 + resolution: "@babel/plugin-syntax-flow@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2e330dd0dc535c7364937ce2b29a06065e60b1d523db75f36ab4fb89e4ba664e2230cbb1937b35712c9a0ebafc3358f323d6e6b22247d5ebad12fdd3e1f6e98 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-assertions@npm:^7.26.0": version: 7.26.0 resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" @@ -2604,7 +2615,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.5.5": +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.25.2, @babel/runtime@npm:^7.5.5": version: 7.29.7 resolution: "@babel/runtime@npm:7.29.7" checksum: 10c0/ca11572f7146b21e0bde6a9ed4bb6a89eafbee5f0944c7eb54d0d8a2dac962c33638a1d611e14faa71dfbb92b4b5f9236232208568a6b7d5c6f3f39ddb91771e @@ -2642,7 +2653,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.29.7": +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.29.7": version: 7.29.7 resolution: "@babel/traverse@npm:7.29.7" dependencies: @@ -2682,7 +2693,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.29.7": +"@babel/types@npm:^7.25.2, @babel/types@npm:^7.29.7": version: 7.29.7 resolution: "@babel/types@npm:7.29.7" dependencies: @@ -4609,10 +4620,14 @@ __metadata: "@babel/core": "npm:^7.25.2" "@babel/eslint-parser": "npm:^7.25.1" "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.2" "@babel/plugin-syntax-typescript": "npm:^7.25.4" "@babel/plugin-transform-regenerator": "npm:^7.24.7" "@babel/preset-env": "npm:^7.25.3" "@babel/preset-flow": "npm:^7.24.7" + "@babel/runtime": "npm:^7.25.2" + "@babel/traverse": "npm:^7.25.2" + "@babel/types": "npm:^7.25.2" "@changesets/cli": "npm:^2.28.1" "@electron/packager": "npm:^18.3.6" "@expo/spawn-async": "npm:^1.7.2" @@ -4620,10 +4635,16 @@ __metadata: "@microsoft/api-extractor": "npm:^7.52.2" "@nx/js": "npm:^21.4.1" "@octokit/rest": "npm:^22.0.0" + "@react-native/babel-preset": "workspace:*" + "@react-native/eslint-config": "workspace:*" + "@react-native/eslint-plugin": "workspace:*" + "@react-native/eslint-plugin-monorepo": "workspace:*" + "@react-native/eslint-plugin-specs": "workspace:*" "@react-native/metro-babel-transformer": "workspace:*" "@react-native/metro-config": "workspace:*" "@tsconfig/node22": "npm:22.0.2" "@types/react": "npm:^19.1.0" + "@typescript-eslint/eslint-plugin": "npm:^8.36.0" "@typescript-eslint/parser": "npm:^8.36.0" "@yarnpkg/types": "npm:^4.0.1" ansi-regex: "npm:^5.0.0" @@ -4651,19 +4672,25 @@ __metadata: flow-api-translator: "npm:0.32.0" flow-bin: "npm:^0.295.0" hermes-eslint: "npm:0.32.0" + hermes-estree: "npm:0.32.0" hermes-transform: "npm:0.32.0" ini: "npm:^5.0.0" inquirer: "npm:^7.1.0" + invariant: "npm:^2.2.4" jest: "npm:^29.7.0" jest-config: "npm:^29.7.0" jest-diff: "npm:^29.7.0" jest-junit: "npm:^16.0.0" jest-snapshot: "npm:^29.7.0" + jsonc-eslint-parser: "npm:^2.3.0" jsonc-parser: "npm:2.2.1" markdownlint-cli2: "npm:^0.22.0" markdownlint-rule-relative-links: "npm:^3.0.0" memfs: "npm:^4.38.2" + metro: "npm:^0.83.3" metro-babel-register: "npm:^0.83.3" + metro-config: "npm:^0.83.3" + metro-memory-fs: "npm:^0.82.5" metro-transform-plugins: "npm:^0.83.3" micromatch: "npm:^4.0.4" node-fetch: "npm:^2.2.0" @@ -4682,6 +4709,7 @@ __metadata: tinyglobby: "npm:^0.2.15" typescript: "npm:5.8.3" ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" zx: "npm:^8.2.4" languageName: unknown linkType: soft @@ -4911,7 +4939,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/eslint-config@workspace:packages/eslint-config-react-native": +"@react-native/eslint-config@workspace:*, @react-native/eslint-config@workspace:packages/eslint-config-react-native": version: 0.0.0-use.local resolution: "@react-native/eslint-config@workspace:packages/eslint-config-react-native" dependencies: @@ -4935,7 +4963,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/eslint-plugin-monorepo@workspace:private/eslint-plugin-monorepo": +"@react-native/eslint-plugin-monorepo@workspace:*, @react-native/eslint-plugin-monorepo@workspace:private/eslint-plugin-monorepo": version: 0.0.0-use.local resolution: "@react-native/eslint-plugin-monorepo@workspace:private/eslint-plugin-monorepo" dependencies: @@ -4943,7 +4971,7 @@ __metadata: languageName: unknown linkType: soft -"@react-native/eslint-plugin-specs@workspace:packages/eslint-plugin-specs": +"@react-native/eslint-plugin-specs@workspace:*, @react-native/eslint-plugin-specs@workspace:packages/eslint-plugin-specs": version: 0.0.0-use.local resolution: "@react-native/eslint-plugin-specs@workspace:packages/eslint-plugin-specs" dependencies: @@ -4972,6 +5000,8 @@ __metadata: resolution: "@react-native/fantom@workspace:private/react-native-fantom" dependencies: babel-plugin-istanbul: "npm:^7.0.0" + metro: "npm:^0.83.3" + metro-babel-transformer: "npm:^0.83.3" peerDependencies: jest: ^29.7.0 jest-snapshot: ^29.7.0 @@ -6088,6 +6118,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^1.3.7, accepts@npm:~1.3.7": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -6098,16 +6138,6 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.7": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -7289,6 +7319,31 @@ __metadata: languageName: node linkType: hard +"caller-callsite@npm:^2.0.0": + version: 2.0.0 + resolution: "caller-callsite@npm:2.0.0" + dependencies: + callsites: "npm:^2.0.0" + checksum: 10c0/a00ca91280e10ee2321de21dda6c168e427df7a63aeaca027ea45e3e466ac5e1a5054199f6547ba1d5a513d3b6b5933457266daaa47f8857fb532a343ee6b5e1 + languageName: node + linkType: hard + +"caller-path@npm:^2.0.0": + version: 2.0.0 + resolution: "caller-path@npm:2.0.0" + dependencies: + caller-callsite: "npm:^2.0.0" + checksum: 10c0/029b5b2c557d831216305c3218e9ff30fa668be31d58dd08088f74c8eabc8362c303e0908b3a93abb25ba10e3a5bfc9cff5eb7fab6ab9cf820e3b160ccb67581 + languageName: node + linkType: hard + +"callsites@npm:^2.0.0": + version: 2.0.0 + resolution: "callsites@npm:2.0.0" + checksum: 10c0/13bff4fee946e6020b37e76284e95e24aa239c9e34ac4f3451e4c5330fca6f2f962e1d1ab69e4da7940e1fce135107a2b2b98c01d62ea33144350fc89dc5494e + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -7804,6 +7859,18 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^5.0.5": + version: 5.2.1 + resolution: "cosmiconfig@npm:5.2.1" + dependencies: + import-fresh: "npm:^2.0.0" + is-directory: "npm:^0.3.1" + js-yaml: "npm:^3.13.1" + parse-json: "npm:^4.0.0" + checksum: 10c0/ae9ba309cdbb42d0c9d63dad5c1dfa1c56bb8f818cb8633eea14fd2dbdc9f33393b77658ba96fdabda497bc943afed8c3371d1222afe613c518ba676fa624645 + languageName: node + linkType: hard + "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -10222,6 +10289,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.29.1": + version: 0.29.1 + resolution: "hermes-estree@npm:0.29.1" + checksum: 10c0/e6b01f79ba708697d61a74b871d5ebae5f863c6d782657d8e2d2256eb838f1eb86ff9c34773a81d9cc69e54be3a5059c686e0ab54a4afba903b40dde92dd0ccb + languageName: node + linkType: hard + "hermes-estree@npm:0.32.0": version: 0.32.0 resolution: "hermes-estree@npm:0.32.0" @@ -10252,6 +10326,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.29.1": + version: 0.29.1 + resolution: "hermes-parser@npm:0.29.1" + dependencies: + hermes-estree: "npm:0.29.1" + checksum: 10c0/7f40d9bdfb5acaa700f333a24c644b17f5f8d0e823b1e7a9fb6dcf253a54d54716ae63c74effa023688ee4f09013c80188c40d601570fee256a44954e04c2926 + languageName: node + linkType: hard + "hermes-parser@npm:0.32.0": version: 0.32.0 resolution: "hermes-parser@npm:0.32.0" @@ -10472,6 +10555,16 @@ __metadata: languageName: node linkType: hard +"import-fresh@npm:^2.0.0": + version: 2.0.0 + resolution: "import-fresh@npm:2.0.0" + dependencies: + caller-path: "npm:^2.0.0" + resolve-from: "npm:^3.0.0" + checksum: 10c0/116c55ee5215a7839062285b60df85dbedde084c02111dc58c1b9d03ff7876627059f4beb16cdc090a3db21fea9022003402aa782139dc8d6302589038030504 + languageName: node + linkType: hard + "import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" @@ -10780,6 +10873,13 @@ __metadata: languageName: node linkType: hard +"is-directory@npm:^0.3.1": + version: 0.3.1 + resolution: "is-directory@npm:0.3.1" + checksum: 10c0/1c39c7d1753b04e9483b89fb88908b8137ab4743b6f481947e97ccf93ecb384a814c8d3f0b95b082b149c5aa19c3e9e4464e2791d95174bce95998c26bb1974b + languageName: node + linkType: hard + "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -11830,6 +11930,13 @@ __metadata: languageName: node linkType: hard +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + languageName: node + linkType: hard + "json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" @@ -12672,7 +12779,19 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.83.7": +"metro-babel-transformer@npm:0.82.5, metro-babel-transformer@npm:^0.82.5": + version: 0.82.5 + resolution: "metro-babel-transformer@npm:0.82.5" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + hermes-parser: "npm:0.29.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/a672dc1dcf3778120130052bc175bfb754c93b490c1d0170e89e309efa0c122f4dfd4717dda966c7addbbd3a2e764acb610e740d62159601bc9cfdf6684466e8 + languageName: node + linkType: hard + +"metro-babel-transformer@npm:0.83.7, metro-babel-transformer@npm:^0.83.3": version: 0.83.7 resolution: "metro-babel-transformer@npm:0.83.7" dependencies: @@ -12685,6 +12804,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.82.5": + version: 0.82.5 + resolution: "metro-cache-key@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/7dd8a2e83bea57b57f49fd30188b70d0c364fa280cffd96609deac764bc671634f174449e4abfbad2197d275ad8a3fd86521652549d9f7fe008efb0dd445778d + languageName: node + linkType: hard + "metro-cache-key@npm:0.83.7": version: 0.83.7 resolution: "metro-cache-key@npm:0.83.7" @@ -12694,6 +12822,18 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.82.5": + version: 0.82.5 + resolution: "metro-cache@npm:0.82.5" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.82.5" + checksum: 10c0/8480b301c0cf29c113e948598158e64dc2cb43b449be8862d688ffed461a6e08ead23bc8e81c6a323e490436ebc31cb19aecfc3c375325eafd8d34dd0c80bf92 + languageName: node + linkType: hard + "metro-cache@npm:0.83.7": version: 0.83.7 resolution: "metro-cache@npm:0.83.7" @@ -12706,6 +12846,22 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.82.5, metro-config@npm:^0.82.5": + version: 0.82.5 + resolution: "metro-config@npm:0.82.5" + dependencies: + connect: "npm:^3.6.5" + cosmiconfig: "npm:^5.0.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.82.5" + metro-cache: "npm:0.82.5" + metro-core: "npm:0.82.5" + metro-runtime: "npm:0.82.5" + checksum: 10c0/8c7c9be911aee55e65fc870e79c5695c007bf99cb960e0d9746c92ecd828b69d055bd0e4b83976151e4ed9d2e23d13fa081ee44abbd166822d46d34030138a50 + languageName: node + linkType: hard + "metro-config@npm:0.83.7, metro-config@npm:^0.83.3": version: 0.83.7 resolution: "metro-config@npm:0.83.7" @@ -12722,6 +12878,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.82.5": + version: 0.82.5 + resolution: "metro-core@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.82.5" + checksum: 10c0/0491679e8ed55431cc325642ddffba7b170dbd2cde8dcb81a54c692ca1ca3c786c9936ed1ee15d092af64adda8ccfd8f475afc85c4a6dbec4614357316e74be6 + languageName: node + linkType: hard + "metro-core@npm:0.83.7, metro-core@npm:^0.83.3": version: 0.83.7 resolution: "metro-core@npm:0.83.7" @@ -12733,6 +12900,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.82.5": + version: 0.82.5 + resolution: "metro-file-map@npm:0.82.5" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + nullthrows: "npm:^1.1.1" + walker: "npm:^1.0.7" + checksum: 10c0/86496bc6a15a87cd1af668a588f26f17cbf3c43eee0b021ded8eb6b02a83cd80e14a356900fe3a4cc8c4fa494de55ee7e20e6c45f0c6b27e616f0f03817e0c9e + languageName: node + linkType: hard + "metro-file-map@npm:0.83.7": version: 0.83.7 resolution: "metro-file-map@npm:0.83.7" @@ -12750,6 +12934,25 @@ __metadata: languageName: node linkType: hard +"metro-memory-fs@npm:^0.82.5": + version: 0.82.5 + resolution: "metro-memory-fs@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/7a11272f843a424b12307be3ee8c381594180199ff2a497668f3179b70aa0638fc057698872193d902f79b46795f78d16318d935316b00b763c2c3ee8ee71b47 + languageName: node + linkType: hard + +"metro-minify-terser@npm:0.82.5": + version: 0.82.5 + resolution: "metro-minify-terser@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + terser: "npm:^5.15.0" + checksum: 10c0/925be4401912ebc964b61ffe442bee977efb5baa42035d933277d8b669a4852f654778b87be50d12260d63b402054debc92cf703a70d58a1c9fea343401158b8 + languageName: node + linkType: hard + "metro-minify-terser@npm:0.83.7": version: 0.83.7 resolution: "metro-minify-terser@npm:0.83.7" @@ -12760,6 +12963,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.82.5": + version: 0.82.5 + resolution: "metro-resolver@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/a84c4571c78694468e5921f290b50505835fcd90cc490c4e6e028908a1f6b54104635f417de9c1cf0788b642c56e4eeb2b2a3cff6c36f9105ecaa8dfbac12fa7 + languageName: node + linkType: hard + "metro-resolver@npm:0.83.7, metro-resolver@npm:^0.83.3": version: 0.83.7 resolution: "metro-resolver@npm:0.83.7" @@ -12769,6 +12981,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.82.5": + version: 0.82.5 + resolution: "metro-runtime@npm:0.82.5" + dependencies: + "@babel/runtime": "npm:^7.25.0" + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/90418c7670fe6e6ece86185ff5c5cb5cdabfcffce0b6a601a3b4049d2643b16878b6819e9fd430fda0e2d7bc378752194c0ce4b4f9d53faa99da910782179789 + languageName: node + linkType: hard + "metro-runtime@npm:0.83.7, metro-runtime@npm:^0.83.3": version: 0.83.7 resolution: "metro-runtime@npm:0.83.7" @@ -12789,6 +13011,24 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.82.5": + version: 0.82.5 + resolution: "metro-source-map@npm:0.82.5" + dependencies: + "@babel/traverse": "npm:^7.25.3" + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" + "@babel/types": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.82.5" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.82.5" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10c0/cf04c8f5430eaf2aa8aa97034382d2cb1b0906a4c7cf3c4faaf0203eb00dd683b8d108e74694700a10085796beb292383cfcea50b388cc03062640bd95d3f84a + languageName: node + linkType: hard + "metro-source-map@npm:0.83.7": version: 0.83.7 resolution: "metro-source-map@npm:0.83.7" @@ -12823,6 +13063,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.82.5": + version: 0.82.5 + resolution: "metro-symbolicate@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-source-map: "npm:0.82.5" + nullthrows: "npm:^1.1.1" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + bin: + metro-symbolicate: src/index.js + checksum: 10c0/39c53b878ae9392586e23ff3a8071eceb1feed2d226e3ac9a170eb6bcd46fe6b69b8204851ee8eb231fdc3eac9012af3c6940ad48f6d1c04810ea9c4a75e1c7c + languageName: node + linkType: hard + "metro-symbolicate@npm:0.83.7": version: 0.83.7 resolution: "metro-symbolicate@npm:0.83.7" @@ -12855,6 +13111,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.82.5": + version: 0.82.5 + resolution: "metro-transform-plugins@npm:0.82.5" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.3" + flow-enums-runtime: "npm:^0.0.6" + nullthrows: "npm:^1.1.1" + checksum: 10c0/394ac0fbb0a33edb412307f09dc3c2dcd5a0268368876b82b9631261e55c7cf2b1c3ce75270d94285ed190a7934137d851b57aa4d27088efe50193fa9bb9aff7 + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.83.7, metro-transform-plugins@npm:^0.83.3": version: 0.83.7 resolution: "metro-transform-plugins@npm:0.83.7" @@ -12869,6 +13139,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.82.5": + version: 0.82.5 + resolution: "metro-transform-worker@npm:0.82.5" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/types": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + metro: "npm:0.82.5" + metro-babel-transformer: "npm:0.82.5" + metro-cache: "npm:0.82.5" + metro-cache-key: "npm:0.82.5" + metro-minify-terser: "npm:0.82.5" + metro-source-map: "npm:0.82.5" + metro-transform-plugins: "npm:0.82.5" + nullthrows: "npm:^1.1.1" + checksum: 10c0/28d8a5e6a61e96c20e8ebb9410c2daa8cc60e5464cb339436b640d74b77d0782e4675218053b21b1c7676f79dd9596c2b579bc2e47879594a3111a45fb3dc185 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.83.7": version: 0.83.7 resolution: "metro-transform-worker@npm:0.83.7" @@ -12890,6 +13181,56 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.82.5, metro@npm:^0.82.5": + version: 0.82.5 + resolution: "metro@npm:0.82.5" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.3" + "@babel/types": "npm:^7.25.2" + accepts: "npm:^1.3.7" + chalk: "npm:^4.0.0" + ci-info: "npm:^2.0.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + error-stack-parser: "npm:^2.0.6" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + hermes-parser: "npm:0.29.1" + image-size: "npm:^1.0.2" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + jsc-safe-url: "npm:^0.2.2" + lodash.throttle: "npm:^4.1.1" + metro-babel-transformer: "npm:0.82.5" + metro-cache: "npm:0.82.5" + metro-cache-key: "npm:0.82.5" + metro-config: "npm:0.82.5" + metro-core: "npm:0.82.5" + metro-file-map: "npm:0.82.5" + metro-resolver: "npm:0.82.5" + metro-runtime: "npm:0.82.5" + metro-source-map: "npm:0.82.5" + metro-symbolicate: "npm:0.82.5" + metro-transform-plugins: "npm:0.82.5" + metro-transform-worker: "npm:0.82.5" + mime-types: "npm:^2.1.27" + nullthrows: "npm:^1.1.1" + serialize-error: "npm:^2.1.0" + source-map: "npm:^0.5.6" + throat: "npm:^5.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + bin: + metro: src/cli.js + checksum: 10c0/a7bc635014ce74adb498f8e57fc39209d5b4a34bd7d18ad0b8ae7698839fcd6617a183fba4cd0038c1bdb2ab57322a0c8bf02fa5cf6ad8d184bf9d13913092e2 + languageName: node + linkType: hard + "metro@npm:0.83.7, metro@npm:^0.83.3": version: 0.83.7 resolution: "metro@npm:0.83.7" @@ -13265,7 +13606,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -13913,6 +14254,15 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.82.5": + version: 0.82.5 + resolution: "ob1@npm:0.82.5" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/4d65e82fde0612a5c411f3c926de6bc722bdb4751c4fb08f5a5ef91bdaf860e7f9c4f08dcb7acfdfc05340fc4929efb00ea9e973570c1d61adfc4353657abf55 + languageName: node + linkType: hard + "ob1@npm:0.83.7": version: 0.83.7 resolution: "ob1@npm:0.83.7" @@ -14361,6 +14711,16 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-json@npm:4.0.0" + dependencies: + error-ex: "npm:^1.3.1" + json-parse-better-errors: "npm:^1.0.1" + checksum: 10c0/8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 + languageName: node + linkType: hard + "parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -15269,6 +15629,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-from@npm:3.0.0" + checksum: 10c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0"