From eb3bccb6e738650d617945770ec1319d5880084b Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Thu, 23 Apr 2026 13:13:45 -0700 Subject: [PATCH 01/56] fix: resolve cli-platform-apple from cli-platform-ios path for pnpm (#2945) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Re-applies the fix from #2820 that was inadvertently reverted in #2917 - In pnpm setups, `@react-native-community/cli-platform-apple` is a transitive dependency of `cli-platform-ios` and not directly resolvable from the project root — resolve `cli-platform-ios` first and use its path as the starting directory Fixes #2944 ## Test plan - Verified in a pnpm monorepo that `cli-platform-apple` resolves correctly and the `macos` platform is registered 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 --- packages/react-native/react-native.config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index 6700ec369f4a..4fc760e979c0 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) { From 714701d1e97ec359975df66db43a119b8c7fdba5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 14:42:42 -0700 Subject: [PATCH 02/56] chore(deps): bump ip-address from 10.1.0 to 10.1.1 (#2953) Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.1.0 to 10.1.1.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ip-address&package-manager=npm_and_yarn&previous-version=10.1.0&new-version=10.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ab19fe2dccfb..feccb304c7d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8048,9 +8048,9 @@ __metadata: linkType: hard "ip-address@npm:^10.0.1": - version: 10.1.0 - resolution: "ip-address@npm:10.1.0" - checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 + version: 10.1.1 + resolution: "ip-address@npm:10.1.1" + checksum: 10c0/f3b46faa3850e128d08410f98592c219168dbec688b67de89fa1338921e67e46939962fa2cb2393341bab129ffbe350988679229857dd7d32309c2a4b69daca0 languageName: node linkType: hard From 6a2eca504e867859cbe4cd4d2ced374dbc8fee61 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Dall'Agnol Date: Thu, 4 Jun 2026 01:03:16 -0300 Subject: [PATCH 03/56] chore(ci): Bump Xcode to 26.2 (#2974) ## Summary: CI is failing because of fmt's version, bumping Xcode to 26.2 should fix it ## Test Plan: CI should be green --- .github/actions/microsoft-setup-toolchain/action.yml | 2 +- .github/actions/setup-xcode/action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 c0ae6ceccea7..fd9241bc472d 100644 --- a/.github/actions/setup-xcode/action.yml +++ b/.github/actions/setup-xcode/action.yml @@ -4,7 +4,7 @@ inputs: xcode-version: description: 'The xcode version to use' required: false - default: '16.2.0' + default: '26.2' runs: using: "composite" steps: From 17372a5609e65384acd9effdc45a810da5898294 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Wed, 3 Jun 2026 23:04:49 -0700 Subject: [PATCH 04/56] fix(ci): run checks on merge branches (#2977) ## Summary: We've started to use intermediate `*-merge` branches, so let's have CI run on them too. They won't block merging if they fail since these are working branches. --- .github/workflows/microsoft-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/microsoft-pr.yml b/.github/workflows/microsoft-pr.yml index ee3a01e5dd01..9df67d58aad6 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. From 0e8a2eb3f3456368725bfab832f0618d6cd663f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 23:09:35 -0700 Subject: [PATCH 05/56] chore(deps): bump webpack-dev-server from 5.2.3 to 5.2.4 in /docsite (#2968) Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.3 to 5.2.4.
Release notes

Sourced from webpack-dev-server's releases.

v5.2.4

5.2.4 (2026-05-11)

Bug Fixes

  • set Cross-Origin-Resource-Policy header to prevent source code theft over HTTP
Changelog

Sourced from webpack-dev-server's changelog.

5.2.4 (2026-05-11)

Bug Fixes

  • set Cross-Origin-Resource-Policy header to prevent source code theft over HTTP
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=webpack-dev-server&package-manager=npm_and_yarn&previous-version=5.2.3&new-version=5.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 14e801c4524b..56a18a3e81de 100644 --- a/docsite/yarn.lock +++ b/docsite/yarn.lock @@ -12476,8 +12476,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 +12516,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 10c0/a716f1d509635ad9f2779baf242657740e6ad516ce210fe094cbf3b16f25f114e477c45a751ad2bbf1c601cbbe67b6ba9b8b43159b7c01fc3342c95b985fe963 + checksum: 10c0/42f8afe11b7bfe65d72e30d861ddf1e4d05f27202c4c1162d204cb41a4a858dffc91c5a02bf44ec08acc8c02b4a57aaf46924ec12a5e5b97c307991379282669 languageName: node linkType: hard From 70479f90b74e0413719df955cbe4a90aa4962502 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 23:10:14 -0700 Subject: [PATCH 06/56] chore(deps): bump brace-expansion from 5.0.5 to 5.0.6 in /docsite (#2966) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.5 to 5.0.6.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=brace-expansion&package-manager=npm_and_yarn&previous-version=5.0.5&new-version=5.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 56a18a3e81de..4d27fbebd37b 100644 --- a/docsite/yarn.lock +++ b/docsite/yarn.lock @@ -4591,11 +4591,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 From 8b9d4a046a715fa611243c91968e6bcb0cfe70e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 06:41:35 +0000 Subject: [PATCH 07/56] chore(deps): bump postcss from 8.5.6 to 8.5.15 in /docsite (#2975) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.15.
Release notes

Sourced from postcss's releases.

8.5.15

  • Fixed declaration parsing performance (by @​homanp).

8.5.14

8.5.13

  • Fixed postcss-scss commend regression.

8.5.12

  • Fixed reading any file via user-generated CSS.
  • Added opts.unsafeMap to disable checks.

8.5.11

  • Fixed nested brackets parsing performance (by @​offset).

8.5.10

  • Fixed XSS via unescaped </style> in non-bundler cases (by @​TharVid).

8.5.9

  • Speed up source map encoding paring in case of the error.

8.5.8

  • Fixed Processor#version.

8.5.7

  • Improved source map annotation cleaning performance (by CodeAnt AI).
Changelog

Sourced from postcss's changelog.

8.5.15

  • Fixed declaration parsing performance (by @​homanp).

8.5.14

8.5.13

  • Fixed postcss-scss commend regression.

8.5.12

  • Fixed reading any file via user-generated CSS.
  • Added opts.unsafeMap to disable checks.

8.5.11

  • Fixed nested brackets parsing performance (by @​offset).

8.5.10

  • Fixed XSS via unescaped </style> in non-bundler cases (by @​TharVid).

8.5.9

  • Speed up source map encoding paring in case of the error.

8.5.8

  • Fixed Processor#version.

8.5.7

  • Improved source map annotation cleaning performance (by CodeAnt AI).
Commits
  • eae46db Release 8.5.15 version
  • 79508ff Update CI actions
  • b128e21 Speed up declaration parsing by avoiding creating new array on each token
  • 9825dca Fix code format
  • 55789c8 Update dependencies
  • 84fbbe9 Install older pnpm action for old Node.js
  • 9f860bd Revert pnpm action for old Node.js
  • 0877198 Update CI actions
  • b2d1a33 Fix linter warnings
  • 0700dac Merge pull request #2088 from rootvector2/add-oss-fuzz-harness
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=postcss&package-manager=npm_and_yarn&previous-version=8.5.6&new-version=8.5.15)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Saad Najmi --- docsite/yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 4d27fbebd37b..3ebfea4cdca2 100644 --- a/docsite/yarn.lock +++ b/docsite/yarn.lock @@ -9040,12 +9040,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 +10393,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 From bb032f8c8112d5a806b165c000800586037ce6d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 06:46:57 +0000 Subject: [PATCH 08/56] chore(deps): bump @tootallnate/once from 2.0.0 to 2.0.1 (#2971) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@tootallnate/once](https://github.com/TooTallNate/once) from 2.0.0 to 2.0.1.
Release notes

Sourced from @​tootallnate/once's releases.

v2.0.1

Patch Changes

  • a1e5e2d: Fix promise hang when AbortSignal is aborted
Changelog

Sourced from @​tootallnate/once's changelog.

2.0.1

Patch Changes

  • a1e5e2d: Fix promise hang when AbortSignal is aborted
Commits
  • bcbb21d ci: fix OIDC publishing — Node 24, npm latest, provenance
  • dc24387 Version Packages (2.x) (#12)
  • b8a6f80 CI: test all Node versions on Linux only
  • dabcc0f ci: drop EOL Node.js 14.x/16.x, add 22.x
  • b464efc Update CI: modern Node versions, fix macOS ARM64 compat
  • a1e5e2d Fix promise hang when AbortSignal is aborted
  • See full diff in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​tootallnate/once since your current version.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@tootallnate/once&package-manager=npm_and_yarn&previous-version=2.0.0&new-version=2.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Saad Najmi --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index feccb304c7d7..da5e14865059 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3624,9 +3624,9 @@ __metadata: linkType: hard "@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + version: 2.0.1 + resolution: "@tootallnate/once@npm:2.0.1" + checksum: 10c0/23b01a341485be711c602077936d70f8e695405bb88ab4433dc6d1e6cb4556401518789574d399eded790b70b27738136c9a8f02df7ae4219f4ba28bb22d586b languageName: node linkType: hard From f8470c8615ef9d89323c2bbd208b7719139fb3a7 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 4 Jun 2026 14:08:37 +0000 Subject: [PATCH 09/56] fix: use `util.styleText` instead of manual ANSI codes (#2981) ## Summary: Use `util.styleText` instead of manually detecting TTY mode and ANSI codes ## Test Plan: n/a --- .../local-cli/runMacOS/runMacOS.js | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) 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]}); From 1d6455dfdfa2bf62b9947df0991ac5f0bce453dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 07:11:15 -0700 Subject: [PATCH 10/56] chore(deps): bump fast-uri from 3.1.0 to 3.1.2 (#2979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
Release notes

Sourced from fast-uri's releases.

v3.1.2

⚠️ Security Release

What's Changed

Full Changelog: https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2

v3.1.1

⚠️ Security Release

What's Changed

New Contributors

Full Changelog: https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1

Commits
  • 919dd8e Bumped v3.1.2
  • c65ba57 fixup: linting
  • 6c86c17 Merge commit from fork
  • a95158a Handle malformed fragment decoding without throwing (#171)
  • cea547c Bumped v3.1.1
  • 876ce79 Merge commit from fork
  • dcdf690 ci: add lock-threads workflow (#169)
  • c860e65 build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 (#167)
  • 9b4c6dc build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml (#166)
  • 85d09a9 build(deps): bump fastify/workflows/.github/workflows/plugins-ci-package-mana...
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-uri&package-manager=npm_and_yarn&previous-version=3.1.0&new-version=3.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index da5e14865059..c23cac6e0b74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6928,9 +6928,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.1.0 - resolution: "fast-uri@npm:3.1.0" - checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 + version: 3.1.2 + resolution: "fast-uri@npm:3.1.2" + checksum: 10c0/5b35641895959f3f7ab7a7b1b5542bded159346f25ec9f256817b206d50b64eda5828e90d605a2e2fc645c90519a7259c2bab2c942ee728c88b88e5be21b090d languageName: node linkType: hard From c64cf41aee951caf2f936962c41dc27fed3e6d13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 07:11:53 -0700 Subject: [PATCH 11/56] chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.27.1 to 7.29.7 in /docsite (#2978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.27.1 to 7.29.7.
Release notes

Sourced from @​babel/plugin-transform-modules-systemjs's releases.

v7.29.7 (2026-05-25)

Re-release all packages with npm provenance attestations

v7.29.6 (2026-05-25)

:bug: Bug Fix

Committers: 3

v7.29.5 (2026-05-05)

:house: Internal

  • babel-preset-env
    • Update @babel/* dependencies

v7.29.4 (2026-05-05)

:bug: Bug Fix

  • babel-plugin-transform-modules-systemjs
    • #17974 [7.x backport]fix(systemjs): improve module string name support (@​JLHwung)

Committers: 1

v7.29.3 (2026-04-30)

:eyeglasses: Spec Compliance

:bug: Bug Fix

  • babel-helper-create-class-features-plugin, babel-plugin-proposal-decorators
    • #17931 fix(decorators): replace super within all removed static elements (@​JLHwung)
  • babel-register
  • babel-compat-data, babel-plugin-bugfix-safari-rest-destructuring-rhs-array, babel-preset-env

:nail_care: Polish

  • babel-parser

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​babel/plugin-transform-modules-systemjs since your current version.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/plugin-transform-modules-systemjs&package-manager=npm_and_yarn&previous-version=7.27.1&new-version=7.29.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docsite/yarn.lock | 163 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 156 insertions(+), 7 deletions(-) diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 3ebfea4cdca2..697baff73b0b 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" From 41ccc7e359ffbc22933e02e1c3cf33f4102e8460 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 21:52:27 -0700 Subject: [PATCH 12/56] chore(deps): bump fast-uri from 3.0.6 to 3.1.2 in /docsite (#2982) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.0.6 to 3.1.2.
Release notes

Sourced from fast-uri's releases.

v3.1.2

⚠️ Security Release

What's Changed

Full Changelog: https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2

v3.1.1

⚠️ Security Release

What's Changed

New Contributors

Full Changelog: https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1

v3.1.0

What's Changed

... (truncated)

Commits
  • 919dd8e Bumped v3.1.2
  • c65ba57 fixup: linting
  • 6c86c17 Merge commit from fork
  • a95158a Handle malformed fragment decoding without throwing (#171)
  • cea547c Bumped v3.1.1
  • 876ce79 Merge commit from fork
  • dcdf690 ci: add lock-threads workflow (#169)
  • c860e65 build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 (#167)
  • 9b4c6dc build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml (#166)
  • 85d09a9 build(deps): bump fastify/workflows/.github/workflows/plugins-ci-package-mana...
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-uri&package-manager=npm_and_yarn&previous-version=3.0.6&new-version=3.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docsite/yarn.lock b/docsite/yarn.lock index 697baff73b0b..56bfd7c26ced 100644 --- a/docsite/yarn.lock +++ b/docsite/yarn.lock @@ -6447,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 From 76f871f74af13faae11ff1a5e44c47eeece76281 Mon Sep 17 00:00:00 2001 From: "microsoft-github-policy-service[bot]" <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 21:52:45 -0700 Subject: [PATCH 13/56] chore: auto-generated baselines by 1ES Pipeline Templates (#2980) Co-authored-by: microsoft-github-policy-service[bot] <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> Co-authored-by: Saad Najmi --- .config/1espt/PipelineAutobaseliningConfig.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/1espt/PipelineAutobaseliningConfig.yml b/.config/1espt/PipelineAutobaseliningConfig.yml index 3cbad7d6135a..dfd381ce42ef 100644 --- a/.config/1espt/PipelineAutobaseliningConfig.yml +++ b/.config/1espt/PipelineAutobaseliningConfig.yml @@ -18,8 +18,8 @@ pipelines: 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 From cebe7a7cd5cc55fef327552de1d9eb0bab5b20a7 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Dall'Agnol Date: Fri, 5 Jun 2026 14:47:11 -0300 Subject: [PATCH 14/56] fix: don't require @react-native-community/cli at config-load time (#2973) ## Summary: In theory, `@react-native-community/cli` should be an optional dependency, but currently the `runMacOS` commands import requires `@react-native-community/cli` directly, causing Expo CLI users to also have to install `@react-native-community/cli` This PR guards the `require` the same way as the platform packages, and only attaches the commands when the import succeeds. The runtime behavior for projects that do install the CLI is unchanged. ## Test Plan: - In a project that does not depend on `@react-native-community/cli` (e.g. an Expo app using `expo-modules-autolinking`), run `pod install` and confirm `use_native_modules!` no longer throws when loading `react-native.config.js`. - In a project that depends on `@react-native-community/cli`, confirm `npx react-native run-macos` and the other macOS commands still register and work as before. - With `DEBUG=*` set, confirm the new warning (`./local-cli/runMacOS/runMacOS not found, the react-native.config.js may be unusable.`) is emitted only when the require fails, matching the existing warnings for the other platform packages. --- packages/react-native/react-native.config.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index 4fc760e979c0..e97da5cb0dec 100644 --- a/packages/react-native/react-native.config.js +++ b/packages/react-native/react-native.config.js @@ -87,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, @@ -161,7 +172,9 @@ if (android != null) { } // [macOS -config.commands.push(...macosCommands); +if (macosCommands != null) { + config.commands.push(...macosCommands); +} if (apple) { config.platforms.macos = { linkConfig: () => { From 1f37bdc4db6bfbe50429279f652553692153ff75 Mon Sep 17 00:00:00 2001 From: "microsoft-github-policy-service[bot]" <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 10:47:30 -0700 Subject: [PATCH 15/56] chore: auto-generated baselines by 1ES Pipeline Templates (#2984) Co-authored-by: microsoft-github-policy-service[bot] <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> --- .config/1espt/PipelineAutobaseliningConfig.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.config/1espt/PipelineAutobaseliningConfig.yml b/.config/1espt/PipelineAutobaseliningConfig.yml index dfd381ce42ef..6601c710049a 100644 --- a/.config/1espt/PipelineAutobaseliningConfig.yml +++ b/.config/1espt/PipelineAutobaseliningConfig.yml @@ -7,13 +7,13 @@ 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 From 8d88d514074abe7ab29d86bf8ab665589fd4e5a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 10:48:08 -0700 Subject: [PATCH 16/56] chore(deps): bump @xmldom/xmldom from 0.8.12 to 0.8.13 (#2983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.12 to 0.8.13.
Release notes

Sourced from @​xmldom/xmldom's releases.

0.8.13

Commits

Fixed

  • Security: XMLSerializer.serializeToString() (and Node.toString(), NodeList.toString()) now accept a requireWellFormed option (fourth argument, after isHtml and nodeFilter). When { requireWellFormed: true } is passed, the serializer throws InvalidStateError for injection-prone node content, preventing XML injection via attacker-controlled node data. GHSA-j759-j44w-7fr8 GHSA-x6wf-f3px-wcqx GHSA-f6ww-3ggp-fr8h
    • Comment: throws when data contains -->
    • ProcessingInstruction: throws when data contains ?>
    • DocumentType: throws when publicId fails PubidLiteral, systemId fails SystemLiteral, or internalSubset contains ]>
  • Security: DOM traversal operations (XMLSerializer.serializeToString(), Node.prototype.normalize(), Node.prototype.cloneNode(true), Document.prototype.importNode(node, true), node.textContent getter, getElementsByTagName() / getElementsByTagNameNS() / getElementsByClassName() / getElementById()) are now iterative. Previously, deeply nested DOM trees would exhaust the JavaScript call stack and throw an unrecoverable RangeError. GHSA-2v35-w6hq-6mfw

Thank you, @​Jvr2022, @​praveen-kv, @​TharVid, @​decsecre583, @​tlsbollei, @​KarimTantawey, for your contributions

Changelog

Sourced from @​xmldom/xmldom's changelog.

0.8.13

Fixed

  • Security: XMLSerializer.serializeToString() (and Node.toString(), NodeList.toString()) now accept a requireWellFormed option (fourth argument, after isHtml and nodeFilter). When { requireWellFormed: true } is passed, the serializer throws InvalidStateError for injection-prone node content, preventing XML injection via attacker-controlled node data. GHSA-j759-j44w-7fr8 GHSA-x6wf-f3px-wcqx GHSA-f6ww-3ggp-fr8h
    • Comment: throws when data contains -->
    • ProcessingInstruction: throws when data contains ?>
    • DocumentType: throws when publicId fails PubidLiteral, systemId fails SystemLiteral, or internalSubset contains ]>
  • Security: DOM traversal operations (XMLSerializer.serializeToString(), Node.prototype.normalize(), Node.prototype.cloneNode(true), Document.prototype.importNode(node, true), node.textContent getter, getElementsByTagName() / getElementsByTagNameNS() / getElementsByClassName() / getElementById()) are now iterative. Previously, deeply nested DOM trees would exhaust the JavaScript call stack and throw an unrecoverable RangeError. GHSA-2v35-w6hq-6mfw

Thank you, @​Jvr2022, @​praveen-kv, @​TharVid, @​decsecre583, @​tlsbollei, @​KarimTantawey, for your contributions

0.9.9

Added

Fixed

Code that passes a string containing "]]>" to createCDATASection and relied on the previously unsafe behavior will now receive InvalidCharacterError. Use a mutation method such as appendData if you intentionally need "]]>" in a CDATASection node's data.

Chore

  • updated dependencies

Thank you, @​stevenobiajulu, @​yoshi389111, @​thesmartshadow, for your contributions

Commits
  • e5c1480 0.8.13
  • 9611e20 style: drop unused import in test file
  • dc4dff3 docs: add 0.8.13 changelog entry
  • 842fa38 fix: prevent stack overflow in normalize (GHSA-2v35-w6hq-6mfw)
  • aeff69f test: add normalize behavioral coverage to node.test.js
  • cbdb0d7 fix: make walkDOM iterative to prevent stack overflow (GHSA-2v35-w6hq-6mfw)
  • 0b543d3 test: assert namespace declarations are isolated between siblings in serializ...
  • c007c51 refactor: migrate serializeToString to walkDOM
  • 2bb3899 test: add serializeToString coverage for uncovered branches
  • e69f38d refactor: migrate importNode to walkDOM
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by karfau, a new releaser for @​xmldom/xmldom since your current version.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@xmldom/xmldom&package-manager=npm_and_yarn&previous-version=0.8.12&new-version=0.8.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c23cac6e0b74..695840d4da0a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4261,9 +4261,9 @@ __metadata: linkType: hard "@xmldom/xmldom@npm:^0.8.8": - version: 0.8.12 - resolution: "@xmldom/xmldom@npm:0.8.12" - checksum: 10c0/b733c84292d1bee32ef21a05aba8f9063456b51a54068d0b4a1abf5545156ee0b9894b7ae23775b5881b11c35a8a03871d1b514fb7e1b11654cdbee57e1c2707 + version: 0.8.13 + resolution: "@xmldom/xmldom@npm:0.8.13" + checksum: 10c0/06405ee6fffba631abf715a305ace338420ebcea8baf1317f19f2752f5c505952b7df45159908e7be8451a42faa54326b780616ab4d08242b20477b2973da24b languageName: node linkType: hard From 8b2ab22a6a341c4089236e9e9debc3b9f0ead568 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 18:31:06 +0000 Subject: [PATCH 17/56] chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.25.9 to 7.29.7 (#2985) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.25.9 to 7.29.7.
Release notes

Sourced from @​babel/plugin-transform-modules-systemjs's releases.

v7.29.7 (2026-05-25)

Re-release all packages with npm provenance attestations

v7.29.6 (2026-05-25)

:bug: Bug Fix

Committers: 3

v7.29.5 (2026-05-05)

:house: Internal

  • babel-preset-env
    • Update @babel/* dependencies

v7.29.4 (2026-05-05)

:bug: Bug Fix

  • babel-plugin-transform-modules-systemjs
    • #17974 [7.x backport]fix(systemjs): improve module string name support (@​JLHwung)

Committers: 1

v7.29.3 (2026-04-30)

:eyeglasses: Spec Compliance

:bug: Bug Fix

  • babel-helper-create-class-features-plugin, babel-plugin-proposal-decorators
    • #17931 fix(decorators): replace super within all removed static elements (@​JLHwung)
  • babel-register
  • babel-compat-data, babel-plugin-bugfix-safari-rest-destructuring-rhs-array, babel-preset-env

:nail_care: Polish

  • babel-parser

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​babel/plugin-transform-modules-systemjs since your current version.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/plugin-transform-modules-systemjs&package-manager=npm_and_yarn&previous-version=7.25.9&new-version=7.29.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/react-native-macos/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 695840d4da0a..305e0c9812e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,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.26.0, @babel/compat-data@npm:^7.27.2": version: 7.28.0 resolution: "@babel/compat-data@npm:7.28.0" @@ -80,6 +91,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.25.9, @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" @@ -164,6 +188,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" @@ -184,6 +215,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.25.9, @babel/helper-module-transforms@npm:^7.28.3": version: 7.28.3 resolution: "@babel/helper-module-transforms@npm:7.28.3" @@ -197,6 +238,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" @@ -213,6 +267,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.25.9": version: 7.25.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" @@ -266,13 +327,27 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1": +"@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" checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 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.25.9, @babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-option@npm:7.27.1" @@ -312,6 +387,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.25.9": version: 7.25.9 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" @@ -933,16 +1019,16 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-systemjs@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" + version: 7.29.7 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@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/8299e3437542129c2684b86f98408c690df27db4122a79edded4782cf04e755d6ecb05b1e812c81a34224a81e664303392d5f3c36f3d2d51fdc99bb91c881e9a + checksum: 10c0/7b950bcc4a4b077b742b9299c8c9d4285e15854e23816d0b1c1177fafda4c153f3c3c4487c1b965afbf7a69a8788fc75656d0c591b91f0a5a543faabe738ca58 languageName: node linkType: hard @@ -1468,6 +1554,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--for-generate-function-map@npm:@babel/traverse@^7.25.3": version: 7.26.7 resolution: "@babel/traverse@npm:7.26.7" @@ -1498,6 +1595,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.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.28.4 resolution: "@babel/types@npm:7.28.4" @@ -1508,6 +1620,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 + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" From b24f8eb15e508dd6e6d4cf303f90577548f68057 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Thu, 25 Jun 2026 17:06:35 -0700 Subject: [PATCH 18/56] chore: bump fmt to 12.1.0 to fix Xcode 26.4 (#2996) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Cherry-pick of https://github.com/react/react-native/commit/faeef2b90a56633ad44289b994d31e7ce590b145 (facebook/react-native#56099). fmt 11.0.2 enables `consteval` on Apple clang ≥ 14 (which includes Xcode 26.4), but Xcode 26.4's stricter clang rejects consteval expressions in fmt's format-inl.h. fmt 12.1.0 fixes this. Changes: - `packages/react-native/third-party-podspecs/fmt.podspec`: 11.0.2 → 12.1.0 - `packages/react-native/third-party-podspecs/RCT-Folly.podspec": fmt dep 11.0.2 → 12.1.0 - `packages/react-native/gradle/libs.versions.toml`: 11.0.2 → 12.1.0 - `packages/rn-tester/Podfile.lock`: updated fmt version + checksum - `scripts/releases/ios-prebuild/configuration.js`: 11.0.2 → 12.1.0 ## Test Plan RNTester macOS builds successfully on Xcode 26.4. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../react-native/gradle/libs.versions.toml | 2 +- .../third-party-podspecs/RCT-Folly.podspec | 2 +- .../third-party-podspecs/fmt.podspec | 4 +- packages/rn-tester/Podfile.lock | 144 +++++++++--------- .../releases/ios-prebuild/configuration.js | 4 +- 5 files changed, 78 insertions(+), 78 deletions(-) diff --git a/packages/react-native/gradle/libs.versions.toml b/packages/react-native/gradle/libs.versions.toml index f0902b7441de..3f151489852e 100644 --- a/packages/react-native/gradle/libs.versions.toml +++ b/packages/react-native/gradle/libs.versions.toml @@ -43,7 +43,7 @@ yoga-proguard-annotations = "1.19.0" boost="1_83_0" doubleconversion="1.1.6" fastFloat="8.0.0" -fmt="11.0.2" +fmt="12.1.0" # [macOS] folly="2024.11.18.00" glog="0.3.5" gflags="2.2.0" diff --git a/packages/react-native/third-party-podspecs/RCT-Folly.podspec b/packages/react-native/third-party-podspecs/RCT-Folly.podspec index 8852179b6ce2..91473b182510 100644 --- a/packages/react-native/third-party-podspecs/RCT-Folly.podspec +++ b/packages/react-native/third-party-podspecs/RCT-Folly.podspec @@ -25,7 +25,7 @@ Pod::Spec.new do |spec| spec.dependency "DoubleConversion" spec.dependency "glog" spec.dependency "fast_float", "8.0.0" - spec.dependency "fmt", "11.0.2" + spec.dependency "fmt", "12.1.0" # [macOS] spec.compiler_flags = '-Wno-documentation -faligned-new' spec.source_files = 'folly/String.cpp', 'folly/Conv.cpp', diff --git a/packages/react-native/third-party-podspecs/fmt.podspec b/packages/react-native/third-party-podspecs/fmt.podspec index 2f38990e226c..32469c0502ad 100644 --- a/packages/react-native/third-party-podspecs/fmt.podspec +++ b/packages/react-native/third-party-podspecs/fmt.podspec @@ -8,14 +8,14 @@ fmt_git_url = fmt_config[:git] Pod::Spec.new do |spec| spec.name = "fmt" - spec.version = "11.0.2" + spec.version = "12.1.0" # [macOS] spec.license = { :type => "MIT" } spec.homepage = "https://github.com/fmtlib/fmt" spec.summary = "{fmt} is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and iostreams." spec.authors = "The fmt contributors" spec.source = { :git => fmt_git_url, - :tag => "11.0.2" + :tag => "12.1.0" # [macOS] } spec.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 531bb9933da7..52dd1a9ed845 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -3,7 +3,7 @@ PODS: - DoubleConversion (1.1.6) - fast_float (8.0.0) - FBLazyVector (1000.0.0) - - fmt (11.0.2) + - fmt (12.1.0) - glog (0.3.5) - hermes-engine (1000.0.0): - hermes-engine/cdp (= 1000.0.0) @@ -105,20 +105,20 @@ PODS: - boost - DoubleConversion - fast_float (= 8.0.0) - - fmt (= 11.0.2) + - 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 (= 11.0.2) + - fmt (= 12.1.0) - glog - RCT-Folly/Fabric (2024.11.18.00): - boost - DoubleConversion - fast_float (= 8.0.0) - - fmt (= 11.0.2) + - fmt (= 12.1.0) - glog - RCTDeprecation (1000.0.0) - RCTRequired (1000.0.0) @@ -2679,84 +2679,84 @@ SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 - FBLazyVector: 914c9db4fc55ebdf6ca840799db116f673245cff - fmt: 24e7591456deb60b4a77518f83d9a916ac84223f + FBLazyVector: 572dbc63e4b51498ae4062f73c44d181241109bc + fmt: 4cf0c5ec5864511c96d8d4bd7b03c3c69040af06 glog: 0b31c25149b9d350b2666c7d459229861a00ec07 hermes-engine: 6685af7f27b851cd7fa2675bdeef4b291383b2fc MyNativeView: 316327f1077af5d1128139107735a39c777fecb6 NativeCxxModuleExample: 19f7030867ae90b242869ee22a0aaa8a1174c706 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 OSSLibraryExample: 5105eecb9aa325c0d65c59023fd8dc5f5753e777 - RCT-Folly: c803cf33238782d5fd21a5e02d44f64068e0e130 + RCT-Folly: 14429050d15aea0b132e4c2ff5e743b910fbe9af RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: ea0ce8633d6bd7e3c6474d3671affae3341e4dc7 - RCTTypeSafety: 0629ffb01f0edb1007b32aaa6e313993562a6893 - React: 4468dbd5a20641f627fcb4da098a2959ed1bd9cb - React-callinvoker: eac6d4cbf1d95e509a9e8bd6bbf0d70608d97063 - React-Core: f9261760c6b89e90fbe496cfb05cd29cf756b347 - React-CoreModules: 573b5285aba4bf0f5ba4ed90c3154e60f212082c - React-cxxreact: 13a0435382a9dfa1af8f94ad8a994fc2c83e171f - React-debug: 1ead1100ad889e248091bd145cb650150e11eb40 - React-defaultsnativemodule: edfefda227f602dc0a907adbdcecd47507608803 - React-domnativemodule: 77cc8d1816fc4b20bf1f549bc0e0ae4cf6f781ec - React-Fabric: d340d3f80aad30de49568d1b7f28590b28f452ea - React-FabricComponents: dd98f05f41fd1200729aa4de15cda458be376251 - React-FabricImage: 981810518c96bae9c3f90c6dd06d5a9eb373aa20 - React-featureflags: e32ef5e8070fa566c75e161852b964956c4b12b0 - React-featureflagsnativemodule: 86cce3aa2b9435740cdf3a04a7cb91e4a1e3a82a - React-graphics: 95e8652a498eb47f1b5fc4defe85318c1ed7166b - React-hermes: 79a9a00278feaa6b20a21db5dfb84cd7e78d27e8 - React-idlecallbacksnativemodule: 800e3b67e01ec1b43f111d5a9a9667e2090c2009 - React-ImageManager: 4dc5dc21f06e8710dcb6b05086dc8ed4614d8fec - React-jserrorhandler: bc9e99354ecbd68695f1e2726d90d96c0129b99d - React-jsi: fed2a9198215b45687f5d0a582f16e345a675e68 - React-jsiexecutor: be0080da7cbcfd6b86b1d2b4444b23e4a50ace5e - React-jsinspector: 4c53022eea40f9a4546bdc69f978437c99d4f222 - React-jsinspectorcdp: 9c132f2ee0c42f279608e286c94be2ddd1e9cc3a - React-jsinspectornetwork: 67d88573d883db05960c41a929840289ba65dd11 - React-jsinspectortracing: d3d25aecb27a3858799cc4293ed631cef802ce99 - React-jsitooling: 164900ed1e98d6ce52e8096e267f1d242c4e23bc - React-jsitracing: a8e16db73af228f47c86afb79dea9be7a735876a - React-logger: 931720c7b8b8786e126ec069b098fe16742cb824 - React-Mapbuffer: 735b43b67aa6d0eea1f39182e23bc33dcc548699 - React-microtasksnativemodule: 3dc63757e5b21ac287de37d92eea35f683b7145c - React-NativeModulesApple: 7bae477d44227bda902a6ac05590844e7455115d - React-oscompat: 80e872d2625f973eacee8adc88f491454a5e1900 - React-perflogger: 4351d522c557181c56369a181f3d208fd2c78cad - React-performancetimeline: cd9556701b88f31ed18af19492d277522d4772dd - React-RCTActionSheet: 0f0d76589db7da427b44e4973e22956aadffa434 - React-RCTAnimation: 45a6cf9bf67118f08f5481ae1888c915be37d540 - React-RCTAppDelegate: bf80710894c7f7e17585d65d047cd0e6e77558c8 - React-RCTBlob: 93d024ab4466a70be207b7a20e2afc0da78bf3e3 - React-RCTFabric: bdbef4bc03e2171188e976a768d8fafa7d33630f - React-RCTFBReactNativeSpec: 7d23d9f871516227aa3fccd780bed6e3e4a0d77d - React-RCTImage: f6b28dd4189630bce8a039f6167e78c3e67b7c59 - React-RCTLinking: c3be6008e3d2a0a84d7661c1a0d7b0d7bb813c6a - React-RCTNetwork: b15ef021022e354019f16dc78ec510767cb6db53 - React-RCTPushNotification: 504a766c965ce3459b4d78ce5de7bc711bf24dba - React-RCTRuntime: 961130a0bc41666c5c0cbce53beb7a3384b6d400 - React-RCTSettings: 19975f8ba67e0bac7f3b5f69e7e0dc9acd7af8c3 - React-RCTTest: cdf3aa18823b16d0e4572b799f09c746d39504c6 - React-RCTText: 2fa09c9e8f7f8605fd2113a38ab68214a5491adf - React-RCTUIKit: b045d0d9f2696c4dc09ca10a005c4221b6d0090f - React-RCTVibration: cdf2714eec9a893b9805a3696f3e429f431104a8 - React-rendererconsistency: b8f70a4602de18127856ffa77ed6866332af18ec - React-renderercss: d68d39cc443fc4f7d5d8d93f0c3b72f9664d26a4 - React-rendererdebug: f2968ab1db44e216f748e7ea4f1e5923cfa2f305 - React-RuntimeApple: 8631c3424e7117cc4d16d1e593af92e507386b66 - React-RuntimeCore: b04d857177c31e10c70459d6517925391e56c026 - React-runtimeexecutor: 6e5d997f70de6c234d6690c0dfbee22e7dccf10a - React-RuntimeHermes: 23787b2235c01f955ad5000fa8fb39d468c35f40 - React-runtimescheduler: b92fad7442990dd8c631daf0fe167acd39114bdb - React-timing: ac4b31e7bf70419da58b8a785a9897315d8e1174 - React-utils: 61d631177cd2fd99b9a9a0542581637c68e7d293 - ReactAppDependencyProvider: 3c17f982e7f11d565b8f74e6087f681c7c1136b6 + RCTRequired: a90ba2a097df568cca3a67cc73fd64e453557072 + RCTTypeSafety: 88fa06bdb9206f68dcb34fe2ff5105976c7e6536 + React: 258f6e73fc555f7fb53b5fabfc7a37688f386e27 + React-callinvoker: f74849c7eade23570d1ae6cea15a94108e870761 + React-Core: a1e51a96527725d3684c272d713c7b76359553ca + React-CoreModules: f3840e293da3d3142b2bd7b0102a35f46bd01515 + React-cxxreact: fd7cd0d2758b208f22daa07337dfc4792356ae20 + React-debug: 123176fe7fc6550a9fd7c2cef2e838e858d7571f + React-defaultsnativemodule: 21c3519768ea370e81078afe069307f1f79d9600 + React-domnativemodule: 13ea84bd26f8f7278ba72d1b656278bd4af97e1c + React-Fabric: 47184784b7c019f56a13e852b374abbace2e87b4 + React-FabricComponents: 693f0b7e30875d3d6d7bcf12b35fb39c258a540b + React-FabricImage: 447d06cc801eff99666e3c70efb76a621bc34cd7 + React-featureflags: 83909097043a81481921a305cc1d39da0a34c968 + React-featureflagsnativemodule: 07b3f9201bbdfde1b28321f07f39e6dd80323d66 + React-graphics: 0563863cd702ca0eb3d3288a7b726517685d00f8 + React-hermes: 4700bfaa6105ca3dc684f71b692b02ba88f36c6f + React-idlecallbacksnativemodule: fc18902eed918a252e48a068109f0e0127ec1417 + React-ImageManager: 0b0bb413188df3441e30cbf731d92866d84bc17e + React-jserrorhandler: 09ad04a02144f1a08b9955347778ad4be9dfef5e + React-jsi: b191cadfec4952c0121b78d279ddaecc87962111 + React-jsiexecutor: 765ea12e8e280436168c715dbd7db80d1015141a + React-jsinspector: 9888fb663cfa5fb5254d317ca5452fa406765281 + React-jsinspectorcdp: e2cb40f301e71ff4ee014df04a45549514e613d7 + React-jsinspectornetwork: ebe738f0af075e89f78276d50b648fd62338881e + React-jsinspectortracing: 05da2d03bde9b4f0e25b7e457be043815896f5c0 + React-jsitooling: e2e7da620404d7f265751239ecaf3966e1bbd91e + React-jsitracing: c7e3315b8645cde1ff6b259d59a10ef44aeb9710 + React-logger: cd31d8736f35aabc455a8926af0f49dac7dadabc + React-Mapbuffer: eb674ed46c09e8a66d2f8e0a9c0a3dbced91fca4 + React-microtasksnativemodule: 3f9a529ac2a254964fa5feaafb3d8ab48d47189c + React-NativeModulesApple: 233aaf3130a0592b377a31e8bf1f4666c6478f3f + React-oscompat: 5e557f3b0f86073f8217c149bac5e44c622ad617 + React-perflogger: 81c7e475a3947003fceaa0202f95c67108c70425 + React-performancetimeline: 4c2ed7c73bfdc27422de95289eef23fcad71a8bf + React-RCTActionSheet: aa6034d53ed8487612b4d3e55bc95d8046b525d6 + React-RCTAnimation: 31beef9c6757bf44f629eab046fb6ecf0e38cb03 + React-RCTAppDelegate: c9df293323c7dc41f7881d4317ca5886deaf2139 + React-RCTBlob: 381649ccdbd46e0512221d3cc388e6b763bb3c7b + React-RCTFabric: 6576411015a75099487820832c02a2809233629a + React-RCTFBReactNativeSpec: 44ffba7156bd415dedb307308f46129889dc37cd + React-RCTImage: 5838bb9070df93e341995b16c1fbbd3de87eec32 + React-RCTLinking: 4d115419add94e6254ca8b6c0a2bad6489f423f4 + React-RCTNetwork: f21b35486778c2630d447647436f5d0fecef0dd5 + React-RCTPushNotification: fb5182fbc3cf0562365ce374c95b4c5fe42005a8 + React-RCTRuntime: ecf314914b9bfc10d97e82eada4d67736e298ff4 + React-RCTSettings: 9d7c6cf7c2e8b96197b609c793bbbd3d2c97e684 + React-RCTTest: a780cd4fcc67d10816192a917b24e77fc8a9d26c + React-RCTText: 2dabfbb958f18e90e88b71cfbbdec302a014d54a + React-RCTUIKit: 61e07623bf57c836965932ebe371db694e592892 + React-RCTVibration: c4f1cb27a2b3cbe9d03c5f02e72d8a1eca6b756c + React-rendererconsistency: 8b4f81b6a2c55a7da966bac6f87c143a21a8eb44 + React-renderercss: 2b8480c497ebf7a0a79ca535532a9b9894e31617 + React-rendererdebug: ede51209f0c5b27a0f66fec0ac6eafe3e4e5b23a + React-RuntimeApple: a3bc09a717ae04c9c40dba1095345c70ae72a24f + React-RuntimeCore: c72508a3bcf7f7be4e544c9e0b4bd243ede457c6 + React-runtimeexecutor: b04fe7729deaaae35094b0db17373f8962260c00 + React-RuntimeHermes: ef265f19e2fa564c7d6f40b90b61911535197fd6 + React-runtimescheduler: 636101885fab4734658bc175ad5dd66070f255ac + React-timing: ddd95b1504589a83a34ac30a244ba8357772e4f3 + React-utils: d3bee0a6b0d18b05df758e33476224cf823d219d + ReactAppDependencyProvider: 75fae02009f2c1b55fbf5181262176234324cfc4 ReactCodegen: 45d2e543e9f1958ea9cf32b87ffa06b550db3683 - ReactCommon: ab506150f9eed0c6c25f026a08af7f111b0b1b97 - ReactCommon-Samples: 7b6f99c4187348cd1d5d14dbe0c1035d6dd8c252 + ReactCommon: 777ceb7b72ae01e1719609377d0f7afcd1e8076c + ReactCommon-Samples: 7b876a918f955f22148121312c6afe7f2388567b ScreenshotManager: 10713952cbe264b56dfd36670e881ddd028daef5 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 8e66b322d82c0b90948545deba6b4b29f3f4a587 + Yoga: c545d09f4787a6d356ffbaf2e8b4b7e2f0c83fc0 PODFILE CHECKSUM: 86f155f7e9c92081bc7cd14b59aa0c1774a88f73 diff --git a/scripts/releases/ios-prebuild/configuration.js b/scripts/releases/ios-prebuild/configuration.js index 5719eaf3d13d..180df44fb322 100644 --- a/scripts/releases/ios-prebuild/configuration.js +++ b/scripts/releases/ios-prebuild/configuration.js @@ -80,9 +80,9 @@ const dependencies /*: $ReadOnlyArray */ = [ }, { name: 'fmt', - version: '11.0.2', + version: '12.1.0', // [macOS] url: new URL( - 'https://github.com/fmtlib/fmt/archive/refs/tags/11.0.2.tar.gz', + 'https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz', // [macOS] ), files: { sources: ['src/format.cc', 'include/fmt/*.h'], From 82618f59bac995107d36bf4503804226fc07bdea Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Dall'Agnol Date: Fri, 26 Jun 2026 00:24:27 -0300 Subject: [PATCH 19/56] chore: add support for macos platform key in autolinking config (#2995) ## Summary: The CocoaPods autolinking script hard-codes the `ios` platform key when reading the `react-native config` JSON, which assumes the upstream config provider always emits its project root and per-package config under `ios`. For proper out-of-tree platform support, autolinking should honor `--platform macos` and read `package["platforms"]["macos"]`, otherwise `config["project"]["ios"]` is `nil` and `pod install` crashes. ## Test Plan: - `pod install` in a `react-native-macos` test app driven by Expo's CLI (`expo-modules-autolinking` with `--platform macos`) completes without the `nil:NilClass` error on `config["project"]["ios"]`. - `pod install` in a `react-native-macos` test app driven by `@react-native-community/cli` (which emits `ios` keys) still resolves the same set of pods as before. - Autolinked modules that only declare `platforms.ios` in their `react-native.config.js` still appear in `Found N modules for target ...`. --- packages/react-native/scripts/cocoapods/autolinking.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/react-native/scripts/cocoapods/autolinking.rb b/packages/react-native/scripts/cocoapods/autolinking.rb index b2e5600bc5d3..76d1dec355e3 100644 --- a/packages/react-native/scripts/cocoapods/autolinking.rb +++ b/packages/react-native/scripts/cocoapods/autolinking.rb @@ -38,12 +38,13 @@ 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"]) 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"] From 6014c2c776777e6e75c3574381e381c2f5006699 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 6 Jul 2026 22:50:32 -0700 Subject: [PATCH 20/56] fix(podspec): comment out duplicate scrollview subspec in React-FabricComponents (#2969) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary The `scrollview` subspec is declared in BOTH `React-Fabric.podspec` and `React-FabricComponents.podspec`, with overlapping `source_files`: - `React-Fabric.podspec` → `react/renderer/components/scrollview/**/*.{m,mm,cpp,h}` (recursive) - `React-FabricComponents.podspec` → `react/renderer/components/scrollview/*.{m,mm,cpp,h}` + `scrollview/platform/cxx/**/*` (non-recursive + platform/cxx) Both globs include the same top-level files (`ScrollViewShadowNode.cpp`, `BaseScrollViewProps.cpp`, `ScrollEvent.cpp`, etc.). After `pod install`, those source files end up in both the `React-Fabric` and `React-FabricComponents` Pods targets. ### What breaks - **Consumers that link both libraries** (e.g. via `-all_load`) hit **duplicate symbol** errors at link time. - **Consumers that deduplicate by hand** by dropping scrollview sources from one target break differently: `React-Fabric`'s `mounting/internal/CullingContext.cpp` references `ScrollViewShadowNode`, so if the dedup drops it from `React-Fabric`, link fails with `Undefined symbols: ScrollViewShadowNode`. ### Fix Comment out (rather than delete, per the [macOS diffs-with-upstream guide](https://github.com/microsoft/react-native-macos/blob/main/docsite/docs/contributing/diffs-with-upstream.md)) the `scrollview` subspec in `React-FabricComponents.podspec`, wrapped in `# [macOS` / `# macOS]` diff tags with an inline explanation. The recursive glob in `React-Fabric.podspec`'s scrollview subspec already covers everything FabricComponents was listing. ### Test plan - [x] `pod install` succeeded against this branch (`RCT_NEW_ARCH_ENABLED=0` in `packages/rn-tester/`). - [x] Generated `Pods.xcodeproj`: - `React-Fabric-macOS` target's Sources phase contains `ScrollViewShadowNode.cpp`, `BaseScrollViewProps.cpp`, `ScrollEvent.cpp`, `ScrollViewEventEmitter.cpp`, `ScrollViewState.cpp` ✓ - `React-FabricComponents-macOS` target's Sources phase does NOT contain those files ✓ - [ ] Build verification on `RNTester` (CI will do this) Discovered while integrating `react-native-macos` v0.81.6 into a monorepo that links both `libReact-Fabric-macOS.a` and `libReact-FabricComponents-macOS.a` via `-all_load`. --- .../React-FabricComponents.podspec | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/react-native/ReactCommon/React-FabricComponents.podspec b/packages/react-native/ReactCommon/React-FabricComponents.podspec index 2c9e811738ba..1bcea9da323a 100644 --- a/packages/react-native/ReactCommon/React-FabricComponents.podspec +++ b/packages/react-native/ReactCommon/React-FabricComponents.podspec @@ -101,14 +101,25 @@ 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/*.h", - "react/renderer/components/scrollview/platform/cxx/**/*.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. + # + # 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/*.h", + # "react/renderer/components/scrollview/platform/cxx/**/*.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}", From 31e47c853582ab2796e1b65ac7cfa2ef261e2ab3 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 02:27:49 -0700 Subject: [PATCH 21/56] fix(macos): don't reset prop-derived state during Fabric view recycle (#3008) ## Summary `RCTViewComponentView.prepareForRecycle` resets `allowsVibrancy`, `acceptsFirstMouse`, and `mouseDownCanMoveWindow` to their defaults on macOS. But `_props` is preserved across recycle and `updateProps:` diffs against it, so resetting the native state without also resetting `_props` desyncs the two: when a recycled view is reused by a node holding the same non-default value, the diff sees no change, skips re-applying, and the native state stays stuck at the default. Removing the resets makes macOS rely on the preserved-`_props` diff, matching the iOS path (which resets no prop-derived state here). ## Test plan Recycle `View`s carrying a non-default `mouseDownCanMoveWindow` / `acceptsFirstMouse` / `allowsVibrancy` (e.g. in a scrolling list) and confirm reused rows keep the correct native behavior instead of reverting to defaults. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Mounting/ComponentViews/View/RCTViewComponentView.mm | 5 ----- 1 file changed, 5 deletions(-) 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 b659eaee3601..9bb8c405c4e4 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -762,11 +762,6 @@ - (void)prepareForRecycle _removeClippedSubviews = NO; _reactSubviews = [NSMutableArray new]; _accessibilityElements = [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 From 8155dfbb7e587f2e9e97efda65aa328b9baa02b8 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 02:32:50 -0700 Subject: [PATCH 22/56] feat(macos): migrate init template from Objective-C to Swift (#2948) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Replaces the Objective-C/Storyboard-based macOS init template with a modern **SwiftUI** implementation. The app delegate hosts the React Native root view inside a SwiftUI `Window` scene via `NSViewRepresentable`, so the template gets standard macOS menus, window management, and lifecycle handling for free from SwiftUI. **Net diff vs main: ~219 insertions, ~770 deletions** — most of the reduction comes from removing the 684-line `Main.storyboard` XML and the ~130-line programmatic `NSMenu` builder. ## Why SwiftUI? When replacing the Storyboard, both pure AppKit and SwiftUI were on the table: - **Pure AppKit** required hand-rolling the entire menu bar (~130 lines of `NSMenuItem` boilerplate) and manually creating an `NSWindow`. - **SwiftUI** provides standard App, Edit, View, Window, and Help menus by default through `WindowGroup`/`Window`, plus declarative window sizing via `.defaultSize(...)`. Because React Native's view is an `NSView`, embedding it in SwiftUI is a one-liner with `NSViewRepresentable` — no awkward bridging. ## Changes ### Files removed - `AppDelegate.h` / `AppDelegate.mm` — replaced by `AppDelegate.swift` - `main.m` — replaced by `@main` on the SwiftUI `App` struct (no `main.swift` needed) - `Base.lproj/Main.storyboard` (684 lines of XML) — replaced by SwiftUI ### Files added - **`AppDelegate.swift`** (59 lines) — contains: - `@main struct HelloWorldApp: App` with a `Window` scene, `.defaultSize(width: 1280, height: 720)` - `AppDelegate: NSObject, NSApplicationDelegate` wired via `@NSApplicationDelegateAdaptor`, initializing `RCTReactNativeFactory` in `init()` - `ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate` for `bundleURL()` / `sourceURL(for:)` - `ReactNativeView: NSViewRepresentable` wrapping `factory.rootViewFactory.view(withModuleName:)` ### Files modified - **`Info.plist`** — removed `NSMainStoryboardFile` key - **`project.pbxproj`** — updated file references from ObjC/storyboard to Swift; removed `main.swift` references in favor of `@main` ## Architecture alignment with upstream | Aspect | Upstream iOS | This PR (macOS) | |--------|-------------|-----------------| | Language | Swift | Swift ✅ | | App lifecycle | UIKit `UIApplicationDelegate` | **SwiftUI `App` + `NSApplicationDelegate` adaptor** | | AppDelegate base | `UIResponder, UIApplicationDelegate` | `NSObject, NSApplicationDelegate` ✅ | | Factory pattern | `RCTReactNativeFactory` + `ReactNativeDelegate` | Same ✅ | | `RCTAppDelegate` (deprecated) | Not used | Not used ✅ | | Dependency provider | `RCTAppDependencyProvider()` | Same ✅ | | `bundleURL()` / `sourceURL(for:)` | Debug→bundler, Release→jsbundle | Same ✅ | | Storyboard | None (uses `@main`) | None (uses `@main`) ✅ | | Window creation | `UIWindow(frame:)` | **SwiftUI `Window` scene** | | RN view hosting | `RCTRootView` directly | **`NSViewRepresentable` → `RCTRootView`** | | Menu bar | N/A (iOS) | **Provided by SwiftUI defaults** | | Entry point | Generated by `@main` | Generated by `@main` ✅ | ## Menu bar SwiftUI provides the standard macOS menu bar automatically with no code: - **App**: About, Settings, Services, Hide, Hide Others, Show All, Quit - **Edit**: Undo, Redo, Cut, Copy, Paste, Delete, Select All - **View**: Show/Hide Toolbar, Customize Toolbar, Enter Full Screen - **Window**: Minimize, Zoom, Close, Bring All to Front - **Help**: Standard system-managed Using `Window` (instead of `WindowGroup`) intentionally omits the "New Window" command, which is appropriate for a single-window React Native app. ## Testing - ✅ Template generator produces correct output with project name substitution - ✅ `pod install` succeeds - ✅ `AppDelegate.swift` compiles cleanly - ✅ Full build succeeds with the new architecture (`RCT_NEW_ARCH_ENABLED=1`) - ✅ App launches, Metro connects, and the JS bundle (`NewAppScreen`) renders inside the SwiftUI `Window` - ✅ Standard menus (Quit ⌘Q, Copy ⌘C, Paste ⌘V, Enter Full Screen ⌃⌘F, Minimize ⌘M, etc.) all work out of the box ## Why this is better than pure AppKit - **−122 net lines** in `AppDelegate.swift` vs the AppKit version - **No `NSMenu` boilerplate** — SwiftUI provides standard menus automatically - **No manual `NSWindow` setup** — `Window` scene handles size, title bar, lifecycle - **No `main.swift` needed** — `@main` generates the entry point - **Declarative window sizing** via `.defaultSize(width:height:)` - **Future-proof** — aligns with Apple's recommended app structure --- .../macos/HelloWorld-macOS/AppDelegate.h | 6 - .../macos/HelloWorld-macOS/AppDelegate.mm | 47 -- .../macos/HelloWorld-macOS/AppDelegate.swift | 62 ++ .../Base.lproj/Main.storyboard | 684 ------------------ .../macos/HelloWorld-macOS/Info.plist | 2 - .../templates/macos/HelloWorld-macOS/main.m | 5 - .../HelloWorld.xcodeproj/project.pbxproj | 34 +- 7 files changed, 70 insertions(+), 770 deletions(-) delete mode 100644 packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.h delete mode 100644 packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.mm create mode 100644 packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/AppDelegate.swift delete mode 100644 packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/Base.lproj/Main.storyboard delete mode 100644 packages/react-native/local-cli/generator-macos/templates/macos/HelloWorld-macOS/main.m 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; From 15dc56fcf546a70e61b43707078d743de5e1dfa2 Mon Sep 17 00:00:00 2001 From: Oscar Franco Date: Tue, 7 Jul 2026 07:19:42 -0400 Subject: [PATCH 23/56] fix(fabric): multiline text input multiline focus ring and input focus handling (#2972) ## Summary: Closes #2955, with the same changes described in the issue description ## Test Plan: Broken behavior, new arch, before changes: https://github.com/user-attachments/assets/174b7f6d-2c6b-4b08-9121-bbb7d6b204f4 After changes: https://github.com/user-attachments/assets/081435d5-55c9-4559-bea8-04a3d7064406 --------- Co-authored-by: Saad Najmi Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Text/TextInput/Multiline/RCTUITextView.mm | 22 +++++++++++++++++++ .../TextInput/Multiline/RCTWrappedTextView.m | 10 +++++++++ .../TextInput/RCTTextInputComponentView.mm | 14 +++++++++--- .../TextInput/RCTTextInputUtils.mm | 11 ++++++++-- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm index f7747ad8fd12..ded82954d237 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -26,6 +26,7 @@ @implementation RCTUITextView { #endif // [macOS] NSArray *_acceptDragAndDropTypes; #if TARGET_OS_OSX // [macOS + BOOL _enableFocusRing; NSArray *_readablePasteboardTypes; #endif // macOS] } @@ -64,6 +65,7 @@ - (instancetype)initWithFrame:(CGRect)frame // Fix blurry text on non-retina displays. self.canDrawSubviewsIntoLayer = YES; self.allowsUndo = YES; + _enableFocusRing = YES; #endif // macOS] _textInputDelegateAdapter = [[RCTBackedTextViewDelegateAdapter alloc] initWithTextView:self]; @@ -258,6 +260,26 @@ - (BOOL)resignFirstResponder return success; } + +- (NSFocusRingType)focusRingType +{ + return _enableFocusRing ? NSFocusRingTypeDefault : NSFocusRingTypeNone; +} + +- (void)setEnableFocusRing:(BOOL)enableFocusRing +{ + if (_enableFocusRing != enableFocusRing) { + _enableFocusRing = enableFocusRing; + } + + [super setFocusRingType:self.focusRingType]; + [self setKeyboardFocusRingNeedsDisplayInRect:self.bounds]; +} + +- (BOOL)enableFocusRing +{ + return _enableFocusRing; +} #endif // macOS] - (void)setDefaultTextAttributes:(NSDictionary *)defaultTextAttributes diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTWrappedTextView.m b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTWrappedTextView.m index 01114a943c70..d716f199955e 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTWrappedTextView.m +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTWrappedTextView.m @@ -49,6 +49,9 @@ - (instancetype)initWithFrame:(CGRect)frame _forwardingTextView.textContainer.containerSize = NSMakeSize(FLT_MAX, FLT_MAX); _forwardingTextView.textContainer.widthTracksTextView = YES; _forwardingTextView.textInputDelegate = self; + if ([_forwardingTextView respondsToSelector:@selector(setEnableFocusRing:)]) { + [_forwardingTextView setEnableFocusRing:YES]; + } _scrollView.documentView = _forwardingTextView; _scrollView.contentView.postsBoundsChangedNotifications = YES; @@ -197,12 +200,19 @@ - (void)setTextContainerInset:(UIEdgeInsets)textContainerInsets - (BOOL)enableFocusRing { + if ([_forwardingTextView respondsToSelector:@selector(enableFocusRing)]) { + return [_forwardingTextView enableFocusRing]; + } + return _scrollView.enableFocusRing; } - (void)setEnableFocusRing:(BOOL)enableFocusRing { _scrollView.enableFocusRing = enableFocusRing; + if ([_forwardingTextView respondsToSelector:@selector(setEnableFocusRing:)]) { + [_forwardingTextView setEnableFocusRing:enableFocusRing]; + } } @end diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm index ce4d634bc8e1..53c7bae09305 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm @@ -963,7 +963,10 @@ - (void)focus [_backedTextInputView becomeFirstResponder]; #else // [macOS NSWindow *window = [_backedTextInputView window]; - [window makeFirstResponder:_backedTextInputView]; + NSResponder *responder = [_backedTextInputView respondsToSelector:@selector(responder)] + ? _backedTextInputView.responder + : (NSResponder *)_backedTextInputView; + [window makeFirstResponder:responder]; #endif // macOS] const auto &props = static_cast(*_props); @@ -993,8 +996,13 @@ - (void)blur if ([_backedTextInputView isKindOfClass:[NSTextField class]] && [(NSTextField *)_backedTextInputView currentEditor] != nil) { [window makeFirstResponder:nil]; - } else if ([window firstResponder] == _backedTextInputView.responder) { - [window makeFirstResponder:nil]; + } else { + NSResponder *responder = [_backedTextInputView respondsToSelector:@selector(responder)] + ? _backedTextInputView.responder + : (NSResponder *)_backedTextInputView; + if ([window firstResponder] == responder) { + [window makeFirstResponder:nil]; + } } #endif // macOS] } diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm index 566d598cf95d..b3fe74cbc3cb 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm @@ -58,16 +58,23 @@ void RCTCopyBackedTextInput( toTextInput.clearButtonMode = fromTextInput.clearButtonMode; #endif // [macOS] toTextInput.scrollEnabled = fromTextInput.scrollEnabled; + toTextInput.disableKeyboardShortcuts = fromTextInput.disableKeyboardShortcuts; + toTextInput.acceptDragAndDropTypes = fromTextInput.acceptDragAndDropTypes; #if !TARGET_OS_OSX // [macOS] toTextInput.secureTextEntry = fromTextInput.secureTextEntry; toTextInput.keyboardType = fromTextInput.keyboardType; toTextInput.textContentType = fromTextInput.textContentType; toTextInput.smartInsertDeleteType = fromTextInput.smartInsertDeleteType; toTextInput.passwordRules = fromTextInput.passwordRules; - toTextInput.disableKeyboardShortcuts = fromTextInput.disableKeyboardShortcuts; - toTextInput.acceptDragAndDropTypes = fromTextInput.acceptDragAndDropTypes; [toTextInput setSelectedTextRange:fromTextInput.selectedTextRange notifyDelegate:NO]; +#else // [macOS] + toTextInput.enableFocusRing = fromTextInput.enableFocusRing; + toTextInput.pointScaleFactor = fromTextInput.pointScaleFactor; + toTextInput.automaticSpellingCorrectionEnabled = fromTextInput.automaticSpellingCorrectionEnabled; + toTextInput.grammarCheckingEnabled = fromTextInput.grammarCheckingEnabled; + toTextInput.continuousSpellCheckingEnabled = fromTextInput.continuousSpellCheckingEnabled; + [toTextInput setSelectedTextRange:[fromTextInput selectedTextRange] notifyDelegate:NO]; #endif // [macOS] } From 269455fc715f7008d5c6ca4c72b7f915385ee0ab Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 18:02:58 -0700 Subject: [PATCH 24/56] chore: support Yarn's pnpm nodeLinker (#3010) --- .flowconfig | 5 ++ .prettierrc | 1 + .yarnrc.yml | 39 +++++++++++++++- docsite/.yarnrc.yml | 2 + package.json | 16 +++++++ packages/rn-tester/metro.config.js | 1 + yarn.lock | 74 ++++++++++++++++++++++-------- 7 files changed, 117 insertions(+), 21 deletions(-) create mode 100644 docsite/.yarnrc.yml diff --git a/.flowconfig b/.flowconfig index 1faa6debeb19..96277a41df5f 100644 --- a/.flowconfig +++ b/.flowconfig @@ -69,6 +69,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\)$' -> '/packages/react-native/Libraries/Image/RelativeImageStub' module.system.haste.module_ref_prefix=m# diff --git a/.prettierrc b/.prettierrc index a3f4c89ec6a2..91d36cb6e41e 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,6 +6,7 @@ "singleQuote": true, "trailingComma": "all", "endOfLine": "lf", + "plugins": ["prettier-plugin-hermes-parser"], "overrides": [ { "files": ["*.code-workspace"], 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/package.json b/package.json index 52efcc047118..81e9d164210e 100644 --- a/package.json +++ b/package.json @@ -53,18 +53,28 @@ "@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", "@jest/create-cache-key-function": "^29.7.0", "@microsoft/api-extractor": "^7.52.2", + "@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": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "@yarnpkg/types": "^4.0.1", "ansi-styles": "^4.2.1", @@ -84,6 +94,7 @@ "eslint-plugin-jest": "^27.9.0", "eslint-plugin-jsx-a11y": "^6.6.0", "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-native": "^4.0.0", "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", @@ -91,6 +102,7 @@ "flow-bin": "^0.275.0", "glob": "^7.1.1", "hermes-eslint": "0.29.1", + "hermes-estree": "0.29.1", "hermes-transform": "0.29.1", "inquirer": "^7.1.0", "jest": "^29.7.0", @@ -98,9 +110,12 @@ "jest-diff": "^29.7.0", "jest-junit": "^10.0.0", "jest-snapshot": "^29.7.0", + "jsonc-eslint-parser": "^2.3.0", "markdownlint-cli2": "^0.22.0", "markdownlint-rule-relative-links": "^3.0.0", + "metro": "^0.82.5", "metro-babel-register": "^0.82.5", + "metro-config": "^0.82.5", "metro-memory-fs": "^0.82.5", "metro-transform-plugins": "^0.82.5", "micromatch": "^4.0.4", @@ -118,6 +133,7 @@ "tinybench": "^3.1.0", "typescript": "5.8.3", "ws": "^6.2.3", + "yargs": "^17.6.2", "zx": "^8.2.4" }, "resolutions": { diff --git a/packages/rn-tester/metro.config.js b/packages/rn-tester/metro.config.js index 445adfde474a..7ed5386ac94c 100644 --- a/packages/rn-tester/metro.config.js +++ b/packages/rn-tester/metro.config.js @@ -39,6 +39,7 @@ const config = { blockList: [/..\/react-native\/sdks\/hermes/], extraNodeModules: { 'react-native': path.resolve(__dirname, '../react-native'), + 'react-native-macos': path.resolve(__dirname, '../react-native'), // [macOS] resolve the react-native -> react-native-macos redirect in yarn pnpm mode }, platforms: ['ios', 'macos', 'android'], // [macOS] }, diff --git a/yarn.lock b/yarn.lock index 305e0c9812e4..d5f250b9a590 100644 --- a/yarn.lock +++ b/yarn.lock @@ -387,7 +387,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.29.7": +"@babel/parser@npm:^7.25.2, @babel/parser@npm:^7.29.7": version: 7.29.7 resolution: "@babel/parser@npm:7.29.7" dependencies: @@ -566,6 +566,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" @@ -1543,6 +1554,13 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.25.2": + version: 7.29.7 + resolution: "@babel/runtime@npm:7.29.7" + checksum: 10c0/ca11572f7146b21e0bde6a9ed4bb6a89eafbee5f0944c7eb54d0d8a2dac962c33638a1d611e14faa71dfbb92b4b5f9236232208568a6b7d5c6f3f39ddb91771e + languageName: node + linkType: hard + "@babel/template@npm:^7.25.0, @babel/template@npm:^7.25.9, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" @@ -1580,6 +1598,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.25.2, @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/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": version: 7.28.4 resolution: "@babel/traverse@npm:7.28.4" @@ -1595,21 +1628,6 @@ __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.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.28.4 resolution: "@babel/types@npm:7.28.4" @@ -3075,18 +3093,28 @@ __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" "@jest/create-cache-key-function": "npm:^29.7.0" "@microsoft/api-extractor": "npm:^7.52.2" + "@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:^7.1.1" "@typescript-eslint/parser": "npm:^7.1.1" "@yarnpkg/types": "npm:^4.0.1" ansi-styles: "npm:^4.2.1" @@ -3106,6 +3134,7 @@ __metadata: eslint-plugin-jest: "npm:^27.9.0" eslint-plugin-jsx-a11y: "npm:^6.6.0" eslint-plugin-react: "npm:^7.30.1" + eslint-plugin-react-hooks: "npm:^5.2.0" eslint-plugin-react-native: "npm:^4.0.0" eslint-plugin-redundant-undefined: "npm:^0.4.0" eslint-plugin-relay: "npm:^1.8.3" @@ -3113,6 +3142,7 @@ __metadata: flow-bin: "npm:^0.275.0" glob: "npm:^7.1.1" hermes-eslint: "npm:0.29.1" + hermes-estree: "npm:0.29.1" hermes-transform: "npm:0.29.1" inquirer: "npm:^7.1.0" jest: "npm:^29.7.0" @@ -3120,9 +3150,12 @@ __metadata: jest-diff: "npm:^29.7.0" jest-junit: "npm:^10.0.0" jest-snapshot: "npm:^29.7.0" + jsonc-eslint-parser: "npm:^2.3.0" markdownlint-cli2: "npm:^0.22.0" markdownlint-rule-relative-links: "npm:^3.0.0" + metro: "npm:^0.82.5" metro-babel-register: "npm:^0.82.5" + metro-config: "npm:^0.82.5" metro-memory-fs: "npm:^0.82.5" metro-transform-plugins: "npm:^0.82.5" micromatch: "npm:^4.0.4" @@ -3140,6 +3173,7 @@ __metadata: tinybench: "npm:^3.1.0" typescript: "npm:5.8.3" ws: "npm:^6.2.3" + yargs: "npm:^17.6.2" zx: "npm:^8.2.4" languageName: unknown linkType: soft @@ -3374,7 +3408,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: @@ -3398,7 +3432,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: @@ -3406,7 +3440,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: @@ -10064,7 +10098,7 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.82.5": +"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: From d64dcd3c1b7ebab3fea029b7f90659f45d6dbb48 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Wed, 8 Jul 2026 01:12:04 -0700 Subject: [PATCH 25/56] fix(macos): three Fabric focus regressions (blur, sendAccessibilityEvent, VirtualView) (#3015) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Supersedes #2959 (the original PR's source fork is disabled, so that branch can no longer be updated). This carries the same three macOS Fabric focus/first-responder fixes forward, with @tvinhas's original commit cherry-picked to preserve authorship credit, plus one small refinement. The three regressions were surfaced while validating the "Verify focus changes" item on #2901. ### 1. `RCTViewComponentView.blur()` was a no-op `resignFirstResponder` on `NSWindow` doesn't clear the focused subview, so `ref.blur()` from JS did nothing. Now clears the first responder via `makeFirstResponder:nil`, **guarded on `self`** so it only clears focus when this view actually holds it — matching iOS `[self resignFirstResponder]` semantics and avoiding stealing focus from an unrelated view. ### 2. Fabric `setAccessibilityFocus` was a silent no-op on macOS `synchronouslyDispatchAccessbilityEventOnUIThread:` had a `#if !TARGET_OS_OSX` guard with no `#else`, so `AccessibilityInfo.setAccessibilityFocus(reactTag)` did nothing on the Fabric path. Added the macOS branch (`makeFirstResponder:` + `NSAccessibilityFocusedUIElementChangedNotification`), mirroring the old-arch path in `RCTAccessibilityManager.mm`. ### 3. `RCTVirtualViewComponentView` keyboard-nav hooks Added `acceptsFirstResponder` and `accessibilityHitTest:` to the macOS branch so keyboard/Tab and VoiceOver navigation unhide flagged-offscreen views under the `hideOffscreenVirtualViews` optimization. Partial by design (a fully `hidden=YES` view is dropped from the responder chain — full fix needs a hide-strategy redesign, tracked as follow-up). ## Difference from #2959 - Added the `if ([[self window] firstResponder] == self)` guard on `blur()` for iOS-parity / to avoid focus-stealing. - Trimmed the verbose inline comments. ## Test plan - Builds clean: RNTester-macOS (`xcodebuild -scheme RNTester-macOS -destination 'generic/platform=macOS'`) — **BUILD SUCCEEDED**. - All three changes are macOS-gated (`#if TARGET_OS_OSX` / `#else`) and preserve existing iOS/visionOS behavior. ## Credit Original work by @tvinhas in #2959 (commit cherry-picked to retain authorship). Co-authored-by: Thiago Vinhas --------- Co-authored-by: Thiago Vinhas Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ComponentViews/View/RCTViewComponentView.mm | 4 +++- .../VirtualView/RCTVirtualViewComponentView.mm | 12 ++++++++++++ .../React/Fabric/Mounting/RCTMountingManager.mm | 7 ++++++- 3 files changed, 21 insertions(+), 2 deletions(-) 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 9bb8c405c4e4..677011641c78 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -1757,7 +1757,9 @@ - (void)focus - (void)blur { - [[self window] resignFirstResponder]; + if ([[self window] firstResponder] == self) { + [[self window] makeFirstResponder:nil]; + } } - (BOOL)needsPanelToBecomeKey diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm index 20f44da228d1..0a81e6391571 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm @@ -171,6 +171,18 @@ - (NSArray *)accessibilityChildren [self _unhideIfNeeded]; return [super accessibilityChildren]; } + +- (BOOL)acceptsFirstResponder +{ + [self _unhideIfNeeded]; + return [super acceptsFirstResponder]; +} + +- (id)accessibilityHitTest:(NSPoint)point +{ + [self _unhideIfNeeded]; + return [super accessibilityHitTest:point]; +} #endif // macOS] - (void)prepareForRecycle diff --git a/packages/react-native/React/Fabric/Mounting/RCTMountingManager.mm b/packages/react-native/React/Fabric/Mounting/RCTMountingManager.mm index 9f5114766e72..506768a6c1b5 100644 --- a/packages/react-native/React/Fabric/Mounting/RCTMountingManager.mm +++ b/packages/react-native/React/Fabric/Mounting/RCTMountingManager.mm @@ -346,7 +346,12 @@ - (void)synchronouslyDispatchAccessbilityEventOnUIThread:(ReactTag)reactTag even RCTUIView *componentView = [_componentViewRegistry findComponentViewWithTag:reactTag]; // [macOS] #if !TARGET_OS_OSX // [macOS] UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, componentView); -#endif // [macOS] +#else // [macOS + if (componentView != nil) { + [[componentView window] makeFirstResponder:componentView]; + NSAccessibilityPostNotification(componentView, NSAccessibilityFocusedUIElementChangedNotification); + } +#endif // macOS] } } From 9e07b36714cd25808623c80e58948dcf1879368c Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Fri, 10 Jul 2026 07:54:55 -0700 Subject: [PATCH 26/56] ci: re-enable react-native-test-app integration test using local pack (#2941) --- .ado/scripts/export-versions.mjs | 27 -------- .github/scripts/export-versions.mts | 30 +++++++++ .github/workflows/microsoft-pr.yml | 14 ++-- ...soft-react-native-test-app-integration.yml | 64 ++++++++++--------- 4 files changed, 71 insertions(+), 64 deletions(-) delete mode 100644 .ado/scripts/export-versions.mjs create mode 100644 .github/scripts/export-versions.mts 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/.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/workflows/microsoft-pr.yml b/.github/workflows/microsoft-pr.yml index 9df67d58aad6..6b7e015073e1 100644 --- a/.github/workflows/microsoft-pr.yml +++ b/.github/workflows/microsoft-pr.yml @@ -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-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 From af22586b98bdbcd0304354f92ac9501eba61b1f9 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Fri, 10 Jul 2026 17:41:39 -0700 Subject: [PATCH 27/56] fix(ci): normalize backport comment line endings (#3019) ## Summary - normalize CRLF line endings when parsing `/backport` comments - prevent carriage returns from becoming part of target branch names ## Test Plan - verified `/backport 0.81-stable\r\n` parses as `0.81-stable` - parsed the updated workflow as YAML --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/microsoft-backport.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 052752027095d62d8054135730fc6aeae77f15a2 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 07:54:17 -0700 Subject: [PATCH 28/56] feat: add support for dynamic frameworks (#2943) Fixes #1969 ## Summary Add RNTester coverage for `USE_FRAMEWORKS=dynamic` and fix the first set of build issues it exposed. - Include `folly/memory/SanitizeLeak.cpp` in RCT-Folly. The declarations were already used by Folly headers, but the implementation was not part of the pod target. - Configure the multi-platform RNTester Podfile before podspec evaluation so framework header paths include the platform suffix. - Set `SUPPORTED_PLATFORMS` on RNTester's generated pod targets. This keeps Xcode from selecting multiple platform variants of the same framework and avoids duplicate Hermes build outputs. The RNTester-specific workaround stays in `packages/rn-tester/Podfile`; this PR does not change the shared ReactCommon podspecs or CocoaPods helpers. ## RCTUIKit RCTUIKit now lives under `ReactApple/Libraries/RCTUIKit`, alongside the other Apple-specific libraries. The CocoaPods package name remains `React-RCTUIKit`, while the canonical CocoaPods/SwiftPM module is `RCTUIKit`. The canonical import is: ```objc #import ``` The two existing imports used by React Native and downstream packages remain supported: ```objc #import #import ``` The latter is used by Reanimated/Worklets on macOS. Prebuild header staging exposes both the canonical and compatibility paths. ## CI RNTester now builds a static/dynamic linkage matrix for macOS, iOS, and visionOS across both architectures. Static builds remain required. Dynamic pod-install and build steps are nonblocking for now so they can act as a canary while the remaining framework issues are worked through. ## Validation - Static RNTester iOS build passes locally. - Dynamic RNTester avoids duplicate Hermes outputs and resolves RCTUIKit without missing-header, module-cycle, or non-modular-header errors. - CI passes all static RNTester jobs. - SwiftPM platform builds and XCFramework composition pass in the macOS prebuild workflow. --------- Co-authored-by: Claude Opus 4.6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../workflows/microsoft-build-rntester.yml | 21 ++++++++++++++- .../microsoft-prebuild-macos-core.yml | 8 +++--- packages/react-native/Package.swift | 6 ++--- packages/react-native/React-Core.podspec | 1 - .../React/RCTPlatformDisplayLink.h | 9 +++++++ packages/react-native/React/RCTUIKit.h | 9 +++++++ .../react-native/React/RCTUIKit/RCTUIKit.h | 25 ----------------- .../RCTUIKit/RCTPlatformDisplayLink.h | 0 .../RCTUIKit/RCTPlatformDisplayLink.m | 0 .../RCTUIKit/RCTUIAccessibilityTraits.h | 0 .../RCTUIKit/RCTUIActivityIndicatorView.h | 2 +- .../RCTUIKit/RCTUIActivityIndicatorView.m | 2 +- .../Libraries}/RCTUIKit/RCTUIGeometry.h | 0 .../Libraries}/RCTUIKit/RCTUIGraphics.h | 0 .../Libraries}/RCTUIKit/RCTUIGraphics.m | 2 +- .../RCTUIKit/RCTUIGraphicsImageRenderer.h | 2 +- .../RCTUIKit/RCTUIGraphicsImageRenderer.m | 4 +-- .../Libraries}/RCTUIKit/RCTUIImage.h | 2 +- .../Libraries}/RCTUIKit/RCTUIImage.m | 2 +- .../Libraries}/RCTUIKit/RCTUIImageView.h | 4 +-- .../Libraries}/RCTUIKit/RCTUIImageView.m | 2 +- .../ReactApple/Libraries/RCTUIKit/RCTUIKit.h | 25 +++++++++++++++++ .../Libraries}/RCTUIKit/RCTUIKitCompat.h | 0 .../Libraries}/RCTUIKit/RCTUIKitCompat.m | 0 .../Libraries}/RCTUIKit/RCTUILabel.h | 2 +- .../Libraries}/RCTUIKit/RCTUILabel.m | 2 +- .../Libraries}/RCTUIKit/RCTUIScrollView.h | 2 +- .../Libraries}/RCTUIKit/RCTUIScrollView.m | 2 +- .../Libraries}/RCTUIKit/RCTUISlider.h | 2 +- .../Libraries}/RCTUIKit/RCTUISlider.m | 2 +- .../Libraries}/RCTUIKit/RCTUISwitch.h | 2 +- .../Libraries}/RCTUIKit/RCTUISwitch.m | 2 +- .../Libraries}/RCTUIKit/RCTUITouch.h | 0 .../Libraries}/RCTUIKit/RCTUIView.h | 2 +- .../Libraries}/RCTUIKit/RCTUIView.m | 2 +- .../Libraries}/RCTUIKit/README.md | 8 +++++- .../RCTUIKit}/React-RCTUIKit.podspec | 14 +++++----- .../scripts/ios-prebuild/setup.js | 3 ++- .../react-native/scripts/react_native_pods.rb | 2 +- .../third-party-podspecs/RCT-Folly.podspec | 1 + packages/rn-tester/Podfile | 27 ++++++++++++++++++- 41 files changed, 135 insertions(+), 66 deletions(-) create mode 100644 packages/react-native/React/RCTPlatformDisplayLink.h create mode 100644 packages/react-native/React/RCTUIKit.h delete mode 100644 packages/react-native/React/RCTUIKit/RCTUIKit.h rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTPlatformDisplayLink.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTPlatformDisplayLink.m (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIAccessibilityTraits.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIActivityIndicatorView.h (95%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIActivityIndicatorView.m (98%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIGeometry.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIGraphics.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIGraphics.m (97%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIGraphicsImageRenderer.h (97%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIGraphicsImageRenderer.m (95%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIImage.h (98%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIImage.m (98%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIImageView.h (89%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIImageView.m (98%) create mode 100644 packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKit.h rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIKitCompat.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIKitCompat.m (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUILabel.h (94%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUILabel.m (95%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIScrollView.h (98%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIScrollView.m (99%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUISlider.h (97%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUISlider.m (92%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUISwitch.h (93%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUISwitch.m (94%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUITouch.h (100%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIView.h (99%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/RCTUIView.m (99%) rename packages/react-native/{React => ReactApple/Libraries}/RCTUIKit/README.md (90%) rename packages/react-native/{ => ReactApple/Libraries/RCTUIKit}/React-RCTUIKit.podspec (78%) diff --git a/.github/workflows/microsoft-build-rntester.yml b/.github/workflows/microsoft-build-rntester.yml index 20797e8f8d07..9dc5e92f6e54 100644 --- a/.github/workflows/microsoft-build-rntester.yml +++ b/.github/workflows/microsoft-build-rntester.yml @@ -5,7 +5,7 @@ on: jobs: build-rntester: - name: "${{ matrix.platform }}, ${{ matrix.arch }}" + name: "${{ matrix.platform }}, ${{ matrix.arch }}, ${{ matrix.linkage }}" runs-on: macos-26 timeout-minutes: 90 strategy: @@ -13,6 +13,7 @@ jobs: matrix: platform: [macos, ios, visionos] arch: [oldarch, newarch] + linkage: [static, dynamic] include: # Platform-specific properties - platform: macos @@ -32,6 +33,11 @@ jobs: 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 +57,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 }} + 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-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/packages/react-native/Package.swift b/packages/react-native/Package.swift index d27caa9860ef..abc9e915dff0 100644 --- a/packages/react-native/Package.swift +++ b/packages/react-native/Package.swift @@ -365,7 +365,7 @@ let reactCore = RNTarget( "ReactCommon/react/runtime/platform/ios", // explicit header search path to break circular dependency. RCTHost imports `RCTDefines.h` in ReactCore, ReacCore needs to import RCTHost ], linkedFrameworks: ["CoreServices"], - excludedPaths: ["Fabric", "Tests", "Resources", "Runtime/RCTJscInstanceFactory.mm", "I18n/strings", "CxxBridge/JSCExecutorFactory.mm", "CoreModules", "RCTUIKit"], // [macOS] + excludedPaths: ["Fabric", "Tests", "Resources", "Runtime/RCTJscInstanceFactory.mm", "I18n/strings", "CxxBridge/JSCExecutorFactory.mm", "CoreModules"], dependencies: [.reactNativeDependencies, .reactCxxReact, .reactPerfLogger, .jsi, .reactJsiExecutor, .reactUtils, .reactFeatureFlags, .reactRuntimeScheduler, .yoga, .reactJsInspector, .reactJsiTooling, .rctDeprecation, .reactCoreRCTWebsocket, .reactRCTImage, .reactTurboModuleCore, .reactRCTText, .reactRCTBlob, .reactRCTAnimation, .reactRCTNetwork, .reactFabric, .hermesPrebuilt, .reactRCTUIKit], // [macOS] sources: [".", "Runtime/RCTHermesInstanceFactory.mm"] ) @@ -543,7 +543,7 @@ let reactSettings = RNTarget( /// UIKit/AppKit compatibility layer for React Native macOS. let reactRCTUIKit = RNTarget( name: .reactRCTUIKit, - path: "React/RCTUIKit", + path: "ReactApple/Libraries/RCTUIKit", // [macOS: UIKit on iOS/visionOS, AppKit on macOS platformLinkerSettings: [ .linkedFramework("UIKit", .when(platforms: [.iOS, .visionOS])), @@ -786,7 +786,7 @@ extension String { static let reactNativeModuleDom = "React-domnativemodule" static let reactAppDelegate = "React-RCTAppDelegate" static let reactSettings = "React-RCTSettings" - static let reactRCTUIKit = "React-RCTUIKit" // [macOS] + static let reactRCTUIKit = "RCTUIKit" // [macOS] } func relativeSearchPath(_ depth: Int, _ path: String) -> String { diff --git a/packages/react-native/React-Core.podspec b/packages/react-native/React-Core.podspec index a6c86283454a..0f9bd6d34914 100644 --- a/packages/react-native/React-Core.podspec +++ b/packages/react-native/React-Core.podspec @@ -75,7 +75,6 @@ Pod::Spec.new do |s| "React/Tests/**/*", "React/Inspector/**/*", "React/Runtime/**/*", - "React/RCTUIKit/**/*", # [macOS] ] # The default is use hermes, we don't have jsc installed diff --git a/packages/react-native/React/RCTPlatformDisplayLink.h b/packages/react-native/React/RCTPlatformDisplayLink.h new file mode 100644 index 000000000000..414c4c5ad726 --- /dev/null +++ b/packages/react-native/React/RCTPlatformDisplayLink.h @@ -0,0 +1,9 @@ +/* + * Copyright (c) Microsoft Corporation. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// [macOS] Compatibility header for existing consumers. +#import diff --git a/packages/react-native/React/RCTUIKit.h b/packages/react-native/React/RCTUIKit.h new file mode 100644 index 000000000000..fa1e198bf5cb --- /dev/null +++ b/packages/react-native/React/RCTUIKit.h @@ -0,0 +1,9 @@ +/* + * Copyright (c) Microsoft Corporation. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// [macOS] Compatibility umbrella for existing consumers. +#import diff --git a/packages/react-native/React/RCTUIKit/RCTUIKit.h b/packages/react-native/React/RCTUIKit/RCTUIKit.h deleted file mode 100644 index 3a9c635ffc69..000000000000 --- a/packages/react-native/React/RCTUIKit/RCTUIKit.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -// [macOS] -// Umbrella header for RCTUIKit — the UIKit/AppKit compatibility layer. - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/packages/react-native/React/RCTUIKit/RCTPlatformDisplayLink.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTPlatformDisplayLink.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTPlatformDisplayLink.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTPlatformDisplayLink.h diff --git a/packages/react-native/React/RCTUIKit/RCTPlatformDisplayLink.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTPlatformDisplayLink.m similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTPlatformDisplayLink.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTPlatformDisplayLink.m diff --git a/packages/react-native/React/RCTUIKit/RCTUIAccessibilityTraits.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIAccessibilityTraits.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUIAccessibilityTraits.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIAccessibilityTraits.h diff --git a/packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.h similarity index 95% rename from packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.h index d5700b0604d5..cde8c42aa013 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX @compatibility_alias RCTUIActivityIndicatorView UIActivityIndicatorView; diff --git a/packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.m similarity index 98% rename from packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.m index f7963452d2fd..c5361f69db83 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIActivityIndicatorView.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIActivityIndicatorView.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUIActivityIndicatorView.h" #import #import diff --git a/packages/react-native/React/RCTUIKit/RCTUIGeometry.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGeometry.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUIGeometry.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGeometry.h diff --git a/packages/react-native/React/RCTUIKit/RCTUIGraphics.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphics.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUIGraphics.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphics.h diff --git a/packages/react-native/React/RCTUIKit/RCTUIGraphics.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphics.m similarity index 97% rename from packages/react-native/React/RCTUIKit/RCTUIGraphics.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphics.m index d38f951f79bc..0d70952634e2 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIGraphics.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphics.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUIGraphics.h" #import diff --git a/packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.h similarity index 97% rename from packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.h index 0fa256c6004f..2b199656d571 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIImage.h" #if !TARGET_OS_OSX diff --git a/packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.m similarity index 95% rename from packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.m index 95c420b3b30b..54e82e756504 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIGraphicsImageRenderer.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIGraphicsImageRenderer.m @@ -9,8 +9,8 @@ #if TARGET_OS_OSX -#import -#import +#import "RCTUIGraphicsImageRenderer.h" +#import "RCTUIImage.h" @implementation RCTUIGraphicsImageRendererFormat diff --git a/packages/react-native/React/RCTUIKit/RCTUIImage.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.h similarity index 98% rename from packages/react-native/React/RCTUIKit/RCTUIImage.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.h index b09122f94481..017828dbca8a 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIImage.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX #import diff --git a/packages/react-native/React/RCTUIKit/RCTUIImage.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.m similarity index 98% rename from packages/react-native/React/RCTUIKit/RCTUIImage.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.m index b851a4198c41..b6e7cce97f68 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIImage.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImage.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUIImage.h" // UIImage diff --git a/packages/react-native/React/RCTUIKit/RCTUIImageView.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.h similarity index 89% rename from packages/react-native/React/RCTUIKit/RCTUIImageView.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.h index 4e011aa2b9e9..10bce6d413a2 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIImageView.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.h @@ -11,8 +11,8 @@ #include -#import -#import +#import "RCTUIKitCompat.h" +#import "RCTUIImage.h" #if !TARGET_OS_OSX @compatibility_alias RCTUIImageView UIImageView; diff --git a/packages/react-native/React/RCTUIKit/RCTUIImageView.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.m similarity index 98% rename from packages/react-native/React/RCTUIKit/RCTUIImageView.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.m index d2c4a4d892ab..e9899e969acd 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIImageView.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIImageView.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUIImageView.h" #import diff --git a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKit.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKit.h new file mode 100644 index 000000000000..eccebc648400 --- /dev/null +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKit.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) Microsoft Corporation. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// [macOS] +// Umbrella header for RCTUIKit — the UIKit/AppKit compatibility layer. + +#import "RCTUIKitCompat.h" +#import "RCTUIAccessibilityTraits.h" +#import "RCTUIGeometry.h" +#import "RCTUIGraphics.h" +#import "RCTUIImage.h" +#import "RCTUIView.h" +#import "RCTUIScrollView.h" +#import "RCTUISlider.h" +#import "RCTUILabel.h" +#import "RCTUISwitch.h" +#import "RCTUIActivityIndicatorView.h" +#import "RCTUITouch.h" +#import "RCTUIImageView.h" +#import "RCTUIGraphicsImageRenderer.h" +#import "RCTPlatformDisplayLink.h" diff --git a/packages/react-native/React/RCTUIKit/RCTUIKitCompat.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUIKitCompat.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h diff --git a/packages/react-native/React/RCTUIKit/RCTUIKitCompat.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.m similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUIKitCompat.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.m diff --git a/packages/react-native/React/RCTUIKit/RCTUILabel.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.h similarity index 94% rename from packages/react-native/React/RCTUIKit/RCTUILabel.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.h index 7781effc3b6f..963bf771d464 100644 --- a/packages/react-native/React/RCTUIKit/RCTUILabel.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX @compatibility_alias RCTUILabel UILabel; diff --git a/packages/react-native/React/RCTUIKit/RCTUILabel.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.m similarity index 95% rename from packages/react-native/React/RCTUIKit/RCTUILabel.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.m index b0b6da79f8d6..919eb5641868 100644 --- a/packages/react-native/React/RCTUIKit/RCTUILabel.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUILabel.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUILabel.h" @implementation RCTUILabel {} diff --git a/packages/react-native/React/RCTUIKit/RCTUIScrollView.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.h similarity index 98% rename from packages/react-native/React/RCTUIKit/RCTUIScrollView.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.h index 3b8cb22f2605..ae7f5b972cf1 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIScrollView.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX diff --git a/packages/react-native/React/RCTUIKit/RCTUIScrollView.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.m similarity index 99% rename from packages/react-native/React/RCTUIKit/RCTUIScrollView.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.m index bdbc0c32610d..d55eac9995d8 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIScrollView.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIScrollView.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUIScrollView.h" // RCTUIScrollView diff --git a/packages/react-native/React/RCTUIKit/RCTUISlider.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.h similarity index 97% rename from packages/react-native/React/RCTUIKit/RCTUISlider.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.h index 76f4cc243d40..91f5c0557071 100644 --- a/packages/react-native/React/RCTUIKit/RCTUISlider.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX @compatibility_alias RCTUISlider UISlider; diff --git a/packages/react-native/React/RCTUIKit/RCTUISlider.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.m similarity index 92% rename from packages/react-native/React/RCTUIKit/RCTUISlider.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.m index 36e78475becb..69dce14cae41 100644 --- a/packages/react-native/React/RCTUIKit/RCTUISlider.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISlider.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUISlider.h" @implementation RCTUISlider {} diff --git a/packages/react-native/React/RCTUIKit/RCTUISwitch.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.h similarity index 93% rename from packages/react-native/React/RCTUIKit/RCTUISwitch.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.h index ef262220bcf4..18f139f4f4f4 100644 --- a/packages/react-native/React/RCTUIKit/RCTUISwitch.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX @compatibility_alias RCTUISwitch UISwitch; diff --git a/packages/react-native/React/RCTUIKit/RCTUISwitch.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.m similarity index 94% rename from packages/react-native/React/RCTUIKit/RCTUISwitch.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.m index 04d6918cf00c..6fb9acae34bb 100644 --- a/packages/react-native/React/RCTUIKit/RCTUISwitch.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUISwitch.m @@ -9,7 +9,7 @@ #if TARGET_OS_OSX -#import +#import "RCTUISwitch.h" @implementation RCTUISwitch diff --git a/packages/react-native/React/RCTUIKit/RCTUITouch.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUITouch.h similarity index 100% rename from packages/react-native/React/RCTUIKit/RCTUITouch.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUITouch.h diff --git a/packages/react-native/React/RCTUIKit/RCTUIView.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.h similarity index 99% rename from packages/react-native/React/RCTUIKit/RCTUIView.h rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.h index c87faaa94497..76a97c0994da 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIView.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.h @@ -11,7 +11,7 @@ #include -#import +#import "RCTUIKitCompat.h" #if !TARGET_OS_OSX #import diff --git a/packages/react-native/React/RCTUIKit/RCTUIView.m b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.m similarity index 99% rename from packages/react-native/React/RCTUIKit/RCTUIView.m rename to packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.m index 0976c309ff90..19528853dd6e 100644 --- a/packages/react-native/React/RCTUIKit/RCTUIView.m +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIView.m @@ -10,7 +10,7 @@ #if TARGET_OS_OSX #import -#import +#import "RCTUIView.h" // UIView diff --git a/packages/react-native/React/RCTUIKit/README.md b/packages/react-native/ReactApple/Libraries/RCTUIKit/README.md similarity index 90% rename from packages/react-native/React/RCTUIKit/README.md rename to packages/react-native/ReactApple/Libraries/RCTUIKit/README.md index 2831f17949f5..aff6fba6eeb4 100644 --- a/packages/react-native/React/RCTUIKit/README.md +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/README.md @@ -1,5 +1,7 @@ # RCTUIKit + + RCTUIKit is a UIKit/AppKit compatibility layer for React Native macOS. It lets the rest of the codebase use UIKit-style types and APIs on both iOS and macOS by providing: @@ -11,6 +13,10 @@ codebase use UIKit-style types and APIs on both iOS and macOS by providing: - **UIKit → AppKit shims** — Constants, enums, notifications, and font defines that let code written against UIKit compile on macOS without `#if` guards everywhere. +The canonical module is `RCTUIKit`; import its umbrella as ``. Existing +`` and `` imports remain available as +compatibility entry points. + ## Naming convention: `RCTUI` vs `RCTPlatform` There are two prefixes used in this layer, and the distinction matters: @@ -41,4 +47,4 @@ For backward compatibility, the old `RCTUI` names still exist as aliases for the that were moved to `RCTPlatform`: `RCTUIColor`, `RCTUIPanGestureRecognizer`, `RCTUIApplication`. The `.m` files are wrapped in `#if TARGET_OS_OSX ... #endif` since they only contain macOS -implementations. \ No newline at end of file +implementations. diff --git a/packages/react-native/React-RCTUIKit.podspec b/packages/react-native/ReactApple/Libraries/RCTUIKit/React-RCTUIKit.podspec similarity index 78% rename from packages/react-native/React-RCTUIKit.podspec rename to packages/react-native/ReactApple/Libraries/RCTUIKit/React-RCTUIKit.podspec index 1bae5cf333f3..8c5f0e5a2186 100644 --- a/packages/react-native/React-RCTUIKit.podspec +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/React-RCTUIKit.podspec @@ -3,9 +3,11 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +# [macOS] + require "json" -package = JSON.parse(File.read(File.join(__dir__, "package.json"))) +package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json"))) version = package['version'] source = { :git => 'https://github.com/facebook/react-native.git' } @@ -25,12 +27,10 @@ Pod::Spec.new do |s| s.author = "Microsoft Corporation" s.platforms = min_supported_versions s.source = source - s.source_files = podspec_sources( - ["React/RCTUIKit/*.{h,m}"], - "React/RCTUIKit/*.h") - s.public_header_files = "React/RCTUIKit/*.h" - s.header_dir = "React" - s.module_name = "React_RCTUIKit" + s.source_files = podspec_sources("*.{h,m}", "*.h") + s.public_header_files = "*.h" + s.header_dir = "RCTUIKit" + s.module_name = "RCTUIKit" s.pod_target_xcconfig = { "DEFINES_MODULE" => "YES", "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), diff --git a/packages/react-native/scripts/ios-prebuild/setup.js b/packages/react-native/scripts/ios-prebuild/setup.js index c2cd31e65460..6c6bed31481c 100644 --- a/packages/react-native/scripts/ios-prebuild/setup.js +++ b/packages/react-native/scripts/ios-prebuild/setup.js @@ -145,7 +145,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 ca9a677645e3..34a7287a4e6a 100644 --- a/packages/react-native/scripts/react_native_pods.rb +++ b/packages/react-native/scripts/react_native_pods.rb @@ -132,7 +132,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}/ReactApple/Libraries/RCTUIKit" # [macOS] pod 'React-Core', :path => "#{prefix}/" pod 'React-CoreModules', :path => "#{prefix}/React/CoreModules" pod 'React-RCTRuntime', :path => "#{prefix}/React/Runtime" diff --git a/packages/react-native/third-party-podspecs/RCT-Folly.podspec b/packages/react-native/third-party-podspecs/RCT-Folly.podspec index 91473b182510..8423b1e19fea 100644 --- a/packages/react-native/third-party-podspecs/RCT-Folly.podspec +++ b/packages/react-native/third-party-podspecs/RCT-Folly.podspec @@ -49,6 +49,7 @@ Pod::Spec.new do |spec| 'folly/lang/CString.cpp', 'folly/lang/Exception.cpp', 'folly/memory/ReentrantAllocator.cpp', + 'folly/memory/SanitizeLeak.cpp', # [macOS] 'folly/memory/detail/MallocImpl.cpp', 'folly/net/NetOps.cpp', 'folly/portability/SysUio.cpp', diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index f07566c31c3f..1e4f26472004 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -21,6 +21,12 @@ 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" @@ -100,6 +106,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 From 8cf63ef033c7535e0ba04abb96523e6683d7377a Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 23 Jan 2026 01:08:17 -0300 Subject: [PATCH 29/56] Set Hermes version --- packages/react-native/package.json | 2 +- packages/react-native/sdks/.hermesv1version | 1 + packages/react-native/sdks/.hermesversion | 1 + .../sdks/hermes-engine/hermes-engine.podspec | 3 +-- .../sdks/hermes-engine/hermes-utils.rb | 17 ----------------- .../sdks/hermes-engine/version.properties | 4 ++-- yarn.lock | 10 +++++----- 7 files changed, 11 insertions(+), 27 deletions(-) create mode 100644 packages/react-native/sdks/.hermesv1version create mode 100644 packages/react-native/sdks/.hermesversion diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 75e3716cef44..17a575fc407b 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -199,7 +199,7 @@ "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", - "hermes-compiler": "0.0.0", + "hermes-compiler": "0.14.0", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", diff --git a/packages/react-native/sdks/.hermesv1version b/packages/react-native/sdks/.hermesv1version new file mode 100644 index 000000000000..0472f7dd0a4f --- /dev/null +++ b/packages/react-native/sdks/.hermesv1version @@ -0,0 +1 @@ +hermes-v250829098.0.2 \ No newline at end of file diff --git a/packages/react-native/sdks/.hermesversion b/packages/react-native/sdks/.hermesversion new file mode 100644 index 000000000000..74876fd4ba00 --- /dev/null +++ b/packages/react-native/sdks/.hermesversion @@ -0,0 +1 @@ +hermes-v0.14.0 \ No newline at end of file diff --git a/packages/react-native/sdks/hermes-engine/hermes-engine.podspec b/packages/react-native/sdks/hermes-engine/hermes-engine.podspec index 8c880c85a6df..169721e907a1 100644 --- a/packages/react-native/sdks/hermes-engine/hermes-engine.podspec +++ b/packages/react-native/sdks/hermes-engine/hermes-engine.podspec @@ -26,8 +26,7 @@ versionProperties = Hash[*File.read("version.properties").split(/[=\n]+/)] if ENV['RCT_HERMES_V1_ENABLED'] == "1" version = versionProperties['HERMES_V1_VERSION_NAME'] else - version = findMatchingHermesVersion(package) # [macOS] Use special logic instead of just package['version'] - # version = versionProperties['HERMES_VERSION_NAME'] + version = versionProperties['HERMES_VERSION_NAME'] end source_type = hermes_source_type(version, react_native_path) diff --git a/packages/react-native/sdks/hermes-engine/hermes-utils.rb b/packages/react-native/sdks/hermes-engine/hermes-utils.rb index b4ec229ad326..2118dddea813 100644 --- a/packages/react-native/sdks/hermes-engine/hermes-utils.rb +++ b/packages/react-native/sdks/hermes-engine/hermes-utils.rb @@ -336,23 +336,6 @@ def resolve_url_redirects(url) return (`curl -Ls -o /dev/null -w %{url_effective} \"#{url}\"`) end -# [macOS -# Tries to find a suitable Hermes version for a given react-native-macos package. -# For stable branches, we prefer this to be specified as a peer dependency. -def findMatchingHermesVersion(package) - if package['version'] == "1000.0.0" - # The main branch builds from source, so skip this check - return nil - end - - if package['peerDependencies'] - return package['peerDependencies']['react-native'] - end - - hermes_log("No matching Hermes version found. Defaulting to main branch, which may be unreliable.") -end -# macOS] - # This function checks that Hermes artifact exists. # As of now it should check it on the Maven repo. # diff --git a/packages/react-native/sdks/hermes-engine/version.properties b/packages/react-native/sdks/hermes-engine/version.properties index 81629a9921cc..7c14207b77e6 100644 --- a/packages/react-native/sdks/hermes-engine/version.properties +++ b/packages/react-native/sdks/hermes-engine/version.properties @@ -1,2 +1,2 @@ -HERMES_VERSION_NAME=1000.0.0 -HERMES_V1_VERSION_NAME=250829098.0.1 +HERMES_VERSION_NAME=0.14.0 +HERMES_V1_VERSION_NAME=250829098.0.2 diff --git a/yarn.lock b/yarn.lock index 30fcde306042..8bcfa74ad5c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9387,10 +9387,10 @@ __metadata: languageName: node linkType: hard -"hermes-compiler@npm:0.0.0": - version: 0.0.0 - resolution: "hermes-compiler@npm:0.0.0" - checksum: 10c0/8a653925c3ab65c4ae568a9c51267266c5b5e20c297df101e6f5897b8606f5f23d3af1a7b7d128d23cd7cde933e69c96826f1677fcf7fd23135d24bdc7553a50 +"hermes-compiler@npm:0.14.0": + version: 0.14.0 + resolution: "hermes-compiler@npm:0.14.0" + checksum: 10c0/672036528448e8af5895c9d8c5dfd6012b76e92a5a187caf3143925e358bfc81b993a0cd50bbae7518c01fe6dc4fdc882e25cd623219a4d33f56d5f7abe6918b languageName: node linkType: hard @@ -14205,7 +14205,7 @@ __metadata: commander: "npm:^12.0.0" flow-enums-runtime: "npm:^0.0.6" glob: "npm:^7.1.1" - hermes-compiler: "npm:0.0.0" + hermes-compiler: "npm:0.14.0" invariant: "npm:^2.2.4" jest-environment-node: "npm:^29.7.0" memoize-one: "npm:^5.0.0" From c32f3fcf0b6ccafca59fa8ae80d2769b871398e4 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 23 Jan 2026 10:00:03 -0300 Subject: [PATCH 30/56] Fix macOS build issues --- .../AppDelegate/RCTRootViewFactory.mm | 4 +- .../Libraries/Image/RCTImageBlurUtils.mm | 2 +- packages/react-native/Libraries/Text/Text.js | 45 +- packages/react-native/React/Base/RCTUtils.mm | 8 +- .../React/CoreModules/RCTDevMenu.mm | 5 +- .../Modal/RCTModalHostViewComponentView.mm | 2 +- .../RCTPullToRefreshViewComponentView.mm | 4 + .../ScrollView/RCTScrollViewComponentView.mm | 6 + .../RCTVirtualViewContainerState.mm | 8 +- .../ScrollView/RCTVirtualViewProtocol.h | 4 +- .../RCTVirtualViewExperimentalComponentView.h | 2 +- ...RCTVirtualViewExperimentalComponentView.mm | 6 +- .../React/Views/RCTFont+Private.h | 6 +- .../RCTSwiftUI/RCTSwiftUIContainerView.swift | 50 ++- .../RCTSwiftUIContainerViewWrapper.h | 17 + .../RCTSwiftUIContainerViewWrapper.m | 16 +- .../components/switch/IOSSwitchShadowNode.mm | 2 +- .../generate-artifacts-executor/utils.js | 2 +- .../ReactNativeFeatureFlags.config.js | 2 +- packages/rn-tester/Podfile.lock | 411 ++++++++++-------- 20 files changed, 376 insertions(+), 226 deletions(-) diff --git a/packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mm b/packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mm index 6ecdeb5a8480..0a636613a82d 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mm +++ b/packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mm @@ -163,7 +163,7 @@ - (void)initializeReactHostWithLaunchOptions:(NSDictionary *)launchOptions return; } -- (UIView *)viewWithModuleName:(NSString *)moduleName +- (RCTPlatformView *)viewWithModuleName:(NSString *)moduleName // [macOS] initialProperties:(NSDictionary *)initialProperties launchOptions:(NSDictionary *)launchOptions { @@ -214,7 +214,7 @@ - (RCTPlatformView *)createRootViewWithBridge:(RCTBridge *)bridge RCTPlatformView *rootView = RCTAppSetupDefaultRootView(bridge, moduleName, initProps, YES); // [macOS] #if RCT_DEV_MENU // [macOS - if (enableFabric && [rootView isKindOfClass:[RCTSurfaceHostingView class]]) { + if ([rootView isKindOfClass:[RCTSurfaceHostingView class]]) { RCTDevMenu *devMenu = [bridge moduleForClass:[RCTDevMenu class]]; if (devMenu) { [(RCTSurfaceHostingView *)rootView setDevMenu:devMenu]; diff --git a/packages/react-native/Libraries/Image/RCTImageBlurUtils.mm b/packages/react-native/Libraries/Image/RCTImageBlurUtils.mm index ab3b56ddf0cf..fd2a92bdc9f8 100644 --- a/packages/react-native/Libraries/Image/RCTImageBlurUtils.mm +++ b/packages/react-native/Libraries/Image/RCTImageBlurUtils.mm @@ -26,7 +26,7 @@ // convert to ARGB if it isn't if (CGImageGetBitsPerPixel(imageRef) != 32 || (((CGImageGetBitmapInfo(imageRef) & kCGBitmapAlphaInfoMask)) == 0u)) { RCTUIGraphicsImageRendererFormat *const rendererFormat = [RCTUIGraphicsImageRendererFormat defaultFormat]; // [macOS] - rendererFormat.scale = inputImage.scale; + rendererFormat.scale = UIImageGetScale(inputImage); // [macOS] RCTUIGraphicsImageRenderer *const renderer = [[RCTUIGraphicsImageRenderer alloc] initWithSize:inputImage.size // [macOS] format:rendererFormat]; diff --git a/packages/react-native/Libraries/Text/Text.js b/packages/react-native/Libraries/Text/Text.js index ff48fed8fedc..7714335678cc 100644 --- a/packages/react-native/Libraries/Text/Text.js +++ b/packages/react-native/Libraries/Text/Text.js @@ -195,6 +195,21 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { 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]; @@ -444,6 +459,21 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { 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]; @@ -529,21 +559,6 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) { default: accessible, }); - // [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] - let nativeText = null; if (isPressable) { nativeText = ( diff --git a/packages/react-native/React/Base/RCTUtils.mm b/packages/react-native/React/Base/RCTUtils.mm index ca872529f7fe..6c662cd5511a 100644 --- a/packages/react-native/React/Base/RCTUtils.mm +++ b/packages/react-native/React/Base/RCTUtils.mm @@ -451,7 +451,11 @@ CGSize RCTSwitchSize(void) static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ RCTUnsafeExecuteOnMainQueueSync(^{ +#if !TARGET_OS_OSX // [macOS] rctSwitchSize = [UISwitch new].intrinsicContentSize; +#else // [macOS + rctSwitchSize = [NSSwitch new].intrinsicContentSize; +#endif // macOS] }); }); return rctSwitchSize; @@ -492,7 +496,7 @@ IMP RCTSwapClassMethods(Class cls, SEL original, SEL replacement) // [macOS] } else { method_exchangeImplementations(originalMethod, replacementMethod); } - + return originalImplementation; // [macOS] } @@ -511,7 +515,7 @@ IMP RCTSwapInstanceMethods(Class cls, SEL original, SEL replacement) // [macOS] } else { method_exchangeImplementations(originalMethod, replacementMethod); } - + return originalImplementation; // [macOS] } diff --git a/packages/react-native/React/CoreModules/RCTDevMenu.mm b/packages/react-native/React/CoreModules/RCTDevMenu.mm index cf2b732aaa38..505210fbb220 100644 --- a/packages/react-native/React/CoreModules/RCTDevMenu.mm +++ b/packages/react-native/React/CoreModules/RCTDevMenu.mm @@ -554,9 +554,9 @@ - (void)setDefaultJSBundle NSAlertStyle style = NSAlertStyleInformational; #endif // macOS] +#if !TARGET_OS_OSX // [macOS] _actionSheet = [UIAlertController alertControllerWithTitle:@"React Native Dev Menu" message:nil preferredStyle:style]; -#if !TARGET_OS_OSX // [macOS] NSAttributedString *title = [[NSAttributedString alloc] initWithString:@"React Native Dev Menu" attributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:17]}]; @@ -581,8 +581,7 @@ - (void)setDefaultJSBundle [RCTPresentedViewController() presentViewController:_actionSheet animated:YES completion:nil]; #else // [macOS _alert = [NSAlert new]; - [_alert setMessageText:devMenuTitle]; - [_alert setInformativeText:description]; + [_alert setMessageText:@"React Native Dev Menu"]; [_alert setAlertStyle:NSAlertStyleInformational]; NSArray *items = [self _menuItemsToPresent]; diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm index 1cccadffc91f..0d9fb034f748 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm @@ -98,7 +98,7 @@ static UIModalPresentationStyle presentationConfiguration(const ModalHostViewPro @interface RCTModalHostViewComponentView () -@property (nonatomic, weak) UIView *accessibilityFocusedView; +@property (nonatomic, weak) RCTPlatformView *accessibilityFocusedView; // [macOS] @end diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm index cf73e0167eca..0037adae8b06 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm @@ -117,9 +117,11 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared & #endif // [macOS] } +#if !TARGET_OS_OSX // [macOS] if (_recycled || newConcreteProps.zIndex != oldConcreteProps.zIndex) { _refreshControl.layer.zPosition = newConcreteProps.zIndex.value_or(0); } +#endif // [macOS] _recycled = NO; } @@ -170,6 +172,7 @@ - (void)layoutSubviews { [super layoutSubviews]; +#if !TARGET_OS_OSX // [macOS] // Attempts to begin refreshing before the initial layout are ignored by _refreshControl. So if the control is // refreshing when mounted, we need to call beginRefreshing in layoutSubviews or it won't work. if (self.window) { @@ -179,6 +182,7 @@ - (void)layoutSubviews [self beginRefreshingProgrammatically]; } } +#endif // [macOS] } #if !TARGET_OS_OSX // [macOS] diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm index 7a160558262a..fa7bffb34d16 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm @@ -702,6 +702,7 @@ - (void)_disableViewCullingIfNecessary } } +#if !TARGET_OS_OSX // [macOS] - (NSInteger)accessibilityElementCount { // From empirical testing, method `accessibilityElementCount` is called lazily only @@ -722,6 +723,7 @@ - (NSInteger)accessibilityElementCount [self _disableViewCullingIfNecessary]; return [super focusItemsInRect:rect]; } +#endif // macOS] - (void)_updateStateWithContentOffset { @@ -745,8 +747,12 @@ - (void)_updateStateWithContentOffset } auto newData = oldData; newData.contentOffset = contentOffset; +#if !TARGET_OS_OSX // [macOS] newData.disableViewCulling = UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning() || isAccessibilityAPIUsed; +#else // [macOS + newData.disableViewCulling = isAccessibilityAPIUsed; +#endif // macOS] return std::make_shared(newData); }, enableImmediateUpdateModeForContentOffsetChanges ? EventQueue::UpdateMode::unstable_Immediate diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm index 34f150efaae9..e76e23bfdb4b 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm @@ -8,7 +8,7 @@ #import #import #import -#import +#import // [macOS] #import #import "RCTVirtualViewContainerState.h" @@ -62,7 +62,7 @@ static BOOL CGRectOverlaps(CGRect rect1, CGRect rect2) return YES; } -@interface RCTVirtualViewContainerState () +@interface RCTVirtualViewContainerState () // [macOS] @end @interface RCTVirtualViewContainerState () { @@ -181,9 +181,9 @@ - (void)_updateModes:(id)virtualView } } -#pragma mark - UIScrollViewDelegate +#pragma mark - RCTUIScrollViewDelegate // [macOS] -- (void)scrollViewDidScroll:(UIScrollView *)scrollView +- (void)scrollViewDidScroll:(RCTUIScrollView *)scrollView // [macOS] { [self _updateModes:nil]; } diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewProtocol.h b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewProtocol.h index 0bfb13898e77..1665ce0d35a5 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewProtocol.h +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewProtocol.h @@ -6,14 +6,14 @@ */ #import -#import +#import // [macOS] NS_ASSUME_NONNULL_BEGIN @protocol RCTVirtualViewProtocol - (NSString *)virtualViewID; -- (CGRect)containerRelativeRect:(UIView *)view; +- (CGRect)containerRelativeRect:(RCTPlatformView *)view; // [macOS] - (void)onModeChange:(RCTVirtualViewMode)newMode targetRect:(CGRect)targetRect thresholdRect:(CGRect)thresholdRect; @end diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.h b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.h index 519e9aa6037a..ef62b0fc7f96 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.h +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.h @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import // [macOS] #import #import diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm index 2cbab7c62950..86c6675d2bc7 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm @@ -100,6 +100,7 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared & */ static BOOL sIsAccessibilityUsed = NO; +#if !TARGET_OS_OSX // [macOS] - (NSInteger)accessibilityElementCount { // From empirical testing, method `accessibilityElementCount` is called lazily only @@ -115,6 +116,7 @@ - (NSInteger)accessibilityElementCount [self _unhideIfNeeded]; return [super focusItemsInRect:rect]; } +#endif // [macOS] - (NSString *)virtualViewID { @@ -163,7 +165,7 @@ - (void)didMoveToWindow } } -- (CGRect)containerRelativeRect:(UIView *)scrollView +- (CGRect)containerRelativeRect:(RCTPlatformView *)scrollView // [macOS] { // Return the view's position relative to its container (the scroll view) return [self convertRect:self.bounds toView:scrollView]; @@ -250,7 +252,7 @@ - (void)_unhideIfNeeded - (id)_getParentVirtualViewContainer { - UIView *view = self.superview; + RCTPlatformView *view = self.superview; // [macOS] while (view != nil) { if ([view respondsToSelector:@selector(virtualViewContainerState)]) { return (id)view; diff --git a/packages/react-native/React/Views/RCTFont+Private.h b/packages/react-native/React/Views/RCTFont+Private.h index 4bfd7f66760c..a6a06925e8ca 100644 --- a/packages/react-native/React/Views/RCTFont+Private.h +++ b/packages/react-native/React/Views/RCTFont+Private.h @@ -5,12 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import // [macOS] #import NS_ASSUME_NONNULL_BEGIN +#if !TARGET_OS_OSX // [macOS] RCT_EXTERN UIFont *__nullable RCTGetLegacyDefaultFont(CGFloat fontSize, UIFontWeight fontWeight); +#else // [macOS +RCT_EXTERN NSFont *__nullable RCTGetLegacyDefaultFont(CGFloat fontSize, NSFontWeight fontWeight); +#endif // macOS] NS_ASSUME_NONNULL_END diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift index 2ae423819ffb..20c64858e79c 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift @@ -6,30 +6,49 @@ */ import SwiftUI +#if os(macOS) // [macOS +import AppKit +#else import UIKit +#endif // macOS] + +#if os(macOS) // [macOS +public typealias RCTPlatformView = NSView +public typealias RCTUIColor = NSColor +public typealias RCTPlatformHostingController = NSHostingController +#else +public typealias RCTPlatformView = UIView +public typealias RCTUIColor = UIColor +public typealias RCTPlatformHostingController = UIHostingController +#endif // macOS] @MainActor @objc public class RCTSwiftUIContainerView: NSObject { private var containerViewModel = ContainerViewModel() - private var hostingController: UIHostingController? + private var hostingController: RCTPlatformHostingController? // [macOS] @objc public override init() { super.init() - hostingController = UIHostingController(rootView: SwiftUIContainerView(viewModel: containerViewModel)) + hostingController = RCTPlatformHostingController(rootView: SwiftUIContainerView(viewModel: containerViewModel)) // [macOS] guard let view = hostingController?.view else { return } +#if os(macOS) // [macOS + view.wantsLayer = true + view.layer?.backgroundColor = NSColor.clear.cgColor +#else // macOS] view.backgroundColor = .clear +#endif // [macOS] } - @objc public func updateContentView(_ view: UIView) { + @objc public func updateContentView(_ view: RCTPlatformView) { // [macOS] containerViewModel.contentView = view } - @objc public func hostingView() -> UIView? { + @objc public func hostingView() -> RCTPlatformView? { // [macOS] return hostingController?.view } - @objc public func contentView() -> UIView? { + @objc public func contentView() -> RCTPlatformView? { // [macOS] return containerViewModel.contentView } @@ -42,7 +61,7 @@ import UIKit containerViewModel.grayscale = CGFloat(grayscale.floatValue) } - @objc public func updateDropShadow(standardDeviation: NSNumber, x: NSNumber, y: NSNumber, color: UIColor) { + @objc public func updateDropShadow(standardDeviation: NSNumber, x: NSNumber, y: NSNumber, color: RCTUIColor) { // [macOS] containerViewModel.shadowRadius = CGFloat(standardDeviation.floatValue) containerViewModel.shadowX = CGFloat(x.floatValue) containerViewModel.shadowY = CGFloat(y.floatValue) @@ -101,7 +120,7 @@ class ContainerViewModel: ObservableObject { // hue-rotate filter properties @Published var hueRotationDegrees: CGFloat = 0 - @Published var contentView: UIView? + @Published var contentView: RCTPlatformView? // [macOS] } struct SwiftUIContainerView: View { @@ -109,7 +128,7 @@ struct SwiftUIContainerView: View { var body: some View { if let contentView = viewModel.contentView { - UIViewWrapper(view: contentView) + PlatformViewWrapper(view: contentView) // [macOS] .blur(radius: viewModel.blurRadius) .grayscale(viewModel.grayscale) .shadow(color: viewModel.shadowColor, radius: viewModel.shadowRadius, x: viewModel.shadowX, y: viewModel.shadowY) @@ -120,7 +139,19 @@ struct SwiftUIContainerView: View { } } -struct UIViewWrapper: UIViewRepresentable { +#if os(macOS) // [macOS +struct PlatformViewWrapper: NSViewRepresentable { + let view: NSView + + func makeNSView(context: Context) -> NSView { + return view + } + + func updateNSView(_ nsView: NSView, context: Context) { + } +} +#else +struct PlatformViewWrapper: UIViewRepresentable { let view: UIView func makeUIView(context: Context) -> UIView { @@ -130,3 +161,4 @@ struct UIViewWrapper: UIViewRepresentable { func updateUIView(_ uiView: UIView, context: Context) { } } +#endif // macOS] diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h index 6600f63efa3b..b43965b90aee 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h @@ -6,21 +6,38 @@ */ #import +#if TARGET_OS_OSX // [macOS +#import +#else // macOS] #import +#endif // [macOS] NS_ASSUME_NONNULL_BEGIN @interface RCTSwiftUIContainerViewWrapper : NSObject +#if !TARGET_OS_OSX // [macOS] - (UIView *_Nullable)contentView; +#else // [macOS +- (NSView *_Nullable)contentView; +#endif // macOS] - (void)updateBlurRadius:(NSNumber *)radius; - (void)updateGrayscale:(NSNumber *)grayscale; +#if !TARGET_OS_OSX // [macOS] - (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(UIColor *)color; +#else // [macOS +- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(NSColor *)color; +#endif // macOS] - (void)updateSaturation:(NSNumber *)saturation; - (void)updateContrast:(NSNumber *)contrast; - (void)updateHueRotate:(NSNumber *)degrees; +#if !TARGET_OS_OSX // [macOS] - (void)updateContentView:(UIView *)view; - (UIView *_Nullable)hostingView; +#else // [macOS +- (void)updateContentView:(NSView *)view; +- (NSView *_Nullable)hostingView; +#endif // macOS] - (void)resetStyles; - (void)updateLayoutWithBounds:(CGRect)bounds; diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m index 2ba6ea546fae..b5a3f58e03a8 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m @@ -9,6 +9,14 @@ @import RCTSwiftUI; +#if TARGET_OS_OSX // [macOS +typedef NSView RCTPlatformView; +typedef NSColor RCTUIColor; +#else // macOS] +typedef UIView RCTPlatformView; +typedef UIColor RCTUIColor; +#endif // [macOS] + @interface RCTSwiftUIContainerViewWrapper () @property (nonatomic, strong) RCTSwiftUIContainerView *swiftContainerView; @end @@ -23,12 +31,12 @@ - (instancetype)init return self; } -- (UIView *_Nullable)contentView +- (RCTPlatformView *_Nullable)contentView // [macOS] { return [self.swiftContainerView contentView]; } -- (UIView *_Nullable)hostingView +- (RCTPlatformView *_Nullable)hostingView // [macOS] { return [self.swiftContainerView hostingView]; } @@ -38,7 +46,7 @@ - (void)resetStyles [self.swiftContainerView resetStyles]; } -- (void)updateContentView:(UIView *)view +- (void)updateContentView:(RCTPlatformView *)view // [macOS] { return [self.swiftContainerView updateContentView:view]; } @@ -68,7 +76,7 @@ - (void)updateHueRotate:(NSNumber *)degrees [self.swiftContainerView updateHueRotate:degrees]; } -- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(UIColor *)color +- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(RCTUIColor *)color // [macOS] { [self.swiftContainerView updateDropShadowWithStandardDeviation:standardDeviation x:x y:y color:color]; } diff --git a/packages/react-native/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/IOSSwitchShadowNode.mm b/packages/react-native/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/IOSSwitchShadowNode.mm index d1981f17c062..031ffabee832 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/IOSSwitchShadowNode.mm +++ b/packages/react-native/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/IOSSwitchShadowNode.mm @@ -6,7 +6,7 @@ */ #import -#import +#import // [macOS] #include "AppleSwitchShadowNode.h" namespace facebook::react { 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 680f8a6d295d..ef4c3d7cbd57 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js @@ -463,7 +463,7 @@ function findDisabledLibrariesByPlatform( function findReactNativeRootPath(projectRoot /* : string */) /* : string */ { const reactNativePackageJsonPath = require.resolve( - path.join('react-native', 'package.json'), + path.join('react-native-macos', 'package.json'), // [macOS] { paths: [projectRoot], }, diff --git a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js index 18cc5cd3ad78..286dfaf8cd43 100644 --- a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js +++ b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js @@ -347,7 +347,7 @@ const definitions: FeatureFlagDefinitions = { ossReleaseStage: 'none', }, enableImperativeFocus: { - defaultValue: false, + defaultValue: true, // [macOS] metadata: { dateAdded: '2024-09-13', description: diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index ecc57327a843..4c0d4f02033a 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -5,18 +5,10 @@ PODS: - FBLazyVector (1000.0.0) - fmt (12.1.0) - glog (0.3.5) - - hermes-engine (1000.0.0): - - hermes-engine/cdp (= 1000.0.0) - - hermes-engine/Hermes (= 1000.0.0) - - hermes-engine/inspector (= 1000.0.0) - - hermes-engine/inspector_chrome (= 1000.0.0) - - hermes-engine/Public (= 1000.0.0) - - hermes-engine/cdp (1000.0.0) - - hermes-engine/Hermes (1000.0.0) - - hermes-engine/inspector (1000.0.0) - - hermes-engine/inspector_chrome (1000.0.0) - - hermes-engine/Public (1000.0.0) - - MyNativeView (0.81.0-main): + - hermes-engine (0.14.0): + - hermes-engine/Pre-built (= 0.14.0) + - hermes-engine/Pre-built (0.14.0) + - MyNativeView (0.83.0-main): - boost - DoubleConversion - fast_float @@ -44,7 +36,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - NativeCxxModuleExample (0.81.0-main): + - NativeCxxModuleExample (0.83.0-main): - boost - DoubleConversion - fast_float @@ -73,34 +65,6 @@ PODS: - SocketRocket - Yoga - OCMock (3.9.4) - - OSSLibraryExample (0.81.0-main): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - RCT-Folly (2024.11.18.00): - boost - DoubleConversion @@ -163,7 +127,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -189,7 +152,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -214,7 +176,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -241,7 +202,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -267,7 +227,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -293,7 +252,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -319,7 +277,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -345,7 +302,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -371,7 +327,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -397,7 +352,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -423,7 +377,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -449,7 +402,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -475,7 +427,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -501,7 +452,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -527,7 +477,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -543,6 +492,7 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety (= 1000.0.0) - React-Core/CoreModulesHeaders (= 1000.0.0) + - React-debug - React-jsi (= 1000.0.0) - React-jsinspector - React-jsinspectorcdp @@ -585,12 +535,14 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-domnativemodule + - React-featureflags - React-featureflagsnativemodule - React-idlecallbacksnativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule - React-RCTFBReactNativeSpec + - React-webperformancenativemodule - SocketRocket - React-domnativemodule (1000.0.0): - boost @@ -622,11 +574,12 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/animated (= 1000.0.0) + - React-Fabric/animationbackend (= 1000.0.0) - React-Fabric/animations (= 1000.0.0) - React-Fabric/attributedstring (= 1000.0.0) - React-Fabric/bridging (= 1000.0.0) @@ -655,7 +608,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animations (1000.0.0): + - React-Fabric/animated (1000.0.0): - boost - DoubleConversion - fast_float @@ -665,7 +618,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -681,7 +633,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/attributedstring (1000.0.0): + - React-Fabric/animationbackend (1000.0.0): - boost - DoubleConversion - fast_float @@ -691,7 +643,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -707,7 +658,32 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/bridging (1000.0.0): + - React-Fabric/animations (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/attributedstring (1000.0.0): - boost - DoubleConversion - fast_float @@ -717,7 +693,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -768,7 +743,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -794,7 +768,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -820,7 +793,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -850,7 +822,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -876,7 +847,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -902,7 +872,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -928,7 +897,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -956,7 +924,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -982,7 +949,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1008,7 +974,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1034,7 +999,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1060,7 +1024,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1086,7 +1049,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1112,7 +1074,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1139,7 +1100,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1165,7 +1125,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1194,7 +1153,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1220,7 +1178,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1246,7 +1203,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1274,7 +1230,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1341,10 +1296,12 @@ PODS: - React-FabricComponents/components/rncore (= 1000.0.0) - React-FabricComponents/components/safeareaview (= 1000.0.0) - React-FabricComponents/components/scrollview (= 1000.0.0) + - React-FabricComponents/components/switch (= 1000.0.0) - React-FabricComponents/components/text (= 1000.0.0) - React-FabricComponents/components/textinput (= 1000.0.0) - React-FabricComponents/components/unimplementedview (= 1000.0.0) - React-FabricComponents/components/virtualview (= 1000.0.0) + - React-FabricComponents/components/virtualviewexperimental (= 1000.0.0) - React-featureflags - React-graphics - React-jsi @@ -1519,6 +1476,33 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - React-FabricComponents/components/switch (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga - React-FabricComponents/components/text (1000.0.0): - boost - DoubleConversion @@ -1627,6 +1611,33 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - React-FabricComponents/components/virtualviewexperimental (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga - React-FabricComponents/textlayoutmanager (1000.0.0): - boost - DoubleConversion @@ -1730,6 +1741,7 @@ PODS: - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing + - React-oscompat - React-perflogger (= 1000.0.0) - React-runtimeexecutor - SocketRocket @@ -1798,12 +1810,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) + - React-cxxreact + - React-debug + - React-jsi - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 1000.0.0) + - React-perflogger - React-runtimeexecutor - SocketRocket - React-jsinspector (1000.0.0): @@ -1820,8 +1833,10 @@ PODS: - React-jsinspectorcdp - React-jsinspectornetwork - React-jsinspectortracing + - React-oscompat - React-perflogger (= 1000.0.0) - React-runtimeexecutor + - React-utils - SocketRocket - React-jsinspectorcdp (1000.0.0): - boost @@ -1840,10 +1855,7 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-featureflags - React-jsinspectorcdp - - React-performancetimeline - - React-timing - SocketRocket - React-jsinspectortracing (1000.0.0): - boost @@ -1853,6 +1865,8 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric + - React-jsi + - React-jsinspectornetwork - React-oscompat - React-timing - SocketRocket @@ -1865,6 +1879,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-cxxreact (= 1000.0.0) + - React-debug - React-jsi (= 1000.0.0) - React-jsinspector - React-jsinspectorcdp @@ -1918,6 +1933,7 @@ PODS: - React-callinvoker - React-Core - React-cxxreact + - React-debug - React-featureflags - React-jsi - React-jsinspector @@ -1926,6 +1942,20 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket + - React-networking (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing + - SocketRocket - React-oscompat (1000.0.0) - React-perflogger (1000.0.0): - boost @@ -1942,6 +1972,7 @@ PODS: - fast_float - fmt - glog + - hermes-engine - RCT-Folly - RCT-Folly/Fabric - React-jsi @@ -2042,6 +2073,7 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - RCTSwiftUIWrapper - React-Core - React-debug - React-Fabric @@ -2053,8 +2085,9 @@ PODS: - React-jsi - React-jsinspector - React-jsinspectorcdp - - React-jsinspectornetwork - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation - React-RCTFBReactNativeSpec @@ -2141,11 +2174,13 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety - React-Core/RCTNetworkHeaders + - React-debug - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket @@ -2166,6 +2201,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-Core + - React-debug - React-jsi - React-jsinspector - React-jsinspectorcdp @@ -2207,7 +2243,6 @@ PODS: - React-RCTText (1000.0.0): - React-Core/RCTTextHeaders (= 1000.0.0) - Yoga - - React-RCTUIKit (1000.0.0) - React-RCTVibration (1000.0.0): - boost - DoubleConversion @@ -2343,7 +2378,8 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (1000.0.0) + - React-timing (1000.0.0): + - React-debug - React-utils (1000.0.0): - boost - DoubleConversion @@ -2356,6 +2392,23 @@ PODS: - React-debug - React-jsi (= 1000.0.0) - SocketRocket + - React-webperformancenativemodule (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - SocketRocket - ReactAppDependencyProvider (1000.0.0): - ReactCodegen - ReactCodegen (1000.0.0): @@ -2460,7 +2513,7 @@ PODS: - React-perflogger (= 1000.0.0) - React-utils (= 1000.0.0) - SocketRocket - - ScreenshotManager (0.81.0-main): + - ScreenshotManager (0.83.0-main): - boost - DoubleConversion - fast_float @@ -2539,6 +2592,7 @@ DEPENDENCIES: - React-Mapbuffer (from `../react-native/ReactCommon`) - React-microtasksnativemodule (from `../react-native/ReactCommon/react/nativemodule/microtasks`) - React-NativeModulesApple (from `../react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../react-native/ReactCommon/react/networking`) - React-oscompat (from `../react-native/ReactCommon/oscompat`) - React-perflogger (from `../react-native/ReactCommon/reactperflogger`) - React-performancecdpmetrics (from `../react-native/ReactCommon/react/performance/cdpmetrics`) @@ -2557,7 +2611,6 @@ 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`) @@ -2569,8 +2622,9 @@ DEPENDENCIES: - React-runtimescheduler (from `../react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../react-native/ReactCommon/react/timing`) - React-utils (from `../react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-webperformancenativemodule (from `../react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon-Samples (from `../react-native/ReactCommon/react/nativemodule/samples`) - ReactCommon/turbomodule/core (from `../react-native/ReactCommon`) - ScreenshotManager (from `NativeModuleExample`) @@ -2597,7 +2651,7 @@ EXTERNAL SOURCES: :podspec: "../react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: '' + :tag: hermes-v0.14.0 MyNativeView: :path: NativeComponentExample NativeCxxModuleExample: @@ -2674,6 +2728,8 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/nativemodule/microtasks" React-NativeModulesApple: :path: "../react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../react-native/ReactCommon/react/networking" React-oscompat: :path: "../react-native/ReactCommon/oscompat" React-perflogger: @@ -2710,8 +2766,6 @@ 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: @@ -2734,10 +2788,12 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/timing" React-utils: :path: "../react-native/ReactCommon/react/utils" + React-webperformancenativemodule: + :path: "../react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../react-native/ReactCommon" ReactCommon-Samples: @@ -2751,85 +2807,88 @@ SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 - FBLazyVector: 572dbc63e4b51498ae4062f73c44d181241109bc + FBLazyVector: 39923071cccd964d01be1545529c0bac8fba8d79 fmt: 4cf0c5ec5864511c96d8d4bd7b03c3c69040af06 glog: 0b31c25149b9d350b2666c7d459229861a00ec07 - hermes-engine: 6685af7f27b851cd7fa2675bdeef4b291383b2fc - MyNativeView: 316327f1077af5d1128139107735a39c777fecb6 - NativeCxxModuleExample: 19f7030867ae90b242869ee22a0aaa8a1174c706 + hermes-engine: 0a457fd3933bf730487430adbc099fb7563e294e + MyNativeView: e21c7b329ad7f4eccdc0d7d708379af1d4f44ef3 + NativeCxxModuleExample: 5f272184e6d41b01d4e718fbc9dbc288695ef309 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 - OSSLibraryExample: 5105eecb9aa325c0d65c59023fd8dc5f5753e777 - RCT-Folly: 14429050d15aea0b132e4c2ff5e743b910fbe9af + RCT-Folly: c803cf33238782d5fd21a5e02d44f64068e0e130 RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: a90ba2a097df568cca3a67cc73fd64e453557072 - RCTTypeSafety: 88fa06bdb9206f68dcb34fe2ff5105976c7e6536 - React: 258f6e73fc555f7fb53b5fabfc7a37688f386e27 - React-callinvoker: f74849c7eade23570d1ae6cea15a94108e870761 - React-Core: a1e51a96527725d3684c272d713c7b76359553ca - React-CoreModules: f3840e293da3d3142b2bd7b0102a35f46bd01515 - React-cxxreact: fd7cd0d2758b208f22daa07337dfc4792356ae20 - React-debug: 123176fe7fc6550a9fd7c2cef2e838e858d7571f - React-defaultsnativemodule: 21c3519768ea370e81078afe069307f1f79d9600 - React-domnativemodule: 13ea84bd26f8f7278ba72d1b656278bd4af97e1c - React-Fabric: 47184784b7c019f56a13e852b374abbace2e87b4 - React-FabricComponents: 693f0b7e30875d3d6d7bcf12b35fb39c258a540b - React-FabricImage: 447d06cc801eff99666e3c70efb76a621bc34cd7 - React-featureflags: 83909097043a81481921a305cc1d39da0a34c968 - React-featureflagsnativemodule: 07b3f9201bbdfde1b28321f07f39e6dd80323d66 - React-graphics: 0563863cd702ca0eb3d3288a7b726517685d00f8 - React-hermes: 4700bfaa6105ca3dc684f71b692b02ba88f36c6f - React-idlecallbacksnativemodule: fc18902eed918a252e48a068109f0e0127ec1417 - React-ImageManager: 0b0bb413188df3441e30cbf731d92866d84bc17e - React-jserrorhandler: 09ad04a02144f1a08b9955347778ad4be9dfef5e - React-jsi: b191cadfec4952c0121b78d279ddaecc87962111 - React-jsiexecutor: 765ea12e8e280436168c715dbd7db80d1015141a - React-jsinspector: 9888fb663cfa5fb5254d317ca5452fa406765281 - React-jsinspectorcdp: e2cb40f301e71ff4ee014df04a45549514e613d7 - React-jsinspectornetwork: ebe738f0af075e89f78276d50b648fd62338881e - React-jsinspectortracing: 05da2d03bde9b4f0e25b7e457be043815896f5c0 - React-jsitooling: e2e7da620404d7f265751239ecaf3966e1bbd91e - React-jsitracing: c7e3315b8645cde1ff6b259d59a10ef44aeb9710 - React-logger: cd31d8736f35aabc455a8926af0f49dac7dadabc - React-Mapbuffer: eb674ed46c09e8a66d2f8e0a9c0a3dbced91fca4 - React-microtasksnativemodule: 3f9a529ac2a254964fa5feaafb3d8ab48d47189c - React-NativeModulesApple: 233aaf3130a0592b377a31e8bf1f4666c6478f3f - React-oscompat: 5e557f3b0f86073f8217c149bac5e44c622ad617 - React-perflogger: 81c7e475a3947003fceaa0202f95c67108c70425 - React-performancetimeline: 4c2ed7c73bfdc27422de95289eef23fcad71a8bf - React-RCTActionSheet: aa6034d53ed8487612b4d3e55bc95d8046b525d6 - React-RCTAnimation: 31beef9c6757bf44f629eab046fb6ecf0e38cb03 - React-RCTAppDelegate: c9df293323c7dc41f7881d4317ca5886deaf2139 - React-RCTBlob: 381649ccdbd46e0512221d3cc388e6b763bb3c7b - React-RCTFabric: 6576411015a75099487820832c02a2809233629a - React-RCTFBReactNativeSpec: 44ffba7156bd415dedb307308f46129889dc37cd - React-RCTImage: 5838bb9070df93e341995b16c1fbbd3de87eec32 - React-RCTLinking: 4d115419add94e6254ca8b6c0a2bad6489f423f4 - React-RCTNetwork: f21b35486778c2630d447647436f5d0fecef0dd5 - React-RCTPushNotification: fb5182fbc3cf0562365ce374c95b4c5fe42005a8 - React-RCTRuntime: ecf314914b9bfc10d97e82eada4d67736e298ff4 - React-RCTSettings: 9d7c6cf7c2e8b96197b609c793bbbd3d2c97e684 - React-RCTTest: a780cd4fcc67d10816192a917b24e77fc8a9d26c - React-RCTText: 2dabfbb958f18e90e88b71cfbbdec302a014d54a - React-RCTUIKit: 61e07623bf57c836965932ebe371db694e592892 - React-RCTVibration: c4f1cb27a2b3cbe9d03c5f02e72d8a1eca6b756c - React-rendererconsistency: 8b4f81b6a2c55a7da966bac6f87c143a21a8eb44 - React-renderercss: 2b8480c497ebf7a0a79ca535532a9b9894e31617 - React-rendererdebug: ede51209f0c5b27a0f66fec0ac6eafe3e4e5b23a - React-RuntimeApple: a3bc09a717ae04c9c40dba1095345c70ae72a24f - React-RuntimeCore: c72508a3bcf7f7be4e544c9e0b4bd243ede457c6 - React-runtimeexecutor: b04fe7729deaaae35094b0db17373f8962260c00 - React-RuntimeHermes: ef265f19e2fa564c7d6f40b90b61911535197fd6 - React-runtimescheduler: 636101885fab4734658bc175ad5dd66070f255ac - React-timing: ddd95b1504589a83a34ac30a244ba8357772e4f3 - React-utils: d3bee0a6b0d18b05df758e33476224cf823d219d - ReactAppDependencyProvider: 75fae02009f2c1b55fbf5181262176234324cfc4 - ReactCodegen: 45d2e543e9f1958ea9cf32b87ffa06b550db3683 - ReactCommon: 777ceb7b72ae01e1719609377d0f7afcd1e8076c - ReactCommon-Samples: 7b876a918f955f22148121312c6afe7f2388567b - ScreenshotManager: 10713952cbe264b56dfd36670e881ddd028daef5 + RCTRequired: c24c57745ac975cd63b68ccdea84d890af12eb56 + RCTSwiftUI: 97b5f35eedd65593b1f3ddf7a7a0e2fbba14abda + RCTSwiftUIWrapper: cc711531259ab8b322ca74f80c77f669c38dd3b2 + RCTTypeSafety: d13817c0e4e0e9dad7c18e3b06da02fa487c3b9b + React: e725d205a18d82b2de47a117698a9e4ec0a06d95 + React-callinvoker: bd36e59ac38e0f266a05cc7617266c1ffb32d1e7 + React-Core: b9f490af64f14ee1f858327e0537d1a72ee126c2 + React-CoreModules: 19b599f26e48a50b626e745482f0f7c877b4a091 + React-cxxreact: 1ff50af33800f3da9f46b6713ecbe030f879546c + React-debug: 50c3b56e5b89536f26e415d75ac7734949ee6092 + React-defaultsnativemodule: ccfbdba74283919605ed855f8a59c480ee331bd0 + React-domnativemodule: 912909077c86e4d05027f5459cbddb362e3c295e + React-Fabric: 5dc4273d802187a6871caf6edf8f6585d5c7349c + React-FabricComponents: 606c911f41c23af43038b498d933eb84b58642df + React-FabricImage: 41ccf19fbc1ecb55d3a8943dbbfb7b85ffeef0c8 + React-featureflags: 0dc3e97ff14325357ed9d61f1a69fb7f77fee488 + React-featureflagsnativemodule: ef134cd26c0243d6c9afd6aedf09b0a824e59127 + React-graphics: b02a3faf2ee2e406de39e125888fd5c0f8ef4a9d + React-hermes: 6279eef8fdb11387013b1462e8d38d9174314056 + React-idlecallbacksnativemodule: afe87ba4776559e631957ba240000a75e4502516 + React-ImageManager: 67890bccc73594dc7dd7d834a04281d8a636b87c + React-jserrorhandler: f0d22ae95c03009c3a8e78d788fdbc560f600aab + React-jsi: faa358b34b948add69ffcf0864848702089ef1cb + React-jsiexecutor: fdff554a3c4477a5d97deccc4e2aaa3de321140c + React-jsinspector: 96605534a219bd5c07724ffd22809cc864c804f3 + React-jsinspectorcdp: 1138cf0030d40916a9ac8dea94fb69552d2c6b40 + React-jsinspectornetwork: 269472e28a060b91881f4989f0e8db964ab6bd81 + React-jsinspectortracing: ea97d76f3d39901b2bbe6d49d71dd69e185f95e4 + React-jsitooling: 26fd471722b8440baf700fbd225db5e44d24dbea + React-jsitracing: 9fb524f6083ce81b117a2094812b0688784a6477 + React-logger: 1e6fa30a221a25f8fc8bfc58aa9d5bc4cebf53aa + React-Mapbuffer: 0570a5ec04d069ed428812d50abb64c5ba36dd5b + React-microtasksnativemodule: 3a9034a1bf10a5df51fac2d6852c7c786149e2b9 + React-NativeModulesApple: 51aef0f9065fa40f515816855641b6d2a25ed130 + React-networking: d7565cc774c5f15b3c7f4796823315c4362aa051 + React-oscompat: d1c2dc1d9020179c26c168a23a3921050e3519d9 + React-perflogger: 75b374b2ed2bd58d89d9b4ddf87bf53a6c97e2e4 + React-performancecdpmetrics: 8ddbeec7190c2de475a83f0fb90337270cb19231 + React-performancetimeline: 2f51235f338149d85b109af716817b2bc00000eb + React-RCTActionSheet: 36def60fb33413d4655766c9edd1243bf6de0039 + React-RCTAnimation: e57497c6d94e5e9ccc1ab516d2facb352bcf7e9e + React-RCTAppDelegate: 1483374fb3c8606cef7153fae4c2d01a07965d75 + React-RCTBlob: 958db446665053836e92f8d5ca30cea01cd1448d + React-RCTFabric: 5ec8df5c7c2235c71390afa0043498260320b9d1 + React-RCTFBReactNativeSpec: 069d4bb334c8e533c7b37dbabcae102f6baf5795 + React-RCTImage: 6bf941bd884cf2a6dc29066bfc375ee809394756 + React-RCTLinking: fcd1397b1863dc328671015e2708b905a5eab23b + React-RCTNetwork: 84be7d256badf4a8b440f8fde71f0efe51767e80 + React-RCTPushNotification: a25e1d0750cd26b73090e07d51f0a7f9313a439b + React-RCTRuntime: a56bbc482bf370e92b3867d2ac43907b67a344b8 + React-RCTSettings: 01aff707d6b01604326c3267a2101400acea3aaa + React-RCTTest: 3b654ae4fcf0e7f6400e29cf3019cee6e276c206 + React-RCTText: 9ce693532975422fc2af310d17cacf74fde33149 + React-RCTVibration: 1354ca55b49cfa4ec50c977a0d4e518c2bd96ab7 + React-rendererconsistency: 1cea232a3dec6fc5cf61b8af2176f77458a2441d + React-renderercss: 5c5766b6e733365d0d2c70578505624f43326f4e + React-rendererdebug: f44a3e92604c2447f3380c62b38fbf9060588ae1 + React-RuntimeApple: 037bb9f3699140afa517a7f7026b99d31aa746b6 + React-RuntimeCore: e622ef1638074a46479245bbb791415d82c19759 + React-runtimeexecutor: 8b1f9fa2bc8197b6bb9b3d5d7ff7f5a12bb16bb1 + React-RuntimeHermes: c39cd3d7d92390c3e7f2e348a24d5b5e5f88bb53 + React-runtimescheduler: 24f6a173a003639a3c7e21bac27ed5d1c8062b30 + React-timing: 43f03a053c0483d3b9f43258237e0aac84ccb175 + React-utils: 0731019ed1a10f61f681909a0b3ac0cab06a45a3 + React-webperformancenativemodule: 1cf7d71e2fad07e96bd207c84b5e81610909e36d + ReactAppDependencyProvider: 80da86a794fad484ed08851802a296bbfb75c171 + ReactCodegen: feb1df47e9028f6138ac07a5833a4054b860f0bf + ReactCommon: 0a12df3a3952c812cf543b28ae9d5de1709048d5 + ReactCommon-Samples: 5910e5cf5bc7cd4fedce76074c3587553c8dc0b1 + ScreenshotManager: 6309cb08dece76b15c719c9bbe53676edc7996b9 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: c545d09f4787a6d356ffbaf2e8b4b7e2f0c83fc0 + Yoga: 381dabc39f53677f028a17fe0411ef2903a8d280 -PODFILE CHECKSUM: 86f155f7e9c92081bc7cd14b59aa0c1774a88f73 +PODFILE CHECKSUM: b0deddb21777343a01d28bcc1451dce20fce8b97 -COCOAPODS: 1.16.2 +COCOAPODS: 1.15.2 From 84d07203e55f69e011aa9c3ef58c7df357dba4b3 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 23 Jan 2026 16:40:27 -0300 Subject: [PATCH 31/56] Fix flow checks --- packages/dev-middleware/package.json | 2 +- .../Libraries/Pressability/Pressability.js | 6 +++--- .../Utilities/__tests__/Platform-test.js | 7 ++++--- .../AccessibilityShowMenu.js | 3 ++- .../examples/DragAndDrop/DragAndDropExample.js | 3 ++- .../js/examples/FocusOnMount/FocusOnMount.js | 6 ++++-- .../js/examples/FocusRing/FocusRingExample.js | 4 +++- .../rn-tester/js/examples/GhostText/GhostText.js | 4 +++- .../KeyboardEventsExample.js | 16 ++++++++++------ .../js/examples/Snapshot/SnapshotExample.js | 2 +- .../TextInput/TextInputSharedExamples.js | 4 ++-- .../js/examples/Tooltip/TooltipExample.js | 4 +++- .../js/examples/Touchable/TouchableExample.js | 8 ++++---- .../virtualized-lists/Lists/VirtualizedList.js | 2 +- .../Lists/VirtualizedListCellRenderer.js | 2 +- yarn.lock | 4 ++-- 16 files changed, 46 insertions(+), 31 deletions(-) diff --git a/packages/dev-middleware/package.json b/packages/dev-middleware/package.json index ae01b753fe80..3b114ac6fae3 100644 --- a/packages/dev-middleware/package.json +++ b/packages/dev-middleware/package.json @@ -39,7 +39,7 @@ "node": ">= 20.19.4" }, "devDependencies": { - "@react-native/debugger-shell": "0.83.0-main", + "@react-native/debugger-shell": "workspace:*", "selfsigned": "^2.4.1", "undici": "^6.24.0", "wait-for-expect": "^3.0.2" diff --git a/packages/react-native/Libraries/Pressability/Pressability.js b/packages/react-native/Libraries/Pressability/Pressability.js index 9d62bd348526..81b02c213367 100644 --- a/packages/react-native/Libraries/Pressability/Pressability.js +++ b/packages/react-native/Libraries/Pressability/Pressability.js @@ -610,9 +610,9 @@ export default class Pressability { event.defaultPrevented !== true ) { const {onPress, onPressIn} = this._config; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type]: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressIn && onPressIn(event); - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type]: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPress && onPress(event); } }, @@ -628,7 +628,7 @@ export default class Pressability { event.defaultPrevented !== true ) { const {onPressOut} = this._config; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type]: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressOut && onPressOut(event); } }, diff --git a/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js b/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js index f85fb44bd91f..09a0e2ce1014 100644 --- a/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js +++ b/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js @@ -37,12 +37,13 @@ describe('Platform', () => { // [macOS it('should return correct platform given partial platform overrides', () => { - const iosSpecific = {ios: 'ios', native: 'native'}; + const iosSpecific = {ios: 'ios', native: 'native'} as PlatformSelectSpec; + expect(PlatformIOS.select(iosSpecific)).toEqual(iosSpecific.ios); expect(PlatformAndroid.select(iosSpecific)).toEqual(iosSpecific.native); expect(PlatformMacOS.select(iosSpecific)).toEqual(iosSpecific.native); - const androidSpecific = {android: 'android', native: 'native'}; + const androidSpecific = {android: 'android', native: 'native'} as PlatformSelectSpec; expect(PlatformIOS.select(androidSpecific)).toEqual( androidSpecific.native, ); @@ -53,7 +54,7 @@ describe('Platform', () => { androidSpecific.native, ); - const macosSpecific = {macos: 'macos', native: 'native'}; + const macosSpecific = {macos: 'macos', native: 'native'} as PlatformSelectSpec; expect(PlatformIOS.select(macosSpecific)).toEqual(macosSpecific.native); expect(PlatformAndroid.select(macosSpecific)).toEqual( macosSpecific.native, diff --git a/packages/rn-tester/js/examples/AccessibilityShowMenu/AccessibilityShowMenu.js b/packages/rn-tester/js/examples/AccessibilityShowMenu/AccessibilityShowMenu.js index 2a05e17498e0..d0a4c2745c77 100644 --- a/packages/rn-tester/js/examples/AccessibilityShowMenu/AccessibilityShowMenu.js +++ b/packages/rn-tester/js/examples/AccessibilityShowMenu/AccessibilityShowMenu.js @@ -12,6 +12,7 @@ // [macOS] +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {AccessibilityActionEvent} from 'react-native/Libraries/Components/View/ViewAccessibility'; const React = require('react'); @@ -65,4 +66,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/DragAndDrop/DragAndDropExample.js b/packages/rn-tester/js/examples/DragAndDrop/DragAndDropExample.js index a87f715c458f..d220b4f32676 100644 --- a/packages/rn-tester/js/examples/DragAndDrop/DragAndDropExample.js +++ b/packages/rn-tester/js/examples/DragAndDrop/DragAndDropExample.js @@ -12,6 +12,7 @@ // [macOS +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {PasteEvent} from 'react-native/Libraries/Components/TextInput/TextInput.flow'; import ExampleTextInput from '../TextInput/ExampleTextInput'; @@ -226,6 +227,6 @@ exports.examples = [ return ; }, }, -]; +] as Array; // macOS] diff --git a/packages/rn-tester/js/examples/FocusOnMount/FocusOnMount.js b/packages/rn-tester/js/examples/FocusOnMount/FocusOnMount.js index 5e8955c9a875..fa7cf6f1a79e 100644 --- a/packages/rn-tester/js/examples/FocusOnMount/FocusOnMount.js +++ b/packages/rn-tester/js/examples/FocusOnMount/FocusOnMount.js @@ -10,6 +10,8 @@ // [macOS] Github#1412) 'use strict'; +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + const React = require('react'); const ReactNative = require('react-native'); @@ -23,7 +25,7 @@ class FocusOnMountExample extends React.Component<{}> { const commands = UIManager.getViewManagerConfig('RCTView').Commands; if ('focus' in commands) { UIManager.dispatchViewManagerCommand( - // $FlowFixMe[incompatible-call] + // $FlowFixMe[incompatible-type] findNodeHandle(this.ref.current), UIManager.getViewManagerConfig('RCTView').Commands.focus, undefined, @@ -52,4 +54,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/FocusRing/FocusRingExample.js b/packages/rn-tester/js/examples/FocusRing/FocusRingExample.js index 8964e18b4c2e..9fc09d4c6b4b 100644 --- a/packages/rn-tester/js/examples/FocusRing/FocusRingExample.js +++ b/packages/rn-tester/js/examples/FocusRing/FocusRingExample.js @@ -12,6 +12,8 @@ // [macOS] +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + const React = require('react'); const ReactNative = require('react-native'); @@ -71,4 +73,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/GhostText/GhostText.js b/packages/rn-tester/js/examples/GhostText/GhostText.js index b688fa053914..68f4b6c4e769 100644 --- a/packages/rn-tester/js/examples/GhostText/GhostText.js +++ b/packages/rn-tester/js/examples/GhostText/GhostText.js @@ -10,6 +10,8 @@ 'use strict'; // [macOS] +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + const React = require('react'); const ReactNative = require('react-native'); @@ -253,4 +255,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js b/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js index cad16accd852..85ae8d1bd7ce 100644 --- a/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js +++ b/packages/rn-tester/js/examples/KeyboardEventsExample/KeyboardEventsExample.js @@ -10,6 +10,7 @@ 'use strict'; // [macOS] +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type { HandledKeyEvent, KeyEvent, @@ -48,7 +49,7 @@ function isKeyBlocked(event: KeyEvent, keyEvents: Array) { ); } -const BOX2_KEY_DOWN_EVENTS = [{key: 'f'}, {key: 'g'}]; +const BOX2_KEY_DOWN_EVENTS: Array = [{key: 'f'}, {key: 'g'}]; function EventLog({ eventLog, @@ -206,7 +207,7 @@ function KeyboardEventExample(): React.Node { {key: 'Escape'}, {key: 'Enter'}, {key: 'ArrowLeft'}, - ]; + ] as Array; const isBlocked = isKeyBlocked(event, keyDownEvents); const suffix = isBlocked ? ' (blocked)' : ''; const keyDisplay = formatKeyEvent(event); @@ -214,7 +215,7 @@ function KeyboardEventExample(): React.Node { }, []); const handleSingleLineKeyUp = React.useCallback((event: KeyEvent) => { - const keyUpEvents = [{key: 'c'}, {key: 'd'}]; + const keyUpEvents = [{key: 'c'}, {key: 'd'}] as Array; const isBlocked = isKeyBlocked(event, keyUpEvents); const suffix = isBlocked ? ' (blocked)' : ''; const keyDisplay = formatKeyEvent(event); @@ -226,7 +227,7 @@ function KeyboardEventExample(): React.Node { {key: 'ArrowRight'}, {key: 'ArrowDown'}, {key: 'Enter', metaKey: true}, - ]; + ] as Array; const isBlocked = isKeyBlocked(event, keyDownEvents); const suffix = isBlocked ? ' (blocked)' : ''; const keyDisplay = formatKeyEvent(event); @@ -234,7 +235,10 @@ function KeyboardEventExample(): React.Node { }, []); const handleMultiLineKeyUp = React.useCallback((event: KeyEvent) => { - const keyUpEvents = [{key: 'Escape'}, {key: 'Enter'}]; + const keyUpEvents = [ + {key: 'Escape'}, + {key: 'Enter'}, + ] as Array; const isBlocked = isKeyBlocked(event, keyUpEvents); const suffix = isBlocked ? ' (blocked)' : ''; const keyDisplay = formatKeyEvent(event); @@ -569,4 +573,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/Snapshot/SnapshotExample.js b/packages/rn-tester/js/examples/Snapshot/SnapshotExample.js index 1e871d6c9102..d138829154f4 100644 --- a/packages/rn-tester/js/examples/Snapshot/SnapshotExample.js +++ b/packages/rn-tester/js/examples/Snapshot/SnapshotExample.js @@ -44,7 +44,7 @@ class ScreenshotExample extends React.Component<{...}, $FlowFixMe> { // [macOS] alert needs two string arguments, passing an error results in crashing takeScreenshot = () => { - if (ScreenshotManager !== undefined && ScreenshotManager !== null) { + if (ScreenshotManager !== undefined) { ScreenshotManager.takeScreenshot('window', {format: 'jpeg', quality: 0.8}) // See UIManager.js for options .then(uri => this.setState({uri})) .catch(error => diff --git a/packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js b/packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js index 907c527f503a..e3f7a802dc7b 100644 --- a/packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js +++ b/packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js @@ -922,7 +922,7 @@ function AutogrowingTextInputExample({ ); } -module.exports = ([ +module.exports = [ { title: 'Auto-focus & select text on focus', render: function (): React.Node { @@ -1295,4 +1295,4 @@ module.exports = ([ ); }, }, -]: Array); +] as Array; diff --git a/packages/rn-tester/js/examples/Tooltip/TooltipExample.js b/packages/rn-tester/js/examples/Tooltip/TooltipExample.js index 480a041e97b3..1288a352a5ef 100644 --- a/packages/rn-tester/js/examples/Tooltip/TooltipExample.js +++ b/packages/rn-tester/js/examples/Tooltip/TooltipExample.js @@ -10,6 +10,8 @@ 'use strict'; +import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; + const React = require('react'); const { Button, @@ -94,4 +96,4 @@ exports.examples = [ return ; }, }, -]; +] as Array; diff --git a/packages/rn-tester/js/examples/Touchable/TouchableExample.js b/packages/rn-tester/js/examples/Touchable/TouchableExample.js index e1caf3d4c4ff..050a840e2de6 100644 --- a/packages/rn-tester/js/examples/Touchable/TouchableExample.js +++ b/packages/rn-tester/js/examples/Touchable/TouchableExample.js @@ -494,8 +494,8 @@ function CustomRippleRadius() { } // [macOS -class TouchableHover extends React.Component<{}, $FlowFixMeState> { - state: any | {hoverOver: boolean} = { +class TouchableHover extends React.Component<{}, {hoverOver: boolean}> { + state: {hoverOver: boolean} = { hoverOver: false, }; @@ -533,8 +533,8 @@ class TouchableHover extends React.Component<{}, $FlowFixMeState> { }; } -class TouchableMouseEvents extends React.Component<{}, $FlowFixMeState> { - state: any | {eventLog: Array} = { +class TouchableMouseEvents extends React.Component<{}, {eventLog: Array}> { + state: {eventLog: Array} = { eventLog: [], }; diff --git a/packages/virtualized-lists/Lists/VirtualizedList.js b/packages/virtualized-lists/Lists/VirtualizedList.js index cbbc3aa56218..180546e77f0a 100644 --- a/packages/virtualized-lists/Lists/VirtualizedList.js +++ b/packages/virtualized-lists/Lists/VirtualizedList.js @@ -1021,7 +1021,7 @@ class VirtualizedList extends StateSafePureComponent< )): any); cells.push( - // $FlowFixMe[prop-missing] React.Element internal inspection + // $FlowFixMe[incompatible-type] React.Element internal inspection extends React.PureComponent< : horizontal ? [styles.row, inversionStyle] : inversionStyle; - let result = !CellRendererComponent ? ( // [macOS] + let result: any = !CellRendererComponent ? ( // [macOS] Date: Fri, 23 Jan 2026 16:57:49 -0300 Subject: [PATCH 32/56] Fix visionOS build issues --- packages/react-native/React/CoreModules/RCTAlertController.mm | 2 ++ .../ComponentViews/TextInput/RCTTextInputComponentView.mm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/react-native/React/CoreModules/RCTAlertController.mm b/packages/react-native/React/CoreModules/RCTAlertController.mm index f37a8f00ad22..e2f9cc3cb980 100644 --- a/packages/react-native/React/CoreModules/RCTAlertController.mm +++ b/packages/react-native/React/CoreModules/RCTAlertController.mm @@ -26,8 +26,10 @@ - (UIWindow *)alertWindow UIWindowScene *scene = RCTKeyWindow().windowScene; if (scene != nil) { _alertWindow = [[UIWindow alloc] initWithWindowScene:scene]; +#if !TARGET_OS_VISION // [visionOS] } else { _alertWindow = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; +#endif // [visionOS] } if (_alertWindow != nullptr) { diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm index 853d34e21997..802f8db49f53 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm @@ -518,9 +518,11 @@ - (void)prepareForRecycle _lastStringStateWasUpdatedWith = nil; _ignoreNextTextInputCall = NO; _didMoveToWindow = NO; +#if !TARGET_OS_OSX && !TARGET_OS_VISION // [macOS] [visionOS] _backedTextInputView.inputAccessoryViewID = nil; _backedTextInputView.inputAccessoryView = nil; _hasInputAccessoryView = false; +#endif // [macOS] [visionOS] #if TARGET_OS_OSX // [macOS _ghostText = nil; _ghostTextPosition = 0; From f8117360408c75efd5bfe0d1a9b5e0dcac66b1ae Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 23 Jan 2026 17:08:16 -0300 Subject: [PATCH 33/56] Fix lint --- packages/react-native/Libraries/Components/View/View.js | 8 ++++++++ packages/rn-tester/js/examples/Cursor/CursorExample.js | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Components/View/View.js b/packages/react-native/Libraries/Components/View/View.js index f546f88b04dd..4c94ed37df5d 100644 --- a/packages/react-native/Libraries/Components/View/View.js +++ b/packages/react-native/Libraries/Components/View/View.js @@ -157,6 +157,14 @@ component View( text: ariaValueText ?? accessibilityValue?.text, }; } + // [macOS + if(otherProps.onKeyDown){ + processedProps.onKeyDown = _onKeyDown; + } + if(otherProps.onKeyUp){ + processedProps.onKeyUp = _onKeyUp; + } + // macOS] const actualView = ref == null ? ( diff --git a/packages/rn-tester/js/examples/Cursor/CursorExample.js b/packages/rn-tester/js/examples/Cursor/CursorExample.js index 956e881859b2..84721f340245 100644 --- a/packages/rn-tester/js/examples/Cursor/CursorExample.js +++ b/packages/rn-tester/js/examples/Cursor/CursorExample.js @@ -8,8 +8,8 @@ * @format */ -import type {CursorValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes'; import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; +import type {CursorValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes'; import * as React from 'react'; import {StyleSheet, Text, View} from 'react-native'; From e8643aabed0f77cc9d8c201da5c50acdbf93410f Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 23 Jan 2026 17:28:50 -0300 Subject: [PATCH 34/56] Fix prettier --- .../Libraries/Components/View/View.js | 44 +++++++++---------- .../Utilities/__tests__/Platform-test.js | 21 +++++++-- .../PlatformColor/PlatformColorExample.js | 2 +- .../js/examples/Touchable/TouchableExample.js | 5 ++- 4 files changed, 44 insertions(+), 28 deletions(-) diff --git a/packages/react-native/Libraries/Components/View/View.js b/packages/react-native/Libraries/Components/View/View.js index 4c94ed37df5d..d8033b927a07 100644 --- a/packages/react-native/Libraries/Components/View/View.js +++ b/packages/react-native/Libraries/Components/View/View.js @@ -73,26 +73,26 @@ component View( }; // macOS] - const { - accessibilityState, - accessibilityValue, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-disabled': ariaDisabled, - 'aria-expanded': ariaExpanded, - 'aria-hidden': ariaHidden, - 'aria-label': ariaLabel, - 'aria-labelledby': ariaLabelledBy, - 'aria-live': ariaLive, - 'aria-selected': ariaSelected, - 'aria-valuemax': ariaValueMax, - 'aria-valuemin': ariaValueMin, - 'aria-valuenow': ariaValueNow, - 'aria-valuetext': ariaValueText, - id, - tabIndex, - ...otherProps - } = props; + const { + accessibilityState, + accessibilityValue, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-disabled': ariaDisabled, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-labelledby': ariaLabelledBy, + 'aria-live': ariaLive, + 'aria-selected': ariaSelected, + 'aria-valuemax': ariaValueMax, + 'aria-valuemin': ariaValueMin, + 'aria-valuenow': ariaValueNow, + 'aria-valuetext': ariaValueText, + id, + tabIndex, + ...otherProps + } = props; // Since we destructured props, we can now treat it as mutable const processedProps = otherProps as {...ViewProps}; @@ -158,10 +158,10 @@ component View( }; } // [macOS - if(otherProps.onKeyDown){ + if (otherProps.onKeyDown) { processedProps.onKeyDown = _onKeyDown; } - if(otherProps.onKeyUp){ + if (otherProps.onKeyUp) { processedProps.onKeyUp = _onKeyUp; } // macOS] diff --git a/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js b/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js index 09a0e2ce1014..a0032765bebc 100644 --- a/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js +++ b/packages/react-native/Libraries/Utilities/__tests__/Platform-test.js @@ -29,7 +29,11 @@ describe('Platform', () => { describe('select', () => { it('should return platform specific value', () => { - const obj: PlatformSelectSpec = {ios: 'ios', android: 'android', macos: 'macos'}; // [macOS] + const obj: PlatformSelectSpec = { + ios: 'ios', + android: 'android', + macos: 'macos', + }; // [macOS] expect(PlatformIOS.select(obj)).toEqual(obj.ios); expect(PlatformAndroid.select(obj)).toEqual(obj.android); expect(PlatformMacOS.select(obj)).toEqual(obj.macos); // [macOS] @@ -37,13 +41,19 @@ describe('Platform', () => { // [macOS it('should return correct platform given partial platform overrides', () => { - const iosSpecific = {ios: 'ios', native: 'native'} as PlatformSelectSpec; + const iosSpecific = { + ios: 'ios', + native: 'native', + } as PlatformSelectSpec; expect(PlatformIOS.select(iosSpecific)).toEqual(iosSpecific.ios); expect(PlatformAndroid.select(iosSpecific)).toEqual(iosSpecific.native); expect(PlatformMacOS.select(iosSpecific)).toEqual(iosSpecific.native); - const androidSpecific = {android: 'android', native: 'native'} as PlatformSelectSpec; + const androidSpecific = { + android: 'android', + native: 'native', + } as PlatformSelectSpec; expect(PlatformIOS.select(androidSpecific)).toEqual( androidSpecific.native, ); @@ -54,7 +64,10 @@ describe('Platform', () => { androidSpecific.native, ); - const macosSpecific = {macos: 'macos', native: 'native'} as PlatformSelectSpec; + const macosSpecific = { + macos: 'macos', + native: 'native', + } as PlatformSelectSpec; expect(PlatformIOS.select(macosSpecific)).toEqual(macosSpecific.native); expect(PlatformAndroid.select(macosSpecific)).toEqual( macosSpecific.native, diff --git a/packages/rn-tester/js/examples/PlatformColor/PlatformColorExample.js b/packages/rn-tester/js/examples/PlatformColor/PlatformColorExample.js index d98240e90e02..fd189b05d065 100644 --- a/packages/rn-tester/js/examples/PlatformColor/PlatformColorExample.js +++ b/packages/rn-tester/js/examples/PlatformColor/PlatformColorExample.js @@ -608,7 +608,7 @@ exports.examples = [ return ; }, }, - { + { title: 'Reacts to Appearance Changes', render(): React.MixedElement { return ; diff --git a/packages/rn-tester/js/examples/Touchable/TouchableExample.js b/packages/rn-tester/js/examples/Touchable/TouchableExample.js index 050a840e2de6..b6bf2088598f 100644 --- a/packages/rn-tester/js/examples/Touchable/TouchableExample.js +++ b/packages/rn-tester/js/examples/Touchable/TouchableExample.js @@ -533,7 +533,10 @@ class TouchableHover extends React.Component<{}, {hoverOver: boolean}> { }; } -class TouchableMouseEvents extends React.Component<{}, {eventLog: Array}> { +class TouchableMouseEvents extends React.Component< + {}, + {eventLog: Array}, +> { state: {eventLog: Array} = { eventLog: [], }; From 91238526e4ad393c8aacad100d7451444271ce8e Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Wed, 11 Mar 2026 15:12:06 -0300 Subject: [PATCH 35/56] Address PR comments --- packages/react-native/React/Base/RCTUtils.mm | 6 +----- .../ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/react-native/React/Base/RCTUtils.mm b/packages/react-native/React/Base/RCTUtils.mm index 6c662cd5511a..a378d0001e7a 100644 --- a/packages/react-native/React/Base/RCTUtils.mm +++ b/packages/react-native/React/Base/RCTUtils.mm @@ -451,11 +451,7 @@ CGSize RCTSwitchSize(void) static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ RCTUnsafeExecuteOnMainQueueSync(^{ -#if !TARGET_OS_OSX // [macOS] - rctSwitchSize = [UISwitch new].intrinsicContentSize; -#else // [macOS - rctSwitchSize = [NSSwitch new].intrinsicContentSize; -#endif // macOS] + rctSwitchSize = [RCTPlatformSwitch new].intrinsicContentSize; // [macOS] }); }); return rctSwitchSize; diff --git a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h index 0f16f3129e4a..db409fea1ab2 100644 --- a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h @@ -232,11 +232,13 @@ typedef NS_ENUM(NSInteger, UIActivityIndicatorViewStyle) { @compatibility_alias RCTPlatformWindow UIWindow; @compatibility_alias RCTPlatformViewController UIViewController; @compatibility_alias RCTUIApplication UIApplication; +@compatibility_alias RCTPlatformSwitch UISwitch; #else @compatibility_alias RCTPlatformApplication NSApplication; @compatibility_alias RCTPlatformWindow NSWindow; @compatibility_alias RCTPlatformViewController NSViewController; @compatibility_alias RCTUIApplication NSApplication; +@compatibility_alias RCTPlatformSwitch NSSwitch; #endif NS_ASSUME_NONNULL_END From 8e016a7583159925455b826b289eac5cb06ea14d Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Wed, 11 Mar 2026 15:49:23 -0300 Subject: [PATCH 36/56] Fix disableViewCulling --- .../ScrollView/RCTScrollViewComponentView.mm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm index fa7bffb34d16..7ee29f914ff7 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm @@ -723,6 +723,23 @@ - (NSInteger)accessibilityElementCount [self _disableViewCullingIfNecessary]; return [super focusItemsInRect:rect]; } +#else // [macOS +- (NSArray *)accessibilityChildren +{ + // macOS equivalent of accessibilityElementCount: VoiceOver calls accessibilityChildren + // to enumerate child elements. Detecting this API use allows us to disable view culling + // when Accessibility Inspector or VoiceOver is active. + [self _disableViewCullingIfNecessary]; + return [super accessibilityChildren]; +} + +- (id)accessibilityHitTest:(NSPoint)point +{ + // macOS equivalent of focusItemsInRect: VoiceOver calls accessibilityHitTest: + // when navigating spatially. + [self _disableViewCullingIfNecessary]; + return [super accessibilityHitTest:point]; +} #endif // macOS] - (void)_updateStateWithContentOffset @@ -751,7 +768,7 @@ - (void)_updateStateWithContentOffset newData.disableViewCulling = UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning() || isAccessibilityAPIUsed; #else // [macOS - newData.disableViewCulling = isAccessibilityAPIUsed; + newData.disableViewCulling = [[NSWorkspace sharedWorkspace] isVoiceOverEnabled] || isAccessibilityAPIUsed; #endif // macOS] return std::make_shared(newData); }, From 1a203cc49a020099294cb6c1b30fa3a9d9930ebb Mon Sep 17 00:00:00 2001 From: Thiago Vinhas Date: Thu, 18 Jun 2026 01:28:44 -0500 Subject: [PATCH 37/56] fix(codegen): use REACT_NATIVE constant for npmPackageName (#2956) ## Summary Replaces the hardcoded `'react-native-macos'` string at `packages/react-native/react-native.config.js:188` with the `REACT_NATIVE` constant from `scripts/codegen/generate-artifacts-executor/constants.js`. The constant already reads `packageJson.name` so the resolved value is unchanged on this fork, but the indirection means future package-name moves (workspace renames, internal rebrand, etc.) don't require remembering this one site. Closes the **"Codegen package name constant"** item on the Road to 0.83 tracking issue (#2901). ## Test Plan - `pod install` in `packages/rn-tester` runs the codegen step end-to-end and resolves `npmPackageName` without errors (validated locally on 0.83-merge). - No behavior change for the current package name `react-native-macos`. --- packages/react-native/react-native.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index 3e5e3fa80460..a9e48d9bc519 100644 --- a/packages/react-native/react-native.config.js +++ b/packages/react-native/react-native.config.js @@ -202,7 +202,8 @@ if (apple) { }, projectConfig: apple.getProjectConfig({platformName: 'macos'}), dependencyConfig: apple.getProjectConfig({platformName: 'macos'}), - npmPackageName: 'react-native-macos', + npmPackageName: require('./scripts/codegen/generate-artifacts-executor/constants') + .REACT_NATIVE, }; } // macOS] From e4fa8d74bf57a2f42adfa97178d0808f3eedb48e Mon Sep 17 00:00:00 2001 From: Thiago Vinhas Date: Thu, 18 Jun 2026 01:29:50 -0500 Subject: [PATCH 38/56] fix(macos): include React-RCTUIKit.podspec in package files array (#2963) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary `packages/react-native/package.json` lists three macOS-fork podspecs in the `files` array — `React-Core.podspec`, `React-Core-prebuilt.podspec`, `React.podspec` — but **omits `React-RCTUIKit.podspec`**, which was introduced by #2847 (RCTUIKit module-ification, merged March 2026). As a result the file lives in the source tree but is excluded from the npm publish. Any downstream consumer of a published \`react-native-macos@0.83\` hits this immediately: \`\`\` [!] No podspec found for \`React-RCTUIKit\` in \`../node_modules/react-native-macos/\` \`\`\` \`pod install\` fails before reaching any actual install step. Discovered while running [react-native-test-app](https://github.com/microsoft/react-native-test-app)'s \`example-macos\` against the fork's \`0.83-merge\` via a local Verdaccio registry — the file shows up in the source tree (\`packages/react-native/React-RCTUIKit.podspec\`) but never lands in \`node_modules/react-native-macos/\` after install. Fix is a one-line addition to the \`files\` array, right next to the other root-level podspecs. Closes the consumer-install gap for any downstream user (RNTA, Epistles, anyone else) once 0.83 ships to npm. ## Test Plan - **Before:** \`npm pack\` on \`packages/react-native\` produces a tarball without \`React-RCTUIKit.podspec\`. RNTA's \`example-macos\` \`pod install\` fails with "No podspec found for React-RCTUIKit". - **After:** \`npm pack\` includes the file; \`pod install\` resolves the React-RCTUIKit pod from \`../node_modules/react-native-macos/React-RCTUIKit.podspec\` and continues. Validated locally with RNTA's \`example-macos\` building cleanly through to a \`ReactTestApp.app\` artifact. ## Related - #2847 — introduced \`React-RCTUIKit.podspec\` (and the corresponding \`React-RCTUIKit\` pod dep in \`React-Core.podspec\`), but didn't update the \`files\` array. - #2958 — wires \`React-RCTUIKit\` into \`RCTSwiftUI.podspec\`; depends on this podspec being available to consumers. - #2901 — Road to 0.83 tracking issue (unblocks downstream consumers in general). --- packages/react-native/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 17a575fc407b..230a3364423f 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -110,6 +110,7 @@ "local-cli", "React-Core.podspec", "React-Core-prebuilt.podspec", + "React-RCTUIKit.podspec", "react-native.config.js", "React.podspec", "React", From fb319eeac27fa3b1e1fdf7e7eead505b3e97d45d Mon Sep 17 00:00:00 2001 From: Thiago Vinhas Date: Thu, 18 Jun 2026 01:30:35 -0500 Subject: [PATCH 39/56] fix(rn-tester): restore RNTesterPods.xcodeproj/project.pbxproj on 0.83-merge (#2960) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary The `RNTesterPods.xcodeproj/project.pbxproj` file is **missing from `0.83-merge`** but exists on `main`. Without it, `pod install` fails immediately on `0.83-merge` with: [!] The plist file at path /.../packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj doesn't exist. Which blocks any contributor from validating any PR against `0.83-merge` via the RNTester pod-install path. ### Root cause (interaction between an ignore rule and the upstream merge) Both `main` and `0.83-merge` carry this rule in `.gitignore`: /packages/rn-tester/**/*.xcodeproj On `main`, `project.pbxproj` is tracked despite that rule — `gitignore` does not affect files already in the index, and the file was originally added before the rule existed (or via `-f`). On `0.83-merge`, the file was dropped from the tree at some point during the upstream-0.83 merge (likely via a `git rm` resolving a conflicting hunk, or via a merge driver that touched the .xcodeproj contents). Once it was out of the index, the existing ignore rule prevented anyone from `git add`ing it back through the normal path — the explicit `-f` flag is required. Verification via `gh api`: - `main` tree contains `packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj` (blob SHA `90e6c295ce0ec461333aa96af37d8b0ceebe98dc`, 120,346 bytes). - `0.83-merge` tree only contains `packages/rn-tester/RNTesterPods.xcodeproj/xcshareddata/` (the scheme files). - The xcshareddata/ scheme files on `0.83-merge` reference `RNTesterPods.xcodeproj` as their container, so the absence isn't an intentional structural change. ### Fix This PR restores the file verbatim from `main`'s blob `90e6c295…` (force-added past the ignore rule). Once in the index, future operations track it normally. The `.gitignore` rule is preserved unchanged — it correctly excludes other generated `.xcodeproj` outputs and only needed the one-time `-f` to reseat this specific file. The .pbxproj is structurally cross-compatible between `main` (RN 0.81.x content) and `0.83-merge` (RN 0.83 content) — both branches share the same target layout (`RNTester`, `RNTesterUnitTests`, `RNTesterIntegrationTests`, `RNTester-macOS`, `RNTester-macOSUnitTests`, `RNTester-macOSIntegrationTests`, `RNTester-visionOS`). `pod install` regenerates the workspace from this file + the Podfile, so any drift between branches gets reconciled by the install step. If maintainers have a preferred way to regenerate the pbxproj (script, fresh `pod init` flow), this PR can be closed in favor of that. The change is offered as the minimal unblock so contributors can resume validation against `0.83-merge`. Indirectly unblocks the **"RNTester validation"** item on the Road to 0.83 tracking issue (#2901) — that item can't proceed until pod install works on `0.83-merge`. - **Before:** `pod install` in `packages/rn-tester` on `0.83-merge` fails with `[!] The plist file at path .../project.pbxproj doesn't exist.` Reproducible on any fresh `0.83-merge` checkout. `yarn prepare-ios` hits the same error inside the cocoapods-runner subprocess. - **After:** `pod install` in `packages/rn-tester` on `0.83-merge` completes with `Pod installation complete! There are 86 dependencies from the Podfile and 85 total pods installed.` `RNTesterPods.xcworkspace/contents.xcworkspacedata` is generated, all `Pods-RNTester*` xcconfig files are written, hermes-engine script phases are wired. (Validated locally with HEAD = current `0.83-merge` tip.) - Remaining `[!] ... CLANG_CXX_LANGUAGE_STANDARD override` warnings are pre-existing on `main` and unrelated to this restore. ## Related - #2901 — Road to 0.83 tracking issue (this unblocks RNTester validation) - Upstream blob on \`main\`: SHA \`90e6c295ce0ec461333aa96af37d8b0ceebe98dc\` (120,346 bytes) --- .../RNTesterPods.xcodeproj/project.pbxproj | 2207 +++++++++++++++++ 1 file changed, 2207 insertions(+) create mode 100644 packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj diff --git a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj new file mode 100644 index 000000000000..90e6c295ce0e --- /dev/null +++ b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj @@ -0,0 +1,2207 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 08E25EBE4A584CD7B70FBB1E /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D74056A5352F0925816E50E0 /* libPods-RNTester.a */; }; + 0CBC915D60C701A81731A5A4 /* libPods-RNTester-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C88AE81E635231C7F0F3BA4 /* libPods-RNTester-macOS.a */; }; + 0E3E8DF4F87D07566A9489D4 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = AC276E71CF27E40DFA22979F /* PrivacyInfo.xcprivacy */; }; + 0EA618032BE537D3001875EF /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2DDEF0101F84BF7B00DBDF73 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */; }; + 34BEDB34D7F11B292D818883 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 714974E163024D0E0A9FA2F5 /* PrivacyInfo.xcprivacy */; }; + 383889DA23A7398900D06C3E /* RCTConvert_UIColorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */; }; + 3A87E8599EEB2C61C0F6589F /* libPods-RNTester-macOSUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 07517909E4081E5D74D5DD60 /* libPods-RNTester-macOSUnitTests.a */; }; + 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; + 409F3AA7B46A343B8F9B9C4D /* libPods-RNTester-visionOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FE22C718456032D87881A5 /* libPods-RNTester-visionOS.a */; }; + 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; + 8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; }; + 832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; }; + 918A215FD4EF5A828705D765 /* libPods-RNTester-macOSIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 474EC5CD967949D41527EECF /* libPods-RNTester-macOSIntegrationTests.a */; }; + A975CA6C2C05EADF0043F72A /* RCTNetworkTaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */; }; + AC30658829B14F38007A839A /* RCTComponentPropsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CC22B2BAA5005AC45F /* RCTComponentPropsTests.m */; }; + AC73FCE829B1316D0003586F /* RNTesterIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */; }; + AC73FCE929B131700003586F /* RCTLoggingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215E22B2F3EC005AC45F /* RCTLoggingTests.m */; }; + AC73FCEB29B131770003586F /* RCTUIManagerScenarioTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215F22B2F3EC005AC45F /* RCTUIManagerScenarioTests.m */; }; + AC73FCED29B1317D0003586F /* RNTesterTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215D22B2F3EC005AC45F /* RNTesterTestModule.m */; }; + AC73FCEE29B131870003586F /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C622B2BAA5005AC45F /* RCTAllocationTests.m */; }; + AC73FCEF29B1318B0003586F /* RCTAnimationUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B222B2BAA4005AC45F /* RCTAnimationUtilsTests.m */; }; + AC73FCF029B1318E0003586F /* RCTBlobManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AB22B2BAA3005AC45F /* RCTBlobManagerTests.m */; }; + AC73FCF129B131910003586F /* RCTBundleURLProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */; }; + AC73FCF329B131960003586F /* RCTConvert_NSURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CA22B2BAA5005AC45F /* RCTConvert_NSURLTests.m */; }; + AC73FCF429B1319A0003586F /* RCTConvert_YGValueTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CE22B2BAA5005AC45F /* RCTConvert_YGValueTests.m */; }; + AC73FCF529B1319C0003586F /* RCTConvert_UIColorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */; }; + AC73FCF629B1319F0003586F /* RCTDevMenuTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C822B2BAA5005AC45F /* RCTDevMenuTests.m */; }; + AC73FCF729B131A20003586F /* RCTEventDispatcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C022B2BAA4005AC45F /* RCTEventDispatcherTests.m */; }; + AC73FCF829B131A40003586F /* RCTFontTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AF22B2BAA4005AC45F /* RCTFontTests.m */; }; + AC73FCF929B131A70003586F /* RCTFormatErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C722B2BAA5005AC45F /* RCTFormatErrorTests.m */; }; + AC73FCFA29B131AA0003586F /* RCTGzipTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C522B2BAA4005AC45F /* RCTGzipTests.m */; }; + AC73FCFB29B131B50003586F /* RCTImageLoaderHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C922B2BAA5005AC45F /* RCTImageLoaderHelpers.m */; }; + AC73FCFC29B131B80003586F /* RCTImageLoaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C222B2BAA4005AC45F /* RCTImageLoaderTests.m */; }; + AC73FCFD29B131BC0003586F /* RCTImageUtilTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CD22B2BAA5005AC45F /* RCTImageUtilTests.m */; }; + AC73FCFE29B131BE0003586F /* RCTJSONTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B122B2BAA4005AC45F /* RCTJSONTests.m */; }; + AC73FCFF29B131C10003586F /* RCTMethodArgumentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C322B2BAA4005AC45F /* RCTMethodArgumentTests.m */; }; + AC73FD0029B131C30003586F /* RCTModuleInitNotificationRaceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AA22B2BAA3005AC45F /* RCTModuleInitNotificationRaceTests.m */; }; + AC73FD0129B131C70003586F /* RCTModuleInitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B022B2BAA4005AC45F /* RCTModuleInitTests.m */; }; + AC73FD0229B131CA0003586F /* RCTModuleMethodTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CB22B2BAA5005AC45F /* RCTModuleMethodTests.mm */; }; + AC73FD0329B131CD0003586F /* RCTMultipartStreamReaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CF22B2BAA5005AC45F /* RCTMultipartStreamReaderTests.m */; }; + AC73FD0429B131D10003586F /* RCTNativeAnimatedNodesManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20BE22B2BAA4005AC45F /* RCTNativeAnimatedNodesManagerTests.m */; }; + AC73FD0529B131D40003586F /* RCTPerformanceLoggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AD22B2BAA3005AC45F /* RCTPerformanceLoggerTests.m */; }; + AC73FD0629B131D70003586F /* RCTShadowViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C422B2BAA4005AC45F /* RCTShadowViewTests.m */; }; + AC73FD0729B131DA0003586F /* RCTUIManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20BF22B2BAA4005AC45F /* RCTUIManagerTests.m */; }; + AC73FD0829B131DD0003586F /* RCTUnicodeDecodeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C122B2BAA4005AC45F /* RCTUnicodeDecodeTests.m */; }; + AC73FD0929B131E10003586F /* RCTURLUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20D022B2BAA5005AC45F /* RCTURLUtilsTests.m */; }; + AC73FD0A29B131E50003586F /* RCTViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20E022B2BAA5005AC45F /* RCTViewTests.m */; }; + AC78A6152B5738FD00121555 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AC78A6142B5738FD00121555 /* Assets.xcassets */; }; + AC78A61D2B573BAA00121555 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; + AC78A61E2B573BAE00121555 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + AC78A61F2B573BB200121555 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; }; + AC78A6202B573BD300121555 /* FlexibleSizeExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */; }; + AC78A6212B573BD800121555 /* UpdatePropertiesExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */; }; + ACC52F47299ECB7B002A2B0B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ACC52F46299ECB7B002A2B0B /* Assets.xcassets */; }; + ACC52F4A299ECB7B002A2B0B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ACC52F48299ECB7B002A2B0B /* Main.storyboard */; }; + ACC52F6C299ECDDA002A2B0B /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = ACC52F6B299ECDDA002A2B0B /* Info.plist */; }; + ACDBF0D529B2BF0A00EEBD9E /* RNTesterUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = E7DB20B322B2BAA4005AC45F /* RNTesterUnitTestsBundle.js */; }; + BEB82277FE76227A15DED9EF /* libPods-RNTesterIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 77E101C7D8E22A8E70EE76DF /* libPods-RNTesterIntegrationTests.a */; }; + CD10C7A5290BD4EB0033E1ED /* RCTEventEmitterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CD10C7A4290BD4EB0033E1ED /* RCTEventEmitterTests.m */; }; + D626973C1F0D4ABDE2F9028A /* libPods-RNTesterUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D8DE57E3292D41E28251988A /* libPods-RNTesterUnitTests.a */; }; + E62F11832A5C6580000BF1C8 /* FlexibleSizeExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */; }; + E62F11842A5C6584000BF1C8 /* UpdatePropertiesExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */; }; + E7C1241A22BEC44B00DA25C0 /* RNTesterIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */; }; + E7DB20D122B2BAA6005AC45F /* RCTBundleURLProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */; }; + E7DB20D222B2BAA6005AC45F /* RCTModuleInitNotificationRaceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AA22B2BAA3005AC45F /* RCTModuleInitNotificationRaceTests.m */; }; + E7DB20D322B2BAA6005AC45F /* RCTBlobManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AB22B2BAA3005AC45F /* RCTBlobManagerTests.m */; }; + E7DB20D522B2BAA6005AC45F /* RCTPerformanceLoggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AD22B2BAA3005AC45F /* RCTPerformanceLoggerTests.m */; }; + E7DB20D622B2BAA6005AC45F /* RCTFontTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20AF22B2BAA4005AC45F /* RCTFontTests.m */; }; + E7DB20D722B2BAA6005AC45F /* RCTModuleInitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B022B2BAA4005AC45F /* RCTModuleInitTests.m */; }; + E7DB20D822B2BAA6005AC45F /* RCTJSONTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B122B2BAA4005AC45F /* RCTJSONTests.m */; }; + E7DB20D922B2BAA6005AC45F /* RCTAnimationUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20B222B2BAA4005AC45F /* RCTAnimationUtilsTests.m */; }; + E7DB20DA22B2BAA6005AC45F /* RNTesterUnitTestsBundle.js in Resources */ = {isa = PBXBuildFile; fileRef = E7DB20B322B2BAA4005AC45F /* RNTesterUnitTestsBundle.js */; }; + E7DB20DB22B2BAA6005AC45F /* RCTNativeAnimatedNodesManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20BE22B2BAA4005AC45F /* RCTNativeAnimatedNodesManagerTests.m */; }; + E7DB20DC22B2BAA6005AC45F /* RCTUIManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20BF22B2BAA4005AC45F /* RCTUIManagerTests.m */; }; + E7DB20DD22B2BAA6005AC45F /* RCTEventDispatcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C022B2BAA4005AC45F /* RCTEventDispatcherTests.m */; }; + E7DB20DE22B2BAA6005AC45F /* RCTUnicodeDecodeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C122B2BAA4005AC45F /* RCTUnicodeDecodeTests.m */; }; + E7DB20DF22B2BAA6005AC45F /* RCTImageLoaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C222B2BAA4005AC45F /* RCTImageLoaderTests.m */; }; + E7DB20E022B2BAA6005AC45F /* RCTMethodArgumentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C322B2BAA4005AC45F /* RCTMethodArgumentTests.m */; }; + E7DB20E122B2BAA6005AC45F /* RCTShadowViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C422B2BAA4005AC45F /* RCTShadowViewTests.m */; }; + E7DB20E222B2BAA6005AC45F /* RCTGzipTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C522B2BAA4005AC45F /* RCTGzipTests.m */; }; + E7DB20E322B2BAA6005AC45F /* RCTAllocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C622B2BAA5005AC45F /* RCTAllocationTests.m */; }; + E7DB20E422B2BAA6005AC45F /* RCTFormatErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C722B2BAA5005AC45F /* RCTFormatErrorTests.m */; }; + E7DB20E522B2BAA6005AC45F /* RCTDevMenuTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C822B2BAA5005AC45F /* RCTDevMenuTests.m */; }; + E7DB20E622B2BAA6005AC45F /* RCTImageLoaderHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20C922B2BAA5005AC45F /* RCTImageLoaderHelpers.m */; }; + E7DB20E722B2BAA6005AC45F /* RCTConvert_NSURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CA22B2BAA5005AC45F /* RCTConvert_NSURLTests.m */; }; + E7DB20E822B2BAA6005AC45F /* RCTModuleMethodTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CB22B2BAA5005AC45F /* RCTModuleMethodTests.mm */; }; + E7DB20E922B2BAA6005AC45F /* RCTComponentPropsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CC22B2BAA5005AC45F /* RCTComponentPropsTests.m */; }; + E7DB20EA22B2BAA6005AC45F /* RCTImageUtilTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CD22B2BAA5005AC45F /* RCTImageUtilTests.m */; }; + E7DB20EB22B2BAA6005AC45F /* RCTConvert_YGValueTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CE22B2BAA5005AC45F /* RCTConvert_YGValueTests.m */; }; + E7DB20EC22B2BAA6005AC45F /* RCTMultipartStreamReaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20CF22B2BAA5005AC45F /* RCTMultipartStreamReaderTests.m */; }; + E7DB20ED22B2BAA6005AC45F /* RCTURLUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20D022B2BAA5005AC45F /* RCTURLUtilsTests.m */; }; + E7DB20EE22B2BAA6005AC45F /* RCTViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB20E022B2BAA5005AC45F /* RCTViewTests.m */; }; + E7DB213122B2C649005AC45F /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7DB213022B2C649005AC45F /* JavaScriptCore.framework */; }; + E7DB216222B2F3EC005AC45F /* RNTesterTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215D22B2F3EC005AC45F /* RNTesterTestModule.m */; }; + E7DB216322B2F3EC005AC45F /* RCTLoggingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215E22B2F3EC005AC45F /* RCTLoggingTests.m */; }; + E7DB216422B2F3EC005AC45F /* RCTUIManagerScenarioTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E7DB215F22B2F3EC005AC45F /* RCTUIManagerScenarioTests.m */; }; + E7DB216722B2F69F005AC45F /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7DB213022B2C649005AC45F /* JavaScriptCore.framework */; }; + E7DB218C22B41FCD005AC45F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E7DB218B22B41FCD005AC45F /* XCTest.framework */; }; + F0D621C32BBB9E38005960AC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + ACC52F59299ECB8A002A2B0B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ACC52F3D299ECB7A002A2B0B; + remoteInfo = "RNTester-macOS"; + }; + ACC52F66299ECB97002A2B0B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ACC52F3D299ECB7A002A2B0B; + remoteInfo = "RNTester-macOS"; + }; + ADA4EF572546F3F8000B7E75 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = RNTester; + }; + E7DB215822B2F332005AC45F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = RNTester; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 07517909E4081E5D74D5DD60 /* libPods-RNTester-macOSUnitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester-macOSUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 086F285685A842F5E52B6F9C /* Pods-RNTester-visionOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-visionOS.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS.debug.xcconfig"; sourceTree = ""; }; + 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = RNTesterBundle.bundle; path = RNTester/RNTesterBundle.bundle; sourceTree = ""; }; + 1176CCE167820DDB6B66801A /* Pods-RNTester-macOSUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOSUnitTests.release.xcconfig"; path = "Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests.release.xcconfig"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* RNTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RNTester.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RNTester/AppDelegate.h; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RNTester/main.m; sourceTree = ""; }; + 272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UpdatePropertiesExampleView.h; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.h; sourceTree = ""; }; + 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = UpdatePropertiesExampleView.mm; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm; sourceTree = ""; }; + 2734C5E31C1D7A09BF872585 /* Pods-RNTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.debug.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.debug.xcconfig"; sourceTree = ""; }; + 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FlexibleSizeExampleView.mm; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.mm; sourceTree = ""; }; + 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlexibleSizeExampleView.h; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.h; sourceTree = ""; }; + 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RNTester/Images.xcassets; sourceTree = ""; }; + 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_UIColorTests.m; sourceTree = ""; }; + 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "RNTester/legacy_image@2x.png"; sourceTree = ""; }; + 474EC5CD967949D41527EECF /* libPods-RNTester-macOSIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester-macOSIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 48FE22C718456032D87881A5 /* libPods-RNTester-visionOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester-visionOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 493798899A582E2398010242 /* Pods-RNTester-visionOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-visionOS.release.xcconfig"; path = "Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS.release.xcconfig"; sourceTree = ""; }; + 59BCC6695B251DC95CFA6A67 /* Pods-RNTester-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOS.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS.debug.xcconfig"; sourceTree = ""; }; + 5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = ""; }; + 66C3087F2D5BF762FE9E6422 /* Pods-RNTesterIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.debug.xcconfig"; sourceTree = ""; }; + 714974E163024D0E0A9FA2F5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; + 77E101C7D8E22A8E70EE76DF /* libPods-RNTesterIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CDA7A212644C6BB8C0D00D8 /* Pods-RNTesterIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.release.xcconfig"; sourceTree = ""; }; + 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNTester/LaunchScreen.storyboard; sourceTree = ""; }; + 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SwiftTest.swift; path = RNTester/SwiftTest.swift; sourceTree = ""; }; + 8BFB9C61D7BDE894E24BF24F /* Pods-RNTesterUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.release.xcconfig"; sourceTree = ""; }; + 95706B2D6A97C2C7489615A1 /* Pods-RNTester-macOSIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOSIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests.release.xcconfig"; sourceTree = ""; }; + 9B8542B8C590B51BD0588751 /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = ""; }; + 9BD1BBDA193F1DB661EDB0CF /* Pods-RNTester-macOSIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOSIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests.debug.xcconfig"; sourceTree = ""; }; + 9C88AE81E635231C7F0F3BA4 /* libPods-RNTester-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTNetworkTaskTests.m; sourceTree = ""; }; + AC276E71CF27E40DFA22979F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; + AC474BFB29BBD4A1002BDAED /* RNTester.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = RNTester.xctestplan; path = RNTester/RNTester.xctestplan; sourceTree = ""; }; + AC474BFE29BBF793002BDAED /* RNTester-macOS.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "RNTester-macOS.xctestplan"; sourceTree = ""; }; + AC78A60A2B5738FB00121555 /* RNTester-visionOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester-visionOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + AC78A6142B5738FD00121555 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + AC78A6192B5738FD00121555 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + ACC52F3E299ECB7A002A2B0B /* RNTester-macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester-macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + ACC52F46299ECB7B002A2B0B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + ACC52F49299ECB7B002A2B0B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + ACC52F4D299ECB7B002A2B0B /* RNTester_macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RNTester_macOS.entitlements; sourceTree = ""; }; + ACC52F55299ECB8A002A2B0B /* RNTester-macOSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-macOSUnitTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + ACC52F62299ECB97002A2B0B /* RNTester-macOSIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNTester-macOSIntegrationTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + ACC52F6B299ECDDA002A2B0B /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CAEBC2296BB4BDDDCAAF4404 /* Pods-RNTester-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOS.release.xcconfig"; path = "Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS.release.xcconfig"; sourceTree = ""; }; + CD10C7A4290BD4EB0033E1ED /* RCTEventEmitterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventEmitterTests.m; sourceTree = ""; }; + D74056A5352F0925816E50E0 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D8DE57E3292D41E28251988A /* libPods-RNTesterUnitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E2994DA5CC7BE9B0C836D6B6 /* Pods-RNTester-macOSUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOSUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests.debug.xcconfig"; sourceTree = ""; }; + E771AEEA22B44E3100EA1189 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = ""; }; + E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterIntegrationTests.m; sourceTree = ""; }; + E7DB209F22B2BA84005AC45F /* RNTesterUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20A322B2BA84005AC45F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBundleURLProviderTests.m; sourceTree = ""; }; + E7DB20AA22B2BAA3005AC45F /* RCTModuleInitNotificationRaceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModuleInitNotificationRaceTests.m; sourceTree = ""; }; + E7DB20AB22B2BAA3005AC45F /* RCTBlobManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTBlobManagerTests.m; sourceTree = ""; }; + E7DB20AD22B2BAA3005AC45F /* RCTPerformanceLoggerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTPerformanceLoggerTests.m; sourceTree = ""; }; + E7DB20AE22B2BAA4005AC45F /* RCTImageLoaderHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTImageLoaderHelpers.h; sourceTree = ""; }; + E7DB20AF22B2BAA4005AC45F /* RCTFontTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTFontTests.m; sourceTree = ""; }; + E7DB20B022B2BAA4005AC45F /* RCTModuleInitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModuleInitTests.m; sourceTree = ""; }; + E7DB20B122B2BAA4005AC45F /* RCTJSONTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTJSONTests.m; sourceTree = ""; }; + E7DB20B222B2BAA4005AC45F /* RCTAnimationUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAnimationUtilsTests.m; sourceTree = ""; }; + E7DB20B322B2BAA4005AC45F /* RNTesterUnitTestsBundle.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = RNTesterUnitTestsBundle.js; sourceTree = ""; }; + E7DB20BE22B2BAA4005AC45F /* RCTNativeAnimatedNodesManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTNativeAnimatedNodesManagerTests.m; sourceTree = ""; }; + E7DB20BF22B2BAA4005AC45F /* RCTUIManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerTests.m; sourceTree = ""; }; + E7DB20C022B2BAA4005AC45F /* RCTEventDispatcherTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcherTests.m; sourceTree = ""; }; + E7DB20C122B2BAA4005AC45F /* RCTUnicodeDecodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUnicodeDecodeTests.m; sourceTree = ""; }; + E7DB20C222B2BAA4005AC45F /* RCTImageLoaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageLoaderTests.m; sourceTree = ""; }; + E7DB20C322B2BAA4005AC45F /* RCTMethodArgumentTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTMethodArgumentTests.m; sourceTree = ""; }; + E7DB20C422B2BAA4005AC45F /* RCTShadowViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowViewTests.m; sourceTree = ""; }; + E7DB20C522B2BAA4005AC45F /* RCTGzipTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTGzipTests.m; sourceTree = ""; }; + E7DB20C622B2BAA5005AC45F /* RCTAllocationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAllocationTests.m; sourceTree = ""; }; + E7DB20C722B2BAA5005AC45F /* RCTFormatErrorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTFormatErrorTests.m; sourceTree = ""; }; + E7DB20C822B2BAA5005AC45F /* RCTDevMenuTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTDevMenuTests.m; sourceTree = ""; }; + E7DB20C922B2BAA5005AC45F /* RCTImageLoaderHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageLoaderHelpers.m; sourceTree = ""; }; + E7DB20CA22B2BAA5005AC45F /* RCTConvert_NSURLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_NSURLTests.m; sourceTree = ""; }; + E7DB20CB22B2BAA5005AC45F /* RCTModuleMethodTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTModuleMethodTests.mm; sourceTree = ""; }; + E7DB20CC22B2BAA5005AC45F /* RCTComponentPropsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTComponentPropsTests.m; sourceTree = ""; }; + E7DB20CD22B2BAA5005AC45F /* RCTImageUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTImageUtilTests.m; sourceTree = ""; }; + E7DB20CE22B2BAA5005AC45F /* RCTConvert_YGValueTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_YGValueTests.m; sourceTree = ""; }; + E7DB20CF22B2BAA5005AC45F /* RCTMultipartStreamReaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartStreamReaderTests.m; sourceTree = ""; }; + E7DB20D022B2BAA5005AC45F /* RCTURLUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTURLUtilsTests.m; sourceTree = ""; }; + E7DB20E022B2BAA5005AC45F /* RCTViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTViewTests.m; sourceTree = ""; }; + E7DB20F022B2BD53005AC45F /* libDoubleConversion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libDoubleConversion.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20F222B2BD53005AC45F /* libFolly.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libFolly.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20F422B2BD53005AC45F /* libglog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libglog.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20F822B2BD53005AC45F /* libReact-ART.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-ART.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20FA22B2BD53005AC45F /* libReact-Core.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-Core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB20FC22B2BD53005AC45F /* libReact-cxxreact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-cxxreact.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210222B2BD53005AC45F /* libReact-jsi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-jsi.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210422B2BD53005AC45F /* libReact-jsiexecutor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-jsiexecutor.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210622B2BD53005AC45F /* libReact-jsinspector.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-jsinspector.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210822B2BD53005AC45F /* libReact-RCTActionSheet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTActionSheet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210A22B2BD53005AC45F /* libReact-RCTAnimation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTAnimation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210C22B2BD53005AC45F /* libReact-RCTBlob.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTBlob.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB210E22B2BD53005AC45F /* libReact-RCTImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTImage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211022B2BD53005AC45F /* libReact-RCTLinking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTLinking.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211222B2BD53005AC45F /* libReact-RCTNetwork.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTNetwork.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211422B2BD53005AC45F /* libReact-RCTPushNotification.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTPushNotification.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211622B2BD53005AC45F /* libReact-RCTSettings.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTSettings.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211822B2BD53005AC45F /* libReact-RCTText.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTText.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB211A22B2BD53005AC45F /* libReact-RCTVibration.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libReact-RCTVibration.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB212222B2BD53005AC45F /* libyoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libyoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB213022B2C649005AC45F /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + E7DB215322B2F332005AC45F /* RNTesterIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E7DB215722B2F332005AC45F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E7DB215D22B2F3EC005AC45F /* RNTesterTestModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterTestModule.m; sourceTree = ""; }; + E7DB215E22B2F3EC005AC45F /* RCTLoggingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTLoggingTests.m; sourceTree = ""; }; + E7DB215F22B2F3EC005AC45F /* RCTUIManagerScenarioTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerScenarioTests.m; sourceTree = ""; }; + E7DB218B22B41FCD005AC45F /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = XCTest.framework; sourceTree = DEVELOPER_DIR; }; + E8475AB4E5BB7B7A87C16D41 /* Pods-RNTesterUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.debug.xcconfig"; sourceTree = ""; }; + F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 08E25EBE4A584CD7B70FBB1E /* libPods-RNTester.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F3B299ECB7A002A2B0B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0CBC915D60C701A81731A5A4 /* libPods-RNTester-macOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F52299ECB8A002A2B0B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3A87E8599EEB2C61C0F6589F /* libPods-RNTester-macOSUnitTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F5F299ECB97002A2B0B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 918A215FD4EF5A828705D765 /* libPods-RNTester-macOSIntegrationTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AEF892198F25B84713C203D8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 409F3AA7B46A343B8F9B9C4D /* libPods-RNTester-visionOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB209C22B2BA84005AC45F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E7DB213122B2C649005AC45F /* JavaScriptCore.framework in Frameworks */, + D626973C1F0D4ABDE2F9028A /* libPods-RNTesterUnitTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB215022B2F332005AC45F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E7DB218C22B41FCD005AC45F /* XCTest.framework in Frameworks */, + E7DB216722B2F69F005AC45F /* JavaScriptCore.framework in Frameworks */, + BEB82277FE76227A15DED9EF /* libPods-RNTesterIntegrationTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1323F18D1C04ABAC0091BED0 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */, + 13B07FB61A68108700A75B9A /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* RNTester */ = { + isa = PBXGroup; + children = ( + F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */, + AC474BFB29BBD4A1002BDAED /* RNTester.xctestplan */, + E771AEEA22B44E3100EA1189 /* Info.plist */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 5C60EB1B226440DB0018C04F /* AppDelegate.mm */, + 13B07FB71A68108700A75B9A /* main.m */, + 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */, + 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */, + 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */, + 680759612239798500290469 /* Fabric */, + 272E6B3A1BEA846C001FCF37 /* NativeExampleViews */, + 1323F18D1C04ABAC0091BED0 /* Supporting Files */, + ); + name = RNTester; + sourceTree = ""; + }; + 272E6B3A1BEA846C001FCF37 /* NativeExampleViews */ = { + isa = PBXGroup; + children = ( + 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */, + 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */, + 272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */, + 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */, + ); + name = NativeExampleViews; + sourceTree = ""; + }; + 2DE7E7D81FB2A4F3009E225D /* Frameworks */ = { + isa = PBXGroup; + children = ( + E7DB218B22B41FCD005AC45F /* XCTest.framework */, + E7DB213022B2C649005AC45F /* JavaScriptCore.framework */, + E7DB20F022B2BD53005AC45F /* libDoubleConversion.a */, + E7DB20F222B2BD53005AC45F /* libFolly.a */, + E7DB20F422B2BD53005AC45F /* libglog.a */, + E7DB20F822B2BD53005AC45F /* libReact-ART.a */, + E7DB20FA22B2BD53005AC45F /* libReact-Core.a */, + E7DB20FC22B2BD53005AC45F /* libReact-cxxreact.a */, + E7DB210222B2BD53005AC45F /* libReact-jsi.a */, + E7DB210422B2BD53005AC45F /* libReact-jsiexecutor.a */, + E7DB210622B2BD53005AC45F /* libReact-jsinspector.a */, + E7DB210822B2BD53005AC45F /* libReact-RCTActionSheet.a */, + E7DB210A22B2BD53005AC45F /* libReact-RCTAnimation.a */, + E7DB210C22B2BD53005AC45F /* libReact-RCTBlob.a */, + E7DB210E22B2BD53005AC45F /* libReact-RCTImage.a */, + E7DB211022B2BD53005AC45F /* libReact-RCTLinking.a */, + E7DB211222B2BD53005AC45F /* libReact-RCTNetwork.a */, + E7DB211422B2BD53005AC45F /* libReact-RCTPushNotification.a */, + E7DB211622B2BD53005AC45F /* libReact-RCTSettings.a */, + E7DB211822B2BD53005AC45F /* libReact-RCTText.a */, + E7DB211A22B2BD53005AC45F /* libReact-RCTVibration.a */, + E7DB212222B2BD53005AC45F /* libyoga.a */, + 9C88AE81E635231C7F0F3BA4 /* libPods-RNTester-macOS.a */, + 07517909E4081E5D74D5DD60 /* libPods-RNTester-macOSUnitTests.a */, + 474EC5CD967949D41527EECF /* libPods-RNTester-macOSIntegrationTests.a */, + D74056A5352F0925816E50E0 /* libPods-RNTester.a */, + 77E101C7D8E22A8E70EE76DF /* libPods-RNTesterIntegrationTests.a */, + D8DE57E3292D41E28251988A /* libPods-RNTesterUnitTests.a */, + 48FE22C718456032D87881A5 /* libPods-RNTester-visionOS.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 680759612239798500290469 /* Fabric */ = { + isa = PBXGroup; + children = ( + ); + name = Fabric; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */, + 13B07FAE1A68108700A75B9A /* RNTester */, + E7DB20A022B2BA84005AC45F /* RNTesterUnitTests */, + E7DB215422B2F332005AC45F /* RNTesterIntegrationTests */, + ACC52F3F299ECB7A002A2B0B /* RNTester-macOS */, + ACC52F56299ECB8A002A2B0B /* RNTester-macOSUnitTests */, + ACC52F63299ECB97002A2B0B /* RNTester-macOSIntegrationTests */, + AC78A60B2B5738FB00121555 /* RNTester-visionOS */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2DE7E7D81FB2A4F3009E225D /* Frameworks */, + E23BD6487B06BD71F1A86914 /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* RNTester.app */, + E7DB209F22B2BA84005AC45F /* RNTesterUnitTests.xctest */, + E7DB215322B2F332005AC45F /* RNTesterIntegrationTests.xctest */, + ACC52F3E299ECB7A002A2B0B /* RNTester-macOS.app */, + ACC52F55299ECB8A002A2B0B /* RNTester-macOSUnitTests.xctest */, + ACC52F62299ECB97002A2B0B /* RNTester-macOSIntegrationTests.xctest */, + AC78A60A2B5738FB00121555 /* RNTester-visionOS.app */, + ); + name = Products; + sourceTree = ""; + }; + AC78A60B2B5738FB00121555 /* RNTester-visionOS */ = { + isa = PBXGroup; + children = ( + AC78A6142B5738FD00121555 /* Assets.xcassets */, + AC78A6192B5738FD00121555 /* Info.plist */, + AC276E71CF27E40DFA22979F /* PrivacyInfo.xcprivacy */, + ); + path = "RNTester-visionOS"; + sourceTree = ""; + }; + ACC52F3F299ECB7A002A2B0B /* RNTester-macOS */ = { + isa = PBXGroup; + children = ( + ACC52F4D299ECB7B002A2B0B /* RNTester_macOS.entitlements */, + ACC52F6B299ECDDA002A2B0B /* Info.plist */, + ACC52F46299ECB7B002A2B0B /* Assets.xcassets */, + ACC52F48299ECB7B002A2B0B /* Main.storyboard */, + AC474BFE29BBF793002BDAED /* RNTester-macOS.xctestplan */, + 714974E163024D0E0A9FA2F5 /* PrivacyInfo.xcprivacy */, + ); + path = "RNTester-macOS"; + sourceTree = ""; + }; + ACC52F56299ECB8A002A2B0B /* RNTester-macOSUnitTests */ = { + isa = PBXGroup; + children = ( + ); + path = "RNTester-macOSUnitTests"; + sourceTree = ""; + }; + ACC52F63299ECB97002A2B0B /* RNTester-macOSIntegrationTests */ = { + isa = PBXGroup; + children = ( + ); + path = "RNTester-macOSIntegrationTests"; + sourceTree = ""; + }; + E23BD6487B06BD71F1A86914 /* Pods */ = { + isa = PBXGroup; + children = ( + 59BCC6695B251DC95CFA6A67 /* Pods-RNTester-macOS.debug.xcconfig */, + CAEBC2296BB4BDDDCAAF4404 /* Pods-RNTester-macOS.release.xcconfig */, + E2994DA5CC7BE9B0C836D6B6 /* Pods-RNTester-macOSUnitTests.debug.xcconfig */, + 1176CCE167820DDB6B66801A /* Pods-RNTester-macOSUnitTests.release.xcconfig */, + 9BD1BBDA193F1DB661EDB0CF /* Pods-RNTester-macOSIntegrationTests.debug.xcconfig */, + 95706B2D6A97C2C7489615A1 /* Pods-RNTester-macOSIntegrationTests.release.xcconfig */, + 2734C5E31C1D7A09BF872585 /* Pods-RNTester.debug.xcconfig */, + 66C3087F2D5BF762FE9E6422 /* Pods-RNTesterIntegrationTests.debug.xcconfig */, + 7CDA7A212644C6BB8C0D00D8 /* Pods-RNTesterIntegrationTests.release.xcconfig */, + 8BFB9C61D7BDE894E24BF24F /* Pods-RNTesterUnitTests.release.xcconfig */, + 9B8542B8C590B51BD0588751 /* Pods-RNTester.release.xcconfig */, + E8475AB4E5BB7B7A87C16D41 /* Pods-RNTesterUnitTests.debug.xcconfig */, + 086F285685A842F5E52B6F9C /* Pods-RNTester-visionOS.debug.xcconfig */, + 493798899A582E2398010242 /* Pods-RNTester-visionOS.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + E7DB20A022B2BA84005AC45F /* RNTesterUnitTests */ = { + isa = PBXGroup; + children = ( + CD10C7A4290BD4EB0033E1ED /* RCTEventEmitterTests.m */, + E7DB20A322B2BA84005AC45F /* Info.plist */, + E7DB20C622B2BAA5005AC45F /* RCTAllocationTests.m */, + E7DB20B222B2BAA4005AC45F /* RCTAnimationUtilsTests.m */, + E7DB20AB22B2BAA3005AC45F /* RCTBlobManagerTests.m */, + E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */, + E7DB20CC22B2BAA5005AC45F /* RCTComponentPropsTests.m */, + E7DB20CA22B2BAA5005AC45F /* RCTConvert_NSURLTests.m */, + E7DB20CE22B2BAA5005AC45F /* RCTConvert_YGValueTests.m */, + 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */, + E7DB20C822B2BAA5005AC45F /* RCTDevMenuTests.m */, + E7DB20C022B2BAA4005AC45F /* RCTEventDispatcherTests.m */, + E7DB20AF22B2BAA4005AC45F /* RCTFontTests.m */, + E7DB20C722B2BAA5005AC45F /* RCTFormatErrorTests.m */, + E7DB20C522B2BAA4005AC45F /* RCTGzipTests.m */, + E7DB20AE22B2BAA4005AC45F /* RCTImageLoaderHelpers.h */, + E7DB20C922B2BAA5005AC45F /* RCTImageLoaderHelpers.m */, + E7DB20C222B2BAA4005AC45F /* RCTImageLoaderTests.m */, + E7DB20CD22B2BAA5005AC45F /* RCTImageUtilTests.m */, + E7DB20B122B2BAA4005AC45F /* RCTJSONTests.m */, + E7DB20C322B2BAA4005AC45F /* RCTMethodArgumentTests.m */, + E7DB20AA22B2BAA3005AC45F /* RCTModuleInitNotificationRaceTests.m */, + E7DB20B022B2BAA4005AC45F /* RCTModuleInitTests.m */, + E7DB20CB22B2BAA5005AC45F /* RCTModuleMethodTests.mm */, + E7DB20CF22B2BAA5005AC45F /* RCTMultipartStreamReaderTests.m */, + A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */, + E7DB20BE22B2BAA4005AC45F /* RCTNativeAnimatedNodesManagerTests.m */, + E7DB20AD22B2BAA3005AC45F /* RCTPerformanceLoggerTests.m */, + E7DB20C422B2BAA4005AC45F /* RCTShadowViewTests.m */, + E7DB20BF22B2BAA4005AC45F /* RCTUIManagerTests.m */, + E7DB20C122B2BAA4005AC45F /* RCTUnicodeDecodeTests.m */, + E7DB20D022B2BAA5005AC45F /* RCTURLUtilsTests.m */, + E7DB20E022B2BAA5005AC45F /* RCTViewTests.m */, + E7DB20B322B2BAA4005AC45F /* RNTesterUnitTestsBundle.js */, + ); + path = RNTesterUnitTests; + sourceTree = ""; + }; + E7DB215422B2F332005AC45F /* RNTesterIntegrationTests */ = { + isa = PBXGroup; + children = ( + E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */, + E7DB215E22B2F3EC005AC45F /* RCTLoggingTests.m */, + E7DB215F22B2F3EC005AC45F /* RCTUIManagerScenarioTests.m */, + E7DB215D22B2F3EC005AC45F /* RNTesterTestModule.m */, + E7DB215722B2F332005AC45F /* Info.plist */, + ); + path = RNTesterIntegrationTests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* RNTester */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNTester" */; + buildPhases = ( + ABDE2A52ACD1B95E14790B5E /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 68CD48B71D2BCB2C007E06A9 /* Build JS Bundle */, + 79E8BE2B119D4C5CCD2F04B3 /* [RN] Copy Hermes Framework */, + 5625E703156DD564DE9175B0 /* [CP] Copy Pods Resources */, + 0332E7BAF637AEC8012D74BC /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNTester; + productName = "Hello World"; + productReference = 13B07F961A680F5B00A75B9A /* RNTester.app */; + productType = "com.apple.product-type.application"; + }; + AC78A6092B5738FB00121555 /* RNTester-visionOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = AC78A61C2B5738FD00121555 /* Build configuration list for PBXNativeTarget "RNTester-visionOS" */; + buildPhases = ( + 332C7F971110B1C795B9AA87 /* [CP] Check Pods Manifest.lock */, + AC78A6062B5738FB00121555 /* Sources */, + AC78A6082B5738FB00121555 /* Resources */, + AEF892198F25B84713C203D8 /* Frameworks */, + B32E91D3B40C704888C73008 /* [CP] Copy Pods Resources */, + A95463060C0C971019CD5AD1 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RNTester-visionOS"; + productName = "RNTester-visionOS"; + productReference = AC78A60A2B5738FB00121555 /* RNTester-visionOS.app */; + productType = "com.apple.product-type.application"; + }; + ACC52F3D299ECB7A002A2B0B /* RNTester-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = ACC52F50299ECB7B002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOS" */; + buildPhases = ( + F5F2B39E894FF9936ABB6036 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + ACC52F3B299ECB7A002A2B0B /* Frameworks */, + ACC52F3C299ECB7A002A2B0B /* Resources */, + 3106AC984814CBD2BBC7D019 /* [CP] Copy Pods Resources */, + 308A85FD8F443CC8EF54D564 /* [CP] Embed Pods Frameworks */, + AC7A72122E947C790068C621 /* Build JS Bundle */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RNTester-macOS"; + productName = "RNTester-macOS"; + productReference = ACC52F3E299ECB7A002A2B0B /* RNTester-macOS.app */; + productType = "com.apple.product-type.application"; + }; + ACC52F54299ECB8A002A2B0B /* RNTester-macOSUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = ACC52F5B299ECB8A002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOSUnitTests" */; + buildPhases = ( + B9BC065F9C5572B8BCB3A736 /* [CP] Check Pods Manifest.lock */, + ACC52F51299ECB8A002A2B0B /* Sources */, + ACC52F52299ECB8A002A2B0B /* Frameworks */, + ACC52F53299ECB8A002A2B0B /* Resources */, + 186C6F79A9B283890ED5DB0D /* [CP] Copy Pods Resources */, + 60A76A34BDF452F2EE8C911B /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ACC52F5A299ECB8A002A2B0B /* PBXTargetDependency */, + ); + name = "RNTester-macOSUnitTests"; + productName = "RNTester-macOSUnitTests"; + productReference = ACC52F55299ECB8A002A2B0B /* RNTester-macOSUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + ACC52F61299ECB97002A2B0B /* RNTester-macOSIntegrationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = ACC52F68299ECB97002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOSIntegrationTests" */; + buildPhases = ( + 90B28A8FF4F9F5E4A8F2D512 /* [CP] Check Pods Manifest.lock */, + ACC52F5E299ECB97002A2B0B /* Sources */, + ACC52F5F299ECB97002A2B0B /* Frameworks */, + ACC52F60299ECB97002A2B0B /* Resources */, + F6335E1B271BC438989C54BB /* [CP] Copy Pods Resources */, + 74730B6734B99706C20CB57D /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ACC52F67299ECB97002A2B0B /* PBXTargetDependency */, + ); + name = "RNTester-macOSIntegrationTests"; + productName = "RNTester-macOSIntegrationTests"; + productReference = ACC52F62299ECB97002A2B0B /* RNTester-macOSIntegrationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + E7DB209E22B2BA84005AC45F /* RNTesterUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E7DB20A622B2BA84005AC45F /* Build configuration list for PBXNativeTarget "RNTesterUnitTests" */; + buildPhases = ( + 4F76596957F7356516B534CE /* [CP] Check Pods Manifest.lock */, + E7DB209B22B2BA84005AC45F /* Sources */, + E7DB209C22B2BA84005AC45F /* Frameworks */, + E7DB209D22B2BA84005AC45F /* Resources */, + 01934C30687B8C926E4F59CD /* [CP] Copy Pods Resources */, + FF70CE81428E861E8C9BC712 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ADA4EF582546F3F8000B7E75 /* PBXTargetDependency */, + ); + name = RNTesterUnitTests; + productName = RNTesterUnitTests; + productReference = E7DB209F22B2BA84005AC45F /* RNTesterUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + E7DB215222B2F332005AC45F /* RNTesterIntegrationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E7DB215A22B2F332005AC45F /* Build configuration list for PBXNativeTarget "RNTesterIntegrationTests" */; + buildPhases = ( + B7EB74515CDE78D98087DD53 /* [CP] Check Pods Manifest.lock */, + E7DB214F22B2F332005AC45F /* Sources */, + E7DB215022B2F332005AC45F /* Frameworks */, + E7DB215122B2F332005AC45F /* Resources */, + E446637427ECD101CAACE52B /* [CP] Copy Pods Resources */, + 7405FCB7916FC70DD558671A /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + E7DB215922B2F332005AC45F /* PBXTargetDependency */, + ); + name = RNTesterIntegrationTests; + productName = RNTesterIntegrationTests; + productReference = E7DB215322B2F332005AC45F /* RNTesterIntegrationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1520; + LastUpgradeCheck = 1210; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1430; + }; + AC78A6092B5738FB00121555 = { + CreatedOnToolsVersion = 15.2; + }; + E7DB209E22B2BA84005AC45F = { + CreatedOnToolsVersion = 10.2.1; + }; + E7DB215222B2F332005AC45F = { + CreatedOnToolsVersion = 10.2.1; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNTesterPods" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* RNTester */, + E7DB209E22B2BA84005AC45F /* RNTesterUnitTests */, + E7DB215222B2F332005AC45F /* RNTesterIntegrationTests */, + ACC52F3D299ECB7A002A2B0B /* RNTester-macOS */, + ACC52F54299ECB8A002A2B0B /* RNTester-macOSUnitTests */, + ACC52F61299ECB97002A2B0B /* RNTester-macOSIntegrationTests */, + AC78A6092B5738FB00121555 /* RNTester-visionOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DDEF0101F84BF7B00DBDF73 /* Images.xcassets in Resources */, + 8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */, + 0EA618032BE537D3001875EF /* RNTesterBundle.bundle in Resources */, + F0D621C32BBB9E38005960AC /* PrivacyInfo.xcprivacy in Resources */, + 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AC78A6082B5738FB00121555 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AC78A6152B5738FD00121555 /* Assets.xcassets in Resources */, + 0E3E8DF4F87D07566A9489D4 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F3C299ECB7A002A2B0B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ACC52F47299ECB7B002A2B0B /* Assets.xcassets in Resources */, + ACC52F4A299ECB7B002A2B0B /* Main.storyboard in Resources */, + ACC52F6C299ECDDA002A2B0B /* Info.plist in Resources */, + 34BEDB34D7F11B292D818883 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F53299ECB8A002A2B0B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ACDBF0D529B2BF0A00EEBD9E /* RNTesterUnitTestsBundle.js in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F60299ECB97002A2B0B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB209D22B2BA84005AC45F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E7DB20DA22B2BAA6005AC45F /* RNTesterUnitTestsBundle.js in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB215122B2F332005AC45F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 01934C30687B8C926E4F59CD /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 0332E7BAF637AEC8012D74BC /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 186C6F79A9B283890ED5DB0D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 308A85FD8F443CC8EF54D564 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3106AC984814CBD2BBC7D019 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 332C7F971110B1C795B9AA87 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-visionOS-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 4F76596957F7356516B534CE /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTesterUnitTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 5625E703156DD564DE9175B0 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 60A76A34BDF452F2EE8C911B /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 68CD48B71D2BCB2C007E06A9 /* Build JS Bundle */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Build JS Bundle"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nexport PROJECT_ROOT=\"$SRCROOT\"\nexport ENTRY_FILE=\"$SRCROOT/js/RNTesterApp.ios.js\"\nexport SOURCEMAP_FILE=../sourcemap.ios.map\n# export FORCE_BUNDLING=true \n\nWITH_ENVIRONMENT=\"../react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + 7405FCB7916FC70DD558671A /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 74730B6734B99706C20CB57D /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 79E8BE2B119D4C5CCD2F04B3 /* [RN] Copy Hermes Framework */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[RN] Copy Hermes Framework"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". ../react-native/sdks/hermes-engine/utils/copy-hermes-xcode.sh\n"; + }; + 90B28A8FF4F9F5E4A8F2D512 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-macOSIntegrationTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + A95463060C0C971019CD5AD1 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + ABDE2A52ACD1B95E14790B5E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + AC7A72122E947C790068C621 /* Build JS Bundle */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Build JS Bundle"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nexport PROJECT_ROOT=\"$SRCROOT\"\nexport ENTRY_FILE=\"$SRCROOT/js/RNTesterApp.ios.js\"\nexport SOURCEMAP_FILE=../sourcemap.ios.map\n# export FORCE_BUNDLING=true \n\nWITH_ENVIRONMENT=\"../react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + B32E91D3B40C704888C73008 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + B7EB74515CDE78D98087DD53 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTesterIntegrationTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + B9BC065F9C5572B8BCB3A736 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-macOSUnitTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E446637427ECD101CAACE52B /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + F5F2B39E894FF9936ABB6036 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-macOS-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + F6335E1B271BC438989C54BB /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + FF70CE81428E861E8C9BC712 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E62F11842A5C6584000BF1C8 /* UpdatePropertiesExampleView.mm in Sources */, + E62F11832A5C6580000BF1C8 /* FlexibleSizeExampleView.mm in Sources */, + 832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */, + 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AC78A6062B5738FB00121555 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AC78A61F2B573BB200121555 /* SwiftTest.swift in Sources */, + AC78A61E2B573BAE00121555 /* main.m in Sources */, + AC78A6212B573BD800121555 /* UpdatePropertiesExampleView.mm in Sources */, + AC78A61D2B573BAA00121555 /* AppDelegate.mm in Sources */, + AC78A6202B573BD300121555 /* FlexibleSizeExampleView.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F51299ECB8A002A2B0B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AC73FCEF29B1318B0003586F /* RCTAnimationUtilsTests.m in Sources */, + AC73FD0729B131DA0003586F /* RCTUIManagerTests.m in Sources */, + AC73FCF729B131A20003586F /* RCTEventDispatcherTests.m in Sources */, + AC73FCF429B1319A0003586F /* RCTConvert_YGValueTests.m in Sources */, + AC73FD0629B131D70003586F /* RCTShadowViewTests.m in Sources */, + AC73FCFA29B131AA0003586F /* RCTGzipTests.m in Sources */, + AC73FCFC29B131B80003586F /* RCTImageLoaderTests.m in Sources */, + AC73FD0429B131D10003586F /* RCTNativeAnimatedNodesManagerTests.m in Sources */, + AC73FD0929B131E10003586F /* RCTURLUtilsTests.m in Sources */, + AC73FD0029B131C30003586F /* RCTModuleInitNotificationRaceTests.m in Sources */, + AC73FD0A29B131E50003586F /* RCTViewTests.m in Sources */, + AC73FCFE29B131BE0003586F /* RCTJSONTests.m in Sources */, + AC73FCF629B1319F0003586F /* RCTDevMenuTests.m in Sources */, + AC73FD0329B131CD0003586F /* RCTMultipartStreamReaderTests.m in Sources */, + AC73FD0129B131C70003586F /* RCTModuleInitTests.m in Sources */, + AC73FD0529B131D40003586F /* RCTPerformanceLoggerTests.m in Sources */, + AC73FCF829B131A40003586F /* RCTFontTests.m in Sources */, + AC73FD0229B131CA0003586F /* RCTModuleMethodTests.mm in Sources */, + AC73FCF329B131960003586F /* RCTConvert_NSURLTests.m in Sources */, + AC73FCF929B131A70003586F /* RCTFormatErrorTests.m in Sources */, + AC73FD0829B131DD0003586F /* RCTUnicodeDecodeTests.m in Sources */, + AC73FCEE29B131870003586F /* RCTAllocationTests.m in Sources */, + AC73FCFD29B131BC0003586F /* RCTImageUtilTests.m in Sources */, + AC73FCFB29B131B50003586F /* RCTImageLoaderHelpers.m in Sources */, + AC73FCF529B1319C0003586F /* RCTConvert_UIColorTests.m in Sources */, + AC73FCF129B131910003586F /* RCTBundleURLProviderTests.m in Sources */, + AC73FCF029B1318E0003586F /* RCTBlobManagerTests.m in Sources */, + AC73FCFF29B131C10003586F /* RCTMethodArgumentTests.m in Sources */, + AC30658829B14F38007A839A /* RCTComponentPropsTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ACC52F5E299ECB97002A2B0B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AC73FCE829B1316D0003586F /* RNTesterIntegrationTests.m in Sources */, + AC73FCE929B131700003586F /* RCTLoggingTests.m in Sources */, + AC73FCEB29B131770003586F /* RCTUIManagerScenarioTests.m in Sources */, + AC73FCED29B1317D0003586F /* RNTesterTestModule.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB209B22B2BA84005AC45F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A975CA6C2C05EADF0043F72A /* RCTNetworkTaskTests.m in Sources */, + E7DB20DF22B2BAA6005AC45F /* RCTImageLoaderTests.m in Sources */, + E7DB20D222B2BAA6005AC45F /* RCTModuleInitNotificationRaceTests.m in Sources */, + E7DB20D522B2BAA6005AC45F /* RCTPerformanceLoggerTests.m in Sources */, + E7DB20D922B2BAA6005AC45F /* RCTAnimationUtilsTests.m in Sources */, + E7DB20D122B2BAA6005AC45F /* RCTBundleURLProviderTests.m in Sources */, + E7DB20EC22B2BAA6005AC45F /* RCTMultipartStreamReaderTests.m in Sources */, + E7DB20E022B2BAA6005AC45F /* RCTMethodArgumentTests.m in Sources */, + E7DB20E822B2BAA6005AC45F /* RCTModuleMethodTests.mm in Sources */, + E7DB20E222B2BAA6005AC45F /* RCTGzipTests.m in Sources */, + E7DB20ED22B2BAA6005AC45F /* RCTURLUtilsTests.m in Sources */, + E7DB20EE22B2BAA6005AC45F /* RCTViewTests.m in Sources */, + E7DB20D322B2BAA6005AC45F /* RCTBlobManagerTests.m in Sources */, + E7DB20DC22B2BAA6005AC45F /* RCTUIManagerTests.m in Sources */, + E7DB20E322B2BAA6005AC45F /* RCTAllocationTests.m in Sources */, + 383889DA23A7398900D06C3E /* RCTConvert_UIColorTests.m in Sources */, + E7DB20E622B2BAA6005AC45F /* RCTImageLoaderHelpers.m in Sources */, + E7DB20D622B2BAA6005AC45F /* RCTFontTests.m in Sources */, + E7DB20DB22B2BAA6005AC45F /* RCTNativeAnimatedNodesManagerTests.m in Sources */, + E7DB20E722B2BAA6005AC45F /* RCTConvert_NSURLTests.m in Sources */, + E7DB20DD22B2BAA6005AC45F /* RCTEventDispatcherTests.m in Sources */, + E7DB20E122B2BAA6005AC45F /* RCTShadowViewTests.m in Sources */, + E7DB20EA22B2BAA6005AC45F /* RCTImageUtilTests.m in Sources */, + E7DB20D722B2BAA6005AC45F /* RCTModuleInitTests.m in Sources */, + E7DB20E522B2BAA6005AC45F /* RCTDevMenuTests.m in Sources */, + E7DB20DE22B2BAA6005AC45F /* RCTUnicodeDecodeTests.m in Sources */, + CD10C7A5290BD4EB0033E1ED /* RCTEventEmitterTests.m in Sources */, + E7DB20E422B2BAA6005AC45F /* RCTFormatErrorTests.m in Sources */, + E7DB20EB22B2BAA6005AC45F /* RCTConvert_YGValueTests.m in Sources */, + E7DB20E922B2BAA6005AC45F /* RCTComponentPropsTests.m in Sources */, + E7DB20D822B2BAA6005AC45F /* RCTJSONTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7DB214F22B2F332005AC45F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E7DB216222B2F3EC005AC45F /* RNTesterTestModule.m in Sources */, + E7C1241A22BEC44B00DA25C0 /* RNTesterIntegrationTests.m in Sources */, + E7DB216322B2F3EC005AC45F /* RCTLoggingTests.m in Sources */, + E7DB216422B2F3EC005AC45F /* RCTUIManagerScenarioTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + ACC52F5A299ECB8A002A2B0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = ACC52F3D299ECB7A002A2B0B /* RNTester-macOS */; + targetProxy = ACC52F59299ECB8A002A2B0B /* PBXContainerItemProxy */; + }; + ACC52F67299ECB97002A2B0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = ACC52F3D299ECB7A002A2B0B /* RNTester-macOS */; + targetProxy = ACC52F66299ECB97002A2B0B /* PBXContainerItemProxy */; + }; + ADA4EF582546F3F8000B7E75 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* RNTester */; + targetProxy = ADA4EF572546F3F8000B7E75 /* PBXContainerItemProxy */; + }; + E7DB215922B2F332005AC45F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* RNTester */; + targetProxy = E7DB215822B2F332005AC45F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + ACC52F48299ECB7B002A2B0B /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + ACC52F49299ECB7B002A2B0B /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2734C5E31C1D7A09BF872585 /* Pods-RNTester.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=*]" = "$(inherited)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-framework", + "\"JavaScriptCore\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTester.localDevelopment; + PRODUCT_NAME = RNTester; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9B8542B8C590B51BD0588751 /* Pods-RNTester.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + DEVELOPMENT_TEAM = ""; + EXCLUDED_ARCHS = ""; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-framework", + "\"JavaScriptCore\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTester.localDevelopment; + PRODUCT_NAME = RNTester; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ASSIGN_ENUM = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_NEWLINE = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES; + GCC_WARN_SHADOW = YES; + GCC_WARN_STRICT_SELECTOR_MATCH = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNKNOWN_PRAGMAS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_LABEL = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + ); + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../react-native"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; + USE_HERMES = true; + WARNING_CFLAGS = ( + "-Wextra", + "-Wall", + "-Wno-semicolon-before-method-body", + ); + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ASSIGN_ENUM = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_NEWLINE = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES; + GCC_WARN_SHADOW = YES; + GCC_WARN_STRICT_SELECTOR_MATCH = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNKNOWN_PRAGMAS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_LABEL = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + ); + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = "$(inherited)"; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + VALIDATE_PRODUCT = YES; + WARNING_CFLAGS = ( + "-Wextra", + "-Wall", + "-Wno-semicolon-before-method-body", + ); + }; + name = Release; + }; + AC78A61A2B5738FD00121555 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 086F285685A842F5E52B6F9C /* Pods-RNTester-visionOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_ASSET_PATHS = "\"RNTester-visionOS/Preview Content\""; + ENABLE_PREVIEWS = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-visionOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = xros; + SUPPORTED_PLATFORMS = "xros xrsimulator"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,7"; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Debug; + }; + AC78A61B2B5738FD00121555 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 493798899A582E2398010242 /* Pods-RNTester-visionOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_ASSET_PATHS = "\"RNTester-visionOS/Preview Content\""; + ENABLE_PREVIEWS = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-visionOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = xros; + SUPPORTED_PLATFORMS = "xros xrsimulator"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,7"; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Release; + }; + ACC52F4E299ECB7B002A2B0B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 59BCC6695B251DC95CFA6A67 /* Pods-RNTester-macOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "RNTester-macOS/RNTester_macOS.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Facebook. All rights reserved."; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 14.6; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + ACC52F4F299ECB7B002A2B0B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAEBC2296BB4BDDDCAAF4404 /* Pods-RNTester-macOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "RNTester-macOS/RNTester_macOS.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Facebook. All rights reserved."; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 14.6; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + ACC52F5C299ECB8A002A2B0B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E2994DA5CC7BE9B0C836D6B6 /* Pods-RNTester-macOSUnitTests.debug.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSUnitTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + }; + name = Debug; + }; + ACC52F5D299ECB8A002A2B0B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1176CCE167820DDB6B66801A /* Pods-RNTester-macOSUnitTests.release.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSUnitTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + }; + name = Release; + }; + ACC52F69299ECB97002A2B0B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9BD1BBDA193F1DB661EDB0CF /* Pods-RNTester-macOSIntegrationTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSIntegrationTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-macOS.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/RNTester-macOS"; + }; + name = Debug; + }; + ACC52F6A299ECB97002A2B0B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 95706B2D6A97C2C7489615A1 /* Pods-RNTester-macOSIntegrationTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSIntegrationTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester-macOS.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/RNTester-macOS"; + }; + name = Release; + }; + E7DB20A722B2BA84005AC45F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E8475AB4E5BB7B7A87C16D41 /* Pods-RNTesterUnitTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", + "$(inherited)", + "$(PROJECT_DIR)/RNTesterUnitTests", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_SWIFT_FLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTesterUnitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E7DB20A822B2BA84005AC45F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BFB9C61D7BDE894E24BF24F /* Pods-RNTesterUnitTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = RNTesterUnitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", + "$(inherited)", + "$(PROJECT_DIR)/RNTesterUnitTests", + ); + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_SWIFT_FLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTesterUnitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + E7DB215B22B2F332005AC45F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 66C3087F2D5BF762FE9E6422 /* Pods-RNTesterIntegrationTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/RNTesterIntegrationTests/ReferenceImages\\\"\"", + "$(inherited)", + ); + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_SWIFT_FLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTesterIntegrationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester.app/RNTester"; + }; + name = Debug; + }; + E7DB215C22B2F332005AC45F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7CDA7A212644C6BB8C0D00D8 /* Pods-RNTesterIntegrationTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = RNTesterIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_SWIFT_FLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTesterIntegrationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNTester.app/RNTester"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNTester" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNTesterPods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AC78A61C2B5738FD00121555 /* Build configuration list for PBXNativeTarget "RNTester-visionOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AC78A61A2B5738FD00121555 /* Debug */, + AC78A61B2B5738FD00121555 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + ACC52F50299ECB7B002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ACC52F4E299ECB7B002A2B0B /* Debug */, + ACC52F4F299ECB7B002A2B0B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + ACC52F5B299ECB8A002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOSUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ACC52F5C299ECB8A002A2B0B /* Debug */, + ACC52F5D299ECB8A002A2B0B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + ACC52F68299ECB97002A2B0B /* Build configuration list for PBXNativeTarget "RNTester-macOSIntegrationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ACC52F69299ECB97002A2B0B /* Debug */, + ACC52F6A299ECB97002A2B0B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E7DB20A622B2BA84005AC45F /* Build configuration list for PBXNativeTarget "RNTesterUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E7DB20A722B2BA84005AC45F /* Debug */, + E7DB20A822B2BA84005AC45F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E7DB215A22B2F332005AC45F /* Build configuration list for PBXNativeTarget "RNTesterIntegrationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E7DB215B22B2F332005AC45F /* Debug */, + E7DB215C22B2F332005AC45F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} From 6c7497b806c813f081dd5e30dfe055b06675a2f8 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 02:23:58 -0700 Subject: [PATCH 40/56] fix(0.83, RCTUIKit): Extend support to SwiftUI (#3006) ## Summary: Followup to https://github.com/microsoft/react-native-macos/pull/2958 , whose repo is still locked so we can't edit it. Extend RCTUIKit support to SwiftUI ## Test Plan: CI should pass --- .../Libraries/RCTUIKit/RCTUIKitCompat.h | 4 ++ .../ReactApple/RCTSwiftUI/RCTSwiftUI.podspec | 1 + .../RCTSwiftUI/RCTSwiftUIContainerView.swift | 41 ++++--------------- .../RCTSwiftUIContainerViewWrapper.h | 27 +++--------- .../RCTSwiftUIContainerViewWrapper.m | 10 +---- .../RCTSwiftUIWrapper.podspec | 1 + 6 files changed, 19 insertions(+), 65 deletions(-) diff --git a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h index db409fea1ab2..ebea895fe73f 100644 --- a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h @@ -233,12 +233,16 @@ typedef NS_ENUM(NSInteger, UIActivityIndicatorViewStyle) { @compatibility_alias RCTPlatformViewController UIViewController; @compatibility_alias RCTUIApplication UIApplication; @compatibility_alias RCTPlatformSwitch UISwitch; +@compatibility_alias RCTPlatformHostingController UIHostingController; +@compatibility_alias RCTPlatformViewRepresentable UIViewRepresentable; #else @compatibility_alias RCTPlatformApplication NSApplication; @compatibility_alias RCTPlatformWindow NSWindow; @compatibility_alias RCTPlatformViewController NSViewController; @compatibility_alias RCTUIApplication NSApplication; @compatibility_alias RCTPlatformSwitch NSSwitch; +@compatibility_alias RCTPlatformHostingController NSHostingController; +@compatibility_alias RCTPlatformViewRepresentable NSViewRepresentable; #endif NS_ASSUME_NONNULL_END diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec index 4fae2c71426a..058162aa2f0c 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] # Swift-specific configuration s.pod_target_xcconfig = { diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift index 20c64858e79c..e02b54f3af38 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift @@ -6,21 +6,7 @@ */ import SwiftUI -#if os(macOS) // [macOS -import AppKit -#else -import UIKit -#endif // macOS] - -#if os(macOS) // [macOS -public typealias RCTPlatformView = NSView -public typealias RCTUIColor = NSColor -public typealias RCTPlatformHostingController = NSHostingController -#else -public typealias RCTPlatformView = UIView -public typealias RCTUIColor = UIColor -public typealias RCTPlatformHostingController = UIHostingController -#endif // macOS] +import React_RCTUIKit @MainActor @objc public class RCTSwiftUIContainerView: NSObject { private var containerViewModel = ContainerViewModel() @@ -61,7 +47,7 @@ public typealias RCTPlatformHostingController = UIHostingController containerViewModel.grayscale = CGFloat(grayscale.floatValue) } - @objc public func updateDropShadow(standardDeviation: NSNumber, x: NSNumber, y: NSNumber, color: RCTUIColor) { // [macOS] + @objc public func updateDropShadow(standardDeviation: NSNumber, x: NSNumber, y: NSNumber, color: RCTPlatformColor) { // [macOS] containerViewModel.shadowRadius = CGFloat(standardDeviation.floatValue) containerViewModel.shadowX = CGFloat(x.floatValue) containerViewModel.shadowY = CGFloat(y.floatValue) @@ -128,7 +114,7 @@ struct SwiftUIContainerView: View { var body: some View { if let contentView = viewModel.contentView { - PlatformViewWrapper(view: contentView) // [macOS] + RCTPlatformViewWrapper(view: contentView) // [macOS] .blur(radius: viewModel.blurRadius) .grayscale(viewModel.grayscale) .shadow(color: viewModel.shadowColor, radius: viewModel.shadowRadius, x: viewModel.shadowX, y: viewModel.shadowY) @@ -139,26 +125,13 @@ struct SwiftUIContainerView: View { } } -#if os(macOS) // [macOS -struct PlatformViewWrapper: NSViewRepresentable { - let view: NSView - - func makeNSView(context: Context) -> NSView { - return view - } - - func updateNSView(_ nsView: NSView, context: Context) { - } -} -#else -struct PlatformViewWrapper: UIViewRepresentable { - let view: UIView +struct RCTPlatformViewWrapper: RCTPlatformViewRepresentable { // [macOS] + let view: RCTPlatformView - func makeUIView(context: Context) -> UIView { + func makeRCTPlatformView(context: Context) -> RCTPlatformView { // [macOS] return view } - func updateUIView(_ uiView: UIView, context: Context) { + func updateRCTPlatformView(_ view: RCTPlatformView, context: Context) { // [macOS] } } -#endif // macOS] diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h index b43965b90aee..1f63a252fd04 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h @@ -6,38 +6,21 @@ */ #import -#if TARGET_OS_OSX // [macOS -#import -#else // macOS] -#import -#endif // [macOS] +#import // [macOS] NS_ASSUME_NONNULL_BEGIN @interface RCTSwiftUIContainerViewWrapper : NSObject -#if !TARGET_OS_OSX // [macOS] -- (UIView *_Nullable)contentView; -#else // [macOS -- (NSView *_Nullable)contentView; -#endif // macOS] +- (RCTPlatformView *_Nullable)contentView; - (void)updateBlurRadius:(NSNumber *)radius; - (void)updateGrayscale:(NSNumber *)grayscale; -#if !TARGET_OS_OSX // [macOS] -- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(UIColor *)color; -#else // [macOS -- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(NSColor *)color; -#endif // macOS] +- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(RCTPlatformColor *)color; // [macOS] - (void)updateSaturation:(NSNumber *)saturation; - (void)updateContrast:(NSNumber *)contrast; - (void)updateHueRotate:(NSNumber *)degrees; -#if !TARGET_OS_OSX // [macOS] -- (void)updateContentView:(UIView *)view; -- (UIView *_Nullable)hostingView; -#else // [macOS -- (void)updateContentView:(NSView *)view; -- (NSView *_Nullable)hostingView; -#endif // macOS] +- (void)updateContentView:(RCTPlatformView *)view; // [macOS] +- (RCTPlatformView *_Nullable)hostingView; // [macOS] - (void)resetStyles; - (void)updateLayoutWithBounds:(CGRect)bounds; diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m index b5a3f58e03a8..7ddfbafa457b 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m @@ -9,14 +9,6 @@ @import RCTSwiftUI; -#if TARGET_OS_OSX // [macOS -typedef NSView RCTPlatformView; -typedef NSColor RCTUIColor; -#else // macOS] -typedef UIView RCTPlatformView; -typedef UIColor RCTUIColor; -#endif // [macOS] - @interface RCTSwiftUIContainerViewWrapper () @property (nonatomic, strong) RCTSwiftUIContainerView *swiftContainerView; @end @@ -76,7 +68,7 @@ - (void)updateHueRotate:(NSNumber *)degrees [self.swiftContainerView updateHueRotate:degrees]; } -- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(RCTUIColor *)color // [macOS] +- (void)updateDropShadow:(NSNumber *)standardDeviation x:(NSNumber *)x y:(NSNumber *)y color:(RCTPlatformColor *)color // [macOS] { [self.swiftContainerView updateDropShadowWithStandardDeviation:standardDeviation x:x y:y color:color]; } diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec index 93bc0e91bb85..daed31e2f8e3 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec @@ -30,6 +30,7 @@ Pod::Spec.new do |s| s.module_name = "RCTSwiftUIWrapper" s.header_dir = "RCTSwiftUIWrapper" s.dependency "RCTSwiftUI" + s.dependency "React-RCTUIKit" # [macOS] s.pod_target_xcconfig = { "SWIFT_VERSION" => "5.0", From ced157ef5bc26897399b94e77f8c56fb8dff02ea Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 02:28:08 -0700 Subject: [PATCH 41/56] fix(macos): align TouchableBounce & AccessibilityInfo with upstream (#3009) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Supersedes #2964. Two small JS fixes from the 0.83 merge audit. **`TouchableBounce.js`** — add the `onPress !== undefined` guard to the macOS `focusable` check (matches upstream 0.83). A `TouchableBounce` with no `onPress` is no longer Tab/VoiceOver focusable. **`AccessibilityInfo.js`** — drop the macOS carve-outs in `isBoldTextEnabled` and `isReduceTransparencyEnabled` so both use upstream's android-first guard and fall through to native on macOS, like their siblings (`isReduceMotionEnabled`, `isInvertColorsEnabled`): - `isReduceTransparencyEnabled` now returns the real macOS "Reduce Transparency" setting instead of a hardcoded `false` — the native side already tracks and live-updates it. - `isBoldTextEnabled` still returns `false` on macOS (no native value), now with zero fork divergence. Both methods now match upstream exactly, aside from the fork-wide `NativeAccessibilityManagerApple` rename. ## Test plan - macOS: `isReduceTransparencyEnabled` reflects the System Settings toggle; `isBoldTextEnabled` stays `false`. - `TouchableBounce` without `onPress` is not focusable. - iOS / Android unchanged; no type changes. Related: #2901. Co-authored-by: Thiago Vinhas Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../AccessibilityInfo/AccessibilityInfo.js | 16 ++++++---------- .../Components/Touchable/TouchableBounce.js | 6 +++++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js index 9790969890f8..531e9343b64b 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js @@ -98,8 +98,9 @@ const AccessibilityInfo = { * See https://reactnative.dev/docs/accessibilityinfo#isBoldTextEnabled */ isBoldTextEnabled(): Promise { - // [macOS rework logic to return Promise.resolve(false) on macOS - if (Platform.OS === 'ios') { + if (Platform.OS === 'android') { + return Promise.resolve(false); + } else { return new Promise((resolve, reject) => { if (NativeAccessibilityManagerApple != null) { NativeAccessibilityManagerApple.getCurrentBoldTextState( @@ -110,10 +111,7 @@ const AccessibilityInfo = { reject(new Error('NativeAccessibilityManagerIOS is not available')); } }); - } else { - return Promise.resolve(false); } - // macOS] }, /** @@ -333,8 +331,9 @@ const AccessibilityInfo = { * See https://reactnative.dev/docs/accessibilityinfo#isReduceTransparencyEnabled */ isReduceTransparencyEnabled(): Promise { - // [macOS rework logic to return Promise.resolve(false) on macOS - if (Platform.OS === 'ios') { + if (Platform.OS === 'android') { + return Promise.resolve(false); + } else { return new Promise((resolve, reject) => { if (NativeAccessibilityManagerApple != null) { NativeAccessibilityManagerApple.getCurrentReduceTransparencyState( @@ -345,10 +344,7 @@ const AccessibilityInfo = { reject(new Error('NativeAccessibilityManagerIOS is not available')); } }); - } else { - return Promise.resolve(false); } - // macOS] }, /** diff --git a/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js b/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js index d86ce2d69431..39de3ed87802 100644 --- a/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js +++ b/packages/react-native/Libraries/Components/Touchable/TouchableBounce.js @@ -202,7 +202,11 @@ class TouchableBounce extends React.Component< this.props.enableFocusRing === true) && !this.props.disabled } - focusable={this.props.focusable !== false && !this.props.disabled} + focusable={ + this.props.focusable !== false && + this.props.onPress !== undefined && + !this.props.disabled + } tooltip={this.props.tooltip} onMouseEnter={this.props.onMouseEnter} onMouseLeave={this.props.onMouseLeave} From c1cacadfffe4474f8fa7eed79d176a4b23800366 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Tue, 7 Jul 2026 02:58:59 -0700 Subject: [PATCH 42/56] ci(0.83): run PR checks on merge branch too (#3007) To aid in the merge CI should pass --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../View/RCTViewComponentView.mm | 22 +-- packages/react-native/react-native.config.js | 5 +- .../scripts/ios-prebuild/hermes.js | 26 ++- packages/rn-tester/Podfile.lock | 166 ++++++++++-------- .../KeyboardEventsExample.js | 10 +- packages/virtualized-lists/package.json | 2 +- 6 files changed, 126 insertions(+), 105 deletions(-) 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 a3c5985c1fc8..473eab307dca 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -802,7 +802,7 @@ - (RCTPlatformView *)betterHitTest:(CGPoint)point withEvent:(UIEvent *)event // BOOL isPointInside = [self pointInside:point withEvent:event]; - UIView *currentContainerView = self.currentContainerView; + RCTPlatformView *currentContainerView = self.currentContainerView; // [macOS] BOOL clipsToBounds = false; @@ -1040,19 +1040,19 @@ - (BOOL)styleWouldClipOverflowInk // `blur` applied, we need to wrap it in a SwiftUI view to render the effect. // In this case, `effectiveContentView` will be the content view inside the // SwiftUI wrapper. -- (UIView *)effectiveContentView +- (RCTPlatformView *)effectiveContentView // [macOS] { if (!ReactNativeFeatureFlags::enableSwiftUIBasedFilters()) { 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; @@ -1069,8 +1069,8 @@ - (UIView *)effectiveContentView 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; @@ -1091,7 +1091,7 @@ - (UIView *)effectiveContentView // the view and is not affected by clipping. - (RCTUIView *)currentContainerView // [macOS] { - UIView *effectiveContentView = self.effectiveContentView; + RCTPlatformView *effectiveContentView = self.effectiveContentView; // [macOS] if (_useCustomContainerView) { if (!_containerView) { @@ -1352,7 +1352,7 @@ - (void)invalidateLayer if (primitive.type == FilterType::DropShadow) { if (_swiftUIWrapper != nullptr && std::holds_alternative(primitive.parameters)) { const auto &dropShadowParams = std::get(primitive.parameters); - UIColor *shadowColor = RCTUIColorFromSharedColor(dropShadowParams.color); + RCTPlatformColor *shadowColor = RCTUIColorFromSharedColor(dropShadowParams.color); // [macOS] [_swiftUIWrapper updateDropShadow:@(dropShadowParams.standardDeviation) x:@(dropShadowParams.offsetX) y:@(dropShadowParams.offsetY) @@ -2406,7 +2406,7 @@ - (BOOL)styleNeedsSwiftUIContainer return NO; } -- (void)transferVisualPropertiesFromView:(UIView *)sourceView toView:(UIView *)destinationView +- (void)transferVisualPropertiesFromView:(RCTPlatformView *)sourceView toView:(RCTPlatformView *)destinationView // [macOS] { // shadow destinationView.layer.shadowColor = sourceView.layer.shadowColor; @@ -2454,6 +2454,7 @@ - (void)transferVisualPropertiesFromView:(UIView *)sourceView toView:(UIView *)d } } +#if !TARGET_OS_OSX // [macOS] macOS provides its own focus/blur implementation in the TARGET_OS_OSX block above - (BOOL)canBecomeFirstResponder { return YES; @@ -2509,6 +2510,7 @@ - (BOOL)resignFirstResponder return YES; } +#endif // [macOS] @end diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index a9e48d9bc519..12316ec30dab 100644 --- a/packages/react-native/react-native.config.js +++ b/packages/react-native/react-native.config.js @@ -202,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/ios-prebuild/hermes.js b/packages/react-native/scripts/ios-prebuild/hermes.js index 02ef9fdc88cb..dcc3e47c3791 100644 --- a/packages/react-native/scripts/ios-prebuild/hermes.js +++ b/packages/react-native/scripts/ios-prebuild/hermes.js @@ -160,7 +160,8 @@ type HermesEngineSourceType = const HermesEngineSourceTypes /*:{ +DOWNLOAD_PREBUILD_TARBALL: "download_prebuild_tarball", +DOWNLOAD_PREBUILT_NIGHTLY_TARBALL: "download_prebuilt_nightly_tarball", - +LOCAL_PREBUILT_TARBALL: "local_prebuilt_tarball" + +LOCAL_PREBUILT_TARBALL: "local_prebuilt_tarball", + +BUILD_FROM_HERMES_COMMIT: "build_from_hermes_commit" // [macOS] } */ = { LOCAL_PREBUILT_TARBALL: 'local_prebuilt_tarball', DOWNLOAD_PREBUILD_TARBALL: 'download_prebuild_tarball', @@ -439,22 +440,20 @@ async function buildFromHermesCommit( 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 init "${hermesDir}"`, {stdio: 'inherit'}); + execSync(`git -C "${hermesDir}" remote add origin ${HERMES_GITHUB_URL}`, { + stdio: 'inherit', + }); execSync( `git -C "${hermesDir}" fetch --no-tags --depth 1 origin +${commit}:refs/remotes/origin/main`, - {...inheritStdio, timeout: 300000}, + {stdio: 'inherit', timeout: 300000}, ); - execSync(`git -C "${hermesDir}" checkout main`, inheritStdio); + execSync(`git -C "${hermesDir}" checkout main`, {stdio: 'inherit'}); const reactNativeRoot = path.resolve(__dirname, '..', '..'); const buildScript = path.join( @@ -480,7 +479,7 @@ async function buildFromHermesCommit( hermesLog(`Building Hermes frameworks (${buildType})...`); execSync(`bash "${buildScript}"`, { - ...inheritStdio, + stdio: 'inherit', cwd: hermesDir, timeout: 3600000, // 60 minutes env: buildEnv, @@ -490,10 +489,9 @@ async function buildFromHermesCommit( 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, - ); + execSync(`tar -czf "${tarballPath}" -C "${hermesDir}" destroot`, { + stdio: 'inherit', + }); hermesLog(`Hermes built from source and packaged at ${tarballPath}`); return tarballPath; diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 4c0d4f02033a..d5960e86c8ec 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -127,6 +127,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -152,6 +153,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -176,6 +178,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -202,6 +205,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -227,6 +231,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -252,6 +257,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -277,6 +283,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -302,6 +309,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -327,6 +335,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -352,6 +361,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -377,6 +387,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -402,6 +413,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -427,6 +439,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -452,6 +465,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -477,6 +491,7 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-RCTUIKit - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -2243,6 +2258,7 @@ PODS: - React-RCTText (1000.0.0): - React-Core/RCTTextHeaders (= 1000.0.0) - Yoga + - React-RCTUIKit (1000.0.0) - React-RCTVibration (1000.0.0): - boost - DoubleConversion @@ -2611,6 +2627,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`) @@ -2766,6 +2783,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: @@ -2807,88 +2826,89 @@ SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 - FBLazyVector: 39923071cccd964d01be1545529c0bac8fba8d79 + FBLazyVector: 7facd7eeba31e00bda83b8fa6805ed7d3c547385 fmt: 4cf0c5ec5864511c96d8d4bd7b03c3c69040af06 glog: 0b31c25149b9d350b2666c7d459229861a00ec07 - hermes-engine: 0a457fd3933bf730487430adbc099fb7563e294e + hermes-engine: 2f8340468061adb07e10892988891532c23a3e00 MyNativeView: e21c7b329ad7f4eccdc0d7d708379af1d4f44ef3 NativeCxxModuleExample: 5f272184e6d41b01d4e718fbc9dbc288695ef309 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 - RCT-Folly: c803cf33238782d5fd21a5e02d44f64068e0e130 + RCT-Folly: a3d9b23289a456c318f4814703664bdc33c771cc RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: c24c57745ac975cd63b68ccdea84d890af12eb56 - RCTSwiftUI: 97b5f35eedd65593b1f3ddf7a7a0e2fbba14abda - RCTSwiftUIWrapper: cc711531259ab8b322ca74f80c77f669c38dd3b2 - RCTTypeSafety: d13817c0e4e0e9dad7c18e3b06da02fa487c3b9b - React: e725d205a18d82b2de47a117698a9e4ec0a06d95 - React-callinvoker: bd36e59ac38e0f266a05cc7617266c1ffb32d1e7 - React-Core: b9f490af64f14ee1f858327e0537d1a72ee126c2 - React-CoreModules: 19b599f26e48a50b626e745482f0f7c877b4a091 - React-cxxreact: 1ff50af33800f3da9f46b6713ecbe030f879546c - React-debug: 50c3b56e5b89536f26e415d75ac7734949ee6092 - React-defaultsnativemodule: ccfbdba74283919605ed855f8a59c480ee331bd0 - React-domnativemodule: 912909077c86e4d05027f5459cbddb362e3c295e - React-Fabric: 5dc4273d802187a6871caf6edf8f6585d5c7349c - React-FabricComponents: 606c911f41c23af43038b498d933eb84b58642df - React-FabricImage: 41ccf19fbc1ecb55d3a8943dbbfb7b85ffeef0c8 - React-featureflags: 0dc3e97ff14325357ed9d61f1a69fb7f77fee488 - React-featureflagsnativemodule: ef134cd26c0243d6c9afd6aedf09b0a824e59127 - React-graphics: b02a3faf2ee2e406de39e125888fd5c0f8ef4a9d - React-hermes: 6279eef8fdb11387013b1462e8d38d9174314056 - React-idlecallbacksnativemodule: afe87ba4776559e631957ba240000a75e4502516 - React-ImageManager: 67890bccc73594dc7dd7d834a04281d8a636b87c - React-jserrorhandler: f0d22ae95c03009c3a8e78d788fdbc560f600aab - React-jsi: faa358b34b948add69ffcf0864848702089ef1cb - React-jsiexecutor: fdff554a3c4477a5d97deccc4e2aaa3de321140c - React-jsinspector: 96605534a219bd5c07724ffd22809cc864c804f3 - React-jsinspectorcdp: 1138cf0030d40916a9ac8dea94fb69552d2c6b40 - React-jsinspectornetwork: 269472e28a060b91881f4989f0e8db964ab6bd81 - React-jsinspectortracing: ea97d76f3d39901b2bbe6d49d71dd69e185f95e4 - React-jsitooling: 26fd471722b8440baf700fbd225db5e44d24dbea - React-jsitracing: 9fb524f6083ce81b117a2094812b0688784a6477 - React-logger: 1e6fa30a221a25f8fc8bfc58aa9d5bc4cebf53aa - React-Mapbuffer: 0570a5ec04d069ed428812d50abb64c5ba36dd5b - React-microtasksnativemodule: 3a9034a1bf10a5df51fac2d6852c7c786149e2b9 - React-NativeModulesApple: 51aef0f9065fa40f515816855641b6d2a25ed130 - React-networking: d7565cc774c5f15b3c7f4796823315c4362aa051 - React-oscompat: d1c2dc1d9020179c26c168a23a3921050e3519d9 - React-perflogger: 75b374b2ed2bd58d89d9b4ddf87bf53a6c97e2e4 - React-performancecdpmetrics: 8ddbeec7190c2de475a83f0fb90337270cb19231 - React-performancetimeline: 2f51235f338149d85b109af716817b2bc00000eb - React-RCTActionSheet: 36def60fb33413d4655766c9edd1243bf6de0039 - React-RCTAnimation: e57497c6d94e5e9ccc1ab516d2facb352bcf7e9e - React-RCTAppDelegate: 1483374fb3c8606cef7153fae4c2d01a07965d75 - React-RCTBlob: 958db446665053836e92f8d5ca30cea01cd1448d - React-RCTFabric: 5ec8df5c7c2235c71390afa0043498260320b9d1 - React-RCTFBReactNativeSpec: 069d4bb334c8e533c7b37dbabcae102f6baf5795 - React-RCTImage: 6bf941bd884cf2a6dc29066bfc375ee809394756 - React-RCTLinking: fcd1397b1863dc328671015e2708b905a5eab23b - React-RCTNetwork: 84be7d256badf4a8b440f8fde71f0efe51767e80 - React-RCTPushNotification: a25e1d0750cd26b73090e07d51f0a7f9313a439b - React-RCTRuntime: a56bbc482bf370e92b3867d2ac43907b67a344b8 - React-RCTSettings: 01aff707d6b01604326c3267a2101400acea3aaa - React-RCTTest: 3b654ae4fcf0e7f6400e29cf3019cee6e276c206 - React-RCTText: 9ce693532975422fc2af310d17cacf74fde33149 - React-RCTVibration: 1354ca55b49cfa4ec50c977a0d4e518c2bd96ab7 - React-rendererconsistency: 1cea232a3dec6fc5cf61b8af2176f77458a2441d - React-renderercss: 5c5766b6e733365d0d2c70578505624f43326f4e - React-rendererdebug: f44a3e92604c2447f3380c62b38fbf9060588ae1 - React-RuntimeApple: 037bb9f3699140afa517a7f7026b99d31aa746b6 - React-RuntimeCore: e622ef1638074a46479245bbb791415d82c19759 - React-runtimeexecutor: 8b1f9fa2bc8197b6bb9b3d5d7ff7f5a12bb16bb1 - React-RuntimeHermes: c39cd3d7d92390c3e7f2e348a24d5b5e5f88bb53 - React-runtimescheduler: 24f6a173a003639a3c7e21bac27ed5d1c8062b30 - React-timing: 43f03a053c0483d3b9f43258237e0aac84ccb175 - React-utils: 0731019ed1a10f61f681909a0b3ac0cab06a45a3 - React-webperformancenativemodule: 1cf7d71e2fad07e96bd207c84b5e81610909e36d - ReactAppDependencyProvider: 80da86a794fad484ed08851802a296bbfb75c171 + RCTRequired: 91f32f88c622a12b22a0470b1bfd0138cb5ca5db + RCTSwiftUI: 4c194a33616f6d38fdf49674dc5f0a14a845c0f7 + RCTSwiftUIWrapper: 94293942d915290c3b0b88c6b93dd1cea44d3fcd + RCTTypeSafety: 106bee191facac313f66b030d8c0b76d189751c0 + React: a52cfbef7fb86a5ecbc29859d55d6782fef1d588 + React-callinvoker: ed02b8b90e2f6072fdee1aff59a62cacbe53caa8 + React-Core: 0c4360fa8fbc99636d251b548aaa11ec1556439e + React-CoreModules: 50e3eef821ebbe5ac5189b50cd32aff0b0ebede0 + React-cxxreact: f7a87faeb25415ae5b3768deea7eddeb02de88f9 + React-debug: ae4e853a47b165a88046a8b840bcb739a1c1f807 + React-defaultsnativemodule: 918c2b7d26c0fe721cd2196dce36a75523c3904d + React-domnativemodule: c4de90d67296f2290a0148d69ff9737f91c93c38 + React-Fabric: 46bf9787d034a37ac7b93f13232f67ffe5f7219a + React-FabricComponents: 3dc6f96f2340fa9e32e6fa96284856867836cb84 + React-FabricImage: d815f063a46af3cb5edfa7296200d3bc0001a4ea + React-featureflags: c3e7b44746ec14e48779a8db5566cd25fce7678f + React-featureflagsnativemodule: 76799cf78ee97633b9bbdebc77eb1ebf94a2f4b8 + React-graphics: fe59c55dcd989a5f46fc14c0b6d3f5fb89b7e0cd + React-hermes: 9f5bae24c66b1e2cb0bc9b021d750772f8556410 + React-idlecallbacksnativemodule: 4e5e96c5143cb7686c77ab22ec43fce24f902a96 + React-ImageManager: 0a18bc890796f647f5a88adcb059a112680c56ac + React-jserrorhandler: b29a26a59c4cabe2cc6019b4ede4ea0cf5c4e39c + React-jsi: 0f29e6cdfa78717ec7be9dc05edce071246e20b2 + React-jsiexecutor: 399ccb8601c282f3a3bec1c8eae72db8763cb756 + React-jsinspector: 9ca988dd5527e65812cc813019eb5ec4830a7a2d + React-jsinspectorcdp: 4ad12848453df13e9c8c9ff99c9868c047251b97 + React-jsinspectornetwork: 145f96d8e716ce9f0431f59889cec6175226dee7 + React-jsinspectortracing: 8321897a6befec69931fed6c5a5ec0943c7f59c5 + React-jsitooling: ed195de76ae8aad18826ab928a3a250bffdbe0d2 + React-jsitracing: d2a45efa51a5a572d4376ebe3b5e2b7fb0b2856b + React-logger: d46216f094be587b956ff7fd99392beb4b8f1d78 + React-Mapbuffer: c5eca5c61680bbb06cd6d8e66ce28601634a3d67 + React-microtasksnativemodule: 40524dffe89e5a9fbd66c22b42dca7140c5e3b48 + React-NativeModulesApple: 10c9d52617b0507b9ee70b996ba8421ff4cb659a + React-networking: 4e27f3ed1f3d3aa4e6cc749fdf6bcef251fba327 + React-oscompat: 138f5b17b4a8b04137ef60c6d708151d3a9a8b29 + React-perflogger: cc02a04bbd47f2e006e58388d5cfb6775422bfc1 + React-performancecdpmetrics: e9dbd04a1130674dcfe755a59c0fe022b6a66896 + React-performancetimeline: bec01084a02556ff99c0c9898f4853e67cfd7c2a + React-RCTActionSheet: f7b9fab360fd992d7212716b1d237b8b26a9e638 + React-RCTAnimation: 707a3693744de9a113434996320cdf1ee2ac04a0 + React-RCTAppDelegate: 86d6b824c9c04501920c0a457aa93f60144ec5dd + React-RCTBlob: 0c5aaeeef87b76179ed888ff57d0ff02eeef1df3 + React-RCTFabric: a0c1e5029e829646abc500aaa62617e77444b27c + React-RCTFBReactNativeSpec: ef40a2b0e9c3cbc8cfc83a907590084193cdedaa + React-RCTImage: 0b733b64c2320f749f4f645ba4676b1067ce3a26 + React-RCTLinking: b0cc0fe4d91d40c73dd9cda14edf2cd6184e1df5 + React-RCTNetwork: 458fd64a4c0ae846fd4a9c41070da094cbef4a45 + React-RCTPushNotification: 880518655926bc40fd37a64dc829c8c1f1d55bc1 + React-RCTRuntime: 8b568985c67fb7045214a4d9c9ffefdb2a88dfc4 + React-RCTSettings: cf74db00f4764ef4dc8da8e24ec9586cc764f5fe + React-RCTTest: 6a45b161d783c2347f2bbc1c3fadad80f26930ce + React-RCTText: e11c231641c4407a035e1d224d70c9bc57751587 + React-RCTUIKit: c9dfe4a94e7d4fd98d450386a84e46361068eb96 + React-RCTVibration: eaaade0351c91ee775f7e889c1c9db0e324d74ad + React-rendererconsistency: 6aa87837a0e63166d81c6877692e82cab93ad8bb + React-renderercss: eda130600143411f0eb14bc46b5a0b8212dd8fe6 + React-rendererdebug: 83abf778164a33df58270d23f984f56464d688b7 + React-RuntimeApple: 6550674a2c871e0da3bebce50135363f30a4d91c + React-RuntimeCore: 76829e5bddadb2008af9d06ab3a70576b57a6dde + React-runtimeexecutor: 5f6fe4afee78821c3f9031db9458bf863c9e716d + React-RuntimeHermes: 6588677f3be234a8041f16752a11a40d493476d7 + React-runtimescheduler: 62249ebedd0675a6c637fc3275e91ebb264e2389 + React-timing: 110f668451a29878b4588eca3ab94ca9649a6042 + React-utils: 7ef64ebbd4cbadba4efb9f38be96cfc24fd7883b + React-webperformancenativemodule: 9618cfb430e3a7adbb7c3846b5442fd3975c8293 + ReactAppDependencyProvider: 6ea495cfd681777555a593a963e505311f64f108 ReactCodegen: feb1df47e9028f6138ac07a5833a4054b860f0bf - ReactCommon: 0a12df3a3952c812cf543b28ae9d5de1709048d5 - ReactCommon-Samples: 5910e5cf5bc7cd4fedce76074c3587553c8dc0b1 + ReactCommon: 89b966d824cd1c2ae9ac9d40e510b4d0581e2948 + ReactCommon-Samples: e62bc038779aa0d90aa40a1067075fed120f4476 ScreenshotManager: 6309cb08dece76b15c719c9bbe53676edc7996b9 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 381dabc39f53677f028a17fe0411ef2903a8d280 + Yoga: 2aecf6f328f4bdc4ac76d23ad6876286dfe8edd3 PODFILE CHECKSUM: b0deddb21777343a01d28bcc1451dce20fce8b97 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.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 */} Date: Tue, 7 Jul 2026 14:16:48 -0700 Subject: [PATCH 43/56] fix(0.83, rctuikit): make SwiftUI platform aliases visible to Swift (#3012) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Follow-up fix to #3006, which merged before we had CI testing (oops). Turns out `@compatibility_alias` is not compatible with Swift, so we can't use it. Furthermore, `RCTUIKit` can't have Swift sources as SPM doesn't support mixed language modules yet. So for now, let's move the Swift-only usecase out to RCTSwiftUI, the caller. ## Test Plan Validated locally with Xcode 26.4.1: - Clean `RCTSwiftUI-macOS` Pods target build → **BUILD SUCCEEDED**. - Full `RNTester-macOS` app build → **BUILD SUCCEEDED**. - SwiftPM prebuild (`node scripts/ios-prebuild.js -s` then `-b -p macos`) now compiles `React_RCTUIKit`, `RCTSwiftUI` and `RCTSwiftUIWrapper` with **no "no such module"** error (the previous failure point). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/react-native/Package.swift | 5 ++- .../Libraries/RCTUIKit/RCTUIKitCompat.h | 4 -- .../RCTSwiftUI/RCTSwiftUIContainerView.swift | 43 +++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/packages/react-native/Package.swift b/packages/react-native/Package.swift index 84940cc4bc5e..dacb6f8beeef 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/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h index ebea895fe73f..db409fea1ab2 100644 --- a/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h +++ b/packages/react-native/ReactApple/Libraries/RCTUIKit/RCTUIKitCompat.h @@ -233,16 +233,12 @@ typedef NS_ENUM(NSInteger, UIActivityIndicatorViewStyle) { @compatibility_alias RCTPlatformViewController UIViewController; @compatibility_alias RCTUIApplication UIApplication; @compatibility_alias RCTPlatformSwitch UISwitch; -@compatibility_alias RCTPlatformHostingController UIHostingController; -@compatibility_alias RCTPlatformViewRepresentable UIViewRepresentable; #else @compatibility_alias RCTPlatformApplication NSApplication; @compatibility_alias RCTPlatformWindow NSWindow; @compatibility_alias RCTPlatformViewController NSViewController; @compatibility_alias RCTUIApplication NSApplication; @compatibility_alias RCTPlatformSwitch NSSwitch; -@compatibility_alias RCTPlatformHostingController NSHostingController; -@compatibility_alias RCTPlatformViewRepresentable NSViewRepresentable; #endif NS_ASSUME_NONNULL_END diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift index e02b54f3af38..a480a9c3966d 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift @@ -8,6 +8,49 @@ import SwiftUI import React_RCTUIKit +// [macOS +// These SwiftUI platform types would ideally live with the other RCTPlatform* aliases in +// React-RCTUIKit, but that module is Objective-C and SwiftPM can't mix Obj-C and Swift in one +// target, so they live here in the consuming module for now. +#if os(macOS) +typealias RCTPlatformHostingController = NSHostingController +#else +typealias RCTPlatformHostingController = UIHostingController +#endif + +#if os(macOS) +protocol RCTPlatformViewRepresentable: NSViewRepresentable where NSViewType == RCTPlatformView { + func makeRCTPlatformView(context: Context) -> RCTPlatformView + func updateRCTPlatformView(_ view: RCTPlatformView, context: Context) +} + +extension RCTPlatformViewRepresentable { + func makeNSView(context: Context) -> RCTPlatformView { + makeRCTPlatformView(context: context) + } + + func updateNSView(_ nsView: RCTPlatformView, context: Context) { + updateRCTPlatformView(nsView, context: context) + } +} +#else +protocol RCTPlatformViewRepresentable: UIViewRepresentable where UIViewType == RCTPlatformView { + func makeRCTPlatformView(context: Context) -> RCTPlatformView + func updateRCTPlatformView(_ view: RCTPlatformView, context: Context) +} + +extension RCTPlatformViewRepresentable { + func makeUIView(context: Context) -> RCTPlatformView { + makeRCTPlatformView(context: context) + } + + func updateUIView(_ uiView: RCTPlatformView, context: Context) { + updateRCTPlatformView(uiView, context: context) + } +} +#endif +// macOS] + @MainActor @objc public class RCTSwiftUIContainerView: NSObject { private var containerViewModel = ContainerViewModel() private var hostingController: RCTPlatformHostingController? // [macOS] From 9d5ccba310a99f77bda21054c426fb5301d55a6a Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Fri, 10 Jul 2026 07:55:57 -0700 Subject: [PATCH 44/56] fix(0.83, hermes): resolve hermes from version files instead of merge-base (#3011) --- .github/scripts/resolve-hermes.mts | 193 ++++++++++-------- .../workflows/microsoft-resolve-hermes.yml | 9 +- .../scripts/ios-prebuild/hermes.js | 156 +------------- .../scripts/ios-prebuild/microsoft-hermes.js | 101 +-------- .../sdks/hermes-engine/hermes-utils.rb | 64 +----- 5 files changed, 123 insertions(+), 400 deletions(-) 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-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/packages/react-native/scripts/ios-prebuild/hermes.js b/packages/react-native/scripts/ios-prebuild/hermes.js index dcc3e47c3791..72c0c4c2073a 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,19 +124,16 @@ type HermesEngineSourceType = | 'local_prebuilt_tarball' | 'download_prebuild_tarball' | 'download_prebuilt_nightly_tarball' - | 'build_from_hermes_commit' // [macOS] */ const HermesEngineSourceTypes /*:{ +DOWNLOAD_PREBUILD_TARBALL: "download_prebuild_tarball", +DOWNLOAD_PREBUILT_NIGHTLY_TARBALL: "download_prebuilt_nightly_tarball", - +LOCAL_PREBUILT_TARBALL: "local_prebuilt_tarball", - +BUILD_FROM_HERMES_COMMIT: "build_from_hermes_commit" // [macOS] + +LOCAL_PREBUILT_TARBALL: "local_prebuilt_tarball" } */ = { LOCAL_PREBUILT_TARBALL: 'local_prebuilt_tarball', DOWNLOAD_PREBUILD_TARBALL: 'download_prebuild_tarball', DOWNLOAD_PREBUILT_NIGHTLY_TARBALL: 'download_prebuilt_nightly_tarball', - BUILD_FROM_HERMES_COMMIT: 'build_from_hermes_commit', // [macOS] }; /** @@ -265,7 +232,6 @@ async function hermesArtifactExists( async function hermesSourceType( version /*: string */, buildType /*: BuildFlavor */, - allowBuildFromSource /*: boolean */ = false, // [macOS] ) /*: Promise */ { if (hermesEngineTarballEnvvarDefined()) { hermesLog('Using local prebuild tarball'); @@ -285,15 +251,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.', ); @@ -313,8 +270,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}`, @@ -421,113 +376,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'); - - 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}"`, {stdio: 'inherit'}); - execSync(`git -C "${hermesDir}" remote add origin ${HERMES_GITHUB_URL}`, { - stdio: 'inherit', - }); - execSync( - `git -C "${hermesDir}" fetch --no-tags --depth 1 origin +${commit}:refs/remotes/origin/main`, - {stdio: 'inherit', timeout: 300000}, - ); - execSync(`git -C "${hermesDir}" checkout main`, {stdio: 'inherit'}); - - 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}"`, { - stdio: 'inherit', - 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`, { - stdio: 'inherit', - }); - - 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/sdks/hermes-engine/hermes-utils.rb b/packages/react-native/sdks/hermes-engine/hermes-utils.rb index 2118dddea813..0686a7532c5d 100644 --- a/packages/react-native/sdks/hermes-engine/hermes-utils.rb +++ b/packages/react-native/sdks/hermes-engine/hermes-utils.rb @@ -5,9 +5,6 @@ require 'net/http' require 'rexml/document' -require 'open3' # [macOS] -require 'json' # [macOS] -require 'tmpdir' # [macOS] HERMES_GITHUB_URL = "https://github.com/facebook/hermes.git" ENV_BUILD_FROM_SOURCE = "RCT_BUILD_HERMES_FROM_SOURCE" @@ -187,21 +184,9 @@ def podspec_source_build_from_github_tag(react_native_path) end def podspec_source_build_from_github_main() - # branch = hermes_v1_enabled() ? "250829098.0.0-stable" : "main" - # hermes_log("Using the latest commit from #{branch}.") - # return {:git => HERMES_GITHUB_URL, :commit => `git ls-remote #{HERMES_GITHUB_URL} #{branch} | cut -f 1`.strip} - - # [macOS - # The logic for this is a bit different on macOS. - # 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. - tuple = hermes_commit_at_merge_base() - commit = tuple[:commit] - timestamp = tuple[:timestamp] - hermes_log("Using Hermes commit from the merge base with facebook/react-native: #{commit} and timestamp: #{timestamp}") - return {:git => HERMES_GITHUB_URL, :commit => commit} - # macOS] + branch = hermes_v1_enabled() ? "250829098.0.0-stable" : "main" + hermes_log("Using the latest commit from #{branch}.") + return {:git => HERMES_GITHUB_URL, :commit => `git ls-remote #{HERMES_GITHUB_URL} #{branch} | cut -f 1`.strip} end def podspec_source_download_prebuild_release_tarball(react_native_path, version) @@ -224,49 +209,6 @@ def artifacts_dir() return File.join(Pod::Config.instance.project_pods_root, "hermes-engine-artifacts") end -# [macOS -def hermes_commit_at_merge_base() - # We don't need ls-remote because react-native-macos is a fork of facebook/react-native - fetch_result = `git fetch -q https://github.com/facebook/react-native.git` - if $?.exitstatus != 0 - abort <<-EOS - [Hermes] Failed to fetch facebook/react-native into the local repository. - EOS - end - - merge_base = `git merge-base FETCH_HEAD HEAD`.strip - if merge_base.empty? - abort <<-EOS - [Hermes] Unable to find the merge base between our HEAD and upstream's HEAD. - EOS - end - - timestamp = `git show -s --format=%ci #{merge_base}`.strip - if timestamp.empty? - abort <<-EOS - [Hermes] Unable to extract the timestamp for the merge base (#{merge_base}). - EOS - end - - commit = nil - Dir.mktmpdir do |tmpdir| - hermes_git_dir = File.join(tmpdir, "hermes.git") - # Explicitly use Hermes 'main' branch since the default branch changed to 'static_h' (Hermes V1) - `git clone -q --bare --filter=blob:none --single-branch --branch main #{HERMES_GITHUB_URL} "#{hermes_git_dir}"` - - # If all goes well, this will be the commit hash of Hermes at the time of the merge base on branch 'main' - commit = `git --git-dir="#{hermes_git_dir}" rev-list -1 --before="#{timestamp}" refs/heads/main`.strip - if commit.empty? - abort <<-EOS - [Hermes] Unable to find the Hermes commit hash at time #{timestamp} on branch 'main'. - EOS - end - end - - return { :commit => commit, :timestamp => timestamp} -end -# macOS] - def hermestag_file(react_native_path) if hermes_v1_enabled() return File.join(react_native_path, "sdks", ".hermesv1version") From 9fbf44079eef89be5d73459b87b048dad7d8bd25 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 09:14:06 -0700 Subject: [PATCH 45/56] fix(deps): declare invariant devDependency for pnpm nodeLinker The `scripts/releases/__tests__/snapshot-utils.js` helper does `require('invariant')`, but `invariant` was never declared in the root workspace manifest. Under the old `nodeLinker: node-modules` (hoisted) layout it resolved transitively, so the gap was invisible. After the 0.83 merge brought in `nodeLinker: pnpm` (#3010), the strict `.store/` layout no longer hoists it, so Jest fails with "Cannot find module 'invariant'" and takes down the dotslash release-asset test suites (12 tests across 2 suites). Add `invariant@^2.2.4` (the version already used elsewhere in the tree) to the root devDependencies and refresh the lockfile. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/package.json b/package.json index 8505ba04647d..482260b7d06b 100644 --- a/package.json +++ b/package.json @@ -115,6 +115,7 @@ "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", diff --git a/yarn.lock b/yarn.lock index f445c652c8cc..b38ebe98458c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4239,6 +4239,7 @@ __metadata: 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" From 619b1c8d88d1ab29534e088884e78b1cfd923389 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 09:30:00 -0700 Subject: [PATCH 46/56] fix(codegen): skip unresolvable deps under pnpm nodeLinker `findExternalLibraries` resolves each dependency's `package.json` to look for `codegenConfig`. Facebook 0.83 added an `ERR_PACKAGE_PATH_NOT_EXPORTED` fallback that searches `require.main.paths` for packages whose `exports` block the `./package.json` subpath (e.g. `commander`, `@react-native/new-app-screen`). Under Yarn's pnpm nodeLinker (#3010) those packages live under `.store/` and aren't on `require.main.paths`, so the fallback leaves `configFilePath` empty and the next `fs.readFileSync('')` throws `ENOENT: open ''`. That aborts `generate-codegen-artifacts.js`, which fails Podfile evaluation and takes down every RNTester / Prebuild macOS Core build job in CI. Guard the empty path and skip the dependency, matching the pre-0.83 behavior for otherwise-unresolvable deps (both triggering packages have no `codegenConfig`, so nothing is lost). Verified locally: `pod install` for RNTester now completes and codegen artifacts are generated. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../scripts/codegen/generate-artifacts-executor/utils.js | 8 ++++++++ 1 file changed, 8 insertions(+) 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 ef4c3d7cbd57..b86a8953884a 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js @@ -269,6 +269,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); From 8e3e5c8d1f7010207c7d93185a179e22c20c0ed8 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 10:02:02 -0700 Subject: [PATCH 47/56] fix(macos): import RCTUIKit module in RCTSwiftUI for static builds `RCTSwiftUIContainerView.swift` did `import React_RCTUIKit`, matching the module name the podspec used before the 0.83 merge (`module_name "React_RCTUIKit"`, `header_dir "React"`). After merging main, RCTUIKit was relocated to `ReactApple/Libraries/RCTUIKit` (#2943) and its module was renamed to `RCTUIKit` (podspec `module_name "RCTUIKit"`; Package.swift `reactRCTUIKit = "RCTUIKit"`), with `` now served via React-Core forwarding headers. Dynamic-framework builds still resolved the old name via the framework, but static-library builds could not find module `React_RCTUIKit`, breaking every strict `Build RNTester / *, static` job: RCTSwiftUIContainerView.swift:9:8: error: Unable to find module dependency: 'React_RCTUIKit' This lone Swift import was the only remaining reference to the pre-merge module name. Align it with the merged tree's `RCTUIKit` module (used by both CocoaPods and SwiftPM). Verified locally: `RCTSwiftUI-macOS` builds (BUILD SUCCEEDED) against the static-library Pods project. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift index a480a9c3966d..6205d6c56457 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift @@ -6,7 +6,7 @@ */ import SwiftUI -import React_RCTUIKit +import RCTUIKit // [macOS // These SwiftUI platform types would ideally live with the other RCTPlatform* aliases in From e7dbbb98f417f97b5d1314fca5d367d3e3f17331 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 10:07:02 -0700 Subject: [PATCH 48/56] fix(fantom): declare metro dependencies for pnpm nodeLinker `@react-native/fantom` imports `metro` and `metro-babel-transformer` (e.g. `import type {RunServerResult} from 'metro'`) but never declared them. Under the old hoisted node-modules layout they resolved to the workspace's metro 0.83.x; under Yarn's pnpm nodeLinker (#3010) the package instead resolves `metro` to 0.82.5 (pulled in transitively by the unused `metro-memory-fs@^0.82.5`), which predates the `RunServerResult` export, and cannot resolve `metro-babel-transformer` at all. Flow then fails the JavaScript Tests job: globalTeardown.js: Cannot import `RunServerResult` ... no `RunServerResult` export in `metro` metro-babel-transformer.flow.js: Cannot resolve module `metro-babel-transformer` Declare both at `^0.83.3` (matching the rest of the monorepo) so pnpm links the correct versions. Verified locally: `yarn flow check` reports 0 errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- private/react-native-fantom/package.json | 4 ++- yarn.lock | 40 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) 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 b38ebe98458c..40effe4d93aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4562,6 +4562,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 @@ -9434,6 +9436,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.35.0": + version: 0.35.0 + resolution: "hermes-estree@npm:0.35.0" + checksum: 10c0/a88c9dc63b8b3679b1aeb43e72e977597096c1bd7d59978c952f1d6df6d1a517c4a817c70b1b701854996b485adfa66c2fc7f80871029a7f0c04306f6717b59a + languageName: node + linkType: hard + "hermes-parser@npm:0.29.1": version: 0.29.1 resolution: "hermes-parser@npm:0.29.1" @@ -9461,6 +9470,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.35.0": + version: 0.35.0 + resolution: "hermes-parser@npm:0.35.0" + dependencies: + hermes-estree: "npm:0.35.0" + checksum: 10c0/49d98093a2094758db5b536627c6cf5146b140f66e63143acf471c62f1d3fd8bd6ae10a33f2372f72e3653deda5d4615c6dae89d01248849440916209901fc4a + languageName: node + linkType: hard + "hermes-parser@npm:^0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -11890,6 +11908,19 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:^0.83.3": + version: 0.83.7 + resolution: "metro-babel-transformer@npm:0.83.7" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + hermes-parser: "npm:0.35.0" + metro-cache-key: "npm:0.83.7" + nullthrows: "npm:^1.1.1" + checksum: 10c0/c50c2fe9fa3d3fbe382d8a482ebcc77d7dba0ef4673cee4904a55b9ea28dea4b86d3b80e9b9ac0cd2b094b9ecd0368c953bba0f1df1cfd36c3a27c666352fd86 + languageName: node + linkType: hard + "metro-cache-key@npm:0.82.5": version: 0.82.5 resolution: "metro-cache-key@npm:0.82.5" @@ -11908,6 +11939,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.83.7": + version: 0.83.7 + resolution: "metro-cache-key@npm:0.83.7" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10c0/a2f20b86b173cd2be710552a49e6389a2c9ef994ac35873616bd4e5c34588beb8c93279bcf525295ca73b6d206ab0d9942f35cbd4a76e642d359bdab48924d7a + languageName: node + linkType: hard + "metro-cache@npm:0.82.5": version: 0.82.5 resolution: "metro-cache@npm:0.82.5" From 4dea6de60ff9be9806d3ccfdce1b7b335b5d66d2 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 10:32:11 -0700 Subject: [PATCH 49/56] fix(macos): import in RCTSwiftUIWrapper for static builds `RCTSwiftUIContainerViewWrapper.h` imported ``, which resolved directly when React-RCTUIKit used `header_dir "React"` before the 0.83 merge. After merging main's RCTUIKit relocation (#2943), React-RCTUIKit uses `header_dir "RCTUIKit"` and `` is only a React-Core forwarding header. RCTSwiftUIWrapper depends on React-RCTUIKit (not React-Core), so the forwarding header is out of scope and static-library builds failed: RCTSwiftUIContainerViewWrapper.h:9:9: 'React/RCTUIKit.h' file not found (in target 'RCTSwiftUIWrapper-macOS') Import the header directly from the React-RCTUIKit dependency (``). Verified locally: `RCTSwiftUIWrapper-macOS` builds (BUILD SUCCEEDED) against the static-library Pods project. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h index 1f63a252fd04..0b137b0094bf 100644 --- a/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h +++ b/packages/react-native/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h @@ -6,7 +6,7 @@ */ #import -#import // [macOS] +#import // [macOS] NS_ASSUME_NONNULL_BEGIN From 257494d8c9f27b24b4a22f28c2625d2b8921fb78 Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 10:32:12 -0700 Subject: [PATCH 50/56] fix(lint): restore eslint-plugin-react-hooks canary resolution The root package.json pins `eslint-plugin-react-hooks` to `6.1.0-canary-12bc60f5-20250613` via a `resolutions` entry (with a matching `_justification`) so linting understands React 19's `component` syntax and `use()` hook. That resolution was dropped while reconciling package.json during the 0.83 merge, so the tree installed 5.2.0, which flags valid code: View.js: React Hook "use" cannot be called at the top level VirtualView.js: React Hook "useState" is called in function "createVirtualView" that is neither a React function component nor a custom React Hook function Restore the resolution and its justification (matching main). Verified locally: `yarn lint` passes with 0 errors and `yarn constraints` is clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package.json | 2 + yarn.lock | 122 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 99 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 482260b7d06b..2ef63fa2eb98 100644 --- a/package.json +++ b/package.json @@ -156,6 +156,7 @@ "compression": "1.8.1", "debug": ">=3.1.0", "es5-ext": "0.10.53", + "eslint-plugin-react-hooks": "6.1.0-canary-12bc60f5-20250613", "micromatch": "^4.0.0", "minimatch@npm:>=5.0.0 <6.0.0": "npm:5.1.9", "minimatch@npm:9.0.3": "npm:9.0.9", @@ -171,6 +172,7 @@ "async": "Versions of async prior to 3.2.2 are vulnerable to prototype pollution", "debug": "ReDoS vulnerability in older versions, plus the dependents that pull in debug@<1.0.0 haven't been updated in years", "es5-ext": "Packages after 0.10.54 and at the moment up until 0.10.59 contain a protest message. A policy prevents us from using packages with protestware, therefore downgrading to the latest release without the message.", + "eslint-plugin-react-hooks": "Aligns linting with React 19 behaviour while upstream stabilizes the release", "micromatch": "Version 3.x.x depends on decode-uri-component 0.2.0, which has a DoS vulnerability", "minimatch@npm:>=5.0.0 <6.0.0": "Pins the 5.x major line to the latest patched release for recent ReDoS advisories", "minimatch@npm:9.0.3": "Overrides exact 9.0.3 pins that Yarn does not match with a broader range descriptor", diff --git a/yarn.lock b/yarn.lock index 40effe4d93aa..1ac7d10f706c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,6 +250,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.29.7" + dependencies: + "@babel/types": "npm:^7.29.7" + checksum: 10c0/c56536b52d17632d89d49db2063ed6102f0e3bbadf6a0ccb74e6599d6a77173b644c7fe8c3ef17c7a162709d55b75ee5145ef6db917d16ba7f375fbffcf2e942 + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" @@ -303,6 +312,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.29.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.29.7" + "@babel/helper-member-expression-to-functions": "npm:^7.29.7" + "@babel/helper-optimise-call-expression": "npm:^7.29.7" + "@babel/helper-replace-supers": "npm:^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/75f34905b5e708b473f1e9b33e07b2fcc8f4c60676df8bc74541bb91c77f387c32a948dd04d5071e469ba454d72d0a872e3ace40fbb1d1e7aaa8569efcf09ed4 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" @@ -355,6 +381,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.29.7" + dependencies: + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/eef7940ce0797208854a5af1049a98fee9abbffb5c619640c69ff5a555f8e3552295bb18756490b02bc6af7df8c1babcb83f12203aac2deb9dfecfc78846e12d + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-module-imports@npm:7.27.1" @@ -423,6 +459,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.29.7" + dependencies: + "@babel/types": "npm:^7.29.7" + checksum: 10c0/fd0244b9bfbb487db02d59aa2703c6991d654ea5f3f39d912682842bdca2e87b5ae8643b0ce8069bf5fbee39d1aa9db7abefeb5e6ba1aa650dca12777cf5b7e2 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-plugin-utils@npm:7.25.9" @@ -470,6 +515,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-replace-supers@npm:7.29.7" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.29.7" + "@babel/helper-optimise-call-expression": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/1c7ae37797f226e965ab85f6affa53d25a10c169c604a4daeb36f9df09e673471e6522f631c13761cf9fbafeca2ea14c241dea8d723a51039d561beb01d86ac4 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-simple-access@npm:7.25.9" @@ -490,6 +548,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.29.7" + dependencies: + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/8c59493621487fc491f27adfc200af82a6aca3b9a5511e4e6050f8716593b4b243472cb56c8d2016e828b7ae12d605a819205aa8600ca08ee291dcd58d65c832 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-string-parser@npm:7.25.9" @@ -1465,6 +1533,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.24.4": + version: 7.29.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.29.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d0dc12fa478d05e346dfb02fad2ed99b308d9a7324bada71530a62dc1ccbf07b4c2581ac677b7196b3994f191ef1922199e2c8f33957b726e2019ce07b4ced0f + languageName: node + linkType: hard + "@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" @@ -1972,7 +2052,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.2": +"@babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.29.7": version: 7.29.7 resolution: "@babel/traverse@npm:7.29.7" dependencies: @@ -8104,27 +8184,19 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^5.2.0": - version: 5.2.0 - resolution: "eslint-plugin-react-hooks@npm:5.2.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - checksum: 10c0/1c8d50fa5984c6dea32470651807d2922cc3934cf3425e78f84a24c2dfd972e7f019bee84aefb27e0cf2c13fea0ac1d4473267727408feeb1c56333ca1489385 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:^7.0.1": - version: 7.0.1 - resolution: "eslint-plugin-react-hooks@npm:7.0.1" +"eslint-plugin-react-hooks@npm:6.1.0-canary-12bc60f5-20250613": + version: 6.1.0-canary-12bc60f5-20250613 + resolution: "eslint-plugin-react-hooks@npm:6.1.0-canary-12bc60f5-20250613" dependencies: "@babel/core": "npm:^7.24.4" "@babel/parser": "npm:^7.24.4" + "@babel/plugin-transform-private-methods": "npm:^7.24.4" hermes-parser: "npm:^0.25.1" - zod: "npm:^3.25.0 || ^4.0.0" - zod-validation-error: "npm:^3.5.0 || ^4.0.0" + zod: "npm:^3.22.4" + zod-validation-error: "npm:^3.0.3" peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - checksum: 10c0/1e711d1a9d1fa9cfc51fa1572500656577201199c70c795c6a27adfc1df39e5c598f69aab6aa91117753d23cc1f11388579a2bed14921cf9a4efe60ae8618496 + checksum: 10c0/7c1770e4a1378cc7af1d85d9b3b0c81715d8b12c1288aed591ec74c51620a69fff55f9edcd2b9ea564711f73f8cb1a0259d8bf7178296cc03963538987bb5be5 languageName: node linkType: hard @@ -16655,19 +16727,19 @@ __metadata: languageName: node linkType: hard -"zod-validation-error@npm:^3.5.0 || ^4.0.0": - version: 4.0.2 - resolution: "zod-validation-error@npm:4.0.2" +"zod-validation-error@npm:^3.0.3": + version: 3.5.4 + resolution: "zod-validation-error@npm:3.5.4" peerDependencies: - zod: ^3.25.0 || ^4.0.0 - checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b + zod: ^3.24.4 + checksum: 10c0/fccfe09fc27d4d6ba59beab8eeee06a27befc0f491ec81a2951d7b82e7a08eca07bc74ef4fff82586fc7710a3ef777ec607c685defa06c70cd11849af0b9882c languageName: node linkType: hard -"zod@npm:^3.25.0 || ^4.0.0": - version: 4.3.6 - resolution: "zod@npm:4.3.6" - checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 +"zod@npm:^3.22.4": + version: 3.25.76 + resolution: "zod@npm:3.25.76" + checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c languageName: node linkType: hard From 1124b819273d2a947ac3ec13c86ca9fa71610be2 Mon Sep 17 00:00:00 2001 From: Joanna Qu <55368679+joannaquu@users.noreply.github.com> Date: Mon, 13 Jul 2026 11:47:48 -0700 Subject: [PATCH 51/56] chore: fix visionOS compiler errors (#3018) ## Summary: Fixing visionOS build - `RCTUITextView` and `RCTUITextField.mm`'s `setDisableKeyboardShortcuts` has some code behind an iOS ifdef. This causes the complier to complain that we never set the ivar. Move the ivar. - `interfaceOrientationDidChange` is behind an iOS ifdef. The usage of it should be too ## Test Plan: Local build --- .../Libraries/Text/TextInput/Multiline/RCTUITextView.mm | 2 +- .../Libraries/Text/TextInput/Singleline/RCTUITextField.mm | 2 +- packages/react-native/React/CoreModules/RCTDeviceInfo.mm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm index ded82954d237..8e7169c30d33 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -306,6 +306,7 @@ - (void)textDidChange - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts { + _disableKeyboardShortcuts = disableKeyboardShortcuts; #if TARGET_OS_IOS // Initialize the initial values only once if (_initialValueLeadingBarButtonGroups == nil) { @@ -322,7 +323,6 @@ - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts self.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups; self.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups; } - _disableKeyboardShortcuts = disableKeyboardShortcuts; #endif } diff --git a/packages/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/packages/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm index 93bae1fff225..0f988c19d5c2 100644 --- a/packages/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +++ b/packages/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm @@ -423,6 +423,7 @@ - (void)setSecureTextEntry:(BOOL)secureTextEntry - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts { + _disableKeyboardShortcuts = disableKeyboardShortcuts; #if TARGET_OS_IOS // Initialize the initial values only once if (_initialValueLeadingBarButtonGroups == nil) { @@ -439,7 +440,6 @@ - (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts self.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups; self.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups; } - _disableKeyboardShortcuts = disableKeyboardShortcuts; #endif } diff --git a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm index 897987b34edb..c86830ea0e30 100644 --- a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm +++ b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm @@ -84,7 +84,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 From ef2e38e99603c31e5ad1fcdd153e43a1442515df Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Mon, 13 Jul 2026 13:12:43 -0700 Subject: [PATCH 52/56] ci: build RNTester for New Architecture only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit React Native 0.83 removed the legacy architecture as a supported runtime path — `RCTBridge` now throws on legacy-arch init and there is no opt-out. The `oldarch` matrix jobs only ever compiled RNTester (CI never launches the app), so they provided compile-only coverage of a runtime path that no longer works. Drop the architecture axis entirely (halving the matrix from 12 to 6 jobs), hardcode `RCT_NEW_ARCH_ENABLED=1`, and simplify job names to `, `. New Architecture coverage is unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/microsoft-build-rntester.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/microsoft-build-rntester.yml b/.github/workflows/microsoft-build-rntester.yml index 9dc5e92f6e54..e78f4669dcc2 100644 --- a/.github/workflows/microsoft-build-rntester.yml +++ b/.github/workflows/microsoft-build-rntester.yml @@ -5,14 +5,15 @@ on: jobs: build-rntester: - name: "${{ matrix.platform }}, ${{ matrix.arch }}, ${{ matrix.linkage }}" + 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 @@ -28,11 +29,6 @@ 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: '' @@ -63,7 +59,7 @@ jobs: # 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 From b8a48e53c63703fd47deec46ef46102e060ef9a2 Mon Sep 17 00:00:00 2001 From: christopherwxyz Date: Thu, 16 Jul 2026 12:23:06 -0400 Subject: [PATCH 53/56] fix(macos): remove unbalanced nested #if in RCTViewComponentView.mm The merge introduced a redundant nested `#if !TARGET_OS_OSX` guard before -canBecomeFirstResponder without a matching #endif, leaving the outer guard (opened earlier in the file) unterminated through EOF. This broke compilation on both iOS and macOS. The nested guard was unnecessary since the whole block is already inside the outer guard. --- .../Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm | 1 - 1 file changed, 1 deletion(-) 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 fd09ed747bc5..55a16bb9c45e 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -2523,7 +2523,6 @@ - (void)transferVisualPropertiesFromView:(UIView *)sourceView toView:(UIView *)d } } -#if !TARGET_OS_OSX // [macOS] macOS provides its own focus/blur implementation in the TARGET_OS_OSX block above - (BOOL)canBecomeFirstResponder { return YES; From 852cf7bcab77210486f1f34215176f1ddff86be6 Mon Sep 17 00:00:00 2001 From: christopherwxyz Date: Thu, 16 Jul 2026 12:52:57 -0400 Subject: [PATCH 54/56] fix(macos): exclude node_modules from codegen jsSrcsDir scan to fix RNTester-macOS linker duplicates RNTester's codegenConfig scans jsSrcsDir "." (its own package root) with type "all". Because rn-tester/package.json also carries a devDependency on "react-native-macos" (added in #2529 to expose CLI commands), yarn creates a node_modules/react-native-macos symlink back into packages/react-native. combine-js-to-schema's directory-expansion glob had no node_modules exclusion, so scanning "." recursively walked that symlink and re-ingested every core Native*.js/NativeComponent spec file, in addition to the specs already generated separately for React-RCTFBReactNativeSpec (core specs have their own dedicated discovery/output path). The result: AppSpecs's generated ReactCodegen pod defined the exact same ObjC classes and C++ symbols (e.g. NativeLogBoxSpecBase, ActivityIndicatorViewProps) as React-RCTFBReactNativeSpec, and the macOS linker failed with 259 duplicate symbol errors when both static libraries were linked into RNTester-macOS. Excluding **/node_modules/** from the recursive glob keeps each library's own jsSrcsDir scan scoped to its own sources, matching how per-library codegen discovery/output routing already works for every other library. Also regenerated packages/rn-tester/Podfile.lock via a clean `bundle exec pod install` after the fix, which was needed to build from source in this sandbox (no access to fetch the usual prebuilt React-Core/RN dependency binaries). Verified: `xcodebuild -workspace RNTesterPods.xcworkspace -scheme RNTester-macOS -configuration Debug -destination "platform=macOS" build` now succeeds (0 errors) and produces RNTester-macOS.app. --- .../src/cli/combine/combine-js-to-schema.js | 10 + packages/rn-tester/Podfile.lock | 2054 +++++++++++------ 2 files changed, 1396 insertions(+), 668 deletions(-) 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/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 From 358a168c85d6dfc8915405cf1b4f59a766544cb4 Mon Sep 17 00:00:00 2001 From: christopherwxyz Date: Thu, 16 Jul 2026 13:42:18 -0400 Subject: [PATCH 55/56] fix(macos): remove Text.js's dependency on two feature flags retired upstream Text.js called ReactNativeFeatureFlags.reduceDefaultPropsInText() and .shouldUseLinkRoleForPressableText() unconditionally at module-eval time, but neither getter exists in this fork's generated flag registry, crashing any app that renders (papered over downstream by a patch-package patch in uno-infra's desktop app). Root cause: these are not flags this fork's manual port dropped from the config - ReactNativeFeatureFlags.config.js already correctly reflects upstream's current, post-retirement state (verified against upstream-rn commits 68e5b4ee9f9 and 680bd5a9eff, and upstream-rn/main, none of which reference these flags any more; both graduated to permanent `true` behavior). The bug is that this fork's Text.js is a stale pre-retirement copy that still branches on them - most likely a merge conflict that was resolved by keeping the fork's older Text.js content instead of upstream's newer file, while the (non-conflicting) config.js was reconciled correctly. Fix Text.js at the source to match upstream's graduated behavior instead of resurrecting retired flags: - Drop the ReactNativeFeatureFlags import. - Collapse the reduceDefaultPropsInText()-gated TextImplNoDefaultProps / TextImplLegacy branches into the single TextImplNoDefaultProps implementation (upstream's permanent behavior since #55292). - Compute shouldUseLinkRole unconditionally, without the retired shouldUseLinkRoleForPressableText() guard (upstream's permanent behavior since #55121). - Preserve this fork's macOS-only borderRadius/backgroundColor spill workaround, now present once instead of duplicated across both branches. No feature-flag config or codegen changes were needed/made since the registry already omitted these flags correctly. --- packages/react-native/Libraries/Text/Text.js | 884 ++++++------------- 1 file changed, 261 insertions(+), 623 deletions(-) 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'; From af07db49ce02885734b03c71aaf0b7df9cb6ffba Mon Sep 17 00:00:00 2001 From: christopherwxyz Date: Thu, 16 Jul 2026 13:44:14 -0400 Subject: [PATCH 56/56] fix(codegen): micromatch dot-directory glob mismatch breaks build.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit globSync passed micromatch.isMatch() absolute file paths, but micromatch's `**` does not traverse hidden (dot-prefixed) path segments by default. Any checkout living under a dotdir (e.g. a git worktree at .claude/worktrees/...) made every IGNORE_PATTERN and JS_FILES_PATTERN match silently fail, so buildFile() fell through to the "not a JS file" branch and copied every .js file into lib/ verbatim instead of Babel-transpiling it — producing a broken, un-transpiled package build with no error. Match against the path relative to PACKAGE_DIR instead, which never contains dot-segments regardless of where the repo is checked out. Verified: `rm -rf lib && node scripts/build.js` now produces Babel-transpiled output in lib/ (Flow syntax stripped, generics removed) with a stripped-source .js.flow sidecar per typed file, and correctly excludes __tests__/__test_fixtures__. Re-ran generate-codegen-artifacts.js against packages/rn-tester and confirmed AppSpecs-generated.mm still has exactly one @implementation block (no regression of the earlier RNTester-macOS linker fix). --- packages/react-native-codegen/scripts/build.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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(