diff --git a/.github/workflows/build-dawn.yml b/.github/workflows/build-dawn.yml
index 7b07bdccae..628019ea8f 100644
--- a/.github/workflows/build-dawn.yml
+++ b/.github/workflows/build-dawn.yml
@@ -236,9 +236,9 @@ jobs:
- name: Create XCFramework
run: |
xcodebuild -create-xcframework \
- -library libs/apple/iphonesimulator/libwebgpu_dawn.a \
- -library artifacts/build-ios-arm64/libwebgpu_dawn.a \
- -library artifacts/build-macos-universal/libwebgpu_dawn.a \
+ -library libs/apple/iphonesimulator/libwebgpu_dawn.a -headers dawn-headers/include \
+ -library artifacts/build-ios-arm64/libwebgpu_dawn.a -headers dawn-headers/include \
+ -library artifacts/build-macos-universal/libwebgpu_dawn.a -headers dawn-headers/include \
-output dawn-apple.xcframework
- name: Package Android libraries
@@ -256,8 +256,13 @@ jobs:
run: |
TAG="${{ needs.prepare-release.outputs.tag_name }}"
tar -czf dawn-android-${TAG}.tar.gz dawn-android
- tar -czf dawn-apple-${TAG}.xcframework.tar.gz dawn-apple.xcframework
tar -czf dawn-headers-${TAG}.tar.gz dawn-headers
+ # Package.swift binaryTarget(url:checksum:) requires a zip archive, not a
+ # tarball, and `ditto` (unlike `zip`) preserves the xcframework's symlinks
+ # and resource forks losslessly.
+ ditto -c -k --sequesterRsrc --keepParent dawn-apple.xcframework dawn-apple-${TAG}.xcframework.zip
+ swift package compute-checksum dawn-apple-${TAG}.xcframework.zip > dawn-apple-${TAG}.xcframework.zip.checksum.txt
+ cat dawn-apple-${TAG}.xcframework.zip.checksum.txt
- name: Upload to GitHub release
uses: softprops/action-gh-release@v2
@@ -267,6 +272,7 @@ jobs:
tag_name: ${{ needs.prepare-release.outputs.tag_name }}
files: |
dawn-android-${{ needs.prepare-release.outputs.tag_name }}.tar.gz
- dawn-apple-${{ needs.prepare-release.outputs.tag_name }}.xcframework.tar.gz
+ dawn-apple-${{ needs.prepare-release.outputs.tag_name }}.xcframework.zip
+ dawn-apple-${{ needs.prepare-release.outputs.tag_name }}.xcframework.zip.checksum.txt
dawn-headers-${{ needs.prepare-release.outputs.tag_name }}.tar.gz
prerelease: true
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b7153d59da..aa0373f54f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -107,6 +107,42 @@ jobs:
-disableAutomaticPackageResolution \
build | xcpretty
+ - name: Install CocoaPods (spm-example)
+ working-directory: apps/spm-example/ios
+ env:
+ RNWGPU_USE_SPM: "1"
+ run: pod install
+
+ # Don't reuse "build" as -derivedDataPath for this app: React Native
+ # Codegen writes generated headers to apps/spm-example/ios/build/generated/ios,
+ # and CocoaPods symlinks them from Pods/Headers/Public/ReactCodegen/;
+ # deriving into the same "build" directory (as the example app step above
+ # does) deletes those symlink targets on a clean checkout.
+ #
+ # PODS_ROOT is deliberately not exported: xcodebuild never sets it, and
+ # Package.swift has to find the Pods directory from its own location.
+ # This step is what verifies that fallback.
+ #
+ # No -disableAutomaticPackageResolution here (unlike the example app
+ # build below): react-native-webgpu is a local Swift package added
+ # directly to the Xcode project (XCLocalSwiftPackageReference), not
+ # CocoaPods-vendored, and its WebGPUDawn binaryTarget resolves to a
+ # remote release zip + checksum with nothing cached ahead of time — this
+ # build's whole point is exercising that download-and-verify step.
+ - name: Build spm-example for iOS
+ working-directory: apps/spm-example/ios
+ run: |
+ set -o pipefail && xcodebuild \
+ -workspace SpmExample.xcworkspace \
+ -scheme SpmExample \
+ -configuration Debug \
+ -sdk iphonesimulator \
+ -destination "generic/platform=iOS Simulator" \
+ -derivedDataPath spm-build \
+ COMPILER_INDEX_STORE_ENABLE=NO \
+ DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING=YES \
+ build | xcpretty
+
- name: Boot iPhone Simulator
run: |
if xcrun simctl list devices booted | grep -q "iPhone"; then
diff --git a/.gitignore b/.gitignore
index 60de60316a..c7fa1eb160 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,4 +79,8 @@ apps/example/**/Pods
# Ruby
apps/vendor/
+# Swift Package Manager
+.swiftpm/
+Package.resolved
+
.turbo
diff --git a/apps/docs/content/docs/getting-started/installation.mdx b/apps/docs/content/docs/getting-started/installation.mdx
index 80d52c0910..7c34853bad 100644
--- a/apps/docs/content/docs/getting-started/installation.mdx
+++ b/apps/docs/content/docs/getting-started/installation.mdx
@@ -20,6 +20,26 @@ npm i react-native-webgpu
Please note that this module does not work on the legacy architecture.
+## iOS: Swift Package Manager
+
+By default, `react-native-webgpu` links on iOS/macOS through CocoaPods autolinking - no extra setup needed. As an alternative, the package also ships a `Package.swift` and can be linked through Swift Package Manager instead:
+
+1. Set `RNWGPU_USE_SPM=1` before running `pod install` (e.g. `RNWGPU_USE_SPM=1 pod install` from your app's `ios` directory, or export it in your shell). This tells the CocoaPods podspec to skip vendoring the native sources and Dawn binary itself, and only keep the small shim CocoaPods/Codegen still need - otherwise the app would link the native module twice.
+2. In Xcode, add a local Swift Package dependency pointing at `node_modules/react-native-webgpu` (where `Package.swift` lives), then add the `react-native-webgpu` product to your app target's "Frameworks, Libraries, and Embedded Content".
+3. Keep running `pod install` as usual for everything else - only `react-native-webgpu` itself moves to SPM.
+
+The Swift package reads React Native's headers from the static-library Pods layout (`Pods/Headers/Public`), so it cannot be combined with `use_frameworks!`; `pod install` refuses `RNWGPU_USE_SPM=1` when `USE_FRAMEWORKS` is set. If a Graphite build of `@shopify/react-native-skia` is installed alongside, the manifest also checks that both packages link the same Dawn release and fails package resolution on a mismatch (see [React Native Skia](/docs/integrations/react-native-skia)).
+
+
+React Native 0.87 introduced SwiftPM autolinking, where a library shipping its own `Package.swift` is linked without CocoaPods and consumes React Native's headers as Swift package products. This manifest does not support that model yet: it still needs the CocoaPods install described above for React Native's headers, so keep CocoaPods for React Native on 0.87+ apps.
+
+
+`Package.swift`'s `WebGPUDawn` binary target resolves to a prebuilt Dawn `.xcframework` published on GitHub Releases; Xcode downloads and checksum-verifies it the first time it resolves packages.
+
+
+The Swift package targets iOS 15.1+ and macOS 11.0+ only - Android and visionOS still require the CocoaPods/Gradle autolinked path. See `apps/spm-example` in the [react-native-webgpu repo](https://github.com/wcandillon/react-native-webgpu) for a working reference project.
+
+
## Setup
Once installed, the global `navigator.gpu` API is available - the same entry point as in Chrome or Safari:
diff --git a/apps/docs/content/docs/integrations/react-native-skia.mdx b/apps/docs/content/docs/integrations/react-native-skia.mdx
index 1212e0e737..22c68fd219 100644
--- a/apps/docs/content/docs/integrations/react-native-skia.mdx
+++ b/apps/docs/content/docs/integrations/react-native-skia.mdx
@@ -23,7 +23,8 @@ Both packages follow Chrome/Skia milestones: react-native-webgpu pins the Dawn r
| Milestone | react-native-webgpu | Dawn release tag | `@shopify/react-native-skia` (Graphite `@next`) |
| --- | --- | --- | --- |
-| m152 | 0.8.2 | `dawn-chrome-m152` | 2.12.0-next.1 (Graphite `152.0.0`) |
+| m154 | *unreleased* | `dawn-chrome-m154` | *unreleased* |
+| m152 | 0.8.2 – 0.9.0 | `dawn-chrome-m152` | 2.12.0-next.1 (Graphite `152.0.0`) |
| m150 | 0.7.0 – 0.8.1 | `dawn-chrome-m150` | 2.9.1-next.1 – 2.11.0-next.2 (Graphite `150.0.0`) |
Default (Ganesh) releases of react-native-skia — 2.11.0 at the time of writing — are not part of this pairing: they do not link Dawn, so any version works alongside any version of react-native-webgpu.
diff --git a/apps/spm-example/.eslintrc.js b/apps/spm-example/.eslintrc.js
new file mode 100644
index 0000000000..187894b6af
--- /dev/null
+++ b/apps/spm-example/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ root: true,
+ extends: '@react-native',
+};
diff --git a/apps/spm-example/.gitignore b/apps/spm-example/.gitignore
new file mode 100644
index 0000000000..de99955957
--- /dev/null
+++ b/apps/spm-example/.gitignore
@@ -0,0 +1,75 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+**/.xcode.env.local
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+*.hprof
+.cxx/
+*.keystore
+!debug.keystore
+.kotlin/
+
+# node.js
+#
+node_modules/
+npm-debug.log
+yarn-error.log
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/
+
+**/fastlane/report.xml
+**/fastlane/Preview.html
+**/fastlane/screenshots
+**/fastlane/test_output
+
+# Bundle artifact
+*.jsbundle
+
+# Ruby / CocoaPods
+**/Pods/
+/vendor/bundle/
+
+# Temporary files created by Metro to check the health of the file watcher
+.metro-health-check*
+
+# testing
+/coverage
+
+# Yarn
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
diff --git a/apps/spm-example/.prettierrc.js b/apps/spm-example/.prettierrc.js
new file mode 100644
index 0000000000..06860c8d1b
--- /dev/null
+++ b/apps/spm-example/.prettierrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ arrowParens: 'avoid',
+ singleQuote: true,
+ trailingComma: 'all',
+};
diff --git a/apps/spm-example/.watchmanconfig b/apps/spm-example/.watchmanconfig
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/apps/spm-example/.watchmanconfig
@@ -0,0 +1 @@
+{}
diff --git a/apps/spm-example/App.tsx b/apps/spm-example/App.tsx
new file mode 100644
index 0000000000..b810465dd7
--- /dev/null
+++ b/apps/spm-example/App.tsx
@@ -0,0 +1,84 @@
+/**
+ * Minimal app used to validate react-native-webgpu linked via Swift Package
+ * Manager (see packages/webgpu/Package.swift) instead of CocoaPods on iOS.
+ * Renders a plain animated clear color: enough to exercise adapter/device
+ * request, context configuration, command submission, and present() end to
+ * end without pulling in the full example app's dependencies.
+ *
+ * @format
+ */
+
+import { useEffect, useRef } from 'react';
+import { StyleSheet, View } from 'react-native';
+import { Canvas, type CanvasRef } from 'react-native-webgpu';
+
+function Scene() {
+ const ref = useRef(null);
+
+ useEffect(() => {
+ let stopped = false;
+ let frame: number;
+
+ const start = async () => {
+ const context = ref.current?.getContext('webgpu');
+ if (!context) {
+ frame = requestAnimationFrame(start);
+ return;
+ }
+ const adapter = await navigator.gpu.requestAdapter();
+ const device = await adapter?.requestDevice();
+ if (!device) {
+ return;
+ }
+ const format = navigator.gpu.getPreferredCanvasFormat();
+ context.configure({ device, format, alphaMode: 'opaque' });
+
+ const render = (t: number) => {
+ if (stopped) {
+ return;
+ }
+ const hue = (t / 1000) % 1;
+ const encoder = device.createCommandEncoder();
+ const pass = encoder.beginRenderPass({
+ colorAttachments: [
+ {
+ view: context.getCurrentTexture().createView(),
+ loadOp: 'clear',
+ storeOp: 'store',
+ clearValue: { r: hue, g: 1 - hue, b: 0.5, a: 1 },
+ },
+ ],
+ });
+ pass.end();
+ device.queue.submit([encoder.finish()]);
+ context.present();
+ frame = requestAnimationFrame(render);
+ };
+ frame = requestAnimationFrame(render);
+ };
+
+ frame = requestAnimationFrame(start);
+ return () => {
+ stopped = true;
+ cancelAnimationFrame(frame);
+ };
+ }, []);
+
+ return ;
+}
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ },
+});
+
+export default App;
diff --git a/apps/spm-example/Gemfile b/apps/spm-example/Gemfile
new file mode 100644
index 0000000000..6a4c5f1718
--- /dev/null
+++ b/apps/spm-example/Gemfile
@@ -0,0 +1,16 @@
+source 'https://rubygems.org'
+
+# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
+ruby ">= 2.6.10"
+
+# Exclude problematic versions of cocoapods and activesupport that causes build failures.
+gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
+gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
+gem 'xcodeproj', '< 1.26.0'
+gem 'concurrent-ruby', '< 1.3.4'
+
+# Ruby 3.4.0 has removed some libraries from the standard library.
+gem 'bigdecimal'
+gem 'logger'
+gem 'benchmark'
+gem 'mutex_m'
diff --git a/apps/spm-example/README.md b/apps/spm-example/README.md
new file mode 100644
index 0000000000..3e2c3f8505
--- /dev/null
+++ b/apps/spm-example/README.md
@@ -0,0 +1,97 @@
+This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
+
+# Getting Started
+
+> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.
+
+## Step 1: Start Metro
+
+First, you will need to run **Metro**, the JavaScript build tool for React Native.
+
+To start the Metro dev server, run the following command from the root of your React Native project:
+
+```sh
+# Using npm
+npm start
+
+# OR using Yarn
+yarn start
+```
+
+## Step 2: Build and run your app
+
+With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:
+
+### Android
+
+```sh
+# Using npm
+npm run android
+
+# OR using Yarn
+yarn android
+```
+
+### iOS
+
+For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).
+
+The first time you create a new project, run the Ruby bundler to install CocoaPods itself:
+
+```sh
+bundle install
+```
+
+Then, and every time you update your native dependencies, run:
+
+```sh
+bundle exec pod install
+```
+
+For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).
+
+```sh
+# Using npm
+npm run ios
+
+# OR using Yarn
+yarn ios
+```
+
+If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.
+
+This is one way to run your app — you can also build it directly from Android Studio or Xcode.
+
+## Step 3: Modify your app
+
+Now that you have successfully run the app, let's make changes!
+
+Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).
+
+When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:
+
+- **Android**: Press the R key twice or select **"Reload"** from the **Dev Menu**, accessed via Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS).
+- **iOS**: Press R in iOS Simulator.
+
+## Congratulations! :tada:
+
+You've successfully run and modified your React Native App. :partying_face:
+
+### Now what?
+
+- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
+- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).
+
+# Troubleshooting
+
+If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
+
+# Learn More
+
+To learn more about React Native, take a look at the following resources:
+
+- [React Native Website](https://reactnative.dev) - learn more about React Native.
+- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
+- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
+- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
+- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
diff --git a/apps/spm-example/app.json b/apps/spm-example/app.json
new file mode 100644
index 0000000000..8a50fdcba5
--- /dev/null
+++ b/apps/spm-example/app.json
@@ -0,0 +1,4 @@
+{
+ "name": "SpmExample",
+ "displayName": "SpmExample"
+}
diff --git a/apps/spm-example/babel.config.js b/apps/spm-example/babel.config.js
new file mode 100644
index 0000000000..f7b3da3b33
--- /dev/null
+++ b/apps/spm-example/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['module:@react-native/babel-preset'],
+};
diff --git a/apps/spm-example/index.js b/apps/spm-example/index.js
new file mode 100644
index 0000000000..9b73932914
--- /dev/null
+++ b/apps/spm-example/index.js
@@ -0,0 +1,9 @@
+/**
+ * @format
+ */
+
+import { AppRegistry } from 'react-native';
+import App from './App';
+import { name as appName } from './app.json';
+
+AppRegistry.registerComponent(appName, () => App);
diff --git a/apps/spm-example/ios/.xcode.env b/apps/spm-example/ios/.xcode.env
new file mode 100644
index 0000000000..3d5782c715
--- /dev/null
+++ b/apps/spm-example/ios/.xcode.env
@@ -0,0 +1,11 @@
+# This `.xcode.env` file is versioned and is used to source the environment
+# used when running script phases inside Xcode.
+# To customize your local environment, you can create an `.xcode.env.local`
+# file that is not versioned.
+
+# NODE_BINARY variable contains the PATH to the node executable.
+#
+# Customize the NODE_BINARY variable here.
+# For example, to use nvm with brew, add the following line
+# . "$(brew --prefix nvm)/nvm.sh" --no-use
+export NODE_BINARY=$(command -v node)
diff --git a/apps/spm-example/ios/Podfile b/apps/spm-example/ios/Podfile
new file mode 100644
index 0000000000..4e80df016d
--- /dev/null
+++ b/apps/spm-example/ios/Podfile
@@ -0,0 +1,35 @@
+# Resolve react_native_pods.rb with node to allow for hoisting
+require Pod::Executable.execute_command('node', ['-p',
+ 'require.resolve(
+ "react-native/scripts/react_native_pods.rb",
+ {paths: [process.argv[1]]},
+ )', __dir__]).strip
+
+platform :ios, min_ios_version_supported
+prepare_react_native_project!
+
+linkage = ENV['USE_FRAMEWORKS']
+if linkage != nil
+ Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
+ use_frameworks! :linkage => linkage.to_sym
+end
+
+target 'SpmExample' do
+ config = use_native_modules!
+
+ use_react_native!(
+ :path => config[:reactNativePath],
+ # An absolute path to your application root.
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
+ )
+
+ post_install do |installer|
+ # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
+ react_native_post_install(
+ installer,
+ config[:reactNativePath],
+ :mac_catalyst_enabled => false,
+ # :ccache_enabled => true
+ )
+ end
+end
diff --git a/apps/spm-example/ios/Podfile.lock b/apps/spm-example/ios/Podfile.lock
new file mode 100644
index 0000000000..28017842a9
--- /dev/null
+++ b/apps/spm-example/ios/Podfile.lock
@@ -0,0 +1,2591 @@
+PODS:
+ - boost (1.84.0)
+ - DoubleConversion (1.1.6)
+ - fast_float (8.0.0)
+ - FBLazyVector (0.81.4)
+ - fmt (12.1.0)
+ - glog (0.3.5)
+ - hermes-engine (0.81.4):
+ - hermes-engine/Pre-built (= 0.81.4)
+ - hermes-engine/Pre-built (0.81.4)
+ - 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.81.4)
+ - RCTRequired (0.81.4)
+ - RCTTypeSafety (0.81.4):
+ - FBLazyVector (= 0.81.4)
+ - RCTRequired (= 0.81.4)
+ - React-Core (= 0.81.4)
+ - React (0.81.4):
+ - React-Core (= 0.81.4)
+ - React-Core/DevSupport (= 0.81.4)
+ - React-Core/RCTWebSocket (= 0.81.4)
+ - React-RCTActionSheet (= 0.81.4)
+ - React-RCTAnimation (= 0.81.4)
+ - React-RCTBlob (= 0.81.4)
+ - React-RCTImage (= 0.81.4)
+ - React-RCTLinking (= 0.81.4)
+ - React-RCTNetwork (= 0.81.4)
+ - React-RCTSettings (= 0.81.4)
+ - React-RCTText (= 0.81.4)
+ - React-RCTVibration (= 0.81.4)
+ - React-callinvoker (0.81.4)
+ - React-Core (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default (= 0.81.4)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/Default (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/DevSupport (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default (= 0.81.4)
+ - React-Core/RCTWebSocket (= 0.81.4)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTImageHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTTextHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-Core/RCTWebSocket (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTDeprecation
+ - React-Core/Default (= 0.81.4)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsitooling
+ - React-perflogger
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-CoreModules (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTTypeSafety (= 0.81.4)
+ - React-Core/CoreModulesHeaders (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-NativeModulesApple
+ - React-RCTBlob
+ - React-RCTFBReactNativeSpec
+ - React-RCTImage (= 0.81.4)
+ - React-runtimeexecutor
+ - ReactCommon
+ - SocketRocket
+ - React-cxxreact (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker (= 0.81.4)
+ - React-debug (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-logger (= 0.81.4)
+ - React-perflogger (= 0.81.4)
+ - React-runtimeexecutor
+ - React-timing (= 0.81.4)
+ - SocketRocket
+ - React-debug (0.81.4)
+ - React-defaultsnativemodule (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-domnativemodule
+ - React-featureflagsnativemodule
+ - React-idlecallbacksnativemodule
+ - React-jsi
+ - React-jsiexecutor
+ - React-microtasksnativemodule
+ - React-RCTFBReactNativeSpec
+ - SocketRocket
+ - React-domnativemodule (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-Fabric
+ - React-Fabric/bridging
+ - React-FabricComponents
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - Yoga
+ - React-Fabric (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/animations (= 0.81.4)
+ - React-Fabric/attributedstring (= 0.81.4)
+ - React-Fabric/bridging (= 0.81.4)
+ - React-Fabric/componentregistry (= 0.81.4)
+ - React-Fabric/componentregistrynative (= 0.81.4)
+ - React-Fabric/components (= 0.81.4)
+ - React-Fabric/consistency (= 0.81.4)
+ - React-Fabric/core (= 0.81.4)
+ - React-Fabric/dom (= 0.81.4)
+ - React-Fabric/imagemanager (= 0.81.4)
+ - React-Fabric/leakchecker (= 0.81.4)
+ - React-Fabric/mounting (= 0.81.4)
+ - React-Fabric/observers (= 0.81.4)
+ - React-Fabric/scheduler (= 0.81.4)
+ - React-Fabric/telemetry (= 0.81.4)
+ - React-Fabric/templateprocessor (= 0.81.4)
+ - React-Fabric/uimanager (= 0.81.4)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-Fabric/animations (0.81.4):
+ - 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 (0.81.4):
+ - 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/bridging (0.81.4):
+ - 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/componentregistry (0.81.4):
+ - 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/componentregistrynative (0.81.4):
+ - 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/components (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.81.4)
+ - React-Fabric/components/root (= 0.81.4)
+ - React-Fabric/components/scrollview (= 0.81.4)
+ - React-Fabric/components/view (= 0.81.4)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-Fabric/components/legacyviewmanagerinterop (0.81.4):
+ - 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/components/root (0.81.4):
+ - 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/components/scrollview (0.81.4):
+ - 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/components/view (0.81.4):
+ - 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-renderercss
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - Yoga
+ - React-Fabric/consistency (0.81.4):
+ - 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/core (0.81.4):
+ - 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/dom (0.81.4):
+ - 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/imagemanager (0.81.4):
+ - 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/leakchecker (0.81.4):
+ - 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/mounting (0.81.4):
+ - 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/observers (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events (= 0.81.4)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-Fabric/observers/events (0.81.4):
+ - 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/scheduler (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-performancetimeline
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-Fabric/telemetry (0.81.4):
+ - 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/templateprocessor (0.81.4):
+ - 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/uimanager (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/uimanager/consistency (= 0.81.4)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-Fabric/uimanager/consistency (0.81.4):
+ - 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-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-FabricComponents (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components (= 0.81.4)
+ - React-FabricComponents/textlayoutmanager (= 0.81.4)
+ - 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 (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components/inputaccessory (= 0.81.4)
+ - React-FabricComponents/components/iostextinput (= 0.81.4)
+ - React-FabricComponents/components/modal (= 0.81.4)
+ - React-FabricComponents/components/rncore (= 0.81.4)
+ - React-FabricComponents/components/safeareaview (= 0.81.4)
+ - React-FabricComponents/components/scrollview (= 0.81.4)
+ - React-FabricComponents/components/switch (= 0.81.4)
+ - React-FabricComponents/components/text (= 0.81.4)
+ - React-FabricComponents/components/textinput (= 0.81.4)
+ - React-FabricComponents/components/unimplementedview (= 0.81.4)
+ - React-FabricComponents/components/virtualview (= 0.81.4)
+ - 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/inputaccessory (0.81.4):
+ - 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/iostextinput (0.81.4):
+ - 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/modal (0.81.4):
+ - 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/rncore (0.81.4):
+ - 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/safeareaview (0.81.4):
+ - 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/scrollview (0.81.4):
+ - 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/switch (0.81.4):
+ - 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 (0.81.4):
+ - 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/textinput (0.81.4):
+ - 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/unimplementedview (0.81.4):
+ - 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/virtualview (0.81.4):
+ - 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 (0.81.4):
+ - 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-FabricImage (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired (= 0.81.4)
+ - RCTTypeSafety (= 0.81.4)
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsiexecutor (= 0.81.4)
+ - React-logger
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - SocketRocket
+ - Yoga
+ - React-featureflags (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - SocketRocket
+ - React-featureflagsnativemodule (0.81.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
+ - SocketRocket
+ - React-graphics (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-jsi
+ - React-jsiexecutor
+ - React-utils
+ - SocketRocket
+ - React-hermes (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-cxxreact (= 0.81.4)
+ - React-jsi
+ - React-jsiexecutor (= 0.81.4)
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-perflogger (= 0.81.4)
+ - React-runtimeexecutor
+ - SocketRocket
+ - React-idlecallbacksnativemodule (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-ImageManager (0.81.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
+ - SocketRocket
+ - React-jserrorhandler (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - ReactCommon/turbomodule/bridging
+ - SocketRocket
+ - React-jsi (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - SocketRocket
+ - React-jsiexecutor (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-cxxreact (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-perflogger (= 0.81.4)
+ - React-runtimeexecutor
+ - SocketRocket
+ - React-jsinspector (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-featureflags
+ - React-jsi
+ - React-jsinspectorcdp
+ - React-jsinspectornetwork
+ - React-jsinspectortracing
+ - React-oscompat
+ - React-perflogger (= 0.81.4)
+ - React-runtimeexecutor
+ - SocketRocket
+ - React-jsinspectorcdp (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - SocketRocket
+ - React-jsinspectornetwork (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-featureflags
+ - React-jsinspectorcdp
+ - React-performancetimeline
+ - React-timing
+ - SocketRocket
+ - React-jsinspectortracing (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-oscompat
+ - React-timing
+ - SocketRocket
+ - React-jsitooling (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-cxxreact (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-runtimeexecutor
+ - SocketRocket
+ - React-jsitracing (0.81.4):
+ - React-jsi
+ - React-logger (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - SocketRocket
+ - React-Mapbuffer (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-debug
+ - SocketRocket
+ - React-microtasksnativemodule (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - react-native-webgpu (0.0.0):
+ - 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
+ - React-NativeModulesApple (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker
+ - React-Core
+ - React-cxxreact
+ - React-featureflags
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - React-oscompat (0.81.4)
+ - React-perflogger (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - SocketRocket
+ - React-performancetimeline (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-featureflags
+ - React-jsinspectortracing
+ - React-perflogger
+ - React-timing
+ - SocketRocket
+ - React-RCTActionSheet (0.81.4):
+ - React-Core/RCTActionSheetHeaders (= 0.81.4)
+ - React-RCTAnimation (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTTypeSafety
+ - React-Core/RCTAnimationHeaders
+ - React-featureflags
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - SocketRocket
+ - React-RCTAppDelegate (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-CoreModules
+ - React-debug
+ - React-defaultsnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-jsitooling
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTFBReactNativeSpec
+ - React-RCTImage
+ - React-RCTNetwork
+ - React-RCTRuntime
+ - React-rendererdebug
+ - React-RuntimeApple
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon
+ - SocketRocket
+ - React-RCTBlob (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-Core/RCTBlobHeaders
+ - React-Core/RCTWebSocket
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - React-RCTNetwork
+ - ReactCommon
+ - SocketRocket
+ - React-RCTFabric (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectornetwork
+ - React-jsinspectortracing
+ - React-performancetimeline
+ - React-RCTAnimation
+ - React-RCTFBReactNativeSpec
+ - React-RCTImage
+ - React-RCTText
+ - React-rendererconsistency
+ - React-renderercss
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - Yoga
+ - React-RCTFBReactNativeSpec (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec/components (= 0.81.4)
+ - ReactCommon
+ - SocketRocket
+ - React-RCTFBReactNativeSpec/components (0.81.4):
+ - 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-jsi
+ - React-NativeModulesApple
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - SocketRocket
+ - Yoga
+ - React-RCTImage (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTTypeSafety
+ - React-Core/RCTImageHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - React-RCTNetwork
+ - ReactCommon
+ - SocketRocket
+ - React-RCTLinking (0.81.4):
+ - React-Core/RCTLinkingHeaders (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - ReactCommon/turbomodule/core (= 0.81.4)
+ - React-RCTNetwork (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTTypeSafety
+ - React-Core/RCTNetworkHeaders
+ - React-featureflags
+ - React-jsi
+ - React-jsinspectorcdp
+ - React-jsinspectornetwork
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - SocketRocket
+ - React-RCTRuntime (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-Core
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-jsitooling
+ - React-RuntimeApple
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-RuntimeHermes
+ - SocketRocket
+ - React-RCTSettings (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTTypeSafety
+ - React-Core/RCTSettingsHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - SocketRocket
+ - React-RCTText (0.81.4):
+ - React-Core/RCTTextHeaders (= 0.81.4)
+ - Yoga
+ - React-RCTVibration (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-Core/RCTVibrationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - SocketRocket
+ - React-rendererconsistency (0.81.4)
+ - React-renderercss (0.81.4):
+ - React-debug
+ - React-utils
+ - React-rendererdebug (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-debug
+ - SocketRocket
+ - React-RuntimeApple (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker
+ - React-Core/Default
+ - React-CoreModules
+ - React-cxxreact
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsitooling
+ - React-Mapbuffer
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTFBReactNativeSpec
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - React-RuntimeCore (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-cxxreact
+ - React-Fabric
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-jsitooling
+ - React-performancetimeline
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket
+ - React-runtimeexecutor (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-debug
+ - React-featureflags
+ - React-jsi (= 0.81.4)
+ - React-utils
+ - SocketRocket
+ - React-RuntimeHermes (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectorcdp
+ - React-jsinspectortracing
+ - React-jsitooling
+ - React-jsitracing
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-utils
+ - SocketRocket
+ - React-runtimescheduler (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - React-jsinspectortracing
+ - React-performancetimeline
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-timing
+ - React-utils
+ - SocketRocket
+ - React-timing (0.81.4):
+ - React-debug
+ - React-utils (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-debug
+ - React-jsi (= 0.81.4)
+ - SocketRocket
+ - ReactAppDependencyProvider (0.81.4):
+ - ReactCodegen
+ - ReactCodegen (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - ReactCommon (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - ReactCommon/turbomodule (= 0.81.4)
+ - SocketRocket
+ - ReactCommon/turbomodule (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker (= 0.81.4)
+ - React-cxxreact (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-logger (= 0.81.4)
+ - React-perflogger (= 0.81.4)
+ - ReactCommon/turbomodule/bridging (= 0.81.4)
+ - ReactCommon/turbomodule/core (= 0.81.4)
+ - SocketRocket
+ - ReactCommon/turbomodule/bridging (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker (= 0.81.4)
+ - React-cxxreact (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-logger (= 0.81.4)
+ - React-perflogger (= 0.81.4)
+ - SocketRocket
+ - ReactCommon/turbomodule/core (0.81.4):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - React-callinvoker (= 0.81.4)
+ - React-cxxreact (= 0.81.4)
+ - React-debug (= 0.81.4)
+ - React-featureflags (= 0.81.4)
+ - React-jsi (= 0.81.4)
+ - React-logger (= 0.81.4)
+ - React-perflogger (= 0.81.4)
+ - React-utils (= 0.81.4)
+ - SocketRocket
+ - SocketRocket (0.7.1)
+ - Yoga (0.0.0)
+
+DEPENDENCIES:
+ - boost (from `../../../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - fast_float (from `../../../node_modules/react-native/third-party-podspecs/fast_float.podspec`)
+ - FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`)
+ - fmt (from `../../../node_modules/react-native/third-party-podspecs/fmt.podspec`)
+ - glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - hermes-engine (from `../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCTDeprecation (from `../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
+ - RCTRequired (from `../../../node_modules/react-native/Libraries/Required`)
+ - RCTTypeSafety (from `../../../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../../../node_modules/react-native/`)
+ - React-callinvoker (from `../../../node_modules/react-native/ReactCommon/callinvoker`)
+ - React-Core (from `../../../node_modules/react-native/`)
+ - React-Core/RCTWebSocket (from `../../../node_modules/react-native/`)
+ - React-CoreModules (from `../../../node_modules/react-native/React/CoreModules`)
+ - React-cxxreact (from `../../../node_modules/react-native/ReactCommon/cxxreact`)
+ - React-debug (from `../../../node_modules/react-native/ReactCommon/react/debug`)
+ - React-defaultsnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
+ - React-domnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
+ - React-Fabric (from `../../../node_modules/react-native/ReactCommon`)
+ - React-FabricComponents (from `../../../node_modules/react-native/ReactCommon`)
+ - React-FabricImage (from `../../../node_modules/react-native/ReactCommon`)
+ - React-featureflags (from `../../../node_modules/react-native/ReactCommon/react/featureflags`)
+ - React-featureflagsnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
+ - React-graphics (from `../../../node_modules/react-native/ReactCommon/react/renderer/graphics`)
+ - React-hermes (from `../../../node_modules/react-native/ReactCommon/hermes`)
+ - React-idlecallbacksnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
+ - React-ImageManager (from `../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
+ - React-jserrorhandler (from `../../../node_modules/react-native/ReactCommon/jserrorhandler`)
+ - React-jsi (from `../../../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../../../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern`)
+ - React-jsinspectorcdp (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/cdp`)
+ - React-jsinspectornetwork (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/network`)
+ - React-jsinspectortracing (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`)
+ - React-jsitooling (from `../../../node_modules/react-native/ReactCommon/jsitooling`)
+ - React-jsitracing (from `../../../node_modules/react-native/ReactCommon/hermes/executor/`)
+ - React-logger (from `../../../node_modules/react-native/ReactCommon/logger`)
+ - React-Mapbuffer (from `../../../node_modules/react-native/ReactCommon`)
+ - React-microtasksnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
+ - react-native-webgpu (from `../../../node_modules/react-native-webgpu`)
+ - React-NativeModulesApple (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
+ - React-oscompat (from `../../../node_modules/react-native/ReactCommon/oscompat`)
+ - React-perflogger (from `../../../node_modules/react-native/ReactCommon/reactperflogger`)
+ - React-performancetimeline (from `../../../node_modules/react-native/ReactCommon/react/performance/timeline`)
+ - React-RCTActionSheet (from `../../../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../../../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTAppDelegate (from `../../../node_modules/react-native/Libraries/AppDelegate`)
+ - React-RCTBlob (from `../../../node_modules/react-native/Libraries/Blob`)
+ - React-RCTFabric (from `../../../node_modules/react-native/React`)
+ - React-RCTFBReactNativeSpec (from `../../../node_modules/react-native/React`)
+ - React-RCTImage (from `../../../node_modules/react-native/Libraries/Image`)
+ - React-RCTLinking (from `../../../node_modules/react-native/Libraries/LinkingIOS`)
+ - React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`)
+ - React-RCTRuntime (from `../../../node_modules/react-native/React/Runtime`)
+ - React-RCTSettings (from `../../../node_modules/react-native/Libraries/Settings`)
+ - React-RCTText (from `../../../node_modules/react-native/Libraries/Text`)
+ - React-RCTVibration (from `../../../node_modules/react-native/Libraries/Vibration`)
+ - React-rendererconsistency (from `../../../node_modules/react-native/ReactCommon/react/renderer/consistency`)
+ - React-renderercss (from `../../../node_modules/react-native/ReactCommon/react/renderer/css`)
+ - React-rendererdebug (from `../../../node_modules/react-native/ReactCommon/react/renderer/debug`)
+ - React-RuntimeApple (from `../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
+ - React-RuntimeCore (from `../../../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimeexecutor (from `../../../node_modules/react-native/ReactCommon/runtimeexecutor`)
+ - React-RuntimeHermes (from `../../../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimescheduler (from `../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
+ - React-timing (from `../../../node_modules/react-native/ReactCommon/react/timing`)
+ - React-utils (from `../../../node_modules/react-native/ReactCommon/react/utils`)
+ - ReactAppDependencyProvider (from `build/generated/ios`)
+ - ReactCodegen (from `build/generated/ios`)
+ - ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`)
+ - SocketRocket (~> 0.7.1)
+ - Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ trunk:
+ - SocketRocket
+
+EXTERNAL SOURCES:
+ boost:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/boost.podspec"
+ DoubleConversion:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ fast_float:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/fast_float.podspec"
+ FBLazyVector:
+ :path: "../../../node_modules/react-native/Libraries/FBLazyVector"
+ fmt:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/fmt.podspec"
+ glog:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/glog.podspec"
+ hermes-engine:
+ :podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
+ :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782
+ RCT-Folly:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
+ RCTDeprecation:
+ :path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
+ RCTRequired:
+ :path: "../../../node_modules/react-native/Libraries/Required"
+ RCTTypeSafety:
+ :path: "../../../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../../../node_modules/react-native/"
+ React-callinvoker:
+ :path: "../../../node_modules/react-native/ReactCommon/callinvoker"
+ React-Core:
+ :path: "../../../node_modules/react-native/"
+ React-CoreModules:
+ :path: "../../../node_modules/react-native/React/CoreModules"
+ React-cxxreact:
+ :path: "../../../node_modules/react-native/ReactCommon/cxxreact"
+ React-debug:
+ :path: "../../../node_modules/react-native/ReactCommon/react/debug"
+ React-defaultsnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
+ React-domnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/dom"
+ React-Fabric:
+ :path: "../../../node_modules/react-native/ReactCommon"
+ React-FabricComponents:
+ :path: "../../../node_modules/react-native/ReactCommon"
+ React-FabricImage:
+ :path: "../../../node_modules/react-native/ReactCommon"
+ React-featureflags:
+ :path: "../../../node_modules/react-native/ReactCommon/react/featureflags"
+ React-featureflagsnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
+ React-graphics:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/graphics"
+ React-hermes:
+ :path: "../../../node_modules/react-native/ReactCommon/hermes"
+ React-idlecallbacksnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
+ React-ImageManager:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
+ React-jserrorhandler:
+ :path: "../../../node_modules/react-native/ReactCommon/jserrorhandler"
+ React-jsi:
+ :path: "../../../node_modules/react-native/ReactCommon/jsi"
+ React-jsiexecutor:
+ :path: "../../../node_modules/react-native/ReactCommon/jsiexecutor"
+ React-jsinspector:
+ :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern"
+ React-jsinspectorcdp:
+ :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/cdp"
+ React-jsinspectornetwork:
+ :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/network"
+ React-jsinspectortracing:
+ :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/tracing"
+ React-jsitooling:
+ :path: "../../../node_modules/react-native/ReactCommon/jsitooling"
+ React-jsitracing:
+ :path: "../../../node_modules/react-native/ReactCommon/hermes/executor/"
+ React-logger:
+ :path: "../../../node_modules/react-native/ReactCommon/logger"
+ React-Mapbuffer:
+ :path: "../../../node_modules/react-native/ReactCommon"
+ React-microtasksnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ react-native-webgpu:
+ :path: "../../../node_modules/react-native-webgpu"
+ React-NativeModulesApple:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
+ React-oscompat:
+ :path: "../../../node_modules/react-native/ReactCommon/oscompat"
+ React-perflogger:
+ :path: "../../../node_modules/react-native/ReactCommon/reactperflogger"
+ React-performancetimeline:
+ :path: "../../../node_modules/react-native/ReactCommon/react/performance/timeline"
+ React-RCTActionSheet:
+ :path: "../../../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../../../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTAppDelegate:
+ :path: "../../../node_modules/react-native/Libraries/AppDelegate"
+ React-RCTBlob:
+ :path: "../../../node_modules/react-native/Libraries/Blob"
+ React-RCTFabric:
+ :path: "../../../node_modules/react-native/React"
+ React-RCTFBReactNativeSpec:
+ :path: "../../../node_modules/react-native/React"
+ React-RCTImage:
+ :path: "../../../node_modules/react-native/Libraries/Image"
+ React-RCTLinking:
+ :path: "../../../node_modules/react-native/Libraries/LinkingIOS"
+ React-RCTNetwork:
+ :path: "../../../node_modules/react-native/Libraries/Network"
+ React-RCTRuntime:
+ :path: "../../../node_modules/react-native/React/Runtime"
+ React-RCTSettings:
+ :path: "../../../node_modules/react-native/Libraries/Settings"
+ React-RCTText:
+ :path: "../../../node_modules/react-native/Libraries/Text"
+ React-RCTVibration:
+ :path: "../../../node_modules/react-native/Libraries/Vibration"
+ React-rendererconsistency:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/consistency"
+ React-renderercss:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/css"
+ React-rendererdebug:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/debug"
+ React-RuntimeApple:
+ :path: "../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
+ React-RuntimeCore:
+ :path: "../../../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimeexecutor:
+ :path: "../../../node_modules/react-native/ReactCommon/runtimeexecutor"
+ React-RuntimeHermes:
+ :path: "../../../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimescheduler:
+ :path: "../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
+ React-timing:
+ :path: "../../../node_modules/react-native/ReactCommon/react/timing"
+ React-utils:
+ :path: "../../../node_modules/react-native/ReactCommon/react/utils"
+ ReactAppDependencyProvider:
+ :path: build/generated/ios
+ ReactCodegen:
+ :path: build/generated/ios
+ ReactCommon:
+ :path: "../../../node_modules/react-native/ReactCommon"
+ Yoga:
+ :path: "../../../node_modules/react-native/ReactCommon/yoga"
+
+SPEC CHECKSUMS:
+ boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
+ DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
+ fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6
+ FBLazyVector: 941bef1c8eeabd9fe1f501e30a5220beee913886
+ fmt: 530618a01105dae0fa3a2f27c81ae11fa8f67eac
+ glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
+ hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394
+ RCT-Folly: b29feb752b08042c62badaef7d453f3bb5e6ae23
+ RCTDeprecation: c0ed3249a97243002615517dff789bf4666cf585
+ RCTRequired: 58719f5124f9267b5f9649c08bf23d9aea845b23
+ RCTTypeSafety: 4aefa8328ab1f86da273f08517f1f6b343f6c2cc
+ React: 2073376f47c71b7e9a0af7535986a77522ce1049
+ React-callinvoker: 751b6f2c83347a0486391c3f266f291f0f53b27e
+ React-Core: dff5d29973349b11dd6631c9498456d75f846d5e
+ React-CoreModules: c0ae04452e4c5d30e06f8e94692a49107657f537
+ React-cxxreact: 376fd672c95dfb64ad5cc246e6a1e9edb78dec4c
+ React-debug: 7b56a0a7da432353287d2eedac727903e35278f5
+ React-defaultsnativemodule: 393b81aaa6211408f50a6ef00a277847256dd881
+ React-domnativemodule: 5fb5829baa7a7a0f217019cbad1eb226d94f7062
+ React-Fabric: a17c4ae35503673b57b91c2d1388429e7cbee452
+ React-FabricComponents: a76572ddeba78ebe4ec58615291e9db4a55cd46a
+ React-FabricImage: d806eb2695d7ef355ec28d1a21f5a14ac26b1cae
+ React-featureflags: 1690ec3c453920b6308e23a4e24eb9c3632f9c75
+ React-featureflagsnativemodule: 7b7e8483fc671c5a33aefd699b7c7a3c0bdfdfec
+ React-graphics: ea146ee799dc816524a3a0922fc7be0b5a52dcc1
+ React-hermes: fcbdc45ecf38259fe3b12642bd0757c52270a107
+ React-idlecallbacksnativemodule: a353f9162eaa7ad787e68aba9f52a1cfa8154098
+ React-ImageManager: ec5cf55ce9cc81719eb5f1f51d23d04db851c86c
+ React-jserrorhandler: 594c593f3d60f527be081e2cace7710c2bd9f524
+ React-jsi: 59ec3190dd364cca86a58869e7755477d2468948
+ React-jsiexecutor: b87d78a2e8dd7a6f56e9cdac038da45de98c944f
+ React-jsinspector: b9204adf1af622c98e78af96ec1bca615c2ce2bd
+ React-jsinspectorcdp: 4a356fa69e412d35d3a38c44d4a6cc555c5931e8
+ React-jsinspectornetwork: 7820056773178f321cbf18689e1ffcd38276a878
+ React-jsinspectortracing: b341c5ef6e031a33e0bd462d67fd397e8e9cd612
+ React-jsitooling: 401655e05cb966b0081225c5201d90734a567cb9
+ React-jsitracing: 67eff6dea0cb58a1e7bd8b49243012d88c0f511e
+ React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48
+ React-Mapbuffer: 9d2434a42701d6144ca18f0ca1c4507808ca7696
+ React-microtasksnativemodule: 75b6604b667d297292345302cc5bfb6b6aeccc1b
+ react-native-webgpu: 41f889f6d41f4fd288c331371df55a9bbe806ba9
+ React-NativeModulesApple: 879fbdc5dcff7136abceb7880fe8a2022a1bd7c3
+ React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d
+ React-perflogger: 5536d2df3d18fe0920263466f7b46a56351c0510
+ React-performancetimeline: 9041c53efa07f537164dcfe7670a36642352f4c2
+ React-RCTActionSheet: 42195ae666e6d79b4af2346770f765b7c29435b9
+ React-RCTAnimation: fa103ccc3503b1ed8dedca7e62e7823937748843
+ React-RCTAppDelegate: 665d4baf19424cef08276e9ac0d8771eec4519f9
+ React-RCTBlob: 0fa9530c255644db095f2c4fd8d89738d9d9ecc0
+ React-RCTFabric: 1fcd8af6e25f92532f56b4ba092e58662c14d156
+ React-RCTFBReactNativeSpec: db171247585774f9f0a30f75109cc51568686213
+ React-RCTImage: ba824e61ce2e920a239a65d130b83c3a1d426dff
+ React-RCTLinking: d2dc199c37e71e6f505d9eca3e5c33be930014d4
+ React-RCTNetwork: 87137d4b9bd77e5068f854dd5c1f30d4b072faf6
+ React-RCTRuntime: 137fafaa808a8b7e76a510e8be45f9f827899daa
+ React-RCTSettings: 71f5c7fd7b5f4e725a4e2114a4b4373d0e46048f
+ React-RCTText: b94d4699b49285bee22b8ebf768924d607eccee3
+ React-RCTVibration: 6e3993c4f6c36a3899059f9a9ead560ddaf5a7d7
+ React-rendererconsistency: b4785e5ed837dc7c242bbc5fdd464b33ef5bfae7
+ React-renderercss: e6fb0ba387b389c595ffa86b8b628716d31f58dc
+ React-rendererdebug: 60a03de5c7ea59bf2d39791eb43c4c0f5d8b24e3
+ React-RuntimeApple: 3df6788cd9b938bb8cb28298d80b5fbd98a4d852
+ React-RuntimeCore: fad8adb4172c414c00ff6980250caf35601a0f5d
+ React-runtimeexecutor: d2db7e72d97751855ea0bf5273d2ac84e5ea390c
+ React-RuntimeHermes: 04faa4cf9a285136a6d73738787fe36020170613
+ React-runtimescheduler: f6a1c9555e7131b4a8b64cce01489ad0405f6e8d
+ React-timing: 1e6a8acb66e2b7ac9d418956617fd1fdb19322fd
+ React-utils: 52bbb03f130319ef82e4c3bc7a85eaacdb1fec87
+ ReactAppDependencyProvider: 433ddfb4536948630aadd5bd925aff8a632d2fe3
+ ReactCodegen: 64dbbed4e9e0264d799578ea78492479a66fba4a
+ ReactCommon: 394c6b92765cf6d211c2c3f7f6bc601dffb316a6
+ SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
+ Yoga: a3ed390a19db0459bd6839823a6ac6d9c6db198d
+
+PODFILE CHECKSUM: a0af4737af8418a1538a69209ed2232b2cadf9f5
+
+COCOAPODS: 1.16.2
diff --git a/apps/spm-example/ios/SpmExample.xcodeproj/project.pbxproj b/apps/spm-example/ios/SpmExample.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..20d4aac90c
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample.xcodeproj/project.pbxproj
@@ -0,0 +1,501 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0C80B921A6F3F58F76C31292 /* libPods-SpmExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-SpmExample.a */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 1CE5FBB8305C3C7C4F508244 /* react-native-webgpu in Frameworks */ = {isa = PBXBuildFile; productRef = 7710EF1317EBEC4B1855ECD5 /* react-native-webgpu */; };
+ 55D361336311FCE96E5D8980 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 13B07F961A680F5B00A75B9A /* SpmExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpmExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = SpmExample/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = SpmExample/Info.plist; sourceTree = ""; };
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = SpmExample/PrivacyInfo.xcprivacy; sourceTree = ""; };
+ 3B4392A12AC88292D35C810B /* Pods-SpmExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpmExample.debug.xcconfig"; path = "Target Support Files/Pods-SpmExample/Pods-SpmExample.debug.xcconfig"; sourceTree = ""; };
+ 5709B34CF0A7D63546082F79 /* Pods-SpmExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpmExample.release.xcconfig"; path = "Target Support Files/Pods-SpmExample/Pods-SpmExample.release.xcconfig"; sourceTree = ""; };
+ 5DCACB8F33CDC322A6C60F78 /* libPods-SpmExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SpmExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = SpmExample/AppDelegate.swift; sourceTree = ""; };
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = SpmExample/LaunchScreen.storyboard; sourceTree = ""; };
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0C80B921A6F3F58F76C31292 /* libPods-SpmExample.a in Frameworks */,
+ 1CE5FBB8305C3C7C4F508244 /* react-native-webgpu in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 13B07FAE1A68108700A75B9A /* SpmExample */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 761780EC2CA45674006654EE /* AppDelegate.swift */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
+ );
+ name = SpmExample;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ 5DCACB8F33CDC322A6C60F78 /* libPods-SpmExample.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAE1A68108700A75B9A /* SpmExample */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ BBD78D7AC51CEA395F1C20DB /* Pods */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* SpmExample.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ BBD78D7AC51CEA395F1C20DB /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 3B4392A12AC88292D35C810B /* Pods-SpmExample.debug.xcconfig */,
+ 5709B34CF0A7D63546082F79 /* Pods-SpmExample.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 13B07F861A680F5B00A75B9A /* SpmExample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "SpmExample" */;
+ buildPhases = (
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SpmExample;
+ packageProductDependencies = (
+ 7710EF1317EBEC4B1855ECD5 /* react-native-webgpu */,
+ );
+ productName = SpmExample;
+ productReference = 13B07F961A680F5B00A75B9A /* SpmExample.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1210;
+ TargetAttributes = {
+ 13B07F861A680F5B00A75B9A = {
+ LastSwiftMigration = 1120;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "SpmExample" */;
+ compatibilityVersion = "Xcode 12.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192;
+ packageReferences = (
+ DAD11D5FE492944CD3648B46 /* XCLocalSwiftPackageReference "webgpu" */,
+ );
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* SpmExample */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 55D361336311FCE96E5D8980 /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "$(SRCROOT)/.xcode.env.local",
+ "$(SRCROOT)/.xcode.env",
+ );
+ name = "Bundle React Native code and images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
+ };
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ C38B50BA6285516D6DCD4F65 /* [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-SpmExample-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;
+ };
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SpmExample/Pods-SpmExample-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-SpmExample.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = SpmExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = SpmExample;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-SpmExample.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ INFOPLIST_FILE = SpmExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = SpmExample;
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ 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_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_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_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_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ 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_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "\"$(SDKROOT)/usr/lib/swift\"",
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+ "\"$(inherited)\"",
+ );
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "-DFOLLY_NO_CONFIG",
+ "-DFOLLY_MOBILE=1",
+ "-DFOLLY_USE_LIBCPP=1",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
+ USE_HERMES = true;
+ };
+ 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_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_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_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_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "\"$(SDKROOT)/usr/lib/swift\"",
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+ "\"$(inherited)\"",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "-DFOLLY_NO_CONFIG",
+ "-DFOLLY_MOBILE=1",
+ "-DFOLLY_USE_LIBCPP=1",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ USE_HERMES = true;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "SpmExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "SpmExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCLocalSwiftPackageReference section */
+ DAD11D5FE492944CD3648B46 /* XCLocalSwiftPackageReference "webgpu" */ = {
+ isa = XCLocalSwiftPackageReference;
+ relativePath = ../../../packages/webgpu;
+ };
+/* End XCLocalSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 7710EF1317EBEC4B1855ECD5 /* react-native-webgpu */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = DAD11D5FE492944CD3648B46 /* XCLocalSwiftPackageReference "webgpu" */;
+ productName = "react-native-webgpu";
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
diff --git a/apps/spm-example/ios/SpmExample.xcodeproj/xcshareddata/xcschemes/SpmExample.xcscheme b/apps/spm-example/ios/SpmExample.xcodeproj/xcshareddata/xcschemes/SpmExample.xcscheme
new file mode 100644
index 0000000000..6e19aac3f1
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample.xcodeproj/xcshareddata/xcschemes/SpmExample.xcscheme
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/spm-example/ios/SpmExample.xcworkspace/contents.xcworkspacedata b/apps/spm-example/ios/SpmExample.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000..691387f3b2
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/apps/spm-example/ios/SpmExample/AppDelegate.swift b/apps/spm-example/ios/SpmExample/AppDelegate.swift
new file mode 100644
index 0000000000..eefddcb3b0
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/AppDelegate.swift
@@ -0,0 +1,48 @@
+import UIKit
+import React
+import React_RCTAppDelegate
+import ReactAppDependencyProvider
+
+@main
+class AppDelegate: UIResponder, UIApplicationDelegate {
+ var window: UIWindow?
+
+ var reactNativeDelegate: ReactNativeDelegate?
+ var reactNativeFactory: RCTReactNativeFactory?
+
+ func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
+ ) -> Bool {
+ let delegate = ReactNativeDelegate()
+ let factory = RCTReactNativeFactory(delegate: delegate)
+ delegate.dependencyProvider = RCTAppDependencyProvider()
+
+ reactNativeDelegate = delegate
+ reactNativeFactory = factory
+
+ window = UIWindow(frame: UIScreen.main.bounds)
+
+ factory.startReactNative(
+ withModuleName: "SpmExample",
+ in: window,
+ launchOptions: launchOptions
+ )
+
+ return true
+ }
+}
+
+class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {
+ override func sourceURL(for bridge: RCTBridge) -> URL? {
+ self.bundleURL()
+ }
+
+ override func bundleURL() -> URL? {
+#if DEBUG
+ RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
+#else
+ Bundle.main.url(forResource: "main", withExtension: "jsbundle")
+#endif
+ }
+}
diff --git a/apps/spm-example/ios/SpmExample/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/spm-example/ios/SpmExample/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..81213230de
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,53 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/apps/spm-example/ios/SpmExample/Images.xcassets/Contents.json b/apps/spm-example/ios/SpmExample/Images.xcassets/Contents.json
new file mode 100644
index 0000000000..2d92bd53fd
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/apps/spm-example/ios/SpmExample/Info.plist b/apps/spm-example/ios/SpmExample/Info.plist
new file mode 100644
index 0000000000..dd14a6eea1
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/Info.plist
@@ -0,0 +1,53 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ SpmExample
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(MARKETING_VERSION)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
+
+ NSLocationWhenInUseUsageDescription
+
+ RCTNewArchEnabled
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/apps/spm-example/ios/SpmExample/LaunchScreen.storyboard b/apps/spm-example/ios/SpmExample/LaunchScreen.storyboard
new file mode 100644
index 0000000000..8af2d8a45a
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/LaunchScreen.storyboard
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/spm-example/ios/SpmExample/PrivacyInfo.xcprivacy b/apps/spm-example/ios/SpmExample/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..41b8317f06
--- /dev/null
+++ b/apps/spm-example/ios/SpmExample/PrivacyInfo.xcprivacy
@@ -0,0 +1,37 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/apps/spm-example/metro.config.js b/apps/spm-example/metro.config.js
new file mode 100644
index 0000000000..814ada0855
--- /dev/null
+++ b/apps/spm-example/metro.config.js
@@ -0,0 +1,18 @@
+const path = require('path');
+const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
+
+// Workspace deps (react-native-webgpu, @babel/runtime, etc.) get hoisted to
+// the monorepo root node_modules, so Metro needs to watch it too.
+const root = path.resolve(__dirname, '../..');
+
+/**
+ * Metro configuration
+ * https://reactnative.dev/docs/metro
+ *
+ * @type {import('@react-native/metro-config').MetroConfig}
+ */
+const config = {
+ watchFolders: [root],
+};
+
+module.exports = mergeConfig(getDefaultConfig(__dirname), config);
diff --git a/apps/spm-example/package.json b/apps/spm-example/package.json
new file mode 100644
index 0000000000..02db599be7
--- /dev/null
+++ b/apps/spm-example/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "spm-example",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "ios": "react-native run-ios",
+ "lint": "eslint .",
+ "start": "react-native start"
+ },
+ "dependencies": {
+ "react": "19.1.0",
+ "react-native": "0.81.4",
+ "react-native-webgpu": "workspace:*"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/preset-env": "^7.25.3",
+ "@babel/runtime": "^7.25.0",
+ "@react-native-community/cli": "20.0.0",
+ "@react-native-community/cli-platform-ios": "20.0.0",
+ "@react-native/babel-preset": "0.81.4",
+ "@react-native/eslint-config": "0.81.4",
+ "@react-native/metro-config": "0.81.4",
+ "@react-native/typescript-config": "0.81.4",
+ "@types/react": "^19.1.0",
+ "eslint": "^8.19.0",
+ "prettier": "2.8.8",
+ "typescript": "^5.8.3"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+}
diff --git a/apps/spm-example/tsconfig.json b/apps/spm-example/tsconfig.json
new file mode 100644
index 0000000000..c41b7e2014
--- /dev/null
+++ b/apps/spm-example/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "@react-native/typescript-config",
+ "include": ["**/*.ts", "**/*.tsx"],
+ "exclude": ["**/node_modules", "**/Pods"]
+}
diff --git a/externals/dawn b/externals/dawn
index 1e89727517..3d786993a7 160000
--- a/externals/dawn
+++ b/externals/dawn
@@ -1 +1 @@
-Subproject commit 1e897275172a23f27b0022fa6beae3084ed54a9b
+Subproject commit 3d786993a7ded64c4ebb4884b9b079db9ad0e580
diff --git a/packages/webgpu/CONTRIBUTING.md b/packages/webgpu/CONTRIBUTING.md
index ec871cbe0e..32d7b7aa52 100644
--- a/packages/webgpu/CONTRIBUTING.md
+++ b/packages/webgpu/CONTRIBUTING.md
@@ -13,7 +13,9 @@ Example app (from `apps/example/`): `yarn start` · `yarn ios` · `yarn android`
From the repo root: `yarn lint` · `yarn tsc` · `yarn build:docs`
-Tests (from `packages/webgpu/`): `yarn test:ref` (Chrome reference) · `yarn test` (E2E — open the example app on the E2E screen) · `yarn test:plugin` (Expo config plugin unit tests)
+Tests (from `packages/webgpu/`): `yarn test:ref` (Chrome reference) · `yarn test` (E2E) · `yarn test:plugin` (Expo config plugin unit tests)
+
+`yarn test` needs the example app open on its "Tests" screen and connected to Metro first: start Metro with `CI=true yarn start` (from `apps/example/`) — `initialRouteName` in `apps/example/src/App.tsx` is `"Tests"` when `process.env.CI === "true"`, inlined at bundle time via the `transform-inline-environment-variables` babel plugin — then launch the app (`yarn ios` / `yarn android`, or install+launch an existing build). The screen shows "Connecting to localhost..." once it's ready; `yarn test` then picks it up automatically. If a run fails mid-suite, reload the app (`curl -X POST http://localhost:8081/reload`) before the next run — a broken `GPUDevice` from the failed run makes unrelated later tests fail too.
Other `packages/webgpu` scripts: `yarn clean-dawn` · `yarn build-dawn`
@@ -54,4 +56,6 @@ Steps to bump to a new Dawn version (new Skia milestone `m`):
6. **Update the compatibility table** in `apps/docs/content/docs/integrations/react-native-skia.mdx` with the new milestone row, so users can pair react-native-webgpu and `@shopify/react-native-skia` versions.
-7. **Verify and commit.** Build and run the example app, then commit the submodule bump together with the updated `package.json`.
\ No newline at end of file
+7. **Build both platforms.** A milestone can also change Dawn's C++ API surface, not just add features — e.g. `chrome-m154` turned `SharedTextureMemory::BeginAccess`/`EndAccess`, `Adapter::GetLimits`, `Device::GetLimits`, and `SharedTextureMemory::GetProperties` from a bool-ish return into `wgpu::Status` (no implicit bool conversion), breaking every `if (!result)` / `if (result)` call site in `cpp/rnwgpu/api/*.cpp`. Building iOS and Android is the way these surface; fix by comparing explicitly (`result == wgpu::Status::Success`).
+
+8. **Verify and commit.** Build and run the example app (see "Development workflow" above for reaching the Tests screen), then commit the submodule bump together with the updated `package.json`.
\ No newline at end of file
diff --git a/packages/webgpu/Package.swift b/packages/webgpu/Package.swift
new file mode 100644
index 0000000000..9760bf4bca
--- /dev/null
+++ b/packages/webgpu/Package.swift
@@ -0,0 +1,191 @@
+// swift-tools-version: 5.9
+// Generated by scripts/generate-package-swift.ts — do not edit by hand.
+// Re-run that script after a new Dawn release to update the URL/checksum below.
+import Foundation
+import PackageDescription
+
+// Integration model: a local Swift package next to a CocoaPods install.
+//
+// This manifest targets React Native 0.81+ (the package's peer range), where
+// React Native's own headers and the RNWgpuViewSpec codegen output only exist
+// inside the consuming app's CocoaPods install. Add this package as a local
+// Swift Package dependency in place of the react-native-webgpu pod (export
+// RNWGPU_USE_SPM=1 for `pod install`) and keep running `pod install` for
+// everything else. The header search paths below point into that Pods
+// directory. They can only be expressed as `unsafeFlags`, and SwiftPM rejects
+// unsafeFlags in anything but a path dependency, so this package can only be
+// consumed locally, never by URL and version.
+//
+// React Native 0.87 added SwiftPM autolinking. There, a dependency shipping
+// its own Package.swift is treated as self-managed and referenced directly,
+// and it consumes React Native's headers as SwiftPM products (ReactHeaders,
+// ReactNativeHeaders, ReactNativeDependenciesHeaders, plus ReactAppHeaders
+// from the app's generated codegen package) with no CocoaPods at all. This
+// manifest does not implement that model yet: on a 0.87+ app that has opted
+// into SwiftPM autolinking it is picked up as self-managed but cannot find
+// React Native's headers. Keep CocoaPods for React Native on those apps.
+
+// Absolute location of this package. Xcode may hand over a symlink (React
+// Native 0.87's autolinker does), so resolve it before deriving sibling paths.
+let packageRoot = URL(fileURLWithPath: Context.packageDirectory)
+ .resolvingSymlinksInPath().path
+let sibling = { (relative: String) -> String in
+ URL(fileURLWithPath: "\(packageRoot)/\(relative)").standardized.path
+}
+
+// Where the consuming app's Pods live. PODS_ROOT is exported by Xcode.app for
+// a real build, but never by plain `xcodebuild`, and never while Xcode indexes
+// the manifest before a first build. SwiftPM also caches manifest evaluations,
+// so an evaluation that ran without it would otherwise be cached with an empty
+// include list and surface later as header-not-found errors. Fall back to
+// where Pods sit relative to this package for every standard app layout, so
+// the result is the same with or without the environment variable.
+let podsRootCandidates = [
+ sibling("../../ios/Pods"), // consumer: /node_modules/react-native-webgpu
+ sibling("../../apps/spm-example/ios/Pods"), // this monorepo
+]
+let podsRoot =
+ ProcessInfo.processInfo.environment["PODS_ROOT"]
+ ?? podsRootCandidates.first { FileManager.default.fileExists(atPath: $0) }
+ ?? podsRootCandidates[0]
+
+// Skia Graphite and WebGPU must link the exact same Dawn, or the pair links
+// fine and crashes at runtime. react-native-skia's podspec enforces this at
+// `pod install` time by comparing its libs/.dawn-version against this
+// package's `dawn` field. A Swift package has no install hook, so the same
+// check runs here, at manifest evaluation. SwiftPM caches evaluations, so
+// after changing either package's Dawn version reset the package caches
+// (File > Packages > Reset Package Caches) if this does not re-run.
+let dawnReleaseTag = "dawn-chrome-m154"
+let skiaCandidates = [
+ sibling("../@shopify/react-native-skia"), // consumer: sibling in node_modules
+ sibling("../../node_modules/@shopify/react-native-skia"), // this monorepo
+]
+for skia in skiaCandidates {
+ // Only Graphite builds of react-native-skia write this marker (Ganesh
+ // builds do not link Dawn and impose no constraint).
+ guard let data = FileManager.default.contents(atPath: "\(skia)/libs/.dawn-version"),
+ let skiaDawn = String(data: data, encoding: .utf8)?
+ .trimmingCharacters(in: .whitespacesAndNewlines)
+ else { continue }
+ if skiaDawn != dawnReleaseTag {
+ fatalError(
+ """
+ react-native-webgpu: Dawn version mismatch. This package links \(dawnReleaseTag) \
+ but the @shopify/react-native-skia Graphite build at \(skia) links \(skiaDawn). \
+ Align the two packages so the app contains exactly one Dawn.
+ """)
+ }
+ break
+}
+
+// Static-library Pods layout. With `use_frameworks!` CocoaPods keeps headers
+// inside each framework instead and none of these paths exist; the podspec
+// refuses RNWGPU_USE_SPM in that mode.
+let publicHeaders = "\(podsRoot)/Headers/Public"
+let privateHeaders = "\(podsRoot)/Headers/Private"
+let headerSearchPaths = [
+ publicHeaders,
+ // Yoga's headers are CocoaPods-private (apps aren't meant to use Yoga's
+ // C++ API directly), but React-Fabric's view props headers include them
+ // transitively.
+ "\(privateHeaders)/Yoga",
+ "\(publicHeaders)/React-Core",
+ "\(publicHeaders)/React-jsi",
+ "\(publicHeaders)/React-callinvoker",
+ "\(publicHeaders)/React-NativeModulesApple",
+ "\(publicHeaders)/React-RCTFabric",
+ "\(publicHeaders)/ReactCodegen",
+ "\(publicHeaders)/RCT-Folly",
+ "\(publicHeaders)/RCTRequired",
+ "\(publicHeaders)/RCTTypeSafety",
+ "\(publicHeaders)/FBLazyVector",
+ "\(publicHeaders)/ReactCommon",
+ "\(publicHeaders)/React-Fabric",
+ "\(publicHeaders)/React-graphics",
+ "\(publicHeaders)/React-utils",
+ "\(publicHeaders)/React-featureflags",
+ "\(publicHeaders)/React-rendererdebug",
+ "\(publicHeaders)/React-debug",
+ "\(publicHeaders)/React-timing",
+ "\(publicHeaders)/React-runtimescheduler",
+ "\(publicHeaders)/React-rendererconsistency",
+ "\(publicHeaders)/React-performancetimeline",
+ "\(publicHeaders)/React-runtimeexecutor",
+ "\(publicHeaders)/React-cxxreact",
+ "\(publicHeaders)/hermes-engine",
+ "\(publicHeaders)/glog",
+ "\(publicHeaders)/DoubleConversion",
+ "\(publicHeaders)/fmt",
+ "\(publicHeaders)/fast_float",
+]
+// The only unsafe flags left: .headerSearchPath cannot escape the target
+// path, and these live in the app's Pods directory.
+let cFamilyIncludeFlags = headerSearchPaths.map { "-I\($0)" }
+let follyDefines: [(name: String, value: String?)] = [
+ ("FOLLY_NO_CONFIG", nil),
+ ("FOLLY_MOBILE", "1"),
+ ("FOLLY_USE_LIBCPP", "1"),
+ ("FOLLY_CFG_NO_COROUTINES", "1"),
+ ("FOLLY_HAVE_CLOCK_GETTIME", "1"),
+]
+
+// Unlike a native Xcode target, SwiftPM doesn't generate an implicit
+// per-target header map, so quoted includes only resolve within the
+// including file's own directory. The sources use bare cross-directory
+// includes (e.g. apple/WebGPUModule.h includes "RNWebGPUManager.h" from
+// cpp/rnwgpu), so every directory that's the target of one of those bare
+// includes has to be listed explicitly here.
+let internalHeaderDirs = [
+ "apple",
+ // "cpp" itself resolves the "webgpu/..." and "dawn/..." namespaced
+ // includes. Those two directories are only present locally when built via
+ // `yarn install-dawn` (without the xcframework's embedded headers); a
+ // remote binaryTarget's xcframework embeds them instead (see
+ // build-dawn.yml's `-headers` flag), so "cpp" not containing them there
+ // is fine — the xcframework's own headers cover it.
+ "cpp",
+ "cpp/jsi",
+ "cpp/rnwgpu",
+ "cpp/rnwgpu/api",
+ "cpp/rnwgpu/api/descriptors",
+ "cpp/rnwgpu/async",
+]
+
+let package = Package(
+ name: "react-native-webgpu",
+ platforms: [.iOS("15.1"), .macOS("11.0")],
+ products: [
+ .library(name: "react-native-webgpu", targets: ["react-native-webgpu"])
+ ],
+ targets: [
+ // Dawn's compiled WebGPU implementation. The xcframework embeds the
+ // `webgpu/` and `dawn/` C headers per-slice (built via `-headers` in
+ // build-dawn.yml), so SPM exposes them to dependents automatically.
+ .binaryTarget(
+ name: "WebGPUDawn",
+ url: "https://github.com/wcandillon/react-native-webgpu/releases/download/dawn-chrome-m154/dawn-apple-dawn-chrome-m154.xcframework.zip",
+ checksum: "896575ffbc99610198a83d061f8c5a2789139b7f16c669fbf3a9f7a7ac9be123"
+ ),
+ .target(
+ name: "react-native-webgpu",
+ dependencies: ["WebGPUDawn"],
+ path: ".",
+ sources: ["apple", "cpp/jsi", "cpp/rnwgpu"],
+ publicHeadersPath: "apple",
+ cSettings: internalHeaderDirs.map { CSetting.headerSearchPath($0) }
+ + follyDefines.map { CSetting.define($0.name, to: $0.value) }
+ + [.unsafeFlags(cFamilyIncludeFlags)],
+ cxxSettings: internalHeaderDirs.map { CXXSetting.headerSearchPath($0) }
+ + follyDefines.map { CXXSetting.define($0.name, to: $0.value) }
+ + [.unsafeFlags(cFamilyIncludeFlags)],
+ linkerSettings: [
+ .linkedFramework("AVFoundation"),
+ .linkedFramework("CoreMedia"),
+ .linkedFramework("CoreVideo"),
+ .linkedFramework("ImageIO"),
+ ]
+ ),
+ ],
+ cxxLanguageStandard: .cxx20
+)
diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUAdapter.cpp b/packages/webgpu/cpp/rnwgpu/api/GPUAdapter.cpp
index 3bfdf2eaa1..aebf171014 100644
--- a/packages/webgpu/cpp/rnwgpu/api/GPUAdapter.cpp
+++ b/packages/webgpu/cpp/rnwgpu/api/GPUAdapter.cpp
@@ -327,7 +327,7 @@ std::unordered_set GPUAdapter::getFeatures() {
std::shared_ptr GPUAdapter::getLimits() {
wgpu::Limits limits{};
- if (!_instance.GetLimits(&limits)) {
+ if (_instance.GetLimits(&limits) != wgpu::Status::Success) {
throw std::runtime_error("Failed to get limits");
}
return std::make_shared(limits);
diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUDevice.cpp b/packages/webgpu/cpp/rnwgpu/api/GPUDevice.cpp
index b90d57bbfc..2172df1106 100644
--- a/packages/webgpu/cpp/rnwgpu/api/GPUDevice.cpp
+++ b/packages/webgpu/cpp/rnwgpu/api/GPUDevice.cpp
@@ -125,7 +125,7 @@ GPUDevice::createBuffer(std::shared_ptr descriptor) {
std::shared_ptr GPUDevice::getLimits() {
wgpu::Limits limits{};
- if (!_instance.GetLimits(&limits)) {
+ if (_instance.GetLimits(&limits) != wgpu::Status::Success) {
throw std::runtime_error("failed to get device limits");
}
return std::make_shared(limits);
diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUExternalTexture.cpp b/packages/webgpu/cpp/rnwgpu/api/GPUExternalTexture.cpp
index 44b2ea4b0c..86751e1319 100644
--- a/packages/webgpu/cpp/rnwgpu/api/GPUExternalTexture.cpp
+++ b/packages/webgpu/cpp/rnwgpu/api/GPUExternalTexture.cpp
@@ -190,7 +190,7 @@ std::shared_ptr GPUExternalTexture::Create(
wgpu::SharedTextureMemoryBeginAccessDescriptor begin{};
begin.initialized = true;
begin.concurrentRead = false;
- if (!memory.BeginAccess(texture, &begin)) {
+ if (memory.BeginAccess(texture, &begin) != wgpu::Status::Success) {
throw std::runtime_error(
"GPUExternalTexture::Create(): BeginAccess failed");
}
@@ -289,7 +289,7 @@ std::shared_ptr GPUExternalTexture::Create(
begin.concurrentRead = false;
wgpu::SharedTextureMemoryVkImageLayoutBeginState beginLayout{};
begin.nextInChain = &beginLayout;
- if (!memory.BeginAccess(texture, &begin)) {
+ if (memory.BeginAccess(texture, &begin) != wgpu::Status::Success) {
throw std::runtime_error(
"GPUExternalTexture::Create(): BeginAccess failed");
}
@@ -310,7 +310,7 @@ std::shared_ptr GPUExternalTexture::Create(
wgpu::SharedTextureMemoryAHardwareBufferProperties ahbProps{};
wgpu::SharedTextureMemoryProperties props{};
props.nextInChain = &ahbProps;
- if (memory.GetProperties(&props)) {
+ if (memory.GetProperties(&props) == wgpu::Status::Success) {
yuvToRgbMatrix = makeYuvToRgbMatrix(ahbProps.yCbCrInfo.vkYCbCrModel,
ahbProps.yCbCrInfo.vkYCbCrRange);
} else {
diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUFeatures.h b/packages/webgpu/cpp/rnwgpu/api/GPUFeatures.h
index ac19c4c6d3..8c0010e382 100644
--- a/packages/webgpu/cpp/rnwgpu/api/GPUFeatures.h
+++ b/packages/webgpu/cpp/rnwgpu/api/GPUFeatures.h
@@ -115,7 +115,8 @@ namespace rnwgpu {
V(RenderPassRenderArea, "render-pass-render-area") \
V(AdapterPropertiesDrm, "adapter-properties-drm") \
V(TextureCompressionUnaligned, "texture-compression-unaligned") \
- V(DawnAllowUndefinedLoadStoreOp, "dawn-allow-undefined-load-store-op")
+ V(DawnAllowUndefinedLoadStoreOp, "dawn-allow-undefined-load-store-op") \
+ V(BufferMapWriteExtendedUsages, "buffer-map-write-extended-usages")
static void convertEnumToJSUnion(wgpu::FeatureName inEnum,
std::string *outUnion) {
diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp b/packages/webgpu/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp
index 6694263d07..b5500cda9e 100644
--- a/packages/webgpu/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp
+++ b/packages/webgpu/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp
@@ -75,7 +75,7 @@ void GPUSharedTextureMemory::beginAccess(
#endif
auto status = _instance.BeginAccess(texture->get(), &desc);
- if (!status) {
+ if (status != wgpu::Status::Success) {
throw std::runtime_error("GPUSharedTextureMemory::beginAccess() failed");
}
}
@@ -101,7 +101,7 @@ jsi::Value GPUSharedTextureMemory::endAccess(jsi::Runtime &runtime,
#endif
auto status = _instance.EndAccess(texture->get(), &state);
- if (!status) {
+ if (status != wgpu::Status::Success) {
throw jsi::JSError(runtime, "GPUSharedTextureMemory::endAccess() failed");
}
diff --git a/packages/webgpu/package.json b/packages/webgpu/package.json
index 31cab03b4c..3444a74139 100644
--- a/packages/webgpu/package.json
+++ b/packages/webgpu/package.json
@@ -20,11 +20,12 @@
"apple/**",
"libs/**",
"*.podspec",
+ "Package.swift",
"app.plugin.js",
"plugin/build/**"
],
- "dawn": "chrome-m152",
- "dawnCommit": "1e897275172a23f27b0022fa6beae3084ed54a9b",
+ "dawn": "chrome-m154",
+ "dawnCommit": "3d786993a7ded64c4ebb4884b9b079db9ad0e580",
"scripts": {
"test": "NODE_OPTIONS='--experimental-require-module' jest -i",
"test:ref": "REFERENCE=true NODE_OPTIONS='--experimental-require-module' jest -i",
@@ -42,7 +43,8 @@
"clang-format-android": "find android/cpp/ -iname \"*.h\" -o -iname \"*.m\" -o -iname \"*.cpp\" | xargs clang-format -i",
"clang-format-common": "find cpp/rnwgpu -iname \"*.h\" -o -iname \"*.m\" -o -iname \"*.cpp\" | xargs clang-format -i",
"cpplint": "cpplint --linelength=230 --filter=-legal/copyright,-whitespace/indent,-whitespace/comments,-whitespace/ending_newline,-build/include_order,-runtime/references,-readability/todo,-whitespace/blank_line,-whitespace/todo,-runtime/int,-build/c++11,-whitespace/parens --exclude=example --exclude=android/.cxx --exclude=cpp/webgpu --exclude=cpp/dawn --exclude=ios --exclude=android/build --exclude=node_modules --recursive .",
- "install-dawn": "tsx scripts/install-dawn.ts"
+ "install-dawn": "tsx scripts/install-dawn.ts",
+ "generate-package-swift": "tsx scripts/generate-package-swift.ts"
},
"keywords": [
"react-native",
diff --git a/packages/webgpu/react-native-webgpu.podspec b/packages/webgpu/react-native-webgpu.podspec
index 12857ffad7..150fefbf55 100644
--- a/packages/webgpu/react-native-webgpu.podspec
+++ b/packages/webgpu/react-native-webgpu.podspec
@@ -14,17 +14,41 @@ Pod::Spec.new do |s|
s.platforms = { :ios => min_ios_version_supported, :osx => "10.15", :visionos => "1.0" }
s.source = { :git => "https://github.com/wcandillon/react-native-webgpu.git", :tag => "#{s.version}" }
- s.source_files = [
- "apple/**/*.{h,c,cc,cpp,m,mm,swift}",
- "cpp/**/*.{h,cpp}"
- ]
+ # RN's autolinking and codegen both key off this podspec being present and
+ # supporting the platform (see react-native.config.js docs: there is no way
+ # to disable CocoaPods linking for a dependency without also disabling
+ # codegen for it). So when the app links react-native-webgpu via the local
+ # Swift Package (packages/webgpu/Package.swift) instead of CocoaPods, this
+ # pod still needs to exist to keep the RNWgpuViewSpec codegen output
+ # flowing — it just shouldn't compile or link anything itself, or the app
+ # would get the native module twice. Set RNWGPU_USE_SPM=1 before
+ # `pod install` for that case.
+ if ENV['RNWGPU_USE_SPM']
+ # The Swift package resolves React Native's headers from the
+ # static-library Pods layout (Pods/Headers/Public). With `use_frameworks!`
+ # CocoaPods keeps headers inside each framework instead, so none of those
+ # paths exist and the package fails to compile with header-not-found
+ # errors that don't point back here. Refuse the combination up front.
+ # The React Native template drives `use_frameworks!` from USE_FRAMEWORKS.
+ if ENV['USE_FRAMEWORKS']
+ raise "react-native-webgpu: RNWGPU_USE_SPM needs the static-library Pods layout. " \
+ "Unset USE_FRAMEWORKS (or drop use_frameworks! from the Podfile) to link " \
+ "react-native-webgpu through its Swift package."
+ end
+ s.source_files = "apple/RNWGUIKit.h"
+ else
+ s.source_files = [
+ "apple/**/*.{h,c,cc,cpp,m,mm,swift}",
+ "cpp/**/*.{h,cpp}"
+ ]
- s.vendored_frameworks = 'libs/apple/libwebgpu_dawn.xcframework'
+ s.vendored_frameworks = 'libs/apple/libwebgpu_dawn.xcframework'
- # The VideoPlayer API uses AVFoundation / CoreMedia, and shared-texture
- # surfaces use CoreVideo (CVPixelBuffer). Link them so their symbols resolve.
- # ImageIO provides CGImageSource, the image decoder behind createImageBitmap.
- s.frameworks = "AVFoundation", "CoreMedia", "CoreVideo", "ImageIO"
+ # The VideoPlayer API uses AVFoundation / CoreMedia, and shared-texture
+ # surfaces use CoreVideo (CVPixelBuffer). Link them so their symbols resolve.
+ # ImageIO provides CGImageSource, the image decoder behind createImageBitmap.
+ s.frameworks = "AVFoundation", "CoreMedia", "CoreVideo", "ImageIO"
+ end
s.pod_target_xcconfig = {
'HEADER_SEARCH_PATHS' => '$(PODS_TARGET_SRCROOT)/cpp',
diff --git a/packages/webgpu/scripts/generate-package-swift.ts b/packages/webgpu/scripts/generate-package-swift.ts
new file mode 100644
index 0000000000..e378d623e7
--- /dev/null
+++ b/packages/webgpu/scripts/generate-package-swift.ts
@@ -0,0 +1,90 @@
+#!/usr/bin/env tsx
+
+// Regenerates packages/webgpu/Package.swift for the Dawn release pinned in
+// package.json ("dawn" field). Run this after build-dawn.yml has published a
+// dawn-apple-.xcframework.zip release asset. Writes the file locally;
+// commit and push it yourself.
+//
+// Pass --local to point the WebGPUDawn binary target at the xcframework
+// already sitting in libs/apple/ (from `yarn install-dawn` or a local Dawn
+// build) instead of downloading the release — useful for iterating on the
+// package/example locally without a network round trip.
+
+import { execSync } from "child_process";
+import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "fs";
+import { tmpdir } from "os";
+import { join } from "path";
+
+import {
+ renderPackageSwift,
+ type WebGPUDawnBinaryTarget,
+} from "./package-swift-template";
+
+const packageJsonPath = join(__dirname, "..", "package.json");
+const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
+const dawnVersion = packageJson.dawn;
+
+if (!dawnVersion) {
+ console.error("No 'dawn' field found in package.json");
+ process.exit(1);
+}
+
+const releaseTag = `dawn-${dawnVersion.replace("/", "-")}`;
+const zipName = `dawn-apple-${releaseTag}.xcframework.zip`;
+const zipUrl = `https://github.com/wcandillon/react-native-webgpu/releases/download/${releaseTag}/${zipName}`;
+const checksumUrl = `${zipUrl}.checksum.txt`;
+
+const fetchChecksum = (): string => {
+ // Prefer the checksum file build-dawn.yml computes and uploads alongside
+ // the zip — avoids re-downloading the (large) xcframework locally.
+ try {
+ const checksum = execSync(`curl -sfL "${checksumUrl}"`, {
+ encoding: "utf-8",
+ }).trim();
+ if (checksum) {
+ console.log(`Using published checksum from ${checksumUrl}`);
+ return checksum;
+ }
+ } catch {
+ console.log(
+ "Published checksum file not found, computing from the zip instead...",
+ );
+ }
+
+ const tmpDir = mkdtempSync(join(tmpdir(), "rnwgpu-package-swift-"));
+ const zipPath = join(tmpDir, zipName);
+ try {
+ execSync(`curl -fL -o "${zipPath}" "${zipUrl}"`, { stdio: "inherit" });
+ return execSync(`swift package compute-checksum "${zipPath}"`, {
+ encoding: "utf-8",
+ }).trim();
+ } finally {
+ rmSync(tmpDir, { recursive: true, force: true });
+ }
+};
+
+const useLocal = process.argv.includes("--local");
+
+console.log(
+ useLocal
+ ? "Generating Package.swift against the local xcframework in libs/apple/..."
+ : `Generating Package.swift for ${releaseTag}...`,
+);
+
+const target: WebGPUDawnBinaryTarget = useLocal
+ ? { kind: "local", path: "libs/apple/libwebgpu_dawn.xcframework" }
+ : { kind: "remote", url: zipUrl, checksum: fetchChecksum() };
+
+const outputPath = join(__dirname, "..", "Package.swift");
+writeFileSync(
+ outputPath,
+ renderPackageSwift({ target, dawnReleaseTag: releaseTag }),
+);
+
+console.log(`Wrote ${outputPath}`);
+if (target.kind === "remote") {
+ console.log(` url: ${target.url}`);
+ console.log(` checksum: ${target.checksum}`);
+} else {
+ console.log(` path: ${target.path}`);
+}
diff --git a/packages/webgpu/scripts/install-dawn.ts b/packages/webgpu/scripts/install-dawn.ts
index 1bf521fd62..a6f31b1d50 100644
--- a/packages/webgpu/scripts/install-dawn.ts
+++ b/packages/webgpu/scripts/install-dawn.ts
@@ -82,7 +82,7 @@ if (!dawnVersion) {
const dawnWorkarounds = [
{
marker: "DAWN_WORKAROUND_DEVICE_DESTROY_BEFORE_SURFACE_RELEASE",
- pin: "chrome-m152",
+ pin: "chrome-m154",
files: ["cpp/rnwgpu/SurfaceRegistry.h", "cpp/rnwgpu/api/GPUDevice.cpp"],
// Android: device.destroy() before the native view is dropped crashed in
// SwapChain::DetachFromSurfaceImpl (Vulkan FencedDeleter of the dead
@@ -163,7 +163,7 @@ const assets = [
},
},
{
- name: `dawn-apple-${releaseTag}.xcframework.tar.gz`,
+ name: `dawn-apple-${releaseTag}.xcframework.zip`,
extractTo: libsDir,
postProcess: () => {
// The extracted xcframework needs to be placed as libs/apple/libwebgpu_dawn.xcframework
@@ -217,7 +217,7 @@ log.subheader("Downloading Assets");
// Add nice names for display
const assetNames: { [key: string]: string } = {
[`dawn-android-${releaseTag}.tar.gz`]: "Android Libraries",
- [`dawn-apple-${releaseTag}.xcframework.tar.gz`]: "Apple Framework",
+ [`dawn-apple-${releaseTag}.xcframework.zip`]: "Apple Framework",
[`dawn-headers-${releaseTag}.tar.gz`]: "C++ Headers",
};
@@ -241,9 +241,15 @@ for (const [index, asset] of assets.entries()) {
process.stdout.write(
` ${colors.dim}${symbols.extract} Extracting...${colors.reset}`,
);
- execSync(`tar -xzf "${tarPath}" -C "${asset.extractTo}"`, {
- stdio: "pipe",
- });
+ if (asset.name.endsWith(".zip")) {
+ execSync(`unzip -q -o "${tarPath}" -d "${asset.extractTo}"`, {
+ stdio: "pipe",
+ });
+ } else {
+ execSync(`tar -xzf "${tarPath}" -C "${asset.extractTo}"`, {
+ stdio: "pipe",
+ });
+ }
process.stdout.write("\r\x1b[K"); // Clear the line
// Remove the tar file after extraction
diff --git a/packages/webgpu/scripts/package-swift-template.ts b/packages/webgpu/scripts/package-swift-template.ts
new file mode 100644
index 0000000000..b9da6d37db
--- /dev/null
+++ b/packages/webgpu/scripts/package-swift-template.ts
@@ -0,0 +1,219 @@
+// Template for the generated packages/webgpu/Package.swift.
+// Kept in its own module so generate-package-swift.ts stays focused on
+// fetching the release metadata.
+
+export type WebGPUDawnBinaryTarget =
+ | { kind: "remote"; url: string; checksum: string }
+ | { kind: "local"; path: string };
+
+export interface PackageSwiftInputs {
+ target: WebGPUDawnBinaryTarget;
+ // Dawn release tag, e.g. "dawn-chrome-m154". Same string that
+ // @shopify/react-native-skia's Graphite installer records in
+ // libs/.dawn-version, which is what the manifest compares against.
+ dawnReleaseTag: string;
+}
+
+const renderBinaryTarget = (target: WebGPUDawnBinaryTarget) =>
+ target.kind === "remote"
+ ? `.binaryTarget(
+ name: "WebGPUDawn",
+ url: "${target.url}",
+ checksum: "${target.checksum}"
+ )`
+ : `.binaryTarget(
+ name: "WebGPUDawn",
+ path: "${target.path}"
+ )`;
+
+export const renderPackageSwift = ({
+ target,
+ dawnReleaseTag,
+}: PackageSwiftInputs) => `// swift-tools-version: 5.9
+// Generated by scripts/generate-package-swift.ts — do not edit by hand.
+// Re-run that script after a new Dawn release to update the URL/checksum below.
+import Foundation
+import PackageDescription
+
+// Integration model: a local Swift package next to a CocoaPods install.
+//
+// This manifest targets React Native 0.81+ (the package's peer range), where
+// React Native's own headers and the RNWgpuViewSpec codegen output only exist
+// inside the consuming app's CocoaPods install. Add this package as a local
+// Swift Package dependency in place of the react-native-webgpu pod (export
+// RNWGPU_USE_SPM=1 for \`pod install\`) and keep running \`pod install\` for
+// everything else. The header search paths below point into that Pods
+// directory. They can only be expressed as \`unsafeFlags\`, and SwiftPM rejects
+// unsafeFlags in anything but a path dependency, so this package can only be
+// consumed locally, never by URL and version.
+//
+// React Native 0.87 added SwiftPM autolinking. There, a dependency shipping
+// its own Package.swift is treated as self-managed and referenced directly,
+// and it consumes React Native's headers as SwiftPM products (ReactHeaders,
+// ReactNativeHeaders, ReactNativeDependenciesHeaders, plus ReactAppHeaders
+// from the app's generated codegen package) with no CocoaPods at all. This
+// manifest does not implement that model yet: on a 0.87+ app that has opted
+// into SwiftPM autolinking it is picked up as self-managed but cannot find
+// React Native's headers. Keep CocoaPods for React Native on those apps.
+
+// Absolute location of this package. Xcode may hand over a symlink (React
+// Native 0.87's autolinker does), so resolve it before deriving sibling paths.
+let packageRoot = URL(fileURLWithPath: Context.packageDirectory)
+ .resolvingSymlinksInPath().path
+let sibling = { (relative: String) -> String in
+ URL(fileURLWithPath: "\\(packageRoot)/\\(relative)").standardized.path
+}
+
+// Where the consuming app's Pods live. PODS_ROOT is exported by Xcode.app for
+// a real build, but never by plain \`xcodebuild\`, and never while Xcode indexes
+// the manifest before a first build. SwiftPM also caches manifest evaluations,
+// so an evaluation that ran without it would otherwise be cached with an empty
+// include list and surface later as header-not-found errors. Fall back to
+// where Pods sit relative to this package for every standard app layout, so
+// the result is the same with or without the environment variable.
+let podsRootCandidates = [
+ sibling("../../ios/Pods"), // consumer: /node_modules/react-native-webgpu
+ sibling("../../apps/spm-example/ios/Pods"), // this monorepo
+]
+let podsRoot =
+ ProcessInfo.processInfo.environment["PODS_ROOT"]
+ ?? podsRootCandidates.first { FileManager.default.fileExists(atPath: $0) }
+ ?? podsRootCandidates[0]
+
+// Skia Graphite and WebGPU must link the exact same Dawn, or the pair links
+// fine and crashes at runtime. react-native-skia's podspec enforces this at
+// \`pod install\` time by comparing its libs/.dawn-version against this
+// package's \`dawn\` field. A Swift package has no install hook, so the same
+// check runs here, at manifest evaluation. SwiftPM caches evaluations, so
+// after changing either package's Dawn version reset the package caches
+// (File > Packages > Reset Package Caches) if this does not re-run.
+let dawnReleaseTag = "${dawnReleaseTag}"
+let skiaCandidates = [
+ sibling("../@shopify/react-native-skia"), // consumer: sibling in node_modules
+ sibling("../../node_modules/@shopify/react-native-skia"), // this monorepo
+]
+for skia in skiaCandidates {
+ // Only Graphite builds of react-native-skia write this marker (Ganesh
+ // builds do not link Dawn and impose no constraint).
+ guard let data = FileManager.default.contents(atPath: "\\(skia)/libs/.dawn-version"),
+ let skiaDawn = String(data: data, encoding: .utf8)?
+ .trimmingCharacters(in: .whitespacesAndNewlines)
+ else { continue }
+ if skiaDawn != dawnReleaseTag {
+ fatalError(
+ """
+ react-native-webgpu: Dawn version mismatch. This package links \\(dawnReleaseTag) \\
+ but the @shopify/react-native-skia Graphite build at \\(skia) links \\(skiaDawn). \\
+ Align the two packages so the app contains exactly one Dawn.
+ """)
+ }
+ break
+}
+
+// Static-library Pods layout. With \`use_frameworks!\` CocoaPods keeps headers
+// inside each framework instead and none of these paths exist; the podspec
+// refuses RNWGPU_USE_SPM in that mode.
+let publicHeaders = "\\(podsRoot)/Headers/Public"
+let privateHeaders = "\\(podsRoot)/Headers/Private"
+let headerSearchPaths = [
+ publicHeaders,
+ // Yoga's headers are CocoaPods-private (apps aren't meant to use Yoga's
+ // C++ API directly), but React-Fabric's view props headers include them
+ // transitively.
+ "\\(privateHeaders)/Yoga",
+ "\\(publicHeaders)/React-Core",
+ "\\(publicHeaders)/React-jsi",
+ "\\(publicHeaders)/React-callinvoker",
+ "\\(publicHeaders)/React-NativeModulesApple",
+ "\\(publicHeaders)/React-RCTFabric",
+ "\\(publicHeaders)/ReactCodegen",
+ "\\(publicHeaders)/RCT-Folly",
+ "\\(publicHeaders)/RCTRequired",
+ "\\(publicHeaders)/RCTTypeSafety",
+ "\\(publicHeaders)/FBLazyVector",
+ "\\(publicHeaders)/ReactCommon",
+ "\\(publicHeaders)/React-Fabric",
+ "\\(publicHeaders)/React-graphics",
+ "\\(publicHeaders)/React-utils",
+ "\\(publicHeaders)/React-featureflags",
+ "\\(publicHeaders)/React-rendererdebug",
+ "\\(publicHeaders)/React-debug",
+ "\\(publicHeaders)/React-timing",
+ "\\(publicHeaders)/React-runtimescheduler",
+ "\\(publicHeaders)/React-rendererconsistency",
+ "\\(publicHeaders)/React-performancetimeline",
+ "\\(publicHeaders)/React-runtimeexecutor",
+ "\\(publicHeaders)/React-cxxreact",
+ "\\(publicHeaders)/hermes-engine",
+ "\\(publicHeaders)/glog",
+ "\\(publicHeaders)/DoubleConversion",
+ "\\(publicHeaders)/fmt",
+ "\\(publicHeaders)/fast_float",
+]
+// The only unsafe flags left: .headerSearchPath cannot escape the target
+// path, and these live in the app's Pods directory.
+let cFamilyIncludeFlags = headerSearchPaths.map { "-I\\($0)" }
+let follyDefines: [(name: String, value: String?)] = [
+ ("FOLLY_NO_CONFIG", nil),
+ ("FOLLY_MOBILE", "1"),
+ ("FOLLY_USE_LIBCPP", "1"),
+ ("FOLLY_CFG_NO_COROUTINES", "1"),
+ ("FOLLY_HAVE_CLOCK_GETTIME", "1"),
+]
+
+// Unlike a native Xcode target, SwiftPM doesn't generate an implicit
+// per-target header map, so quoted includes only resolve within the
+// including file's own directory. The sources use bare cross-directory
+// includes (e.g. apple/WebGPUModule.h includes "RNWebGPUManager.h" from
+// cpp/rnwgpu), so every directory that's the target of one of those bare
+// includes has to be listed explicitly here.
+let internalHeaderDirs = [
+ "apple",
+ // "cpp" itself resolves the "webgpu/..." and "dawn/..." namespaced
+ // includes. Those two directories are only present locally when built via
+ // \`yarn install-dawn\` (without the xcframework's embedded headers); a
+ // remote binaryTarget's xcframework embeds them instead (see
+ // build-dawn.yml's \`-headers\` flag), so "cpp" not containing them there
+ // is fine — the xcframework's own headers cover it.
+ "cpp",
+ "cpp/jsi",
+ "cpp/rnwgpu",
+ "cpp/rnwgpu/api",
+ "cpp/rnwgpu/api/descriptors",
+ "cpp/rnwgpu/async",
+]
+
+let package = Package(
+ name: "react-native-webgpu",
+ platforms: [.iOS("15.1"), .macOS("11.0")],
+ products: [
+ .library(name: "react-native-webgpu", targets: ["react-native-webgpu"])
+ ],
+ targets: [
+ // Dawn's compiled WebGPU implementation. The xcframework embeds the
+ // \`webgpu/\` and \`dawn/\` C headers per-slice (built via \`-headers\` in
+ // build-dawn.yml), so SPM exposes them to dependents automatically.
+ ${renderBinaryTarget(target)},
+ .target(
+ name: "react-native-webgpu",
+ dependencies: ["WebGPUDawn"],
+ path: ".",
+ sources: ["apple", "cpp/jsi", "cpp/rnwgpu"],
+ publicHeadersPath: "apple",
+ cSettings: internalHeaderDirs.map { CSetting.headerSearchPath($0) }
+ + follyDefines.map { CSetting.define($0.name, to: $0.value) }
+ + [.unsafeFlags(cFamilyIncludeFlags)],
+ cxxSettings: internalHeaderDirs.map { CXXSetting.headerSearchPath($0) }
+ + follyDefines.map { CXXSetting.define($0.name, to: $0.value) }
+ + [.unsafeFlags(cFamilyIncludeFlags)],
+ linkerSettings: [
+ .linkedFramework("AVFoundation"),
+ .linkedFramework("CoreMedia"),
+ .linkedFramework("CoreVideo"),
+ .linkedFramework("ImageIO"),
+ ]
+ ),
+ ],
+ cxxLanguageStandard: .cxx20
+)
+`;
diff --git a/yarn.lock b/yarn.lock
index bf861f6d0c..874adeb48c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1423,7 +1423,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-env@npm:^7.18.2, @babel/preset-env@npm:^7.25.0":
+"@babel/preset-env@npm:^7.18.2, @babel/preset-env@npm:^7.25.0, @babel/preset-env@npm:^7.25.3":
version: 7.29.7
resolution: "@babel/preset-env@npm:7.29.7"
dependencies:
@@ -1994,7 +1994,7 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.4.0":
+"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1":
version: 4.12.2
resolution: "@eslint-community/regexpp@npm:4.12.2"
checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120
@@ -2028,6 +2028,23 @@ __metadata:
languageName: node
linkType: hard
+"@eslint/eslintrc@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "@eslint/eslintrc@npm:2.1.4"
+ dependencies:
+ ajv: ^6.12.4
+ debug: ^4.3.2
+ espree: ^9.6.0
+ globals: ^13.19.0
+ ignore: ^5.2.0
+ import-fresh: ^3.2.1
+ js-yaml: ^4.1.0
+ minimatch: ^3.1.2
+ strip-json-comments: ^3.1.1
+ checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127
+ languageName: node
+ linkType: hard
+
"@eslint/eslintrc@npm:^3.3.1":
version: 3.3.6
resolution: "@eslint/eslintrc@npm:3.3.6"
@@ -2045,6 +2062,13 @@ __metadata:
languageName: node
linkType: hard
+"@eslint/js@npm:8.57.1":
+ version: 8.57.1
+ resolution: "@eslint/js@npm:8.57.1"
+ checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880
+ languageName: node
+ linkType: hard
+
"@eslint/js@npm:9.35.0":
version: 9.35.0
resolution: "@eslint/js@npm:9.35.0"
@@ -2733,6 +2757,17 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/config-array@npm:^0.13.0":
+ version: 0.13.0
+ resolution: "@humanwhocodes/config-array@npm:0.13.0"
+ dependencies:
+ "@humanwhocodes/object-schema": ^2.0.3
+ debug: ^4.3.1
+ minimatch: ^3.0.5
+ checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
@@ -2740,6 +2775,13 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/object-schema@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "@humanwhocodes/object-schema@npm:2.0.3"
+ checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2":
version: 0.4.3
resolution: "@humanwhocodes/retry@npm:0.4.3"
@@ -3510,7 +3552,7 @@ __metadata:
languageName: node
linkType: hard
-"@nodelib/fs.walk@npm:^1.2.3":
+"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
@@ -4577,6 +4619,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-clean@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-clean@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ execa: ^5.0.0
+ fast-glob: ^3.3.2
+ checksum: 61e44c35d4dab0f037a3c8993056ac870c2b9492bc8452cabbc61ea7ff5ce3a55f4c5c1be799f9a943ad470911985783024863d0cfd2b81fee79063023a1d52b
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-clean@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-clean@npm:20.2.0"
@@ -4589,6 +4643,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-config-android@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-config-android@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ fast-glob: ^3.3.2
+ fast-xml-parser: ^4.4.1
+ checksum: cae974e97e1e814add722718f79b6fed5195beb9599209c327f5f26e51c24ba7cec551c4c6240cccfca455d6986f7ca2e8a64c3542d2117c0e0728f281569a30
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-config-android@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-config-android@npm:20.2.0"
@@ -4601,6 +4667,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-config-apple@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-config-apple@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ execa: ^5.0.0
+ fast-glob: ^3.3.2
+ checksum: b8ffb7d528dca06f1a6e99f5429f65bc6dee10b61059f229bc8c07a7a1096377495905020b7ead6251d47ed1faf1f85db9a68b3db69286a9b6d0753663d52266
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-config-apple@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-config-apple@npm:20.2.0"
@@ -4613,6 +4691,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-config@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-config@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ cosmiconfig: ^9.0.0
+ deepmerge: ^4.3.0
+ fast-glob: ^3.3.2
+ joi: ^17.2.1
+ checksum: 5d516474dfde07b2c725fc8b3755a7928bb3bb9c279cb574bd05e76851de8a91aa46879729b7a5ba0f65cd81f793fe69b891e9229d34d497914d83fb986c6a38
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-config@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-config@npm:20.2.0"
@@ -4627,6 +4719,29 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-doctor@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-doctor@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-config": 20.0.0
+ "@react-native-community/cli-platform-android": 20.0.0
+ "@react-native-community/cli-platform-apple": 20.0.0
+ "@react-native-community/cli-platform-ios": 20.0.0
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ command-exists: ^1.2.8
+ deepmerge: ^4.3.0
+ envinfo: ^7.13.0
+ execa: ^5.0.0
+ node-stream-zip: ^1.9.1
+ ora: ^5.4.1
+ semver: ^7.5.2
+ wcwidth: ^1.0.1
+ yaml: ^2.2.1
+ checksum: aa80df1ebaf71741292608806ae408d506707e3c7e5894cf34c2470b1f0635fa4ef79dc653febcc2bad6dcddbc357f93a99706f758dc450a0a44f8b163df5227
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-doctor@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-doctor@npm:20.2.0"
@@ -4650,6 +4765,19 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-android@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-platform-android@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-config-android": 20.0.0
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ execa: ^5.0.0
+ logkitty: ^0.7.1
+ checksum: c619c5f871b90d49b06cb96630884d8e8439f56d43d9734401c77f062ba5312134049168a4754ecd55770b86a0a7708c8f2e52b06f058f443415a0b008932829
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-android@npm:20.2.0, @react-native-community/cli-platform-android@npm:^20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-platform-android@npm:20.2.0"
@@ -4663,6 +4791,19 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-apple@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-platform-apple@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-config-apple": 20.0.0
+ "@react-native-community/cli-tools": 20.0.0
+ chalk: ^4.1.2
+ execa: ^5.0.0
+ fast-xml-parser: ^4.4.1
+ checksum: 10c457a95b8bf69463dadd3a6d426550866f91cbd5de9a1f2c76e08098f37c3422e41edfb5fb1b1252dd4ff4ca4740bd71411d81213ddb93c0069426f8c63988
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-apple@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-platform-apple@npm:20.2.0"
@@ -4676,6 +4817,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-ios@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-platform-ios@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-platform-apple": 20.0.0
+ checksum: c7fc89332a7cb9fa71c1c5d4fe928d39b0514c74fdcc85251a7a35344f1f5e9e3b4cd23a85a70ce447dded6e6552a5edfa848cf07d8b26127a0c3b05ce3e1768
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-ios@npm:20.2.0, @react-native-community/cli-platform-ios@npm:^20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-platform-ios@npm:20.2.0"
@@ -4685,6 +4835,24 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-server-api@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-server-api@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-tools": 20.0.0
+ body-parser: ^1.20.3
+ compression: ^1.7.1
+ connect: ^3.6.5
+ errorhandler: ^1.5.1
+ nocache: ^3.0.1
+ open: ^6.2.0
+ pretty-format: ^29.7.0
+ serve-static: ^1.13.1
+ ws: ^6.2.3
+ checksum: 60dfd1d0cb9f0026cd2b267ab57902a4ecc57513240230fd8263b683c6ad9356c6202595f4262fc2a07d23cafbdf7b9d4c95fa7fae25472f25c7b87905c13305
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-server-api@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-server-api@npm:20.2.0"
@@ -4703,6 +4871,24 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-tools@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-tools@npm:20.0.0"
+ dependencies:
+ "@vscode/sudo-prompt": ^9.0.0
+ appdirsjs: ^1.2.4
+ chalk: ^4.1.2
+ execa: ^5.0.0
+ find-up: ^5.0.0
+ launch-editor: ^2.9.1
+ mime: ^2.4.1
+ ora: ^5.4.1
+ prompts: ^2.4.2
+ semver: ^7.5.2
+ checksum: 6169f18e399a507e7f8b6fc8ddea113c0272b22b0af8cffdeb3f4ce77d61eaef97aff8aaede17c6501d470adaaf9e87411e1978e1be61202a98f53abe10ac224
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-tools@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-tools@npm:20.2.0"
@@ -4721,6 +4907,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-types@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli-types@npm:20.0.0"
+ dependencies:
+ joi: ^17.2.1
+ checksum: b64b03ff09eb3952c37ba96544156f0b6ffa76e616361a48254e645f914beaa844943ff77ee1fba46445ef8b45f726109fc9ad249afb9d360602cb03db846368
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-types@npm:20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli-types@npm:20.2.0"
@@ -4730,6 +4925,31 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@react-native-community/cli@npm:20.0.0"
+ dependencies:
+ "@react-native-community/cli-clean": 20.0.0
+ "@react-native-community/cli-config": 20.0.0
+ "@react-native-community/cli-doctor": 20.0.0
+ "@react-native-community/cli-server-api": 20.0.0
+ "@react-native-community/cli-tools": 20.0.0
+ "@react-native-community/cli-types": 20.0.0
+ chalk: ^4.1.2
+ commander: ^9.4.1
+ deepmerge: ^4.3.0
+ execa: ^5.0.0
+ find-up: ^5.0.0
+ fs-extra: ^8.1.0
+ graceful-fs: ^4.1.3
+ prompts: ^2.4.2
+ semver: ^7.5.2
+ bin:
+ rnc-cli: build/bin.js
+ checksum: 70a48fef9a9b5c70c3c8cceae076ee25a791e57e20b956a63d24790d8c3a571a069f9114f731384e1cb14fa56721a82faec3a53095a8c4062a2584e2ee862542
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli@npm:^20.2.0":
version: 20.2.0
resolution: "@react-native-community/cli@npm:20.2.0"
@@ -4851,6 +5071,16 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/babel-plugin-codegen@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/babel-plugin-codegen@npm:0.81.4"
+ dependencies:
+ "@babel/traverse": ^7.25.3
+ "@react-native/codegen": 0.81.4
+ checksum: 704029a644781f4fcbba2af53ae1c6ca20042a97ac5fdaf97531d609e442d2298ebc507db568bcf3e23604f66f4fcee4eb2a13a1a95bb89d7d4d7adffb75ee0b
+ languageName: node
+ linkType: hard
+
"@react-native/babel-plugin-codegen@npm:0.86.3":
version: 0.86.3
resolution: "@react-native/babel-plugin-codegen@npm:0.86.3"
@@ -4916,6 +5146,61 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/babel-preset@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/babel-preset@npm:0.81.4"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/plugin-proposal-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-dynamic-import": ^7.8.3
+ "@babel/plugin-syntax-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
+ "@babel/plugin-syntax-optional-chaining": ^7.8.3
+ "@babel/plugin-transform-arrow-functions": ^7.24.7
+ "@babel/plugin-transform-async-generator-functions": ^7.25.4
+ "@babel/plugin-transform-async-to-generator": ^7.24.7
+ "@babel/plugin-transform-block-scoping": ^7.25.0
+ "@babel/plugin-transform-class-properties": ^7.25.4
+ "@babel/plugin-transform-classes": ^7.25.4
+ "@babel/plugin-transform-computed-properties": ^7.24.7
+ "@babel/plugin-transform-destructuring": ^7.24.8
+ "@babel/plugin-transform-flow-strip-types": ^7.25.2
+ "@babel/plugin-transform-for-of": ^7.24.7
+ "@babel/plugin-transform-function-name": ^7.25.1
+ "@babel/plugin-transform-literals": ^7.25.2
+ "@babel/plugin-transform-logical-assignment-operators": ^7.24.7
+ "@babel/plugin-transform-modules-commonjs": ^7.24.8
+ "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7
+ "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
+ "@babel/plugin-transform-numeric-separator": ^7.24.7
+ "@babel/plugin-transform-object-rest-spread": ^7.24.7
+ "@babel/plugin-transform-optional-catch-binding": ^7.24.7
+ "@babel/plugin-transform-optional-chaining": ^7.24.8
+ "@babel/plugin-transform-parameters": ^7.24.7
+ "@babel/plugin-transform-private-methods": ^7.24.7
+ "@babel/plugin-transform-private-property-in-object": ^7.24.7
+ "@babel/plugin-transform-react-display-name": ^7.24.7
+ "@babel/plugin-transform-react-jsx": ^7.25.2
+ "@babel/plugin-transform-react-jsx-self": ^7.24.7
+ "@babel/plugin-transform-react-jsx-source": ^7.24.7
+ "@babel/plugin-transform-regenerator": ^7.24.7
+ "@babel/plugin-transform-runtime": ^7.24.7
+ "@babel/plugin-transform-shorthand-properties": ^7.24.7
+ "@babel/plugin-transform-spread": ^7.24.7
+ "@babel/plugin-transform-sticky-regex": ^7.24.7
+ "@babel/plugin-transform-typescript": ^7.25.2
+ "@babel/plugin-transform-unicode-regex": ^7.24.7
+ "@babel/template": ^7.25.0
+ "@react-native/babel-plugin-codegen": 0.81.4
+ babel-plugin-syntax-hermes-parser: 0.29.1
+ babel-plugin-transform-flow-enums: ^0.0.2
+ react-refresh: ^0.14.0
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 49eae5d59f48d37f15944bdbff30e30280153bb12c0e69aa7cf27ba24772bcae5f9ed0e76dc0e6c258d5ecf0f36d8c4780bebb6502d4b52535e36891909942f0
+ languageName: node
+ linkType: hard
+
"@react-native/codegen@npm:0.79.6":
version: 0.79.6
resolution: "@react-native/codegen@npm:0.79.6"
@@ -5239,6 +5524,29 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/eslint-config@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/eslint-config@npm:0.81.4"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/eslint-parser": ^7.25.1
+ "@react-native/eslint-plugin": 0.81.4
+ "@typescript-eslint/eslint-plugin": ^7.1.1
+ "@typescript-eslint/parser": ^7.1.1
+ eslint-config-prettier: ^8.5.0
+ eslint-plugin-eslint-comments: ^3.2.0
+ eslint-plugin-ft-flow: ^2.0.1
+ eslint-plugin-jest: ^27.9.0
+ eslint-plugin-react: ^7.30.1
+ eslint-plugin-react-hooks: ^5.2.0
+ eslint-plugin-react-native: ^4.0.0
+ peerDependencies:
+ eslint: ">=8"
+ prettier: ">=2"
+ checksum: e601fe1298710557916a0ab3c32975ab0e65319c78edaca7369eded6eea4f94ab4a00c1eafd437f93a82baa93cdfbd2a930ceb1b82b4a2e92f51d490184dd1b1
+ languageName: node
+ linkType: hard
+
"@react-native/eslint-plugin@npm:0.81.0":
version: 0.81.0
resolution: "@react-native/eslint-plugin@npm:0.81.0"
@@ -5246,6 +5554,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/eslint-plugin@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/eslint-plugin@npm:0.81.4"
+ checksum: e9c3ada247dfa410ae5f0ed20fb12ec79193a1140ec643d2cf822d472f7951e51247b4b235924faef0763efed73432dcfb203fd4af3c7abd8ccc10442efa6c31
+ languageName: node
+ linkType: hard
+
"@react-native/gradle-plugin@npm:0.79.6":
version: 0.79.6
resolution: "@react-native/gradle-plugin@npm:0.79.6"
@@ -5316,6 +5631,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/metro-babel-transformer@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/metro-babel-transformer@npm:0.81.4"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@react-native/babel-preset": 0.81.4
+ hermes-parser: 0.29.1
+ nullthrows: ^1.1.1
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 46f2793a1190becedaebc7a85070e03cd386180805d1082af1e206255b6395e7f749d82ba6736f343f8c9b447755c79d6c5ab11cde36688c45add9d56388db88
+ languageName: node
+ linkType: hard
+
"@react-native/metro-config@npm:0.81.0":
version: 0.81.0
resolution: "@react-native/metro-config@npm:0.81.0"
@@ -5328,6 +5657,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/metro-config@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/metro-config@npm:0.81.4"
+ dependencies:
+ "@react-native/js-polyfills": 0.81.4
+ "@react-native/metro-babel-transformer": 0.81.4
+ metro-config: ^0.83.1
+ metro-runtime: ^0.83.1
+ checksum: 3ae2a2c55cb988da8a35f5f119b19a476dd85388d4c4970e33fc9af7886d2bba7d894743b997a4cac7389125b87ed1aac436cd0e2426d3ea06bc1cde4838d866
+ languageName: node
+ linkType: hard
+
"@react-native/normalize-colors@npm:0.79.6":
version: 0.79.6
resolution: "@react-native/normalize-colors@npm:0.79.6"
@@ -5370,6 +5711,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/typescript-config@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/typescript-config@npm:0.81.4"
+ checksum: 21e517036fe5e423d4bb67739168743374c40641dfb2dde080b13bdd68126f280707ebf7d2780df23f5cf7805c759f1db2705473de35f1d3b7761256d2694c7e
+ languageName: node
+ linkType: hard
+
"@react-native/virtualized-lists@npm:0.79.6":
version: 0.79.6
resolution: "@react-native/virtualized-lists@npm:0.79.6"
@@ -7650,7 +7998,7 @@ __metadata:
languageName: node
linkType: hard
-"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.3.0":
+"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0, @ungap/structured-clone@npm:^1.3.0":
version: 1.4.0
resolution: "@ungap/structured-clone@npm:1.4.0"
checksum: 2a69d69c54600b0e7acd1755cfd4f80e2bf5a57f999d4c3f4023ef69d94ca8a86520e3369edb635f0925c67af87c7f0b6f1a7177a682e8bbb66fb7973180102d
@@ -8065,7 +8413,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^8.0.0, acorn@npm:^8.15.0":
+"acorn@npm:^8.0.0, acorn@npm:^8.15.0, acorn@npm:^8.9.0":
version: 8.18.0
resolution: "acorn@npm:8.18.0"
bin:
@@ -8980,6 +9328,26 @@ __metadata:
languageName: node
linkType: hard
+"body-parser@npm:^1.20.3":
+ version: 1.20.8
+ resolution: "body-parser@npm:1.20.8"
+ dependencies:
+ bytes: ~3.1.2
+ content-type: ~1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: ~1.2.0
+ http-errors: ~2.0.1
+ iconv-lite: ~0.4.24
+ on-finished: ~2.4.1
+ qs: ~6.16.0
+ raw-body: ~2.5.3
+ type-is: ~1.6.18
+ unpipe: ~1.0.0
+ checksum: 7add892e93070136dc3fab558f8f77cc9b8cee360e8660cc724c7162d70cebe0c5ca94a0346a60e2e7442600c2357c0758bd3e4eb4d4e3a92420c9b8c90912a0
+ languageName: node
+ linkType: hard
+
"body-parser@npm:^2.2.2":
version: 2.3.0
resolution: "body-parser@npm:2.3.0"
@@ -9874,6 +10242,13 @@ __metadata:
languageName: node
linkType: hard
+"content-type@npm:~1.0.5":
+ version: 1.0.5
+ resolution: "content-type@npm:1.0.5"
+ checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766
+ languageName: node
+ linkType: hard
+
"conventional-changelog-angular@npm:^8.0.0":
version: 8.3.1
resolution: "conventional-changelog-angular@npm:8.3.1"
@@ -10064,7 +10439,7 @@ __metadata:
languageName: node
linkType: hard
-"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6":
+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6":
version: 7.0.6
resolution: "cross-spawn@npm:7.0.6"
dependencies:
@@ -10996,7 +11371,7 @@ __metadata:
languageName: node
linkType: hard
-"destroy@npm:1.2.0":
+"destroy@npm:1.2.0, destroy@npm:~1.2.0":
version: 1.2.0
resolution: "destroy@npm:1.2.0"
checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38
@@ -11116,6 +11491,15 @@ __metadata:
languageName: node
linkType: hard
+"doctrine@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "doctrine@npm:3.0.0"
+ dependencies:
+ esutils: ^2.0.2
+ checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce
+ languageName: node
+ linkType: hard
+
"dompurify@npm:^3.3.3":
version: 3.4.14
resolution: "dompurify@npm:3.4.14"
@@ -11972,6 +12356,16 @@ __metadata:
languageName: node
linkType: hard
+"eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
+ dependencies:
+ esrecurse: ^4.3.0
+ estraverse: ^5.2.0
+ checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e
+ languageName: node
+ linkType: hard
+
"eslint-scope@npm:^8.4.0":
version: 8.4.0
resolution: "eslint-scope@npm:8.4.0"
@@ -11989,7 +12383,7 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3":
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
@@ -12060,6 +12454,54 @@ __metadata:
languageName: node
linkType: hard
+"eslint@npm:^8.19.0":
+ version: 8.57.1
+ resolution: "eslint@npm:8.57.1"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.2.0
+ "@eslint-community/regexpp": ^4.6.1
+ "@eslint/eslintrc": ^2.1.4
+ "@eslint/js": 8.57.1
+ "@humanwhocodes/config-array": ^0.13.0
+ "@humanwhocodes/module-importer": ^1.0.1
+ "@nodelib/fs.walk": ^1.2.8
+ "@ungap/structured-clone": ^1.2.0
+ ajv: ^6.12.4
+ chalk: ^4.0.0
+ cross-spawn: ^7.0.2
+ debug: ^4.3.2
+ doctrine: ^3.0.0
+ escape-string-regexp: ^4.0.0
+ eslint-scope: ^7.2.2
+ eslint-visitor-keys: ^3.4.3
+ espree: ^9.6.1
+ esquery: ^1.4.2
+ esutils: ^2.0.2
+ fast-deep-equal: ^3.1.3
+ file-entry-cache: ^6.0.1
+ find-up: ^5.0.0
+ glob-parent: ^6.0.2
+ globals: ^13.19.0
+ graphemer: ^1.4.0
+ ignore: ^5.2.0
+ imurmurhash: ^0.1.4
+ is-glob: ^4.0.0
+ is-path-inside: ^3.0.3
+ js-yaml: ^4.1.0
+ json-stable-stringify-without-jsonify: ^1.0.1
+ levn: ^0.4.1
+ lodash.merge: ^4.6.2
+ minimatch: ^3.1.2
+ natural-compare: ^1.4.0
+ optionator: ^0.9.3
+ strip-ansi: ^6.0.1
+ text-table: ^0.2.0
+ bin:
+ eslint: bin/eslint.js
+ checksum: e2489bb7f86dd2011967759a09164e65744ef7688c310bc990612fc26953f34cc391872807486b15c06833bdff737726a23e9b4cdba5de144c311377dc41d91b
+ languageName: node
+ linkType: hard
+
"espree@npm:^10.0.1, espree@npm:^10.4.0":
version: 10.4.0
resolution: "espree@npm:10.4.0"
@@ -12071,6 +12513,17 @@ __metadata:
languageName: node
linkType: hard
+"espree@npm:^9.6.0, espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
+ dependencies:
+ acorn: ^8.9.0
+ acorn-jsx: ^5.3.2
+ eslint-visitor-keys: ^3.4.1
+ checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9
+ languageName: node
+ linkType: hard
+
"esprima@npm:^4.0.0, esprima@npm:^4.0.1":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
@@ -12081,7 +12534,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.5.0":
+"esquery@npm:^1.4.2, esquery@npm:^1.5.0":
version: 1.7.0
resolution: "esquery@npm:1.7.0"
dependencies:
@@ -12736,7 +13189,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-xml-parser@npm:^4.0.0":
+"fast-xml-parser@npm:^4.0.0, fast-xml-parser@npm:^4.4.1":
version: 4.5.7
resolution: "fast-xml-parser@npm:4.5.7"
dependencies:
@@ -12896,6 +13349,15 @@ __metadata:
languageName: node
linkType: hard
+"file-entry-cache@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "file-entry-cache@npm:6.0.1"
+ dependencies:
+ flat-cache: ^3.0.4
+ checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74
+ languageName: node
+ linkType: hard
+
"file-entry-cache@npm:^8.0.0":
version: 8.0.0
resolution: "file-entry-cache@npm:8.0.0"
@@ -12982,6 +13444,17 @@ __metadata:
languageName: node
linkType: hard
+"flat-cache@npm:^3.0.4":
+ version: 3.2.0
+ resolution: "flat-cache@npm:3.2.0"
+ dependencies:
+ flatted: ^3.2.9
+ keyv: ^4.5.3
+ rimraf: ^3.0.2
+ checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec
+ languageName: node
+ linkType: hard
+
"flat-cache@npm:^4.0.0":
version: 4.0.1
resolution: "flat-cache@npm:4.0.1"
@@ -13677,6 +14150,15 @@ __metadata:
languageName: node
linkType: hard
+"globals@npm:^13.19.0":
+ version: 13.24.0
+ resolution: "globals@npm:13.24.0"
+ dependencies:
+ type-fest: ^0.20.2
+ checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c
+ languageName: node
+ linkType: hard
+
"globals@npm:^14.0.0":
version: 14.0.0
resolution: "globals@npm:14.0.0"
@@ -14242,7 +14724,7 @@ __metadata:
languageName: node
linkType: hard
-"iconv-lite@npm:0.4":
+"iconv-lite@npm:0.4, iconv-lite@npm:~0.4.24":
version: 0.4.24
resolution: "iconv-lite@npm:0.4.24"
dependencies:
@@ -14815,7 +15297,7 @@ __metadata:
languageName: node
linkType: hard
-"is-path-inside@npm:^3.0.2":
+"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9
@@ -15883,7 +16365,7 @@ __metadata:
languageName: node
linkType: hard
-"keyv@npm:^4.5.4":
+"keyv@npm:^4.5.3, keyv@npm:^4.5.4":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
@@ -16950,6 +17432,13 @@ __metadata:
languageName: node
linkType: hard
+"media-typer@npm:0.3.0":
+ version: 0.3.0
+ resolution: "media-typer@npm:0.3.0"
+ checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1
+ languageName: node
+ linkType: hard
+
"media-typer@npm:^1.1.0":
version: 1.1.1
resolution: "media-typer@npm:1.1.1"
@@ -18411,7 +18900,7 @@ __metadata:
languageName: node
linkType: hard
-"mime-types@npm:^2.1.27, mime-types@npm:^2.1.35, mime-types@npm:~2.1.34":
+"mime-types@npm:^2.1.27, mime-types@npm:^2.1.35, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -18486,7 +18975,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5":
+"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5":
version: 3.1.5
resolution: "minimatch@npm:3.1.5"
dependencies:
@@ -20428,7 +20917,7 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:^6.15.2":
+"qs@npm:^6.15.2, qs@npm:~6.16.0":
version: 6.16.0
resolution: "qs@npm:6.16.0"
dependencies:
@@ -20492,6 +20981,18 @@ __metadata:
languageName: node
linkType: hard
+"raw-body@npm:~2.5.3":
+ version: 2.5.3
+ resolution: "raw-body@npm:2.5.3"
+ dependencies:
+ bytes: ~3.1.2
+ http-errors: ~2.0.1
+ iconv-lite: ~0.4.24
+ unpipe: ~1.0.0
+ checksum: 16aa51e504318ebeef7f84a4d884c0f273cb0b7f3f14ea88788f92f5f488870617c97d4f886e84f119f21a2d6cdda3c4554821f8b18ed6be0d731ecb5a063d2a
+ languageName: node
+ linkType: hard
+
"rc@npm:^1.2.8":
version: 1.2.8
resolution: "rc@npm:1.2.8"
@@ -22701,6 +23202,29 @@ __metadata:
languageName: node
linkType: hard
+"spm-example@workspace:apps/spm-example":
+ version: 0.0.0-use.local
+ resolution: "spm-example@workspace:apps/spm-example"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/preset-env": ^7.25.3
+ "@babel/runtime": ^7.25.0
+ "@react-native-community/cli": 20.0.0
+ "@react-native-community/cli-platform-ios": 20.0.0
+ "@react-native/babel-preset": 0.81.4
+ "@react-native/eslint-config": 0.81.4
+ "@react-native/metro-config": 0.81.4
+ "@react-native/typescript-config": 0.81.4
+ "@types/react": ^19.1.0
+ eslint: ^8.19.0
+ prettier: 2.8.8
+ react: 19.1.0
+ react-native: 0.81.4
+ react-native-webgpu: "workspace:*"
+ typescript: ^5.8.3
+ languageName: unknown
+ linkType: soft
+
"sprintf-js@npm:~1.0.2":
version: 1.0.3
resolution: "sprintf-js@npm:1.0.3"
@@ -23366,7 +23890,7 @@ __metadata:
languageName: node
linkType: hard
-"text-table@npm:~0.2.0":
+"text-table@npm:^0.2.0, text-table@npm:~0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a
@@ -23746,6 +24270,13 @@ __metadata:
languageName: node
linkType: hard
+"type-fest@npm:^0.20.2":
+ version: 0.20.2
+ resolution: "type-fest@npm:0.20.2"
+ checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73
+ languageName: node
+ linkType: hard
+
"type-fest@npm:^0.21.3":
version: 0.21.3
resolution: "type-fest@npm:0.21.3"
@@ -23808,6 +24339,16 @@ __metadata:
languageName: node
linkType: hard
+"type-is@npm:~1.6.18":
+ version: 1.6.18
+ resolution: "type-is@npm:1.6.18"
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: ~2.1.24
+ checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657
+ languageName: node
+ linkType: hard
+
"typed-array-buffer@npm:^1.0.3":
version: 1.0.3
resolution: "typed-array-buffer@npm:1.0.3"
@@ -23898,7 +24439,7 @@ __metadata:
languageName: node
linkType: hard
-"typescript@npm:^5.2.2, typescript@npm:^5.9.2":
+"typescript@npm:^5.2.2, typescript@npm:^5.8.3, typescript@npm:^5.9.2":
version: 5.9.3
resolution: "typescript@npm:5.9.3"
bin:
@@ -23928,7 +24469,7 @@ __metadata:
languageName: node
linkType: hard
-"typescript@patch:typescript@^5.2.2#~builtin, typescript@patch:typescript@^5.9.2#~builtin":
+"typescript@patch:typescript@^5.2.2#~builtin, typescript@patch:typescript@^5.8.3#~builtin, typescript@patch:typescript@^5.9.2#~builtin":
version: 5.9.3
resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin::version=5.9.3&hash=29ae49"
bin: