diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index b7a0873bfe68..2e1f876bc0a4 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -623,7 +623,7 @@ jobs: uses: ./.github/actions/yarn-install - name: Build packages shell: bash - run: yarn build + run: yarn build --prepack - name: Verify debugger-shell build shell: bash run: node scripts/debugger-shell/build-binary.js diff --git a/gradle.properties b/gradle.properties index d7c39175371a..3e7127618758 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,11 +19,11 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # Controls whether to use Hermes from stable builds. This will force hermes version # set in the sdks/hermes-engine/version.properties file to be used. This has a higher # priority than react.internal.useHermesNightly. -react.internal.useHermesStable=false +react.internal.useHermesStable=true # Controls whether to use Hermes from nightly builds. This will speed up builds # but should NOT be turned on for CI or release builds. -react.internal.useHermesNightly=true +react.internal.useHermesNightly=false # Controls whether to use Hermes 1.0. Clean and rebuild when changing. hermesV1Enabled=true diff --git a/package.json b/package.json index 1d1138167783..9eef756352bf 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "@jest/create-cache-key-function": "^29.7.0", "@microsoft/api-extractor": "^7.52.2", "@octokit/rest": "^22.0.0", - "@react-native/metro-babel-transformer": "0.85.0-main", - "@react-native/metro-config": "0.85.0-main", + "@react-native/metro-babel-transformer": "0.85.2", + "@react-native/metro-config": "0.85.2", "@tsconfig/node22": "22.0.2", "@types/react": "^19.1.0", "@typescript-eslint/parser": "^8.36.0", diff --git a/packages/assets/package.json b/packages/assets/package.json index fefd1afaec4d..d8fbe135ad4a 100644 --- a/packages/assets/package.json +++ b/packages/assets/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/assets-registry", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Asset support code for React Native.", "license": "MIT", "repository": { diff --git a/packages/babel-plugin-codegen/package.json b/packages/babel-plugin-codegen/package.json index 4a50dd44f55b..ede9975c3670 100644 --- a/packages/babel-plugin-codegen/package.json +++ b/packages/babel-plugin-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/babel-plugin-codegen", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Babel plugin to generate native module and view manager code for React Native.", "license": "MIT", "repository": { @@ -26,7 +26,7 @@ ], "dependencies": { "@babel/traverse": "^7.29.0", - "@react-native/codegen": "0.85.0-main" + "@react-native/codegen": "0.85.2" }, "devDependencies": { "@babel/core": "^7.25.2" diff --git a/packages/community-cli-plugin/package.json b/packages/community-cli-plugin/package.json index 957b9a0d89f0..2d1d201f0621 100644 --- a/packages/community-cli-plugin/package.json +++ b/packages/community-cli-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/community-cli-plugin", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Core CLI commands for React Native", "keywords": [ "react-native", @@ -31,7 +31,7 @@ "prepack": "node ../../scripts/build/prepack.js" }, "dependencies": { - "@react-native/dev-middleware": "0.85.0-main", + "@react-native/dev-middleware": "0.85.2", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.84.0", @@ -44,7 +44,7 @@ }, "peerDependencies": { "@react-native-community/cli": "*", - "@react-native/metro-config": "*" + "@react-native/metro-config": "0.85.2" }, "peerDependenciesMeta": { "@react-native-community/cli": { diff --git a/packages/core-cli-utils/package.json b/packages/core-cli-utils/package.json index 9f178299ca52..66445388beb8 100644 --- a/packages/core-cli-utils/package.json +++ b/packages/core-cli-utils/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/core-cli-utils", - "version": "0.85.0-main", + "version": "0.85.2", "description": "React Native CLI library for Frameworks to build on", "license": "MIT", "keywords": [ diff --git a/packages/debugger-frontend/package.json b/packages/debugger-frontend/package.json index b4484cc6c2bf..1e23399d1a2b 100644 --- a/packages/debugger-frontend/package.json +++ b/packages/debugger-frontend/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/debugger-frontend", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Debugger frontend for React Native based on Chrome DevTools", "keywords": [ "react-native", diff --git a/packages/debugger-shell/bin/react-native-devtools b/packages/debugger-shell/bin/react-native-devtools index c51c7678b263..46488e55e387 100755 --- a/packages/debugger-shell/bin/react-native-devtools +++ b/packages/debugger-shell/bin/react-native-devtools @@ -1,6 +1,6 @@ #!/usr/bin/env dotslash -// @generated SignedSource<<99011a9d73bf559385dd977d6641bf63>> +// @generated SignedSource<> { @@ -11,6 +11,9 @@ "hash": "sha256", "digest": "88a883b2ae58037a14787914cb971591046aedfcf093ff94de65a950487d8412", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.85.2/React.Native.DevTools-linux-aarch64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQOe3vMglEWyhocSuDyLcDQ5M5nI_Sg3PCaH9ddCVGlE_mQ2dLnybDBQZzG0E9aM4n0RLia8QlwTI9BQdAuFe-pwvCept93mc8tzdIeuqm6nxE_r43886e6qG_zRFMSOe_gZFtlmCvyOimaaezyhV7W_aOFoK9PsBDJfYBFOixplT_ABF199vZzVlKs" @@ -24,6 +27,9 @@ "hash": "sha256", "digest": "bf9c63e0adbf3e3aab0f7d2ee5451ce14271a03a4f8856f650e3074df5787eeb", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.85.2/React.Native.DevTools-linux-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQPGMeqY0k2VSVHrSW-H-ZOSQSsYD6jj2q921sh8iqOy6nbyuaaril9wnkcEN-dIH4lPOs9cgVN46Qz08Vx6Dz2t6IbgcYaXQkiKqaIDkSvmD_X5SX5-ov7e4xZBe8anzo2DmfaZLNycuUbTsr92zoJP9ufm8ibOzrXZCdTYaKVvRSIuAdPFfo0q" @@ -37,6 +43,9 @@ "hash": "sha256", "digest": "a09c8b2f826cc6adb454c01c00d2918f9a78b2594cc290a96cd64f9643c92331", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.85.2/React.Native.DevTools-macos-aarch64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQPus35qjWc7PxLmPHGV2t_Fy83bqmPcfXHoIH9r9w_oBe3MDNPiV6XaEsx--HcvpbCvM2yRDRjs7RkZy5kWtwgI6u2hX9yOK6VMu1G7ACWWEr6LrBUkax_8fadtBeT9kyyQmYuan2acXYYNL7qsiti_Z5c1oRpIbxS3PH2-e-7nvNGCsip9VxRLXlZm" @@ -50,6 +59,9 @@ "hash": "sha256", "digest": "45204482b756a4b047ce010b13726e67c88b81ac4eb9f3220d885f55080a75cc", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.85.2/React.Native.DevTools-macos-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQP9w7tMCZ7CajBq--Vtx4C0-EgnFg7p0rZlFCHfEVoTbCPhLrZbtbrLZSh6aJcCcjVn7j35B57bpimeAhDqwLi1dEN8cdgK0hHF2wEqnoszjz3SaPpdwdnIvDv-E4UjU4Kgzn11PUSAEpaaGC5Lm_MIUa2G4bRJv7CLaOCJw6TxLJs3dGGEgn21Og" @@ -63,6 +75,9 @@ "hash": "sha256", "digest": "8ebe98a2cd7833ab4115975328d699906251e5c0fa795a485eb143f2a0c3924a", "providers": [ + { + "url": "https://github.com/facebook/react-native/releases/download/v0.85.2/React.Native.DevTools-windows-x86_64.tar.gz" + }, { "type": "http", "url": "https://scontent.xx.fbcdn.net/mci_ab/uap/?ab_b=m&ab_page=react_native_devtools_binaries&ab_entry=AQPo2HDsiZzHX5U8mzykkp2vyaexy0rfSjf5mm3NIBKvQLUSE90_8TaogIUmvzOp6sLVxLo2MsMrvixzP6h9-D4avhZ51Al_vkdbvNvGnWQoSnpDV0X55sTM4rxsYXoOv-xOhdN_rVbTx6TCkMFmmZ1JFBAcR9gMS3VN83178YRVlofWx3NzPFM9" diff --git a/packages/debugger-shell/package.json b/packages/debugger-shell/package.json index 9b7e7d666f49..0ee7c42fa775 100644 --- a/packages/debugger-shell/package.json +++ b/packages/debugger-shell/package.json @@ -1,7 +1,7 @@ { "name": "@react-native/debugger-shell", "productName": "React Native DevTools", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Experimental debugger shell for React Native for use with @react-native/debugger-frontend", "keywords": [ "react-native", diff --git a/packages/dev-middleware/package.json b/packages/dev-middleware/package.json index 4f98011c8232..15d28f5f4782 100644 --- a/packages/dev-middleware/package.json +++ b/packages/dev-middleware/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/dev-middleware", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Dev server middleware for React Native", "keywords": [ "react-native", @@ -32,8 +32,8 @@ }, "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.85.0-main", - "@react-native/debugger-shell": "0.85.0-main", + "@react-native/debugger-frontend": "0.85.2", + "@react-native/debugger-shell": "0.85.2", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.3.0", "connect": "^3.6.5", @@ -45,7 +45,7 @@ "ws": "^7.5.10" }, "devDependencies": { - "@react-native/debugger-shell": "0.85.0-main", + "@react-native/debugger-shell": "0.85.2", "selfsigned": "^5.5.0", "undici": "^6.23.0", "wait-for-expect": "^3.0.2" diff --git a/packages/eslint-config-react-native/package.json b/packages/eslint-config-react-native/package.json index 072e9dcc1d29..8f776303d5f2 100644 --- a/packages/eslint-config-react-native/package.json +++ b/packages/eslint-config-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-config", - "version": "0.85.0-main", + "version": "0.85.2", "description": "ESLint config for React Native", "license": "MIT", "repository": { @@ -26,7 +26,7 @@ "dependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/eslint-plugin": "0.85.0-main", + "@react-native/eslint-plugin": "0.85.2", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "eslint-config-prettier": "^8.5.0", diff --git a/packages/eslint-plugin-react-native/package.json b/packages/eslint-plugin-react-native/package.json index a74befb82b1c..1fffa7f1fa69 100644 --- a/packages/eslint-plugin-react-native/package.json +++ b/packages/eslint-plugin-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-plugin", - "version": "0.85.0-main", + "version": "0.85.2", "description": "ESLint rules for @react-native/eslint-config", "license": "MIT", "repository": { diff --git a/packages/eslint-plugin-specs/package.json b/packages/eslint-plugin-specs/package.json index b9863f2b9f54..07756fe35400 100644 --- a/packages/eslint-plugin-specs/package.json +++ b/packages/eslint-plugin-specs/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/eslint-plugin-specs", - "version": "0.85.0-main", + "version": "0.85.2", "description": "ESLint rules to validate NativeModule and Component Specs", "license": "MIT", "repository": { @@ -26,7 +26,7 @@ "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@react-native/codegen": "0.85.0-main", + "@react-native/codegen": "0.85.2", "make-dir": "^2.1.0", "pirates": "^4.0.1", "source-map-support": "0.5.0" diff --git a/packages/gradle-plugin/package.json b/packages/gradle-plugin/package.json index ffffafbf43ca..4dbdccc0145f 100644 --- a/packages/gradle-plugin/package.json +++ b/packages/gradle-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/gradle-plugin", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Gradle Plugin for React Native", "license": "MIT", "repository": { diff --git a/packages/jest-preset/package.json b/packages/jest-preset/package.json index b32fef2c6d3d..f4a5bfe48949 100644 --- a/packages/jest-preset/package.json +++ b/packages/jest-preset/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/jest-preset", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Jest preset for React Native apps", "keywords": [ "jest", @@ -29,7 +29,7 @@ ], "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/js-polyfills": "0.85.0-main", + "@react-native/js-polyfills": "0.85.2", "babel-jest": "^29.7.0", "jest-environment-node": "^29.7.0", "regenerator-runtime": "^0.13.2" diff --git a/packages/metro-config/package.json b/packages/metro-config/package.json index 92be7eff4456..c8751df242ff 100644 --- a/packages/metro-config/package.json +++ b/packages/metro-config/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/metro-config", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Metro configuration for React Native.", "license": "MIT", "repository": { @@ -35,8 +35,8 @@ "prepack": "node ../../scripts/build/prepack.js" }, "dependencies": { - "@react-native/js-polyfills": "0.85.0-main", - "@react-native/metro-babel-transformer": "0.85.0-main", + "@react-native/js-polyfills": "0.85.2", + "@react-native/metro-babel-transformer": "0.85.2", "metro-config": "^0.84.0", "metro-runtime": "^0.84.0" } diff --git a/packages/new-app-screen/package.json b/packages/new-app-screen/package.json index 46f4bdbdefac..beda9c5ba142 100644 --- a/packages/new-app-screen/package.json +++ b/packages/new-app-screen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/new-app-screen", - "version": "0.85.0-main", + "version": "0.85.2", "description": "NewAppScreen component for React Native", "keywords": [ "react-native" @@ -22,7 +22,7 @@ "peerDependencies": { "@types/react": "^19.1.0", "react": "*", - "react-native": "*" + "react-native": "0.85.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/normalize-color/package.json b/packages/normalize-color/package.json index 56dd5af59b76..66ad857f3135 100644 --- a/packages/normalize-color/package.json +++ b/packages/normalize-color/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/normalize-colors", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Color normalization for React Native.", "license": "MIT", "repository": { diff --git a/packages/polyfills/package.json b/packages/polyfills/package.json index a22800e4f46a..645dc502ab37 100644 --- a/packages/polyfills/package.json +++ b/packages/polyfills/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/js-polyfills", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Polyfills for React Native.", "license": "MIT", "repository": { diff --git a/packages/react-native-babel-preset/package.json b/packages/react-native-babel-preset/package.json index d1ffdb7ef3b1..34b31fd20852 100644 --- a/packages/react-native-babel-preset/package.json +++ b/packages/react-native-babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/babel-preset", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Babel preset for React Native applications", "repository": { "type": "git", @@ -54,7 +54,7 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@react-native/babel-plugin-codegen": "0.85.0-main", + "@react-native/babel-plugin-codegen": "0.85.2", "babel-plugin-syntax-hermes-parser": "0.33.3", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" diff --git a/packages/react-native-babel-transformer/package.json b/packages/react-native-babel-transformer/package.json index 9aa9b835b2db..98066533f702 100644 --- a/packages/react-native-babel-transformer/package.json +++ b/packages/react-native-babel-transformer/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/metro-babel-transformer", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Babel transformer for React Native applications.", "repository": { "type": "git", @@ -27,7 +27,7 @@ ], "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.85.0-main", + "@react-native/babel-preset": "0.85.2", "hermes-parser": "0.33.3", "nullthrows": "^1.1.1" }, diff --git a/packages/react-native-codegen/package.json b/packages/react-native-codegen/package.json index 09196af1f854..6909d0c4d742 100644 --- a/packages/react-native-codegen/package.json +++ b/packages/react-native-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/codegen", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Code generation tools for React Native", "license": "MIT", "repository": { diff --git a/packages/react-native-compatibility-check/package.json b/packages/react-native-compatibility-check/package.json index 8d45455da6c2..e133367418ba 100644 --- a/packages/react-native-compatibility-check/package.json +++ b/packages/react-native-compatibility-check/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/compatibility-check", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Check a React Native app's boundary between JS and Native for incompatibilities", "license": "MIT", "repository": { @@ -38,7 +38,7 @@ "prepack": "node ../../scripts/build/prepack.js" }, "dependencies": { - "@react-native/codegen": "0.85.0-main" + "@react-native/codegen": "0.85.2" }, "devDependencies": { "flow-remove-types": "^2.237.2", diff --git a/packages/react-native-popup-menu-android/package.json b/packages/react-native-popup-menu-android/package.json index 4c424499ba9f..64fbba96f231 100644 --- a/packages/react-native-popup-menu-android/package.json +++ b/packages/react-native-popup-menu-android/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/popup-menu-android", - "version": "0.85.0-main", + "version": "0.85.2", "description": "PopupMenu for the Android platform", "main": "index.js", "files": [ @@ -21,12 +21,12 @@ }, "license": "MIT", "devDependencies": { - "@react-native/codegen": "0.85.0-main" + "@react-native/codegen": "0.85.2" }, "peerDependencies": { "@types/react": "^19.1.0", "react": "*", - "react-native": "*" + "react-native": "0.85.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/react-native/Libraries/Core/ReactNativeVersion.js b/packages/react-native/Libraries/Core/ReactNativeVersion.js index 1ff12f563e62..c06dcb220c13 100644 --- a/packages/react-native/Libraries/Core/ReactNativeVersion.js +++ b/packages/react-native/Libraries/Core/ReactNativeVersion.js @@ -26,9 +26,9 @@ * ``` */ export default class ReactNativeVersion { - static major: number = 1000; - static minor: number = 0; - static patch: number = 0; + static major: number = 0; + static minor: number = 85; + static patch: number = 2; static prerelease: string | null = null; static getVersionString(): string { diff --git a/packages/react-native/Libraries/Core/setUpReactDevTools.js b/packages/react-native/Libraries/Core/setUpReactDevTools.js index 9bdf66b30184..2c80b23393ad 100644 --- a/packages/react-native/Libraries/Core/setUpReactDevTools.js +++ b/packages/react-native/Libraries/Core/setUpReactDevTools.js @@ -146,17 +146,34 @@ if (__DEV__) { ? guessHostFromDevServerUrl(devServer.url) : 'localhost'; - // Read the optional global variable for backward compatibility. - // It was added in https://github.com/facebook/react-native/commit/bf2b435322e89d0aeee8792b1c6e04656c2719a0. - const port = + // Derive scheme and port from the dev server URL when possible, + // falling back to ws://host:8097 for local development. + let wsScheme = 'ws'; + let port = 8097; + + if ( // $FlowFixMe[prop-missing] // $FlowFixMe[incompatible-use] window.__REACT_DEVTOOLS_PORT__ != null - ? window.__REACT_DEVTOOLS_PORT__ - : 8097; + ) { + // $FlowFixMe[prop-missing] + port = window.__REACT_DEVTOOLS_PORT__; + } else if (devServer.bundleLoadedFromServer) { + try { + const devUrl = new URL(devServer.url); + if (devUrl.protocol === 'https:') { + wsScheme = 'wss'; + } + if (devUrl.port) { + port = parseInt(devUrl.port, 10); + } else if (devUrl.protocol === 'https:') { + port = 443; + } + } catch (e) {} + } const WebSocket = require('../WebSocket/WebSocket').default; - ws = new WebSocket('ws://' + host + ':' + port); + ws = new WebSocket(wsScheme + '://' + host + ':' + port); ws.addEventListener('close', event => { isWebSocketOpen = false; }); diff --git a/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.h b/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.h index ee7fe8be44f7..c3a27e15a045 100644 --- a/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.h +++ b/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.h @@ -14,6 +14,15 @@ typedef NSURLSessionConfiguration * (^NSURLSessionConfigurationProvider)(void); * app. */ RCT_EXTERN void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProvider /*provider*/); + +typedef NSURLRequest *_Nullable (^RCTHTTPRequestInterceptor)(NSURLRequest *request); +/** + * The block provided via this function can inspect/modify HTTP requests before + * they are sent. Return a modified request to override, or nil to use the + * original request unchanged. + */ +RCT_EXTERN void RCTSetCustomHTTPRequestInterceptor(RCTHTTPRequestInterceptor /*interceptor*/); + /** * This is the default RCTURLRequestHandler implementation for HTTP requests. */ diff --git a/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.mm b/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.mm index 0303970a2e47..61de2a064155 100644 --- a/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.mm +++ b/packages/react-native/Libraries/Network/RCTHTTPRequestHandler.mm @@ -25,6 +25,13 @@ void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProv urlSessionConfigurationProvider = provider; } +static RCTHTTPRequestInterceptor httpRequestInterceptor; + +void RCTSetCustomHTTPRequestInterceptor(RCTHTTPRequestInterceptor interceptor) +{ + httpRequestInterceptor = interceptor; +} + @implementation RCTHTTPRequestHandler { NSMapTable *_delegates; NSURLSession *_session; @@ -99,7 +106,14 @@ - (NSURLSessionDataTask *)sendRequest:(NSURLRequest *)request withDelegate:(id +#import #import typedef void (^RCTMultipartDataTaskCallback)( @@ -16,6 +17,14 @@ typedef void (^RCTMultipartDataTaskCallback)( NSError *error, BOOL done); +typedef NSURLRequest * _Nullable (^RCTMultipartDataTaskRequestInterceptor)(NSURLRequest *request); +/** + * The block provided via this function can inspect/modify multipart data task + * requests before they are sent. Return a modified request to override, or nil + * to use the original request unchanged. + */ +RCT_EXTERN void RCTSetCustomMultipartDataTaskRequestInterceptor(RCTMultipartDataTaskRequestInterceptor /*interceptor*/); + @interface RCTMultipartDataTask : NSObject - (instancetype)initWithURL:(NSURL *)url diff --git a/packages/react-native/React/Base/RCTMultipartDataTask.m b/packages/react-native/React/Base/RCTMultipartDataTask.m index 9f5ff5995535..f373ba46607b 100644 --- a/packages/react-native/React/Base/RCTMultipartDataTask.m +++ b/packages/react-native/React/Base/RCTMultipartDataTask.m @@ -7,6 +7,13 @@ #import "RCTMultipartDataTask.h" +static RCTMultipartDataTaskRequestInterceptor multipartRequestInterceptor; + +void RCTSetCustomMultipartDataTaskRequestInterceptor(RCTMultipartDataTaskRequestInterceptor interceptor) +{ + multipartRequestInterceptor = interceptor; +} + #import "RCTDevSupportHttpHeaders.h" @interface RCTMultipartDataTask () @@ -43,7 +50,15 @@ - (void)startTask NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:_url]; [request addValue:@"multipart/mixed" forHTTPHeaderField:@"Accept"]; [[RCTDevSupportHttpHeaders sharedInstance] applyHeadersToRequest:request]; - NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request]; + NSURLRequest *finalRequest = request; + if (multipartRequestInterceptor != nil) { + NSURLRequest *intercepted = multipartRequestInterceptor(request); + if (intercepted != nil) { + finalRequest = intercepted; + } + } + NSLog(@"[RCTMultipartDataTask] %@ %@", finalRequest.HTTPMethod ?: @"GET", finalRequest.URL.absoluteString); + NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:finalRequest]; [dataTask resume]; [session finishTasksAndInvalidate]; } diff --git a/packages/react-native/React/Base/RCTVersion.m b/packages/react-native/React/Base/RCTVersion.m index 69ce4f75320e..710cfa6804fb 100644 --- a/packages/react-native/React/Base/RCTVersion.m +++ b/packages/react-native/React/Base/RCTVersion.m @@ -21,9 +21,9 @@ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^(void){ __rnVersion = @{ - RCTVersionMajor: @(1000), - RCTVersionMinor: @(0), - RCTVersionPatch: @(0), + RCTVersionMajor: @(0), + RCTVersionMinor: @(85), + RCTVersionPatch: @(2), RCTVersionPrerelease: [NSNull null], }; }); diff --git a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm index 6d5518c26b6b..3475fa39350c 100644 --- a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm +++ b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm @@ -51,10 +51,27 @@ - (instancetype)init selector:@selector(hide) name:RCTJavaScriptDidFailToLoadNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(hide) + name:@"RCTInstanceDidLoadBundle" + object:nil]; } return self; } +- (void)dealloc +{ + [self clearInitialMessageDelay]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + UIWindow *window = _window; + _window = nil; + if (window) { + RCTExecuteOnMainQueue(^{ + window.hidden = YES; + }); + } +} + + (void)setEnabled:(BOOL)enabled { RCTDevLoadingViewSetEnabled(enabled); diff --git a/packages/react-native/React/CoreModules/RCTWebSocketModule.h b/packages/react-native/React/CoreModules/RCTWebSocketModule.h index f92bfc42e3ae..0deba70671ff 100644 --- a/packages/react-native/React/CoreModules/RCTWebSocketModule.h +++ b/packages/react-native/React/CoreModules/RCTWebSocketModule.h @@ -18,6 +18,12 @@ NS_ASSUME_NONNULL_BEGIN @end +@class SRWebSocket; + +typedef SRWebSocket * (^SRWebSocketProvider)(NSURLRequest *request); + +RCT_EXTERN void RCTSetCustomSRWebSocketProvider(SRWebSocketProvider provider); + @interface RCTWebSocketModule : RCTEventEmitter // Register a custom handler for a specific websocket. The handler will be strongly held by the WebSocketModule. diff --git a/packages/react-native/React/CoreModules/RCTWebSocketModule.mm b/packages/react-native/React/CoreModules/RCTWebSocketModule.mm index e29d76a76a23..5d95b90bca81 100644 --- a/packages/react-native/React/CoreModules/RCTWebSocketModule.mm +++ b/packages/react-native/React/CoreModules/RCTWebSocketModule.mm @@ -34,6 +34,13 @@ @interface RCTWebSocketModule () *_sockets; NSMutableDictionary> *_contentHandlers; @@ -88,7 +95,13 @@ - (void)invalidate }]; } - SRWebSocket *webSocket = [[SRWebSocket alloc] initWithURLRequest:request protocols:protocols]; + SRWebSocket *webSocket; + if (srWebSocketProvider != nullptr) { + webSocket = srWebSocketProvider(request); + } + if (webSocket == nil) { + webSocket = [[SRWebSocket alloc] initWithURLRequest:request protocols:protocols]; + } [webSocket setDelegateDispatchQueue:[self methodQueue]]; webSocket.delegate = self; webSocket.reactTag = @(socketID); diff --git a/packages/react-native/React/DevSupport/RCTInspectorDevServerHelper.mm b/packages/react-native/React/DevSupport/RCTInspectorDevServerHelper.mm index 36e18415eed3..e2ee27e2d881 100644 --- a/packages/react-native/React/DevSupport/RCTInspectorDevServerHelper.mm +++ b/packages/react-native/React/DevSupport/RCTInspectorDevServerHelper.mm @@ -20,28 +20,33 @@ #import static NSString *const kDebuggerMsgDisable = @"{ \"id\":1,\"method\":\"Debugger.disable\" }"; +static const int kDefaultMetroPort = 8081; static NSString *getServerHost(NSURL *bundleURL) { - NSNumber *port = @8081; - NSString *portStr = [[[NSProcessInfo processInfo] environment] objectForKey:@"RCT_METRO_PORT"]; - if ((portStr != nullptr) && [portStr length] > 0) { - port = [NSNumber numberWithInt:[portStr intValue]]; - } - if ([bundleURL port] != nullptr) { - port = [bundleURL port]; - } NSString *host = [bundleURL host]; if (host == nullptr) { host = @"localhost"; } - // this is consistent with the Android implementation, where http:// is the - // hardcoded implicit scheme for the debug server. Note, packagerURL - // technically looks like it could handle schemes/protocols other than HTTP, - // so rather than force HTTP, leave it be for now, in case someone is relying - // on that ability when developing against iOS. - return [NSString stringWithFormat:@"%@:%@", host, port]; + // Use explicit port from URL if available + if ([bundleURL port] != nullptr) { + return [NSString stringWithFormat:@"%@:%@", host, [bundleURL port]]; + } + + // Check environment variable + NSString *portStr = [[[NSProcessInfo processInfo] environment] objectForKey:@"RCT_METRO_PORT"]; + if ((portStr != nullptr) && [portStr length] > 0) { + return [NSString stringWithFormat:@"%@:%@", host, portStr]; + } + + // For https, omit port — the scheme implies 443 + if ([[bundleURL scheme] isEqualToString:@"https"]) { + return host; + } + + // Default to 8081 for local development (Metro's default port) + return [NSString stringWithFormat:@"%@:%d", host, kDefaultMetroPort]; } static NSString *getSHA256(NSString *string) @@ -112,13 +117,15 @@ NSString *escapedInspectorDeviceId = [getInspectorDeviceId() stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet]; - return [NSURL - URLWithString:[NSString stringWithFormat:@"http://%@/inspector/device?name=%@&app=%@&device=%@&profiling=%@", - getServerHost(bundleURL), - escapedDeviceName, - escapedAppName, - escapedInspectorDeviceId, - isProfilingBuild ? @"true" : @"false"]]; + NSString *scheme = [bundleURL scheme] != nullptr ? [bundleURL scheme] : @"http"; + return + [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@/inspector/device?name=%@&app=%@&device=%@&profiling=%@", + scheme, + getServerHost(bundleURL), + escapedDeviceName, + escapedAppName, + escapedInspectorDeviceId, + isProfilingBuild ? @"true" : @"false"]]; } @implementation RCTInspectorDevServerHelper @@ -150,7 +157,9 @@ + (void)openDebugger:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessag NSString *escapedInspectorDeviceId = [getInspectorDeviceId() stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet]; - NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/open-debugger?device=%@", + NSString *scheme = [bundleURL scheme] != nullptr ? [bundleURL scheme] : @"http"; + NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@/open-debugger?device=%@", + scheme, getServerHost(bundleURL), escapedInspectorDeviceId]]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index cd84f67a0559..bae034dc2a0a 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -100,6 +100,8 @@ val preparePrefab by Pair("../ReactCommon/hermes/inspector-modern/", "hermes/inspector-modern/"), // fabricjni Pair("src/main/jni/react/fabric", "react/fabric/"), + // uimanagerjni + Pair("src/main/jni/react/uimanager", "react/uimanager/"), // glog Pair(File(buildDir, "third-party-ndk/glog/exported/").absolutePath, ""), // jsiinpsector diff --git a/packages/react-native/ReactAndroid/gradle.properties b/packages/react-native/ReactAndroid/gradle.properties index 71b1bf4cf759..c6ff33a4267e 100644 --- a/packages/react-native/ReactAndroid/gradle.properties +++ b/packages/react-native/ReactAndroid/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=1000.0.0 +VERSION_NAME=0.85.2 react.internal.publishingGroup=com.facebook.react react.internal.hermesPublishingGroup=com.facebook.hermes diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt index a2295ba531ec..9518ba7d5595 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<156d4f5f35037184b6fc61ff1d856028>> + * @generated SignedSource<<891ad57e850a493d32fed3210a6a52bf>> */ /** @@ -276,6 +276,12 @@ public object ReactNativeFeatureFlags { @JvmStatic public fun enableModuleArgumentNSNullConversionIOS(): Boolean = accessor.enableModuleArgumentNSNullConversionIOS() + /** + * Enables the MutationObserver Web API in React Native. + */ + @JvmStatic + public fun enableMutationObserverByDefault(): Boolean = accessor.enableMutationObserverByDefault() + /** * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing */ diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt index df54de170654..8c0647e9885a 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<0875d5e54d884a26d37bb4eb2acc57d5>> + * @generated SignedSource<<9cd9f7106e4538a23d8c9ea522ab0bb5>> */ /** @@ -61,6 +61,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces private var enableLayoutAnimationsOnIOSCache: Boolean? = null private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null + private var enableMutationObserverByDefaultCache: Boolean? = null private var enableNativeCSSParsingCache: Boolean? = null private var enableNetworkEventReportingCache: Boolean? = null private var enablePreparedTextLayoutCache: Boolean? = null @@ -475,6 +476,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces return cached } + override fun enableMutationObserverByDefault(): Boolean { + var cached = enableMutationObserverByDefaultCache + if (cached == null) { + cached = ReactNativeFeatureFlagsCxxInterop.enableMutationObserverByDefault() + enableMutationObserverByDefaultCache = cached + } + return cached + } + override fun enableNativeCSSParsing(): Boolean { var cached = enableNativeCSSParsingCache if (cached == null) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt index a9e7550867b7..f52cafe38823 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<948a9beebe2ff00791a03455eb774eee>> + * @generated SignedSource<> */ /** @@ -110,6 +110,8 @@ public object ReactNativeFeatureFlagsCxxInterop { @DoNotStrip @JvmStatic public external fun enableModuleArgumentNSNullConversionIOS(): Boolean + @DoNotStrip @JvmStatic public external fun enableMutationObserverByDefault(): Boolean + @DoNotStrip @JvmStatic public external fun enableNativeCSSParsing(): Boolean @DoNotStrip @JvmStatic public external fun enableNetworkEventReporting(): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt index b7e15d740909..c66a635a89d8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<89c61520177334f93c65ff92c2fc74a6>> + * @generated SignedSource<> */ /** @@ -105,6 +105,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi override fun enableModuleArgumentNSNullConversionIOS(): Boolean = false + override fun enableMutationObserverByDefault(): Boolean = false + override fun enableNativeCSSParsing(): Boolean = false override fun enableNetworkEventReporting(): Boolean = true diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt index 48cb60dc5894..e488e5c30243 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<669708c311abe9ffc8f7783219e2baad>> + * @generated SignedSource<<39ecd618d48689ae2a30d7648d560b89>> */ /** @@ -65,6 +65,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc private var enableLayoutAnimationsOnIOSCache: Boolean? = null private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null + private var enableMutationObserverByDefaultCache: Boolean? = null private var enableNativeCSSParsingCache: Boolean? = null private var enableNetworkEventReportingCache: Boolean? = null private var enablePreparedTextLayoutCache: Boolean? = null @@ -520,6 +521,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc return cached } + override fun enableMutationObserverByDefault(): Boolean { + var cached = enableMutationObserverByDefaultCache + if (cached == null) { + cached = currentProvider.enableMutationObserverByDefault() + accessedFeatureFlags.add("enableMutationObserverByDefault") + enableMutationObserverByDefaultCache = cached + } + return cached + } + override fun enableNativeCSSParsing(): Boolean { var cached = enableNativeCSSParsingCache if (cached == null) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt index 6a2bc712074c..d740c6f82fce 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<8531ce29d0e5362517d35559ebda623b>> + * @generated SignedSource<<2452c003ffcba8e20b7cd40c68e05e3d>> */ /** @@ -23,6 +23,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android : // We could use JNI to get the defaults from C++, // but that is more expensive than just duplicating the defaults here. + override fun cxxNativeAnimatedEnabled(): Boolean = true + override fun enableAccessibilityOrder(): Boolean = true override fun enableSwiftUIBasedFilters(): Boolean = true @@ -30,4 +32,6 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android : override fun fixTextClippingAndroid15useBoundsForWidth(): Boolean = true override fun preventShadowTreeCommitExhaustion(): Boolean = true + + override fun useSharedAnimatedBackend(): Boolean = true } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt index e0b05b9dde3c..002c8ecc2ec2 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<9682cd769bcc7c53bf9999bbcb8e5573>> */ /** @@ -105,6 +105,8 @@ public interface ReactNativeFeatureFlagsProvider { @DoNotStrip public fun enableModuleArgumentNSNullConversionIOS(): Boolean + @DoNotStrip public fun enableMutationObserverByDefault(): Boolean + @DoNotStrip public fun enableNativeCSSParsing(): Boolean @DoNotStrip public fun enableNetworkEventReporting(): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt index 781f25d7137e..8965f140ef6f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt @@ -19,6 +19,7 @@ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags import java.io.IOException import java.net.SocketTimeoutException import okhttp3.Headers +import okhttp3.MultipartBody import okhttp3.RequestBody import okio.Buffer @@ -263,6 +264,13 @@ internal object NetworkEventUtil { return "[Preview unavailable]" } + // MultipartBody does not propagate isOneShot() from its parts, so check each + // part explicitly. Reading a one-shot part here would drain the underlying + // stream and cause the real request to fail. + if (body is MultipartBody && body.parts().any { it.body().isOneShot() }) { + return "[Preview unavailable]" + } + return try { val buffer = Buffer() body.writeTo(buffer) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt index 3fa7e6aa51ef..eb111d312ac2 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt @@ -146,6 +146,8 @@ internal object RequestBodyUtil { } } + override fun isOneShot(): Boolean = true + @Throws(IOException::class) override fun writeTo(sink: BufferedSink) { var source: Source? = null diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt index 889fa4d728c4..47820cb6a537 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -1,15 +1,20 @@ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * - * This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * * @generated by scripts/releases/set-version.js */ + package com.facebook.react.modules.systeminfo public object ReactNativeVersion { @JvmField - public val VERSION: Map = - mapOf("major" to 1000, "minor" to 0, "patch" to 0, "prerelease" to null) + public val VERSION: Map = mapOf( + "major" to 0, + "minor" to 85, + "patch" to 2, + "prerelease" to null + ) } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt index 9c8d9cf1240e..b7752d169283 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt @@ -22,6 +22,7 @@ import com.facebook.react.common.ReactConstants import com.facebook.react.module.annotations.ReactModule import com.facebook.react.modules.network.CustomClientBuilder import com.facebook.react.modules.network.ForwardingCookieHandler +import com.facebook.react.modules.network.OkHttpClientProvider import java.io.IOException import java.net.URI import java.net.URISyntaxException @@ -80,7 +81,8 @@ public class WebSocketModule(context: ReactApplicationContext) : ) { val id = socketID.toInt() val okHttpBuilder = - OkHttpClient.Builder() + OkHttpClientProvider.getOkHttpClient() + .newBuilder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(0, TimeUnit.MINUTES) // Disable timeouts for read @@ -198,9 +200,6 @@ public class WebSocketModule(context: ReactApplicationContext) : } }, ) - - // Trigger shutdown of the dispatcher's executor so this process can exit cleanly - client.dispatcher().executorService().shutdown() } override fun close(code: Double, reason: String?, socketID: Double) { diff --git a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt index 979ec533075f..8125e02ee065 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt @@ -82,6 +82,7 @@ add_react_common_subdir(react/debug) add_react_common_subdir(react/featureflags) add_react_common_subdir(react/performance/cdpmetrics) add_react_common_subdir(react/performance/timeline) +add_react_common_subdir(react/renderer/animated) add_react_common_subdir(react/renderer/animationbackend) add_react_common_subdir(react/renderer/animations) add_react_common_subdir(react/renderer/attributedstring) @@ -116,6 +117,7 @@ add_react_common_subdir(react/renderer/components/safeareaview) add_react_common_subdir(react/renderer/leakchecker) add_react_common_subdir(react/renderer/observers/events) add_react_common_subdir(react/renderer/observers/intersection) +add_react_common_subdir(react/renderer/observers/mutation) add_react_common_subdir(react/renderer/textlayoutmanager) add_react_common_subdir(react/utils) add_react_common_subdir(react/bridging) @@ -127,6 +129,7 @@ add_react_common_subdir(react/nativemodule/featureflags) add_react_common_subdir(react/nativemodule/microtasks) add_react_common_subdir(react/nativemodule/idlecallbacks) add_react_common_subdir(react/nativemodule/intersectionobserver) +add_react_common_subdir(react/nativemodule/mutationobserver) add_react_common_subdir(react/nativemodule/webperformance) add_react_common_subdir(react/networking) add_react_common_subdir(jserrorhandler) @@ -196,11 +199,13 @@ add_library(reactnative $ $ $ + $ $ $ $ $ $ + $ $ $ $ @@ -217,6 +222,7 @@ add_library(reactnative $ $ $ + $ $ $ $ @@ -290,11 +296,13 @@ target_include_directories(reactnative $ $ $ + $ $ $ $ $ $ + $ $ $ $ @@ -312,6 +320,8 @@ target_include_directories(reactnative $ $ $ + $ + $ $ $ $ diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp index 7a60a11c7279..123081b12821 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<0b95d68522d63d51d3e524aeecff246a>> + * @generated SignedSource<<864e786c3042a66447f589695db7aebc>> */ /** @@ -285,6 +285,12 @@ class ReactNativeFeatureFlagsJavaProvider return method(javaProvider_); } + bool enableMutationObserverByDefault() override { + static const auto method = + getReactNativeFeatureFlagsProviderJavaClass()->getMethod("enableMutationObserverByDefault"); + return method(javaProvider_); + } + bool enableNativeCSSParsing() override { static const auto method = getReactNativeFeatureFlagsProviderJavaClass()->getMethod("enableNativeCSSParsing"); @@ -758,6 +764,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS return ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS(); } +bool JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault( + facebook::jni::alias_ref /*unused*/) { + return ReactNativeFeatureFlags::enableMutationObserverByDefault(); +} + bool JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing( facebook::jni::alias_ref /*unused*/) { return ReactNativeFeatureFlags::enableNativeCSSParsing(); @@ -1132,6 +1143,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() { makeNativeMethod( "enableModuleArgumentNSNullConversionIOS", JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS), + makeNativeMethod( + "enableMutationObserverByDefault", + JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault), makeNativeMethod( "enableNativeCSSParsing", JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing), diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h index 67889af8a636..86aca08dfa25 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<6b7e2af51ba9d64ae4e474dfa104a7c3>> + * @generated SignedSource<<2c9336f5ba6c40dfdec7137100d1fcc5>> */ /** @@ -153,6 +153,9 @@ class JReactNativeFeatureFlagsCxxInterop static bool enableModuleArgumentNSNullConversionIOS( facebook::jni::alias_ref); + static bool enableMutationObserverByDefault( + facebook::jni::alias_ref); + static bool enableNativeCSSParsing( facebook::jni::alias_ref); diff --git a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec index 4fae2c71426a..c0b07cd6d9a8 100644 --- a/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec +++ b/packages/react-native/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec @@ -25,7 +25,7 @@ Pod::Spec.new do |s| s.author = "Meta Platforms, Inc. and its affiliates" s.platforms = min_supported_versions s.source = source - s.source_files = "*.{h,m,swift}" + s.source_files = podspec_sources("*.{h,m,swift}", "") s.public_header_files = "*.h" s.module_name = "RCTSwiftUI" s.header_dir = "RCTSwiftUI" diff --git a/packages/react-native/ReactCommon/React-Fabric.podspec b/packages/react-native/ReactCommon/React-Fabric.podspec index fe7534f089c0..7dd2fcba6652 100644 --- a/packages/react-native/ReactCommon/React-Fabric.podspec +++ b/packages/react-native/ReactCommon/React-Fabric.podspec @@ -60,6 +60,7 @@ Pod::Spec.new do |s| ss.source_files = podspec_sources("react/renderer/animated/**/*.{m,mm,cpp,h}", "react/renderer/animated/**/*.{h}") ss.exclude_files = "react/renderer/animated/tests" ss.header_dir = "react/renderer/animated" + ss.header_mappings_dir = "react/renderer/animated" end s.subspec "animations" do |ss| @@ -189,6 +190,12 @@ Pod::Spec.new do |s| sss.exclude_files = "react/renderer/observers/intersection/tests" sss.header_dir = "react/renderer/observers/intersection" end + + ss.subspec "mutation" do |sss| + sss.source_files = podspec_sources("react/renderer/observers/mutation/**/*.{m,mm,cpp,h}", "react/renderer/observers/mutation/**/*.h") + sss.exclude_files = "react/renderer/observers/mutation/tests" + sss.header_dir = "react/renderer/observers/mutation" + end end s.subspec "telemetry" do |ss| diff --git a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h index 25468f63f050..21def9c56662 100644 --- a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h +++ b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h @@ -12,16 +12,16 @@ #include #include -#define REACT_NATIVE_VERSION_MAJOR 1000 -#define REACT_NATIVE_VERSION_MINOR 0 -#define REACT_NATIVE_VERSION_PATCH 0 +#define REACT_NATIVE_VERSION_MAJOR 0 +#define REACT_NATIVE_VERSION_MINOR 85 +#define REACT_NATIVE_VERSION_PATCH 2 namespace facebook::react { struct ReactNativeVersionType { - int32_t Major = 1000; - int32_t Minor = 0; - int32_t Patch = 0; + int32_t Major = 0; + int32_t Minor = 85; + int32_t Patch = 2; std::string_view Prerelease = ""; }; diff --git a/packages/react-native/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp b/packages/react-native/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp index 39aec6cdb0a4..6a08e59e39e3 100644 --- a/packages/react-native/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +++ b/packages/react-native/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp @@ -142,6 +142,12 @@ int InspectorImpl::addPage( pageId, Page{pageId, description, vm, std::move(connectFunc), capabilities}); + for (const auto& listenerWeak : listeners_) { + if (auto listener = listenerWeak.lock()) { + listener->unstable_onHostTargetAdded(); + } + } + return pageId; } diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp index 0c045bcf92d2..a97d3918914e 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<08a361f2ffac6a0496adac1d4c3e4726>> + * @generated SignedSource<<7d73f3d660ecad095535c207697d3a28>> */ /** @@ -190,6 +190,10 @@ bool ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS() { return getAccessor().enableModuleArgumentNSNullConversionIOS(); } +bool ReactNativeFeatureFlags::enableMutationObserverByDefault() { + return getAccessor().enableMutationObserverByDefault(); +} + bool ReactNativeFeatureFlags::enableNativeCSSParsing() { return getAccessor().enableNativeCSSParsing(); } diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h index af8e15b1e6ed..5fb6cbc138e1 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<0bbe4d41581432dfad7adbc2db133d00>> + * @generated SignedSource<<476874174ca102310bc2c73cfffc0487>> */ /** @@ -244,6 +244,11 @@ class ReactNativeFeatureFlags { */ RN_EXPORT static bool enableModuleArgumentNSNullConversionIOS(); + /** + * Enables the MutationObserver Web API in React Native. + */ + RN_EXPORT static bool enableMutationObserverByDefault(); + /** * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing */ diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp index de6c64c0be12..18dfede9bba8 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<3dd9492ca660ad6350ce6ee4a9b5e310>> + * @generated SignedSource<<1fe6cc6df79deed61ef4b5b31d301b2c>> */ /** @@ -767,6 +767,24 @@ bool ReactNativeFeatureFlagsAccessor::enableModuleArgumentNSNullConversionIOS() return flagValue.value(); } +bool ReactNativeFeatureFlagsAccessor::enableMutationObserverByDefault() { + auto flagValue = enableMutationObserverByDefault_.load(); + + if (!flagValue.has_value()) { + // This block is not exclusive but it is not necessary. + // If multiple threads try to initialize the feature flag, we would only + // be accessing the provider multiple times but the end state of this + // instance and the returned flag value would be the same. + + markFlagAsAccessed(41, "enableMutationObserverByDefault"); + + flagValue = currentProvider_->enableMutationObserverByDefault(); + enableMutationObserverByDefault_ = flagValue; + } + + return flagValue.value(); +} + bool ReactNativeFeatureFlagsAccessor::enableNativeCSSParsing() { auto flagValue = enableNativeCSSParsing_.load(); @@ -776,7 +794,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNativeCSSParsing() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(41, "enableNativeCSSParsing"); + markFlagAsAccessed(42, "enableNativeCSSParsing"); flagValue = currentProvider_->enableNativeCSSParsing(); enableNativeCSSParsing_ = flagValue; @@ -794,7 +812,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNetworkEventReporting() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(42, "enableNetworkEventReporting"); + markFlagAsAccessed(43, "enableNetworkEventReporting"); flagValue = currentProvider_->enableNetworkEventReporting(); enableNetworkEventReporting_ = flagValue; @@ -812,7 +830,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePreparedTextLayout() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(43, "enablePreparedTextLayout"); + markFlagAsAccessed(44, "enablePreparedTextLayout"); flagValue = currentProvider_->enablePreparedTextLayout(); enablePreparedTextLayout_ = flagValue; @@ -830,7 +848,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePropsUpdateReconciliationAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(44, "enablePropsUpdateReconciliationAndroid"); + markFlagAsAccessed(45, "enablePropsUpdateReconciliationAndroid"); flagValue = currentProvider_->enablePropsUpdateReconciliationAndroid(); enablePropsUpdateReconciliationAndroid_ = flagValue; @@ -848,7 +866,7 @@ bool ReactNativeFeatureFlagsAccessor::enableSwiftUIBasedFilters() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(45, "enableSwiftUIBasedFilters"); + markFlagAsAccessed(46, "enableSwiftUIBasedFilters"); flagValue = currentProvider_->enableSwiftUIBasedFilters(); enableSwiftUIBasedFilters_ = flagValue; @@ -866,7 +884,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewCulling() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(46, "enableViewCulling"); + markFlagAsAccessed(47, "enableViewCulling"); flagValue = currentProvider_->enableViewCulling(); enableViewCulling_ = flagValue; @@ -884,7 +902,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecycling() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(47, "enableViewRecycling"); + markFlagAsAccessed(48, "enableViewRecycling"); flagValue = currentProvider_->enableViewRecycling(); enableViewRecycling_ = flagValue; @@ -902,7 +920,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForImage() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(48, "enableViewRecyclingForImage"); + markFlagAsAccessed(49, "enableViewRecyclingForImage"); flagValue = currentProvider_->enableViewRecyclingForImage(); enableViewRecyclingForImage_ = flagValue; @@ -920,7 +938,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForScrollView() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(49, "enableViewRecyclingForScrollView"); + markFlagAsAccessed(50, "enableViewRecyclingForScrollView"); flagValue = currentProvider_->enableViewRecyclingForScrollView(); enableViewRecyclingForScrollView_ = flagValue; @@ -938,7 +956,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForText() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(50, "enableViewRecyclingForText"); + markFlagAsAccessed(51, "enableViewRecyclingForText"); flagValue = currentProvider_->enableViewRecyclingForText(); enableViewRecyclingForText_ = flagValue; @@ -956,7 +974,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForView() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(51, "enableViewRecyclingForView"); + markFlagAsAccessed(52, "enableViewRecyclingForView"); flagValue = currentProvider_->enableViewRecyclingForView(); enableViewRecyclingForView_ = flagValue; @@ -974,7 +992,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewContainerStateExperimenta // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(52, "enableVirtualViewContainerStateExperimental"); + markFlagAsAccessed(53, "enableVirtualViewContainerStateExperimental"); flagValue = currentProvider_->enableVirtualViewContainerStateExperimental(); enableVirtualViewContainerStateExperimental_ = flagValue; @@ -992,7 +1010,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewDebugFeatures() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(53, "enableVirtualViewDebugFeatures"); + markFlagAsAccessed(54, "enableVirtualViewDebugFeatures"); flagValue = currentProvider_->enableVirtualViewDebugFeatures(); enableVirtualViewDebugFeatures_ = flagValue; @@ -1010,7 +1028,7 @@ bool ReactNativeFeatureFlagsAccessor::fixFindShadowNodeByTagRaceCondition() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(54, "fixFindShadowNodeByTagRaceCondition"); + markFlagAsAccessed(55, "fixFindShadowNodeByTagRaceCondition"); flagValue = currentProvider_->fixFindShadowNodeByTagRaceCondition(); fixFindShadowNodeByTagRaceCondition_ = flagValue; @@ -1028,7 +1046,7 @@ bool ReactNativeFeatureFlagsAccessor::fixMappingOfEventPrioritiesBetweenFabricAn // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(55, "fixMappingOfEventPrioritiesBetweenFabricAndReact"); + markFlagAsAccessed(56, "fixMappingOfEventPrioritiesBetweenFabricAndReact"); flagValue = currentProvider_->fixMappingOfEventPrioritiesBetweenFabricAndReact(); fixMappingOfEventPrioritiesBetweenFabricAndReact_ = flagValue; @@ -1046,7 +1064,7 @@ bool ReactNativeFeatureFlagsAccessor::fixTextClippingAndroid15useBoundsForWidth( // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(56, "fixTextClippingAndroid15useBoundsForWidth"); + markFlagAsAccessed(57, "fixTextClippingAndroid15useBoundsForWidth"); flagValue = currentProvider_->fixTextClippingAndroid15useBoundsForWidth(); fixTextClippingAndroid15useBoundsForWidth_ = flagValue; @@ -1064,7 +1082,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxAssertSingleHostState() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(57, "fuseboxAssertSingleHostState"); + markFlagAsAccessed(58, "fuseboxAssertSingleHostState"); flagValue = currentProvider_->fuseboxAssertSingleHostState(); fuseboxAssertSingleHostState_ = flagValue; @@ -1082,7 +1100,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxEnabledRelease() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(58, "fuseboxEnabledRelease"); + markFlagAsAccessed(59, "fuseboxEnabledRelease"); flagValue = currentProvider_->fuseboxEnabledRelease(); fuseboxEnabledRelease_ = flagValue; @@ -1100,7 +1118,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxNetworkInspectionEnabled() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(59, "fuseboxNetworkInspectionEnabled"); + markFlagAsAccessed(60, "fuseboxNetworkInspectionEnabled"); flagValue = currentProvider_->fuseboxNetworkInspectionEnabled(); fuseboxNetworkInspectionEnabled_ = flagValue; @@ -1118,7 +1136,7 @@ bool ReactNativeFeatureFlagsAccessor::hideOffscreenVirtualViewsOnIOS() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(60, "hideOffscreenVirtualViewsOnIOS"); + markFlagAsAccessed(61, "hideOffscreenVirtualViewsOnIOS"); flagValue = currentProvider_->hideOffscreenVirtualViewsOnIOS(); hideOffscreenVirtualViewsOnIOS_ = flagValue; @@ -1136,7 +1154,7 @@ bool ReactNativeFeatureFlagsAccessor::overrideBySynchronousMountPropsAtMountingA // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(61, "overrideBySynchronousMountPropsAtMountingAndroid"); + markFlagAsAccessed(62, "overrideBySynchronousMountPropsAtMountingAndroid"); flagValue = currentProvider_->overrideBySynchronousMountPropsAtMountingAndroid(); overrideBySynchronousMountPropsAtMountingAndroid_ = flagValue; @@ -1154,7 +1172,7 @@ bool ReactNativeFeatureFlagsAccessor::perfIssuesEnabled() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(62, "perfIssuesEnabled"); + markFlagAsAccessed(63, "perfIssuesEnabled"); flagValue = currentProvider_->perfIssuesEnabled(); perfIssuesEnabled_ = flagValue; @@ -1172,7 +1190,7 @@ bool ReactNativeFeatureFlagsAccessor::perfMonitorV2Enabled() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(63, "perfMonitorV2Enabled"); + markFlagAsAccessed(64, "perfMonitorV2Enabled"); flagValue = currentProvider_->perfMonitorV2Enabled(); perfMonitorV2Enabled_ = flagValue; @@ -1190,7 +1208,7 @@ double ReactNativeFeatureFlagsAccessor::preparedTextCacheSize() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(64, "preparedTextCacheSize"); + markFlagAsAccessed(65, "preparedTextCacheSize"); flagValue = currentProvider_->preparedTextCacheSize(); preparedTextCacheSize_ = flagValue; @@ -1208,7 +1226,7 @@ bool ReactNativeFeatureFlagsAccessor::preventShadowTreeCommitExhaustion() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(65, "preventShadowTreeCommitExhaustion"); + markFlagAsAccessed(66, "preventShadowTreeCommitExhaustion"); flagValue = currentProvider_->preventShadowTreeCommitExhaustion(); preventShadowTreeCommitExhaustion_ = flagValue; @@ -1226,7 +1244,7 @@ bool ReactNativeFeatureFlagsAccessor::shouldPressibilityUseW3CPointerEventsForHo // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(66, "shouldPressibilityUseW3CPointerEventsForHover"); + markFlagAsAccessed(67, "shouldPressibilityUseW3CPointerEventsForHover"); flagValue = currentProvider_->shouldPressibilityUseW3CPointerEventsForHover(); shouldPressibilityUseW3CPointerEventsForHover_ = flagValue; @@ -1244,7 +1262,7 @@ bool ReactNativeFeatureFlagsAccessor::shouldTriggerResponderTransferOnScrollAndr // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(67, "shouldTriggerResponderTransferOnScrollAndroid"); + markFlagAsAccessed(68, "shouldTriggerResponderTransferOnScrollAndroid"); flagValue = currentProvider_->shouldTriggerResponderTransferOnScrollAndroid(); shouldTriggerResponderTransferOnScrollAndroid_ = flagValue; @@ -1262,7 +1280,7 @@ bool ReactNativeFeatureFlagsAccessor::skipActivityIdentityAssertionOnHostPause() // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(68, "skipActivityIdentityAssertionOnHostPause"); + markFlagAsAccessed(69, "skipActivityIdentityAssertionOnHostPause"); flagValue = currentProvider_->skipActivityIdentityAssertionOnHostPause(); skipActivityIdentityAssertionOnHostPause_ = flagValue; @@ -1280,7 +1298,7 @@ bool ReactNativeFeatureFlagsAccessor::syncAndroidClipToPaddingWithOverflow() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(69, "syncAndroidClipToPaddingWithOverflow"); + markFlagAsAccessed(70, "syncAndroidClipToPaddingWithOverflow"); flagValue = currentProvider_->syncAndroidClipToPaddingWithOverflow(); syncAndroidClipToPaddingWithOverflow_ = flagValue; @@ -1298,7 +1316,7 @@ bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(70, "traceTurboModulePromiseRejectionsOnAndroid"); + markFlagAsAccessed(71, "traceTurboModulePromiseRejectionsOnAndroid"); flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid(); traceTurboModulePromiseRejectionsOnAndroid_ = flagValue; @@ -1316,7 +1334,7 @@ bool ReactNativeFeatureFlagsAccessor::updateRuntimeShadowNodeReferencesOnCommit( // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(71, "updateRuntimeShadowNodeReferencesOnCommit"); + markFlagAsAccessed(72, "updateRuntimeShadowNodeReferencesOnCommit"); flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommit(); updateRuntimeShadowNodeReferencesOnCommit_ = flagValue; @@ -1334,7 +1352,7 @@ bool ReactNativeFeatureFlagsAccessor::updateRuntimeShadowNodeReferencesOnCommitT // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(72, "updateRuntimeShadowNodeReferencesOnCommitThread"); + markFlagAsAccessed(73, "updateRuntimeShadowNodeReferencesOnCommitThread"); flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommitThread(); updateRuntimeShadowNodeReferencesOnCommitThread_ = flagValue; @@ -1352,7 +1370,7 @@ bool ReactNativeFeatureFlagsAccessor::useAlwaysAvailableJSErrorHandling() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(73, "useAlwaysAvailableJSErrorHandling"); + markFlagAsAccessed(74, "useAlwaysAvailableJSErrorHandling"); flagValue = currentProvider_->useAlwaysAvailableJSErrorHandling(); useAlwaysAvailableJSErrorHandling_ = flagValue; @@ -1370,7 +1388,7 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(74, "useFabricInterop"); + markFlagAsAccessed(75, "useFabricInterop"); flagValue = currentProvider_->useFabricInterop(); useFabricInterop_ = flagValue; @@ -1388,7 +1406,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(75, "useNativeViewConfigsInBridgelessMode"); + markFlagAsAccessed(76, "useNativeViewConfigsInBridgelessMode"); flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode(); useNativeViewConfigsInBridgelessMode_ = flagValue; @@ -1406,7 +1424,7 @@ bool ReactNativeFeatureFlagsAccessor::useNestedScrollViewAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(76, "useNestedScrollViewAndroid"); + markFlagAsAccessed(77, "useNestedScrollViewAndroid"); flagValue = currentProvider_->useNestedScrollViewAndroid(); useNestedScrollViewAndroid_ = flagValue; @@ -1424,7 +1442,7 @@ bool ReactNativeFeatureFlagsAccessor::useSharedAnimatedBackend() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(77, "useSharedAnimatedBackend"); + markFlagAsAccessed(78, "useSharedAnimatedBackend"); flagValue = currentProvider_->useSharedAnimatedBackend(); useSharedAnimatedBackend_ = flagValue; @@ -1442,7 +1460,7 @@ bool ReactNativeFeatureFlagsAccessor::useTraitHiddenOnAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(78, "useTraitHiddenOnAndroid"); + markFlagAsAccessed(79, "useTraitHiddenOnAndroid"); flagValue = currentProvider_->useTraitHiddenOnAndroid(); useTraitHiddenOnAndroid_ = flagValue; @@ -1460,7 +1478,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(79, "useTurboModuleInterop"); + markFlagAsAccessed(80, "useTurboModuleInterop"); flagValue = currentProvider_->useTurboModuleInterop(); useTurboModuleInterop_ = flagValue; @@ -1478,7 +1496,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(80, "useTurboModules"); + markFlagAsAccessed(81, "useTurboModules"); flagValue = currentProvider_->useTurboModules(); useTurboModules_ = flagValue; @@ -1496,7 +1514,7 @@ bool ReactNativeFeatureFlagsAccessor::useUnorderedMapInDifferentiator() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(81, "useUnorderedMapInDifferentiator"); + markFlagAsAccessed(82, "useUnorderedMapInDifferentiator"); flagValue = currentProvider_->useUnorderedMapInDifferentiator(); useUnorderedMapInDifferentiator_ = flagValue; @@ -1514,7 +1532,7 @@ double ReactNativeFeatureFlagsAccessor::viewCullingOutsetRatio() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(82, "viewCullingOutsetRatio"); + markFlagAsAccessed(83, "viewCullingOutsetRatio"); flagValue = currentProvider_->viewCullingOutsetRatio(); viewCullingOutsetRatio_ = flagValue; @@ -1532,7 +1550,7 @@ bool ReactNativeFeatureFlagsAccessor::viewTransitionEnabled() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(83, "viewTransitionEnabled"); + markFlagAsAccessed(84, "viewTransitionEnabled"); flagValue = currentProvider_->viewTransitionEnabled(); viewTransitionEnabled_ = flagValue; @@ -1550,7 +1568,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(84, "virtualViewPrerenderRatio"); + markFlagAsAccessed(85, "virtualViewPrerenderRatio"); flagValue = currentProvider_->virtualViewPrerenderRatio(); virtualViewPrerenderRatio_ = flagValue; diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h index b3784c81fe63..9dd9035766dd 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<2cb2c124f044468f96262086bfac5aad>> + * @generated SignedSource<<97dbc8efdf72bdf5cfd67cc584089583>> */ /** @@ -73,6 +73,7 @@ class ReactNativeFeatureFlagsAccessor { bool enableLayoutAnimationsOnIOS(); bool enableMainQueueCoordinatorOnIOS(); bool enableModuleArgumentNSNullConversionIOS(); + bool enableMutationObserverByDefault(); bool enableNativeCSSParsing(); bool enableNetworkEventReporting(); bool enablePreparedTextLayout(); @@ -128,7 +129,7 @@ class ReactNativeFeatureFlagsAccessor { std::unique_ptr currentProvider_; bool wasOverridden_; - std::array, 85> accessedFeatureFlags_; + std::array, 86> accessedFeatureFlags_; std::atomic> commonTestFlag_; std::atomic> cdpInteractionMetricsEnabled_; @@ -171,6 +172,7 @@ class ReactNativeFeatureFlagsAccessor { std::atomic> enableLayoutAnimationsOnIOS_; std::atomic> enableMainQueueCoordinatorOnIOS_; std::atomic> enableModuleArgumentNSNullConversionIOS_; + std::atomic> enableMutationObserverByDefault_; std::atomic> enableNativeCSSParsing_; std::atomic> enableNetworkEventReporting_; std::atomic> enablePreparedTextLayout_; diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h index 75ba8e143e40..c1601513425a 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<7f1c4037925fc37dcdcba51df968d503>> + * @generated SignedSource<> */ /** @@ -191,6 +191,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider { return false; } + bool enableMutationObserverByDefault() override { + return false; + } + bool enableNativeCSSParsing() override { return false; } diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h index 62a9247ac77d..1c97b2fc68fd 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<910c939dfed07bfcff6f9990b38f2b86>> */ /** @@ -414,6 +414,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef return ReactNativeFeatureFlagsDefaults::enableModuleArgumentNSNullConversionIOS(); } + bool enableMutationObserverByDefault() override { + auto value = values_["enableMutationObserverByDefault"]; + if (!value.isNull()) { + return value.getBool(); + } + + return ReactNativeFeatureFlagsDefaults::enableMutationObserverByDefault(); + } + bool enableNativeCSSParsing() override { auto value = values_["enableNativeCSSParsing"]; if (!value.isNull()) { diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h index 5ad1bf98143f..b97ed6d8d466 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<6a047fa1d33ea17ebd7ba8d0680ee1cc>> + * @generated SignedSource<<6ded821dda8049a32168bf82333dd4c3>> */ /** @@ -27,6 +27,10 @@ class ReactNativeFeatureFlagsOverridesOSSExperimental : public ReactNativeFeatur public: ReactNativeFeatureFlagsOverridesOSSExperimental() = default; + bool cxxNativeAnimatedEnabled() override { + return true; + } + bool enableAccessibilityOrder() override { return true; } @@ -42,6 +46,10 @@ class ReactNativeFeatureFlagsOverridesOSSExperimental : public ReactNativeFeatur bool preventShadowTreeCommitExhaustion() override { return true; } + + bool useSharedAnimatedBackend() override { + return true; + } }; } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h index f1cff605711a..e9eca4bdbc00 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<43e301c5028a2ed195e2a3d0a4cd0ab3>> + * @generated SignedSource<<33ea9739f322493e078a965279bf9ded>> */ /** @@ -66,6 +66,7 @@ class ReactNativeFeatureFlagsProvider { virtual bool enableLayoutAnimationsOnIOS() = 0; virtual bool enableMainQueueCoordinatorOnIOS() = 0; virtual bool enableModuleArgumentNSNullConversionIOS() = 0; + virtual bool enableMutationObserverByDefault() = 0; virtual bool enableNativeCSSParsing() = 0; virtual bool enableNetworkEventReporting() = 0; virtual bool enablePreparedTextLayout() = 0; diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm index b36c819cca85..a2c71d8b51d4 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm @@ -461,7 +461,9 @@ TraceSection s( @try { [inv invokeWithTarget:strongModule]; } @catch (NSException *exception) { - throw convertNSExceptionToJSError(runtime, exception, std::string{moduleName}, methodNameStr); + // Void methods are always async, re-throw instead of converting to + // JSError, same as the async branch in performMethodInvocation. + @throw exception; } @finally { [retainedObjectsForInvocation removeAllObjects]; } diff --git a/packages/react-native/ReactCommon/react/nativemodule/defaults/CMakeLists.txt b/packages/react-native/ReactCommon/react/nativemodule/defaults/CMakeLists.txt index 42bcbe2724ff..6e0a9d9b0b1c 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/nativemodule/defaults/CMakeLists.txt @@ -22,7 +22,9 @@ target_link_libraries(react_nativemodule_defaults react_nativemodule_microtasks react_nativemodule_idlecallbacks react_nativemodule_intersectionobserver + react_nativemodule_mutationobserver react_nativemodule_webperformance + react_renderer_animated ) target_compile_reactnative_options(react_nativemodule_defaults PRIVATE) target_compile_options(react_nativemodule_defaults PRIVATE -Wpedantic) diff --git a/packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp b/packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp index 3c50a17e2ff7..fe36e1af6c74 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp @@ -12,7 +12,9 @@ #include #include #include +#include #include +#include #ifdef REACT_NATIVE_DEBUGGER_ENABLED_DEVONLY #include @@ -49,6 +51,19 @@ namespace facebook::react { } } + if (ReactNativeFeatureFlags::enableMutationObserverByDefault()) { + if (name == NativeMutationObserver::kModuleName) { + return std::make_shared(jsInvoker); + } + } + + if (ReactNativeFeatureFlags::cxxNativeAnimatedEnabled() && + ReactNativeFeatureFlags::useSharedAnimatedBackend() && + name == AnimatedModule::kModuleName) { + return std::make_shared( + jsInvoker, std::make_shared()); + } + #ifdef REACT_NATIVE_DEBUGGER_ENABLED_DEVONLY if (name == DevToolsRuntimeSettingsModule::kModuleName) { return std::make_shared(jsInvoker); diff --git a/packages/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec b/packages/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec index cacd372e6ff1..e8b4e3931579 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +++ b/packages/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec @@ -53,7 +53,9 @@ Pod::Spec.new do |s| s.dependency "React-microtasksnativemodule" s.dependency "React-idlecallbacksnativemodule" s.dependency "React-intersectionobservernativemodule" + s.dependency "React-mutationobservernativemodule" s.dependency "React-webperformancenativemodule" + s.dependency "React-Fabric/animated" add_dependency(s, "React-RCTFBReactNativeSpec") add_dependency(s, "React-featureflags") add_dependency(s, "React-featureflagsnativemodule") diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp index 34101508393f..975da72a6f19 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<006c43555032f785207c6c013f1974f5>> + * @generated SignedSource<> */ /** @@ -249,6 +249,11 @@ bool NativeReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS( return ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS(); } +bool NativeReactNativeFeatureFlags::enableMutationObserverByDefault( + jsi::Runtime& /*runtime*/) { + return ReactNativeFeatureFlags::enableMutationObserverByDefault(); +} + bool NativeReactNativeFeatureFlags::enableNativeCSSParsing( jsi::Runtime& /*runtime*/) { return ReactNativeFeatureFlags::enableNativeCSSParsing(); diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h index 6675417c0e51..cc86d887872c 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<525d64b15e1b72440743363280116c6a>> + * @generated SignedSource<<65d6afec6765b87de65b41f72c17f44f>> */ /** @@ -118,6 +118,8 @@ class NativeReactNativeFeatureFlags bool enableModuleArgumentNSNullConversionIOS(jsi::Runtime& runtime); + bool enableMutationObserverByDefault(jsi::Runtime& runtime); + bool enableNativeCSSParsing(jsi::Runtime& runtime); bool enableNetworkEventReporting(jsi::Runtime& runtime); diff --git a/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h index bbb5737e90cd..fb590fa9a274 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +++ b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h @@ -7,7 +7,11 @@ #pragma once +#if __has_include("FBReactNativeSpecJSI.h") // CocoaPod headers on Apple +#include "FBReactNativeSpecJSI.h" +#else #include +#endif #include #include #include diff --git a/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec new file mode 100644 index 000000000000..4ce39514ae20 --- /dev/null +++ b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec @@ -0,0 +1,66 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +require "json" + +package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "..", "package.json"))) +version = package['version'] + +source = { :git => 'https://github.com/facebook/react-native.git' } +if version == '1000.0.0' + # This is an unpublished version, use the latest commit hash of the react-native repo, which we're presumably in. + source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1") +else + source[:tag] = "v#{version}" +end + +header_search_paths = [ + "\"$(PODS_ROOT)/Headers/Private/Yoga\"", +] + +if ENV['USE_FRAMEWORKS'] + header_search_paths << "\"$(PODS_TARGET_SRCROOT)/../../..\"" # this is needed to allow the module access its own files +end + +Pod::Spec.new do |s| + s.name = "React-mutationobservernativemodule" + s.version = version + s.summary = "React Native mutation observer native module" + s.homepage = "https://reactnative.dev/" + s.license = package["license"] + s.author = "Meta Platforms, Inc. and its affiliates" + s.platforms = min_supported_versions + s.source = source + s.source_files = podspec_sources("*.{cpp,h}", "*.h") + s.header_dir = "react/nativemodule/mutationobserver" + s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), + "HEADER_SEARCH_PATHS" => header_search_paths.join(' '), + "OTHER_CFLAGS" => "$(inherited)", + "DEFINES_MODULE" => "YES" } + + if ENV['USE_FRAMEWORKS'] + s.module_name = "mutationobservernativemodule" + s.header_mappings_dir = "../.." + end + + s.dependency "Yoga" + s.dependency "React-jsi" + s.dependency "React-jsiexecutor" + s.dependency "React-cxxreact" + + depend_on_js_engine(s) + add_rn_third_party_dependencies(s) + add_rncore_dependency(s) + + s.dependency "ReactCommon/turbomodule/core" + + s.dependency "React-Fabric" + s.dependency "React-Fabric/bridging" + s.dependency "React-Fabric/observers/mutation" + s.dependency "React-featureflags" + add_dependency(s, "React-RCTFBReactNativeSpec") + add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"]) + +end diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp index e9b3ffd7ba5d..f51aa4b2d2b7 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp @@ -515,7 +515,10 @@ void NativeAnimatedNodesManager::handleAnimatedEvent( // frames. if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { if (auto animationBackend = animationBackend_.lock()) { - animationBackend->trigger(); + animationBackend->pushAnimationMutations( + [this](AnimationTimestamp timestamp) -> AnimationMutations { + return pullAnimationMutations(timestamp); + }); } } else { onRender(); diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp index 7d95dcee3b51..95d3a508521e 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp @@ -45,8 +45,16 @@ std::shared_ptr NativeAnimatedNodesManagerProvider::getOrCreate( jsi::Runtime& runtime, std::shared_ptr jsInvoker) { - if (nativeAnimatedNodesManager_ == nullptr) { - auto* uiManager = &UIManagerBinding::getBinding(runtime)->getUIManager(); + if (nativeAnimatedNodesManager_ != nullptr) { + return nativeAnimatedNodesManager_; + } + + auto* uiManager = &UIManagerBinding::getBinding(runtime)->getUIManager(); + + if (!ReactNativeFeatureFlags::useSharedAnimatedBackend()) { + // === PATH 1: Legacy Backend (useSharedAnimatedBackend = false) === + // Uses the architecture with MergedValueDispatcher and + // AnimatedMountingOverrideDelegate mergedValueDispatcher_ = std::make_unique( [jsInvoker](std::function&& func) { @@ -84,78 +92,78 @@ NativeAnimatedNodesManagerProvider::getOrCreate( } }; - if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { - auto animationBackend = uiManager->unstable_getAnimationBackend().lock(); - react_native_assert( - animationBackend != nullptr && "animationBackend is nullptr"); - animationBackend->registerJSInvoker(jsInvoker); - - nativeAnimatedNodesManager_ = - std::make_shared(animationBackend); - } else { - nativeAnimatedNodesManager_ = - std::make_shared( - std::move(directManipulationCallback), - std::move(fabricCommitCallback), - std::move(resolvePlatformColor), - std::move(startOnRenderCallback_), - std::move(stopOnRenderCallback_), - std::move(frameRateListenerCallback_)); - - nativeAnimatedDelegate_ = - std::make_shared( - nativeAnimatedNodesManager_); - } - - addEventEmitterListener( - nativeAnimatedNodesManager_->getEventEmitterListener()); - - uiManager->addEventListener( - std::make_shared( - [eventEmitterListenerContainerWeak = - std::weak_ptr( - eventEmitterListenerContainer_)]( - const RawEvent& rawEvent) { - const auto& eventTarget = rawEvent.eventTarget; - const auto& eventPayload = rawEvent.eventPayload; - if (eventTarget && eventPayload) { - if (auto eventEmitterListenerContainer = - eventEmitterListenerContainerWeak.lock(); - eventEmitterListenerContainer != nullptr) { - return eventEmitterListenerContainer->willDispatchEvent( - eventTarget->getTag(), rawEvent.type, *eventPayload); - } - } - return false; - })); + nativeAnimatedNodesManager_ = std::make_shared( + std::move(directManipulationCallback), + std::move(fabricCommitCallback), + std::move(resolvePlatformColor), + std::move(startOnRenderCallback_), + std::move(stopOnRenderCallback_), + std::move(frameRateListenerCallback_)); + + nativeAnimatedDelegate_ = + std::make_shared( + nativeAnimatedNodesManager_); + + animatedMountingOverrideDelegate_ = + std::make_shared( + *nativeAnimatedNodesManager_, *scheduler); + + // Register on existing surfaces + uiManager->getShadowTreeRegistry().enumerate( + [animatedMountingOverrideDelegate = + std::weak_ptr( + animatedMountingOverrideDelegate_)]( + const ShadowTree& shadowTree, bool& /*stop*/) { + shadowTree.getMountingCoordinator()->setMountingOverrideDelegate( + animatedMountingOverrideDelegate); + }); - uiManager->setNativeAnimatedDelegate(nativeAnimatedDelegate_); + // Register on surfaces started in the future + uiManager->setOnSurfaceStartCallback( + [animatedMountingOverrideDelegate = + std::weak_ptr( + animatedMountingOverrideDelegate_)]( + const ShadowTree& shadowTree) { + shadowTree.getMountingCoordinator()->setMountingOverrideDelegate( + animatedMountingOverrideDelegate); + }); - if (!ReactNativeFeatureFlags::useSharedAnimatedBackend()) { - animatedMountingOverrideDelegate_ = - std::make_shared( - *nativeAnimatedNodesManager_, *scheduler); - - // Register on existing surfaces - uiManager->getShadowTreeRegistry().enumerate( - [animatedMountingOverrideDelegate = - std::weak_ptr( - animatedMountingOverrideDelegate_)]( - const ShadowTree& shadowTree, bool& /*stop*/) { - shadowTree.getMountingCoordinator()->setMountingOverrideDelegate( - animatedMountingOverrideDelegate); - }); - // Register on surfaces started in the future - uiManager->setOnSurfaceStartCallback( - [animatedMountingOverrideDelegate = - std::weak_ptr( - animatedMountingOverrideDelegate_)]( - const ShadowTree& shadowTree) { - shadowTree.getMountingCoordinator()->setMountingOverrideDelegate( - animatedMountingOverrideDelegate); - }); - } + uiManager->setNativeAnimatedDelegate(nativeAnimatedDelegate_); + } else { + // === PATH 2: Shared AnimationBackend (useSharedAnimatedBackend = true) === + // Uses the shared AnimationBackend from UIManager. The backend handles all + // animation commits and platform integration internally. + + auto animationBackend = uiManager->unstable_getAnimationBackend().lock(); + react_native_assert( + animationBackend != nullptr && "animationBackend is nullptr"); + animationBackend->registerJSInvoker(jsInvoker); + + nativeAnimatedNodesManager_ = + std::make_shared(animationBackend); } + + addEventEmitterListener( + nativeAnimatedNodesManager_->getEventEmitterListener()); + + uiManager->addEventListener( + std::make_shared( + [eventEmitterListenerContainerWeak = + std::weak_ptr( + eventEmitterListenerContainer_)](const RawEvent& rawEvent) { + const auto& eventTarget = rawEvent.eventTarget; + const auto& eventPayload = rawEvent.eventPayload; + if (eventTarget && eventPayload) { + if (auto eventEmitterListenerContainer = + eventEmitterListenerContainerWeak.lock(); + eventEmitterListenerContainer != nullptr) { + return eventEmitterListenerContainer->willDispatchEvent( + eventTarget->getTag(), rawEvent.type, *eventPayload); + } + } + return false; + })); + return nativeAnimatedNodesManager_; } diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp index 09ee3620c6fd..041eac315d5e 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp @@ -55,7 +55,9 @@ void AnimatedPropsRegistry::update( } } -std::pair&, SnapshotMap&> +std::pair< + std::unordered_set>&, + SnapshotMap&> AnimatedPropsRegistry::getMap(SurfaceId surfaceId) { auto lock = std::lock_guard(mutex_); auto& [pendingMap, map, pendingFamilies, families] = diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h index ead82a635393..f577519762b8 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h @@ -24,11 +24,11 @@ struct PropsSnapshot { struct SurfaceContext { std::unordered_map> pendingMap, map; - std::unordered_set pendingFamilies, families; + std::unordered_set> pendingFamilies, families; }; struct SurfaceUpdates { - std::unordered_set families; + std::unordered_set> families; std::unordered_map propsMap; bool hasLayoutUpdates{false}; }; @@ -39,7 +39,7 @@ class AnimatedPropsRegistry { public: void update(const std::unordered_map &surfaceUpdates); void clear(SurfaceId surfaceId); - std::pair &, SnapshotMap &> getMap(SurfaceId surfaceId); + std::pair> &, SnapshotMap &> getMap(SurfaceId surfaceId); private: std::unordered_map surfaceContexts_; diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp index 3ad43b8e0210..789bb1fc4f7f 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp @@ -24,10 +24,17 @@ static inline Props::Shared cloneProps( shadowNode.getSurfaceId(), *shadowNode.getContextContainer()}; Props::Shared newProps; if (animatedProps.rawProps) { - newProps = shadowNode.getComponentDescriptor().cloneProps( - propsParserContext, - shadowNode.getProps(), - std::move(*animatedProps.rawProps)); + if (ReactNativeFeatureFlags::enableFabricCommitBranching()) { + newProps = shadowNode.getComponentDescriptor().cloneProps( + propsParserContext, + shadowNode.getProps(), + std::move(*animatedProps.rawProps)); + } else { + newProps = shadowNode.getComponentDescriptor().cloneProps( + propsParserContext, + shadowNode.getProps(), + RawProps(*animatedProps.rawProps)); + } } else { newProps = shadowNode.getComponentDescriptor().cloneProps( propsParserContext, shadowNode.getProps(), {}); @@ -51,31 +58,27 @@ AnimationBackend::AnimationBackend( react_native_assert(uiManager_.expired() == false); } -void AnimationBackend::onAnimationFrame(AnimationTimestamp timestamp) { - std::vector callbacksCopy; - std::unordered_map surfaceUpdates; - std::set asyncFlushSurfaces; +void AnimationBackend::unpackMutations( + AnimationMutations& mutations, + std::unordered_map& surfaceUpdates, + std::set& asyncFlushSurfaces) { + for (auto& mutation : mutations.batch) { + const auto family = mutation.family; + react_native_assert(family != nullptr); - { - std::lock_guard lock(mutex_); - callbacksCopy = callbacks; + auto& [families, updates, hasLayoutUpdates] = + surfaceUpdates[family->getSurfaceId()]; + hasLayoutUpdates |= mutation.hasLayoutUpdates; + families.insert(family); + updates[mutation.tag] = std::move(mutation.props); } - for (auto& callbackWithId : callbacksCopy) { - auto mutations = callbackWithId.callback(timestamp); - asyncFlushSurfaces.merge(mutations.asyncFlushSurfaces); - for (auto& mutation : mutations.batch) { - const auto family = mutation.family; - react_native_assert(family != nullptr); - - auto& [families, updates, hasLayoutUpdates] = - surfaceUpdates[family->getSurfaceId()]; - hasLayoutUpdates |= mutation.hasLayoutUpdates; - families.insert(family.get()); - updates[mutation.tag] = std::move(mutation.props); - } - } + asyncFlushSurfaces.merge(mutations.asyncFlushSurfaces); +} +void AnimationBackend::applySurfaceUpdates( + std::unordered_map& surfaceUpdates, + const std::set& asyncFlushSurfaces) { animatedPropsRegistry_->update(surfaceUpdates); for (auto& [surfaceId, updates] : surfaceUpdates) { @@ -89,6 +92,30 @@ void AnimationBackend::onAnimationFrame(AnimationTimestamp timestamp) { requestAsyncFlushForSurfaces(asyncFlushSurfaces); } +void AnimationBackend::applyMutations(AnimationMutations mutations) { + std::unordered_map surfaceUpdates; + std::set asyncFlushSurfaces; + unpackMutations(mutations, surfaceUpdates, asyncFlushSurfaces); + applySurfaceUpdates(surfaceUpdates, asyncFlushSurfaces); +} + +void AnimationBackend::onAnimationFrame(AnimationTimestamp timestamp) { + std::vector callbacksCopy; + + { + std::lock_guard lock(mutex_); + callbacksCopy = callbacks; + } + + std::unordered_map surfaceUpdates; + std::set asyncFlushSurfaces; + for (auto& callbackWithId : callbacksCopy) { + auto mutations = callbackWithId.callback(timestamp); + unpackMutations(mutations, surfaceUpdates, asyncFlushSurfaces); + } + applySurfaceUpdates(surfaceUpdates, asyncFlushSurfaces); +} + CallbackId AnimationBackend::start(const Callback& callback) { std::lock_guard lock(mutex_); @@ -123,6 +150,12 @@ void AnimationBackend::trigger() { onAnimationFrame(std::chrono::steady_clock::now().time_since_epoch()); } +void AnimationBackend::pushAnimationMutations(const Callback& callback) { + auto timestamp = animationChoreographer_->now(); + auto mutations = callback(timestamp); + applyMutations(std::move(mutations)); +} + void AnimationBackend::commitUpdates( SurfaceId surfaceId, SurfaceUpdates& surfaceUpdates) { @@ -146,7 +179,8 @@ void AnimationBackend::commitUpdates( const ShadowNode& shadowNode, const ShadowNodeFragment& fragment) { auto newProps = ShadowNodeFragment::propsPlaceholder(); - if (surfaceFamilies.contains(&shadowNode.getFamily())) { + if (surfaceFamilies.contains( + shadowNode.getFamilyShared())) { auto& animatedProps = updates.at(shadowNode.getTag()); newProps = cloneProps(animatedProps, shadowNode); } diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.h b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.h index deef1fb532e0..91463154286a 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackend.h @@ -60,10 +60,19 @@ class AnimationBackend : public UIManagerAnimationBackend { void onAnimationFrame(AnimationTimestamp timestamp) override; void trigger() override; + void pushAnimationMutations(const Callback &callback) override; CallbackId start(const Callback &callback) override; void stop(CallbackId callbackId) override; private: + void unpackMutations( + AnimationMutations &mutations, + std::unordered_map &surfaceUpdates, + std::set &asyncFlushSurfaces); + void applySurfaceUpdates( + std::unordered_map &surfaceUpdates, + const std::set &asyncFlushSurfaces); + void applyMutations(AnimationMutations mutations); std::vector callbacks; std::shared_ptr animatedPropsRegistry_; std::shared_ptr animationChoreographer_; diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp index 4a00926b0e2d..cb547d9e367d 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp @@ -43,9 +43,10 @@ RootShadowNode::Unshared AnimationBackendCommitHook::shadowTreeWillCommit( const ShadowNodeFragment& fragment) { auto newProps = ShadowNodeFragment::propsPlaceholder(); std::shared_ptr viewProps = nullptr; - if (surfaceFamilies.contains(&shadowNode.getFamily()) && - updates.contains(shadowNode.getTag())) { - auto& snapshot = updates.at(shadowNode.getTag()); + if (auto updatesIter = updates.find(shadowNode.getTag()); + updatesIter != updates.end() && + surfaceFamilies.contains(shadowNode.getFamilyShared())) { + auto& snapshot = updatesIter->second; if (!snapshot->propNames.empty() || snapshot->rawProps) { PropsParserContext propsParserContext{ shadowNode.getSurfaceId(), diff --git a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h index e6194b199494..94be54e3a219 100644 --- a/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h +++ b/packages/react-native/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h @@ -8,6 +8,7 @@ #pragma once #include +#include namespace facebook::react { @@ -21,6 +22,10 @@ class AnimationChoreographer { virtual void resume() = 0; virtual void pause() = 0; + virtual AnimationTimestamp now() const + { + return HighResTimeStamp::now().toChronoSteadyClockTimePoint().time_since_epoch(); + } void setAnimationBackend(std::weak_ptr animationBackend) { animationBackend_ = animationBackend; diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp index 168dd4079d4d..acbc5aea1cf2 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp @@ -413,17 +413,16 @@ namespace { std::shared_ptr cloneMultipleRecursive( const ShadowNode& shadowNode, - const std::unordered_map& childrenCount, + const std::unordered_map& childrenCount, const std::function(const ShadowNode&, const ShadowNodeFragment&)>& callback) { - const auto* family = &shadowNode.getFamily(); auto& children = shadowNode.getChildren(); std::shared_ptr>> newChildren; - auto count = childrenCount.at(family); + auto count = childrenCount.at(shadowNode.getTag()); for (size_t i = 0; count > 0 && i < children.size(); i++) { - const auto childFamily = &children[i]->getFamily(); - if (childrenCount.contains(childFamily)) { + const auto childTag = children[i]->getTag(); + if (childrenCount.contains(childTag)) { count--; if (!newChildren) { newChildren = @@ -441,37 +440,39 @@ std::shared_ptr cloneMultipleRecursive( } // namespace std::shared_ptr ShadowNode::cloneMultiple( - const std::unordered_set& familiesToUpdate, + const std::unordered_set>& + familiesToUpdate, const std::function( const ShadowNode& oldShadowNode, const ShadowNodeFragment& fragment)>& callback) const { - std::unordered_map childrenCount; + std::unordered_map childrenCount; for (const auto& family : familiesToUpdate) { - if (childrenCount.contains(family)) { + if (childrenCount.contains(family->getTag())) { continue; } - childrenCount[family] = 0; + childrenCount[family->getTag()] = 0; auto ancestor = family->parent_.lock(); while ((ancestor != nullptr) && ancestor != family_) { - auto ancestorIt = childrenCount.find(ancestor.get()); + auto ancestorTag = ancestor->getTag(); + auto ancestorIt = childrenCount.find(ancestorTag); if (ancestorIt != childrenCount.end()) { ancestorIt->second++; break; } - childrenCount[ancestor.get()] = 1; + childrenCount[ancestorTag] = 1; ancestor = ancestor->parent_.lock(); } if (ancestor == family_) { - childrenCount[ancestor.get()]++; + childrenCount[ancestor->getTag()]++; } } - if (!childrenCount.contains(&this->getFamily())) { + if (!childrenCount.contains(getTag())) { return nullptr; } diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h index a27d70aae7b2..4a804c63dfbc 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h @@ -109,7 +109,7 @@ class ShadowNode : public Sealable, public DebugStringConvertible, public jsi::N * Returns `nullptr` if the operation cannot be performed successfully. */ std::shared_ptr cloneMultiple( - const std::unordered_set &familiesToUpdate, + const std::unordered_set> &familiesToUpdate, const std::function< std::shared_ptr(const ShadowNode &oldShadowNode, const ShadowNodeFragment &fragment)> &callback) const; diff --git a/packages/react-native/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp b/packages/react-native/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp index bc4c5eb2b54e..cc53b101e115 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +++ b/packages/react-native/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp @@ -316,7 +316,7 @@ TEST_F(ShadowNodeTest, handleRuntimeReferenceTransferOnClone) { TEST_F(ShadowNodeTest, cloneMultiple) { auto newProps = std::make_shared(); auto newRoot = nodeA_->cloneMultiple( - {&nodeA_->getFamily(), &nodeAB_->getFamily()}, + {nodeA_->getFamilyShared(), nodeAB_->getFamilyShared()}, [&](const ShadowNode& oldShadowNode, const ShadowNodeFragment& fragment) { return oldShadowNode.clone({ .props = newProps, @@ -346,7 +346,7 @@ TEST_F(ShadowNodeTest, cloneMultiple) { TEST_F(ShadowNodeTest, cloneMultipleWithSingleFamily) { auto newProps = std::make_shared(); auto newRoot = nodeA_->cloneMultiple( - {&nodeAB_->getFamily()}, + {nodeAB_->getFamilyShared()}, [&](const ShadowNode& oldShadowNode, const ShadowNodeFragment& fragment) { return oldShadowNode.clone({ .props = newProps, @@ -379,7 +379,7 @@ TEST_F(ShadowNodeTest, cloneMultipleReturnsNullptrWhenFamilyHasNoPathToRoot) { auto newProps = std::make_shared(); // nodeZ_ is not part of nodeA_'s tree auto result = nodeA_->cloneMultiple( - {&nodeZ_->getFamily()}, + {nodeZ_->getFamilyShared()}, [&](const ShadowNode& oldShadowNode, const ShadowNodeFragment& fragment) { return oldShadowNode.clone({ .props = newProps, @@ -396,7 +396,7 @@ TEST_F(ShadowNodeTest, cloneMultipleWithMixOfValidAndInvalidFamilies) { auto newProps = std::make_shared(); // nodeAB_ is in the tree, nodeZ_ is not auto result = nodeA_->cloneMultiple( - {&nodeAB_->getFamily(), &nodeZ_->getFamily()}, + {nodeAB_->getFamilyShared(), nodeZ_->getFamilyShared()}, [&](const ShadowNode& oldShadowNode, const ShadowNodeFragment& fragment) { return oldShadowNode.clone({ .props = newProps, diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h index 221e46860561..46ecea5e4f07 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h @@ -31,6 +31,7 @@ class UIManagerAnimationBackend { virtual void stop(CallbackId callbackId) = 0; virtual void clearRegistry(SurfaceId surfaceId) = 0; virtual void trigger() = 0; + virtual void pushAnimationMutations(const Callback &callback) = 0; virtual void registerJSInvoker(std::shared_ptr jsInvoker) = 0; }; diff --git a/packages/react-native/ReactCxxPlatform/react/runtime/TurboModuleManager.cpp b/packages/react-native/ReactCxxPlatform/react/runtime/TurboModuleManager.cpp index 0b33212a6dd6..ecb9b0b9d05b 100644 --- a/packages/react-native/ReactCxxPlatform/react/runtime/TurboModuleManager.cpp +++ b/packages/react-native/ReactCxxPlatform/react/runtime/TurboModuleManager.cpp @@ -62,15 +62,19 @@ std::shared_ptr TurboModuleManager::operator()( } } + if (animatedNodesManagerProvider_ != nullptr && + name == AnimatedModule::kModuleName) { + // when animatedNodesManagerProvider_ is null, defer to default + return std::make_shared( + jsInvoker_, animatedNodesManagerProvider_); + } + if (auto turboModule = DefaultTurboModules::getTurboModule(name, jsInvoker_)) { return turboModule; } - if (name == AnimatedModule::kModuleName) { - return std::make_shared( - jsInvoker_, animatedNodesManagerProvider_); - } else if (name == AppStateModule::kModuleName) { + if (name == AppStateModule::kModuleName) { return std::make_shared(jsInvoker_); } else if (name == DeviceInfoModule::kModuleName) { return std::make_shared(jsInvoker_); diff --git a/packages/react-native/gradle/libs.versions.toml b/packages/react-native/gradle/libs.versions.toml index f21668ffff84..2f9c46664953 100644 --- a/packages/react-native/gradle/libs.versions.toml +++ b/packages/react-native/gradle/libs.versions.toml @@ -44,7 +44,7 @@ yoga-proguard-annotations = "1.19.0" boost="1_83_0" doubleconversion="1.1.6" fastFloat="8.0.0" -fmt="11.0.2" +fmt="12.1.0" folly="2024.11.18.00" glog="0.3.5" gflags="2.2.0" diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 40467bdf641a..6c103311daa3 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -1,6 +1,6 @@ { "name": "react-native", - "version": "1000.0.0", + "version": "0.85.2", "description": "A framework for building native apps using React", "license": "MIT", "repository": { @@ -149,7 +149,7 @@ "featureflags": "node ./scripts/featureflags/index.js" }, "peerDependencies": { - "@react-native/jest-preset": "0.84.0-main", + "@react-native/jest-preset": "0.85.2", "@types/react": "^19.1.1", "react": "^19.2.3" }, @@ -162,13 +162,13 @@ } }, "dependencies": { - "@react-native/assets-registry": "0.85.0-main", - "@react-native/codegen": "0.85.0-main", - "@react-native/community-cli-plugin": "0.85.0-main", - "@react-native/gradle-plugin": "0.85.0-main", - "@react-native/js-polyfills": "0.85.0-main", - "@react-native/normalize-colors": "0.85.0-main", - "@react-native/virtualized-lists": "0.85.0-main", + "@react-native/assets-registry": "0.85.2", + "@react-native/codegen": "0.85.2", + "@react-native/community-cli-plugin": "0.85.2", + "@react-native/gradle-plugin": "0.85.2", + "@react-native/js-polyfills": "0.85.2", + "@react-native/normalize-colors": "0.85.2", + "@react-native/virtualized-lists": "0.85.2", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -176,7 +176,7 @@ "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "hermes-compiler": "0.0.0", + "hermes-compiler": "250829098.0.10", "invariant": "^2.2.4", "memoize-one": "^5.0.0", "metro-runtime": "^0.84.0", diff --git a/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap b/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap index 8c76f937ae04..471b0dc67d77 100644 --- a/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap +++ b/packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap @@ -79,7 +79,7 @@ exports[`execute test-app "ReactAppDependencyProvider/ReactAppDependencyProvider # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.85.2\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -399,7 +399,7 @@ exports[`execute test-app "ReactCodegen/ReactCodegen.podspec" should match snaps # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.85.2\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -586,7 +586,7 @@ exports[`execute test-app-legacy "ReactAppDependencyProvider/ReactAppDependencyP # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.85.2\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -878,7 +878,7 @@ exports[`execute test-app-legacy "ReactCodegen/ReactCodegen.podspec" should matc # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -version = \\"1000.0.0\\" +version = \\"0.85.2\\" source = { :git => 'https://github.com/facebook/react-native.git' } if version == '1000.0.0' # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in. @@ -984,4 +984,4 @@ SCRIPT end " -`; +`; \ No newline at end of file diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js index bf1a24b47323..7c7383ef7991 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js @@ -10,7 +10,7 @@ 'use strict'; const {TEMPLATES_FOLDER_PATH, packageJson} = require('./constants'); -const {codegenLog} = require('./utils'); +const {codegenLog, writeFileSyncIfChanged} = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -38,7 +38,7 @@ function generateAppDependencyProvider(outputDir /*: string */) { 'utf8', ); const finalPathH = path.join(outputDir, 'RCTAppDependencyProvider.h'); - fs.writeFileSync(finalPathH, templateH); + writeFileSyncIfChanged(finalPathH, templateH); codegenLog(`Generated artifact: ${finalPathH}`); const templateMM = fs.readFileSync( @@ -46,7 +46,7 @@ function generateAppDependencyProvider(outputDir /*: string */) { 'utf8', ); const finalPathMM = path.join(outputDir, 'RCTAppDependencyProvider.mm'); - fs.writeFileSync(finalPathMM, templateMM); + writeFileSyncIfChanged(finalPathMM, templateMM); codegenLog(`Generated artifact: ${finalPathMM}`); // Generate the podspec file @@ -58,7 +58,7 @@ function generateAppDependencyProvider(outputDir /*: string */) { outputDir, 'ReactAppDependencyProvider.podspec', ); - fs.writeFileSync(finalPathPodspec, templatePodspec); + writeFileSyncIfChanged(finalPathPodspec, templatePodspec); codegenLog(`Generated podspec: ${finalPathPodspec}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js index a81c00faaa18..99f6c10ed20d 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js @@ -11,7 +11,7 @@ 'use strict'; const {TEMPLATES_FOLDER_PATH} = require('./constants'); -const {parseiOSAnnotations} = require('./utils'); +const {parseiOSAnnotations, writeFileSyncIfChanged} = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -105,13 +105,13 @@ function generateCustomURLHandlers( fs.mkdirSync(outputDir, {recursive: true}); - fs.writeFileSync( + writeFileSyncIfChanged( path.join(outputDir, 'RCTModulesConformingToProtocolsProvider.mm'), finalMMFile, ); const templateH = fs.readFileSync(MODULES_PROTOCOLS_H_TEMPLATE_PATH, 'utf8'); - fs.writeFileSync( + writeFileSyncIfChanged( path.join(outputDir, 'RCTModulesConformingToProtocolsProvider.h'), templateH, ); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js index 1e15509f724a..d8db33f00e31 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js @@ -12,7 +12,7 @@ const generateSpecsCLIExecutor = require('../generate-specs-cli-executor'); const {CORE_LIBRARIES_WITH_OUTPUT_FOLDER} = require('./constants'); -const {codegenLog} = require('./utils'); +const {codegenLog, cpSyncRecursiveIfChanged} = require('./utils'); const fs = require('fs'); const os = require('os'); const path = require('path'); @@ -63,8 +63,7 @@ function generateCode( const outputDir = reactNativeCoreLibraryOutputPath(libraryName, platform) ?? outputPath; fs.mkdirSync(outputDir, {recursive: true}); - // $FlowFixMe[prop-missing] - `fs.cpSync` is missing in Flow libdefs. - fs.cpSync(tmpOutputDir, outputDir, {recursive: true}); + cpSyncRecursiveIfChanged(tmpOutputDir, outputDir); codegenLog(`Generated artifacts: ${outputDir}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js index 3e669401aa88..8eaf9099e81d 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js @@ -10,7 +10,7 @@ 'use strict'; const {TEMPLATES_FOLDER_PATH} = require('./constants'); -const {codegenLog} = require('./utils'); +const {codegenLog, writeFileSyncIfChanged} = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -35,7 +35,7 @@ function generatePackageSwift( path.relative(fullOutputPath, reactNativePath), ); const finalPathH = path.join(outputDir, 'Package.swift'); - fs.writeFileSync(finalPathH, templateH); + writeFileSyncIfChanged(finalPathH, templateH); codegenLog(`Generated artifact: ${finalPathH}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js index 1c8051db5ba5..b5b6ff52bfca 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js @@ -14,6 +14,7 @@ const { codegenLog, isReactNativeCoreLibrary, parseiOSAnnotations, + writeFileSyncIfChanged, } = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -39,7 +40,7 @@ function generateRCTModuleProviders( codegenLog('Generating RCTModulesProvider.h'); const templateH = fs.readFileSync(MODULE_PROVIDERS_H_TEMPLATE_PATH, 'utf8'); const finalPathH = path.join(outputDir, 'RCTModuleProviders.h'); - fs.writeFileSync(finalPathH, templateH); + writeFileSyncIfChanged(finalPathH, templateH); codegenLog(`Generated artifact: ${finalPathH}`); codegenLog('Generating RCTModuleProviders.mm'); @@ -112,7 +113,7 @@ function generateRCTModuleProviders( .readFileSync(MODULE_PROVIDERS_MM_TEMPLATE_PATH, 'utf8') .replace(/{moduleMapping}/, modulesMapping); const finalPathMM = path.join(outputDir, 'RCTModuleProviders.mm'); - fs.writeFileSync(finalPathMM, templateMM); + writeFileSyncIfChanged(finalPathMM, templateMM); codegenLog(`Generated artifact: ${finalPathMM}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js index 5c74af0d6162..1bbfd760debd 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js @@ -15,6 +15,7 @@ const { codegenLog, isReactNativeCoreLibrary, parseiOSAnnotations, + writeFileSyncIfChanged, } = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -41,7 +42,7 @@ function generateRCTThirdPartyComponents( 'utf8', ); const finalPathH = path.join(outputDir, 'RCTThirdPartyComponentsProvider.h'); - fs.writeFileSync(finalPathH, templateH); + writeFileSyncIfChanged(finalPathH, templateH); codegenLog(`Generated artifact: ${finalPathH}`); codegenLog('Generating RCTThirdPartyComponentsProvider.mm'); @@ -150,7 +151,7 @@ function generateRCTThirdPartyComponents( outputDir, 'RCTThirdPartyComponentsProvider.mm', ); - fs.writeFileSync(finalPathMM, templateMM); + writeFileSyncIfChanged(finalPathMM, templateMM); codegenLog(`Generated artifact: ${finalPathMM}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js index 0017bcd41e5f..f12e7c4a4062 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js @@ -15,7 +15,7 @@ const { TEMPLATES_FOLDER_PATH, packageJson, } = require('./constants'); -const {codegenLog} = require('./utils'); +const {codegenLog, writeFileSyncIfChanged} = require('./utils'); const {execSync} = require('child_process'); const fs = require('fs'); const path = require('path'); @@ -39,7 +39,7 @@ function generateReactCodegenPodspec( .replace(/{input-files}/, inputFiles) .replace(/{codegen-script}/, codegenScript); const finalPathPodspec = path.join(outputPath, 'ReactCodegen.podspec'); - fs.writeFileSync(finalPathPodspec, finalPodspec); + writeFileSyncIfChanged(finalPathPodspec, finalPodspec); codegenLog(`Generated podspec: ${finalPathPodspec}`); } diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js index 4d2ea86017e7..f2505a8f0145 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js @@ -11,7 +11,7 @@ 'use strict'; const {TEMPLATES_FOLDER_PATH} = require('./constants'); -const {parseiOSAnnotations} = require('./utils'); +const {parseiOSAnnotations, writeFileSyncIfChanged} = require('./utils'); const fs = require('fs'); const path = require('path'); @@ -70,7 +70,7 @@ function generateUnstableModulesRequiringMainQueueSetupProvider( fs.mkdirSync(outputDir, {recursive: true}); - fs.writeFileSync( + writeFileSyncIfChanged( path.join( outputDir, 'RCTUnstableModulesRequiringMainQueueSetupProvider.mm', @@ -82,7 +82,7 @@ function generateUnstableModulesRequiringMainQueueSetupProvider( UNSTABLE_MODULES_REQUIRING_MAIN_QUEUE_SETUP_PROVIDER_H_TEMPLATE_PATH, 'utf8', ); - fs.writeFileSync( + writeFileSyncIfChanged( path.join(outputDir, 'RCTUnstableModulesRequiringMainQueueSetupProvider.h'), templateH, ); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js index 4649fe29da5d..98ac2eb1c177 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js @@ -485,6 +485,52 @@ function findReactNativeRootPath(projectRoot /* : string */) /* : string */ { return path.dirname(reactNativePackageJsonPath); } +function writeFileSyncIfChanged( + targetPath /*: string */, + contents /*: string */, +) { + try { + const oldContents = fs.readFileSync(targetPath, 'utf8'); + if (oldContents === contents) { + return; + } + } catch (error) { + if (error.code !== 'ENOENT') { + throw error; + } + } + fs.writeFileSync(targetPath, contents); +} + +function cpSyncRecursiveIfChanged( + sourcePath /*: string */, + targetPath /*: string */, +) { + fs.cpSync(sourcePath, targetPath, { + recursive: true, + force: true, + preserveTimestamps: true, + filter(src /*: string */, dest /*: string */) { + try { + const stat = fs.statSync(src); + if (!stat.isFile()) { + return true; + } else { + const oldContents = fs.readFileSync(dest, 'utf8'); + const newContents = fs.readFileSync(src, 'utf8'); + return oldContents !== newContents; + } + } catch (error) { + if (error.code !== 'ENOENT' && error.code !== 'EISDIR') { + throw error; + } else { + return true; + } + } + }, + }); +} + module.exports = { buildCodegenIfNeeded, pkgJsonIncludesGeneratedCode, @@ -499,4 +545,6 @@ module.exports = { readReactNativeConfig, findDisabledLibrariesByPlatform, findReactNativeRootPath, + writeFileSyncIfChanged, + cpSyncRecursiveIfChanged, }; diff --git a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js index f94c57d63e44..cc73323232ec 100644 --- a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js +++ b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js @@ -80,7 +80,7 @@ const definitions: FeatureFlagDefinitions = { expectedReleaseValue: true, purpose: 'experimentation', }, - ossReleaseStage: 'none', + ossReleaseStage: 'experimental', }, defaultTextToOverflowHidden: { defaultValue: true, @@ -485,6 +485,15 @@ const definitions: FeatureFlagDefinitions = { }, ossReleaseStage: 'none', }, + enableMutationObserverByDefault: { + defaultValue: false, + metadata: { + description: 'Enables the MutationObserver Web API in React Native.', + expectedReleaseValue: true, + purpose: 'release', + }, + ossReleaseStage: 'none', + }, enableNativeCSSParsing: { defaultValue: false, metadata: { @@ -878,7 +887,7 @@ const definitions: FeatureFlagDefinitions = { expectedReleaseValue: true, purpose: 'experimentation', }, - ossReleaseStage: 'none', + ossReleaseStage: 'experimental', }, useTraitHiddenOnAndroid: { defaultValue: false, diff --git a/packages/react-native/scripts/ios-prebuild/templates/React-umbrella.h b/packages/react-native/scripts/ios-prebuild/templates/React-umbrella.h index 2c174c9fdee0..a9ac61d16b6a 100644 --- a/packages/react-native/scripts/ios-prebuild/templates/React-umbrella.h +++ b/packages/react-native/scripts/ios-prebuild/templates/React-umbrella.h @@ -86,6 +86,7 @@ #import #import #import +#import #import #import #import diff --git a/packages/react-native/scripts/react_native_pods.rb b/packages/react-native/scripts/react_native_pods.rb index d157fce21723..69af2ee519ad 100644 --- a/packages/react-native/scripts/react_native_pods.rb +++ b/packages/react-native/scripts/react_native_pods.rb @@ -157,6 +157,7 @@ def use_react_native! ( pod 'React-microtasksnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/microtasks" pod 'React-idlecallbacksnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/idlecallbacks" pod 'React-intersectionobservernativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/intersectionobserver" + pod 'React-mutationobservernativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/mutationobserver" pod 'React-webperformancenativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/webperformance" pod 'React-domnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/dom" pod 'React-defaultsnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/defaults" diff --git a/packages/react-native/sdks/.hermesv1version b/packages/react-native/sdks/.hermesv1version new file mode 100644 index 000000000000..2a18cc8792b2 --- /dev/null +++ b/packages/react-native/sdks/.hermesv1version @@ -0,0 +1 @@ +hermes-v250829098.0.10 \ No newline at end of file diff --git a/packages/react-native/sdks/.hermesversion b/packages/react-native/sdks/.hermesversion new file mode 100644 index 000000000000..2f5473eb31ad --- /dev/null +++ b/packages/react-native/sdks/.hermesversion @@ -0,0 +1 @@ +hermes-v0.16.0 \ No newline at end of file diff --git a/packages/react-native/sdks/hermes-engine/version.properties b/packages/react-native/sdks/hermes-engine/version.properties index 37b6d2a01821..701dbedbc1ab 100644 --- a/packages/react-native/sdks/hermes-engine/version.properties +++ b/packages/react-native/sdks/hermes-engine/version.properties @@ -1,2 +1,2 @@ -HERMES_VERSION_NAME=1000.0.0 -HERMES_V1_VERSION_NAME=250829098.0.6 +HERMES_VERSION_NAME=0.16.0 +HERMES_V1_VERSION_NAME=250829098.0.10 diff --git a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js index a5d41dc0b7dc..f348b4d7f6fb 100644 --- a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<03688450419694f6d3f4fc709df4de9a>> + * @generated SignedSource<> * @flow strict * @noformat */ @@ -89,6 +89,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{ enableLayoutAnimationsOnIOS: Getter, enableMainQueueCoordinatorOnIOS: Getter, enableModuleArgumentNSNullConversionIOS: Getter, + enableMutationObserverByDefault: Getter, enableNativeCSSParsing: Getter, enableNetworkEventReporting: Getter, enablePreparedTextLayout: Getter, @@ -368,6 +369,10 @@ export const enableMainQueueCoordinatorOnIOS: Getter = createNativeFlag * Enable NSNull conversion when handling module arguments on iOS */ export const enableModuleArgumentNSNullConversionIOS: Getter = createNativeFlagGetter('enableModuleArgumentNSNullConversionIOS', false); +/** + * Enables the MutationObserver Web API in React Native. + */ +export const enableMutationObserverByDefault: Getter = createNativeFlagGetter('enableMutationObserverByDefault', false); /** * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing */ diff --git a/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js index 4b47cc872f5c..f658dbeecf50 100644 --- a/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<2955ab3f744af8b5cdf587312ba423d7>> + * @generated SignedSource<> * @flow strict * @noformat */ @@ -66,6 +66,7 @@ export interface Spec extends TurboModule { +enableLayoutAnimationsOnIOS?: () => boolean; +enableMainQueueCoordinatorOnIOS?: () => boolean; +enableModuleArgumentNSNullConversionIOS?: () => boolean; + +enableMutationObserverByDefault?: () => boolean; +enableNativeCSSParsing?: () => boolean; +enableNetworkEventReporting?: () => boolean; +enablePreparedTextLayout?: () => boolean; diff --git a/packages/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js b/packages/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js index 9df7e8b8fc66..eb61a6644345 100644 --- a/packages/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js +++ b/packages/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js @@ -47,4 +47,10 @@ export default function setUpDefaltReactNativeEnvironment( ) { require('./setUpIntersectionObserver').default(); } + + if ( + require('../../../src/private/featureflags/ReactNativeFeatureFlags').enableMutationObserverByDefault() + ) { + require('./setUpMutationObserver').default(); + } } diff --git a/packages/react-native/third-party-podspecs/RCT-Folly.podspec b/packages/react-native/third-party-podspecs/RCT-Folly.podspec index 8df5864328b5..0c00066227ff 100644 --- a/packages/react-native/third-party-podspecs/RCT-Folly.podspec +++ b/packages/react-native/third-party-podspecs/RCT-Folly.podspec @@ -25,7 +25,7 @@ Pod::Spec.new do |spec| spec.dependency "DoubleConversion" spec.dependency "glog" spec.dependency "fast_float", "8.0.0" - spec.dependency "fmt", "11.0.2" + spec.dependency "fmt", "12.1.0" spec.compiler_flags = '-Wno-documentation -faligned-new' spec.source_files = 'folly/String.cpp', 'folly/Conv.cpp', diff --git a/packages/react-native/third-party-podspecs/fmt.podspec b/packages/react-native/third-party-podspecs/fmt.podspec index 2f38990e226c..a40c5755e049 100644 --- a/packages/react-native/third-party-podspecs/fmt.podspec +++ b/packages/react-native/third-party-podspecs/fmt.podspec @@ -8,14 +8,14 @@ fmt_git_url = fmt_config[:git] Pod::Spec.new do |spec| spec.name = "fmt" - spec.version = "11.0.2" + spec.version = "12.1.0" spec.license = { :type => "MIT" } spec.homepage = "https://github.com/fmtlib/fmt" spec.summary = "{fmt} is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and iostreams." spec.authors = "The fmt contributors" spec.source = { :git => fmt_git_url, - :tag => "11.0.2" + :tag => "12.1.0" } spec.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 6f3dcbc20306..d3a225f7cf50 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -1,33 +1,14 @@ PODS: - - boost (1.84.0) - - DoubleConversion (1.1.6) - - fast_float (8.0.0) - - FBLazyVector (1000.0.0) - - fmt (11.0.2) - - glog (0.3.5) - - hermes-engine (1000.0.0): - - hermes-engine/cdp (= 1000.0.0) - - hermes-engine/Hermes (= 1000.0.0) - - hermes-engine/inspector (= 1000.0.0) - - hermes-engine/inspector_chrome (= 1000.0.0) - - hermes-engine/Public (= 1000.0.0) - - hermes-engine/cdp (1000.0.0) - - hermes-engine/Hermes (1000.0.0) - - hermes-engine/inspector (1000.0.0) - - hermes-engine/inspector_chrome (1000.0.0) - - hermes-engine/Public (1000.0.0) - - MyNativeView (0.82.0-main): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - FBLazyVector (0.85.2) + - hermes-engine (250829098.0.10): + - hermes-engine/Pre-built (= 250829098.0.10) + - hermes-engine/Pre-built (250829098.0.10) + - MyNativeView (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -42,20 +23,14 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - NativeCxxModuleExample (0.82.0-main): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - NativeCxxModuleExample (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -70,62 +45,37 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - OCMock (3.9.4) - - RCT-Folly (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Default (= 2024.11.18.00) - - RCT-Folly/Default (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Fabric (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCTDeprecation (1000.0.0) - - RCTRequired (1000.0.0) - - RCTSwiftUI (1000.0.0) - - RCTSwiftUIWrapper (1000.0.0): + - RCTDeprecation (0.85.2) + - RCTRequired (0.85.2) + - RCTSwiftUI (0.85.2) + - RCTSwiftUIWrapper (0.85.2): - RCTSwiftUI - - RCTTypeSafety (1000.0.0): - - FBLazyVector (= 1000.0.0) - - RCTRequired (= 1000.0.0) - - React-Core (= 1000.0.0) - - React (1000.0.0): - - React-Core (= 1000.0.0) - - React-Core/DevSupport (= 1000.0.0) - - React-Core/RCTWebSocket (= 1000.0.0) - - React-RCTActionSheet (= 1000.0.0) - - React-RCTAnimation (= 1000.0.0) - - React-RCTBlob (= 1000.0.0) - - React-RCTImage (= 1000.0.0) - - React-RCTLinking (= 1000.0.0) - - React-RCTNetwork (= 1000.0.0) - - React-RCTSettings (= 1000.0.0) - - React-RCTText (= 1000.0.0) - - React-RCTVibration (= 1000.0.0) - - React-callinvoker (1000.0.0) - - React-Core (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - RCTTypeSafety (0.85.2): + - FBLazyVector (= 0.85.2) + - RCTRequired (= 0.85.2) + - React-Core (= 0.85.2) + - React (0.85.2): + - React-Core (= 0.85.2) + - React-Core/DevSupport (= 0.85.2) + - React-Core/RCTWebSocket (= 0.85.2) + - React-RCTActionSheet (= 0.85.2) + - React-RCTAnimation (= 0.85.2) + - React-RCTBlob (= 0.85.2) + - React-RCTImage (= 0.85.2) + - React-RCTLinking (= 0.85.2) + - React-RCTNetwork (= 0.85.2) + - React-RCTSettings (= 0.85.2) + - React-RCTText (= 0.85.2) + - React-RCTVibration (= 0.85.2) + - React-callinvoker (0.85.2) + - React-Core (0.85.2): + - hermes-engine - RCTDeprecation - - React-Core/Default (= 1000.0.0) + - React-Core-prebuilt + - React-Core/Default (= 0.85.2) - React-cxxreact - React-featureflags - React-hermes @@ -138,18 +88,14 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/CoreModulesHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt (0.85.2): + - ReactNativeDependencies + - React-Core/CoreModulesHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -163,18 +109,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/Default (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/Default (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-cxxreact - React-featureflags - React-hermes @@ -187,20 +127,14 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/DevSupport (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/DevSupport (0.85.2): + - hermes-engine - RCTDeprecation - - React-Core/Default (= 1000.0.0) - - React-Core/RCTWebSocket (= 1000.0.0) + - React-Core-prebuilt + - React-Core/Default (= 0.85.2) + - React-Core/RCTWebSocket (= 0.85.2) - React-cxxreact - React-featureflags - React-hermes @@ -213,18 +147,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTActionSheetHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTActionSheetHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -238,18 +166,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTAnimationHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTAnimationHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -263,18 +185,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTBlobHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTBlobHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -288,18 +204,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTImageHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTImageHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -313,18 +223,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTLinkingHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTLinkingHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -338,18 +242,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTNetworkHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTNetworkHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -363,18 +261,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTPushNotificationHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTPushNotificationHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -388,18 +280,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTSettingsHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTSettingsHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -413,18 +299,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTTextHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTTextHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -438,18 +318,12 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTVibrationHeaders (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTVibrationHeaders (0.85.2): + - hermes-engine - RCTDeprecation + - React-Core-prebuilt - React-Core/Default - React-cxxreact - React-featureflags @@ -463,19 +337,13 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Core/RCTWebSocket (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core/RCTWebSocket (0.85.2): + - hermes-engine - RCTDeprecation - - React-Core/Default (= 1000.0.0) + - React-Core-prebuilt + - React-Core/Default (= 0.85.2) - React-cxxreact - React-featureflags - React-hermes @@ -488,76 +356,60 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-CoreModules (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety (= 1000.0.0) - - React-Core/CoreModulesHeaders (= 1000.0.0) - - React-jsi (= 1000.0.0) + - React-CoreModules (0.85.2): + - RCTTypeSafety (= 0.85.2) + - React-Core-prebuilt + - React-Core/CoreModulesHeaders (= 0.85.2) + - React-debug + - React-jsi (= 0.85.2) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 1000.0.0) + - React-RCTImage (= 0.85.2) - React-runtimeexecutor + - React-utils - ReactCommon - - SocketRocket - - React-cxxreact (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-debug (= 1000.0.0) - - React-jsi (= 1000.0.0) + - ReactNativeDependencies + - React-cxxreact (0.85.2): + - hermes-engine + - React-callinvoker (= 0.85.2) + - React-Core-prebuilt + - React-debug (= 0.85.2) + - React-jsi (= 0.85.2) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) + - React-logger (= 0.85.2) + - React-perflogger (= 0.85.2) - React-runtimeexecutor - - React-timing (= 1000.0.0) - - SocketRocket - - React-debug (1000.0.0) - - React-defaultsnativemodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-timing (= 0.85.2) + - React-utils + - ReactNativeDependencies + - React-debug (0.85.2) + - React-defaultsnativemodule (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-domnativemodule + - React-Fabric/animated + - React-featureflags - React-featureflagsnativemodule - React-idlecallbacksnativemodule + - React-intersectionobservernativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule - React-RCTFBReactNativeSpec - - SocketRocket - - React-domnativemodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-webperformancenativemodule + - ReactNativeDependencies + - Yoga + - React-domnativemodule (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-Fabric - React-Fabric/bridging - React-FabricComponents @@ -567,40 +419,34 @@ PODS: - React-RCTFBReactNativeSpec - React-runtimeexecutor - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Fabric (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Fabric (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/animations (= 1000.0.0) - - React-Fabric/attributedstring (= 1000.0.0) - - React-Fabric/bridging (= 1000.0.0) - - React-Fabric/componentregistry (= 1000.0.0) - - React-Fabric/componentregistrynative (= 1000.0.0) - - React-Fabric/components (= 1000.0.0) - - React-Fabric/consistency (= 1000.0.0) - - React-Fabric/core (= 1000.0.0) - - React-Fabric/dom (= 1000.0.0) - - React-Fabric/imagemanager (= 1000.0.0) - - React-Fabric/leakchecker (= 1000.0.0) - - React-Fabric/mounting (= 1000.0.0) - - React-Fabric/observers (= 1000.0.0) - - React-Fabric/scheduler (= 1000.0.0) - - React-Fabric/telemetry (= 1000.0.0) - - React-Fabric/templateprocessor (= 1000.0.0) - - React-Fabric/uimanager (= 1000.0.0) + - React-Fabric/animated (= 0.85.2) + - React-Fabric/animationbackend (= 0.85.2) + - React-Fabric/animations (= 0.85.2) + - React-Fabric/attributedstring (= 0.85.2) + - React-Fabric/bridging (= 0.85.2) + - React-Fabric/componentregistry (= 0.85.2) + - React-Fabric/componentregistrynative (= 0.85.2) + - React-Fabric/components (= 0.85.2) + - React-Fabric/consistency (= 0.85.2) + - React-Fabric/core (= 0.85.2) + - React-Fabric/dom (= 0.85.2) + - React-Fabric/imagemanager (= 0.85.2) + - React-Fabric/leakchecker (= 0.85.2) + - React-Fabric/mounting (= 0.85.2) + - React-Fabric/observers (= 0.85.2) + - React-Fabric/scheduler (= 0.85.2) + - React-Fabric/telemetry (= 0.85.2) + - React-Fabric/uimanager (= 0.85.2) - React-featureflags - React-graphics - React-jsi @@ -611,22 +457,16 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/animations (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/animated (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug + - React-Fabric/animationbackend - React-featureflags - React-graphics - React-jsi @@ -637,20 +477,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/attributedstring (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/animationbackend (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -663,20 +496,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/bridging (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/animations (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -689,20 +515,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistry (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/attributedstring (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -715,20 +534,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistrynative (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/bridging (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -741,26 +553,15 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/componentregistry (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 1000.0.0) - - React-Fabric/components/root (= 1000.0.0) - - React-Fabric/components/scrollview (= 1000.0.0) - - React-Fabric/components/view (= 1000.0.0) - React-featureflags - React-graphics - React-jsi @@ -771,20 +572,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/componentregistrynative (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -797,22 +591,19 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/root (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/components (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.85.2) + - React-Fabric/components/root (= 0.85.2) + - React-Fabric/components/scrollview (= 0.85.2) + - React-Fabric/components/view (= 0.85.2) - React-featureflags - React-graphics - React-jsi @@ -823,20 +614,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/scrollview (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/components/legacyviewmanagerinterop (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -849,20 +633,51 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/view (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/components/root (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt + - 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 + - ReactNativeDependencies + - React-Fabric/components/scrollview (0.85.2): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-Core-prebuilt + - 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 + - ReactNativeDependencies + - React-Fabric/components/view (0.85.2): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -876,21 +691,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-Fabric/consistency (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Fabric/consistency (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -903,20 +711,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/core (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/core (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -929,20 +730,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/dom (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/dom (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -955,20 +749,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/imagemanager (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/imagemanager (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -981,20 +768,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/leakchecker (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/leakchecker (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1007,20 +787,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/mounting (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/mounting (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1033,23 +806,17 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/observers (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/observers/events (= 1000.0.0) + - React-Fabric/observers/events (= 0.85.2) + - React-Fabric/observers/intersection (= 0.85.2) - React-featureflags - React-graphics - React-jsi @@ -1060,20 +827,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers/events (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/observers/events (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1086,22 +846,35 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/scheduler (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/observers/intersection (0.85.2): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-Core-prebuilt + - 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 + - ReactNativeDependencies + - React-Fabric/scheduler (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug + - React-Fabric/animationbackend - React-Fabric/observers/events - React-featureflags - React-graphics @@ -1115,20 +888,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/telemetry (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/telemetry (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -1141,49 +907,36 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/templateprocessor (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/uimanager (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug + - React-Fabric/uimanager/consistency (= 0.85.2) - 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 (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-Fabric/uimanager/consistency (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 1000.0.0) - React-featureflags - React-graphics - React-jsi @@ -1195,51 +948,50 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/uimanager/consistency (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-FabricComponents (0.85.2): + - hermes-engine - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.85.2) + - React-FabricComponents/textlayoutmanager (= 0.85.2) - React-featureflags - React-graphics - React-jsi - React-jsiexecutor - React-logger - - React-rendererconsistency + - React-RCTFBReactNativeSpec - React-rendererdebug - - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket - - React-FabricComponents (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - Yoga + - React-FabricComponents/components (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 1000.0.0) - - React-FabricComponents/textlayoutmanager (= 1000.0.0) + - React-FabricComponents/components/inputaccessory (= 0.85.2) + - React-FabricComponents/components/iostextinput (= 0.85.2) + - React-FabricComponents/components/modal (= 0.85.2) + - React-FabricComponents/components/rncore (= 0.85.2) + - React-FabricComponents/components/safeareaview (= 0.85.2) + - React-FabricComponents/components/scrollview (= 0.85.2) + - React-FabricComponents/components/switch (= 0.85.2) + - React-FabricComponents/components/text (= 0.85.2) + - React-FabricComponents/components/textinput (= 0.85.2) + - React-FabricComponents/components/unimplementedview (= 0.85.2) + - React-FabricComponents/components/virtualview (= 0.85.2) - React-featureflags - React-graphics - React-jsi @@ -1250,33 +1002,17 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/inputaccessory (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 1000.0.0) - - React-FabricComponents/components/iostextinput (= 1000.0.0) - - React-FabricComponents/components/modal (= 1000.0.0) - - React-FabricComponents/components/rncore (= 1000.0.0) - - React-FabricComponents/components/safeareaview (= 1000.0.0) - - React-FabricComponents/components/scrollview (= 1000.0.0) - - React-FabricComponents/components/text (= 1000.0.0) - - React-FabricComponents/components/textinput (= 1000.0.0) - - React-FabricComponents/components/unimplementedview (= 1000.0.0) - - React-FabricComponents/components/virtualview (= 1000.0.0) - React-featureflags - React-graphics - React-jsi @@ -1287,20 +1023,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/inputaccessory (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/iostextinput (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1314,20 +1044,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/iostextinput (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/modal (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1341,20 +1065,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/modal (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/rncore (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1368,20 +1086,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/rncore (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/safeareaview (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1395,20 +1107,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/safeareaview (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/scrollview (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1422,20 +1128,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/scrollview (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/switch (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1449,20 +1149,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/text (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/text (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1476,20 +1170,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/textinput (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/textinput (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1503,20 +1191,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/unimplementedview (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/unimplementedview (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1530,20 +1212,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/virtualview (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/components/virtualview (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1557,20 +1233,14 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricComponents/textlayoutmanager (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-FabricComponents/textlayoutmanager (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-debug - React-Fabric @@ -1584,271 +1254,185 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - React-FabricImage (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired (= 1000.0.0) - - RCTTypeSafety (= 1000.0.0) + - React-FabricImage (0.85.2): + - hermes-engine + - RCTRequired (= 0.85.2) + - RCTTypeSafety (= 0.85.2) + - React-Core-prebuilt - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 1000.0.0) + - React-jsiexecutor (= 0.85.2) - React-logger - React-rendererdebug - React-utils - ReactCommon - - SocketRocket + - ReactNativeDependencies - Yoga - - React-featureflags (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-featureflagsnativemodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-featureflags (0.85.2): + - React-Core-prebuilt + - ReactNativeDependencies + - React-featureflagsnativemodule (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-featureflags - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - SocketRocket - - React-graphics (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-graphics (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt + - React-featureflags - React-jsi - React-jsiexecutor - React-utils - - SocketRocket - - React-hermes (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-hermes (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) + - React-Core-prebuilt + - React-cxxreact (= 0.85.2) - React-jsi - - React-jsiexecutor (= 1000.0.0) + - React-jsiexecutor (= 0.85.2) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 1000.0.0) + - React-jsitooling + - React-oscompat + - React-perflogger (= 0.85.2) - React-runtimeexecutor - - SocketRocket - - React-idlecallbacksnativemodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-idlecallbacksnativemodule (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - React-runtimeexecutor - React-runtimescheduler - ReactCommon/turbomodule/core - - SocketRocket - - React-ImageManager (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-ImageManager (0.85.2): + - React-Core-prebuilt - React-Core/Default - React-debug - React-Fabric - React-graphics - React-rendererdebug - React-utils - - SocketRocket - - React-jserrorhandler (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-intersectionobservernativemodule (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt + - React-cxxreact + - React-Fabric + - React-Fabric/bridging + - React-graphics + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - React-runtimescheduler + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - React-jserrorhandler (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags - React-jsi - ReactCommon/turbomodule/bridging - - SocketRocket - - React-jsi (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsiexecutor (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) + - ReactNativeDependencies + - React-jsi (0.85.2): + - hermes-engine + - React-Core-prebuilt + - ReactNativeDependencies + - React-jsiexecutor (0.85.2): + - hermes-engine + - React-Core-prebuilt + - React-cxxreact + - React-debug + - React-jserrorhandler + - React-jsi - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 1000.0.0) + - React-jsitooling + - React-perflogger - React-runtimeexecutor - - SocketRocket - - React-jsinspector (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - React-utils + - ReactNativeDependencies + - React-jsinspector (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-jsinspectortracing - - React-perflogger (= 1000.0.0) + - React-oscompat + - React-perflogger (= 0.85.2) - React-runtimeexecutor - - SocketRocket - - React-jsinspectorcdp (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsinspectornetwork (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags + - React-utils + - ReactNativeDependencies + - React-jsinspectorcdp (0.85.2): + - React-Core-prebuilt + - ReactNativeDependencies + - React-jsinspectornetwork (0.85.2): + - React-Core-prebuilt - React-jsinspectorcdp - - React-performancetimeline - - React-timing - - SocketRocket - - React-jsinspectortracing (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-jsinspectortracing (0.85.2): + - hermes-engine + - React-Core-prebuilt + - React-jsi + - React-jsinspectornetwork - React-oscompat - React-timing - - SocketRocket - - React-jsitooling (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) + - ReactNativeDependencies + - React-jsitooling (0.85.2): + - hermes-engine + - React-Core-prebuilt + - React-cxxreact (= 0.85.2) + - React-debug + - React-jsi (= 0.85.2) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - - SocketRocket - - React-jsitracing (1000.0.0): - - React-jsi - - React-logger (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-Mapbuffer (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - React-utils + - ReactNativeDependencies + - React-jsitracing (0.85.2): + - React-jsi + - React-logger (0.85.2): + - React-Core-prebuilt + - ReactNativeDependencies + - React-Mapbuffer (0.85.2): + - React-Core-prebuilt - React-debug - - SocketRocket - - React-microtasksnativemodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-microtasksnativemodule (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - SocketRocket - - React-NativeModulesApple (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-NativeModulesApple (0.85.2): + - hermes-engine - React-callinvoker - React-Core + - React-Core-prebuilt - React-cxxreact + - React-debug - React-featureflags - React-jsi - React-jsinspector @@ -1856,73 +1440,53 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - SocketRocket - - React-oscompat (1000.0.0) - - React-perflogger (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-performancecdpmetrics (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-networking (0.85.2): + - React-Core-prebuilt + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing + - ReactNativeDependencies + - React-oscompat (0.85.2) + - React-perflogger (0.85.2): + - React-Core-prebuilt + - ReactNativeDependencies + - React-performancecdpmetrics (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-jsi - React-performancetimeline - React-runtimeexecutor - React-timing - - SocketRocket - - React-performancetimeline (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-performancetimeline (0.85.2): + - React-Core-prebuilt - React-featureflags + - React-jsinspector - React-jsinspectortracing - React-perflogger - React-timing - - SocketRocket - - React-RCTActionSheet (1000.0.0): - - React-Core/RCTActionSheetHeaders (= 1000.0.0) - - React-RCTAnimation (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RCTActionSheet (0.85.2): + - React-Core/RCTActionSheetHeaders (= 0.85.2) + - React-RCTAnimation (0.85.2): - RCTTypeSafety + - React-Core-prebuilt - React-Core/RCTAnimationHeaders + - React-debug - React-featureflags - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - SocketRocket - - React-RCTAppDelegate (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RCTAppDelegate (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-CoreModules - React-debug - React-defaultsnativemodule @@ -1944,16 +1508,10 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon - - SocketRocket - - React-RCTBlob (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RCTBlob (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi @@ -1963,17 +1521,12 @@ PODS: - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - SocketRocket - - React-RCTFabric (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RCTFabric (0.85.2): + - hermes-engine + - RCTSwiftUIWrapper - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-FabricComponents @@ -1984,8 +1537,9 @@ PODS: - React-jsi - React-jsinspector - React-jsinspectorcdp - - React-jsinspectornetwork - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation - React-RCTFBReactNativeSpec @@ -1997,37 +1551,25 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket + - ReactNativeDependencies - Yoga - - React-RCTFBReactNativeSpec (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-RCTFBReactNativeSpec (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 1000.0.0) + - React-RCTFBReactNativeSpec/components (= 0.85.2) - ReactCommon - - SocketRocket - - React-RCTFBReactNativeSpec/components (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RCTFBReactNativeSpec/components (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -2037,66 +1579,52 @@ PODS: - React-rendererdebug - React-utils - ReactCommon - - SocketRocket + - ReactNativeDependencies - Yoga - - React-RCTImage (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - React-RCTImage (0.85.2): - RCTTypeSafety + - React-Core-prebuilt - React-Core/RCTImageHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - SocketRocket - - React-RCTLinking (1000.0.0): - - React-Core/RCTLinkingHeaders (= 1000.0.0) - - React-jsi (= 1000.0.0) + - ReactNativeDependencies + - React-RCTLinking (0.85.2): + - React-Core/RCTLinkingHeaders (= 0.85.2) + - React-jsi (= 0.85.2) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 1000.0.0) - - React-RCTNetwork (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactCommon/turbomodule/core (= 0.85.2) + - React-RCTNetwork (0.85.2): - RCTTypeSafety + - React-Core-prebuilt - React-Core/RCTNetworkHeaders + - React-debug - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - - SocketRocket - - React-RCTPushNotification (1000.0.0): + - ReactNativeDependencies + - React-RCTPushNotification (0.85.2): - RCTTypeSafety + - React-Core-prebuilt - React-Core/RCTPushNotificationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTRuntime (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-RCTRuntime (0.85.2): + - hermes-engine - React-Core + - React-Core-prebuilt + - React-debug - React-jsi - React-jsinspector - React-jsinspectorcdp @@ -2106,76 +1634,47 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes - - SocketRocket - - React-RCTSettings (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - React-utils + - ReactNativeDependencies + - React-RCTSettings (0.85.2): - RCTTypeSafety + - React-Core-prebuilt - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - SocketRocket - - React-RCTTest (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-Core (= 1000.0.0) - - React-CoreModules (= 1000.0.0) - - React-jsi (= 1000.0.0) - - ReactCommon/turbomodule/core (= 1000.0.0) - - SocketRocket - - React-RCTText (1000.0.0): - - React-Core/RCTTextHeaders (= 1000.0.0) + - ReactNativeDependencies + - React-RCTTest (0.85.2): + - React-Core (= 0.85.2) + - React-Core-prebuilt + - React-CoreModules (= 0.85.2) + - React-jsi (= 0.85.2) + - ReactCommon/turbomodule/core (= 0.85.2) + - ReactNativeDependencies + - React-RCTText (0.85.2): + - React-Core/RCTTextHeaders (= 0.85.2) - Yoga - - React-RCTVibration (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - React-RCTVibration (0.85.2): + - React-Core-prebuilt - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - SocketRocket - - React-rendererconsistency (1000.0.0) - - React-renderercss (1000.0.0): + - ReactNativeDependencies + - React-rendererconsistency (0.85.2) + - React-renderercss (0.85.2): - React-debug - React-utils - - React-rendererdebug (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - React-rendererdebug (0.85.2): + - React-Core-prebuilt - React-debug - - SocketRocket - - React-RuntimeApple (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-RuntimeApple (0.85.2): + - hermes-engine - React-callinvoker + - React-Core-prebuilt - React-Core/Default - React-CoreModules - React-cxxreact @@ -2194,16 +1693,10 @@ PODS: - React-RuntimeHermes - React-runtimescheduler - React-utils - - SocketRocket - - React-RuntimeCore (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-RuntimeCore (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt - React-cxxreact - React-Fabric - React-featureflags @@ -2216,29 +1709,17 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket - - React-runtimeexecutor (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-runtimeexecutor (0.85.2): + - React-Core-prebuilt - React-debug - React-featureflags - - React-jsi (= 1000.0.0) + - React-jsi (= 0.85.2) - React-utils - - SocketRocket - - React-RuntimeHermes (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-RuntimeHermes (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - React-Core-prebuilt - React-featureflags - React-hermes - React-jsi @@ -2250,17 +1731,11 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-utils - - SocketRocket - - React-runtimescheduler (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog + - ReactNativeDependencies + - React-runtimescheduler (0.85.2): - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - React-callinvoker + - React-Core-prebuilt - React-cxxreact - React-debug - React-featureflags @@ -2272,34 +1747,34 @@ PODS: - React-runtimeexecutor - React-timing - React-utils - - SocketRocket - - React-timing (1000.0.0) - - React-utils (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-timing (0.85.2): + - React-debug + - React-utils (0.85.2): + - hermes-engine + - React-Core-prebuilt - React-debug - - React-jsi (= 1000.0.0) - - SocketRocket - - ReactAppDependencyProvider (1000.0.0): + - React-jsi (= 0.85.2) + - ReactNativeDependencies + - React-webperformancenativemodule (0.85.2): + - hermes-engine + - React-Core-prebuilt + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - ReactAppDependencyProvider (0.85.2): - ReactCodegen - - ReactCodegen (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactCodegen (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-FabricImage @@ -2313,95 +1788,61 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - SocketRocket - - ReactCommon (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 1000.0.0) - - SocketRocket - - ReactCommon-Samples (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - ReactCommon (0.85.2): + - React-Core-prebuilt + - ReactCommon/turbomodule (= 0.85.2) + - ReactNativeDependencies + - ReactCommon-Samples (0.85.2): + - hermes-engine + - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-cxxreact - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - SocketRocket - - ReactCommon/turbomodule (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) - - ReactCommon/turbomodule/bridging (= 1000.0.0) - - ReactCommon/turbomodule/core (= 1000.0.0) - - SocketRocket - - ReactCommon/turbomodule/bridging (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) - - SocketRocket - - ReactCommon/turbomodule/core (1000.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 1000.0.0) - - React-cxxreact (= 1000.0.0) - - React-debug (= 1000.0.0) - - React-featureflags (= 1000.0.0) - - React-jsi (= 1000.0.0) - - React-logger (= 1000.0.0) - - React-perflogger (= 1000.0.0) - - React-utils (= 1000.0.0) - - SocketRocket - - ScreenshotManager (0.82.0-main): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric + - ReactNativeDependencies + - ReactCommon/turbomodule (0.85.2): + - hermes-engine + - React-callinvoker (= 0.85.2) + - React-Core-prebuilt + - React-cxxreact (= 0.85.2) + - React-jsi (= 0.85.2) + - React-logger (= 0.85.2) + - React-perflogger (= 0.85.2) + - ReactCommon/turbomodule/bridging (= 0.85.2) + - ReactCommon/turbomodule/core (= 0.85.2) + - ReactNativeDependencies + - ReactCommon/turbomodule/bridging (0.85.2): + - hermes-engine + - React-callinvoker (= 0.85.2) + - React-Core-prebuilt + - React-cxxreact (= 0.85.2) + - React-jsi (= 0.85.2) + - React-logger (= 0.85.2) + - React-perflogger (= 0.85.2) + - ReactNativeDependencies + - ReactCommon/turbomodule/core (0.85.2): + - hermes-engine + - React-callinvoker (= 0.85.2) + - React-Core-prebuilt + - React-cxxreact (= 0.85.2) + - React-debug (= 0.85.2) + - React-featureflags (= 0.85.2) + - React-jsi (= 0.85.2) + - React-logger (= 0.85.2) + - React-perflogger (= 0.85.2) + - React-utils (= 0.85.2) + - ReactNativeDependencies + - ReactNativeDependencies (0.85.2) + - ScreenshotManager (0.85.2): + - hermes-engine - RCTRequired - RCTTypeSafety - React-Core + - React-Core-prebuilt - React-debug - React-Fabric - React-featureflags @@ -2416,23 +1857,16 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - SocketRocket + - ReactNativeDependencies - Yoga - - SocketRocket (0.7.1) - Yoga (0.0.0) DEPENDENCIES: - - boost (from `../react-native/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../react-native/third-party-podspecs/DoubleConversion.podspec`) - - fast_float (from `../react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../react-native/Libraries/FBLazyVector`) - - fmt (from `../react-native/third-party-podspecs/fmt.podspec`) - - glog (from `../react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../react-native/sdks/hermes-engine/hermes-engine.podspec`) - MyNativeView (from `NativeComponentExample`) - NativeCxxModuleExample (from `NativeCxxModuleExample`) - OCMock (~> 3.9.1) - - RCT-Folly (from `../react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - RCTRequired (from `../react-native/Libraries/Required`) - RCTSwiftUI (from `../react-native/ReactApple/RCTSwiftUI`) @@ -2441,6 +1875,7 @@ DEPENDENCIES: - React (from `../react-native/`) - React-callinvoker (from `../react-native/ReactCommon/callinvoker`) - React-Core (from `../react-native/`) + - React-Core-prebuilt (from `../react-native/React-Core-prebuilt.podspec`) - React-Core/RCTWebSocket (from `../react-native/`) - React-CoreModules (from `../react-native/React/CoreModules`) - React-cxxreact (from `../react-native/ReactCommon/cxxreact`) @@ -2456,6 +1891,7 @@ DEPENDENCIES: - React-hermes (from `../react-native/ReactCommon/hermes`) - React-idlecallbacksnativemodule (from `../react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-intersectionobservernativemodule (from `../react-native/ReactCommon/react/nativemodule/intersectionobserver`) - React-jserrorhandler (from `../react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../react-native/ReactCommon/jsiexecutor`) @@ -2469,6 +1905,7 @@ DEPENDENCIES: - React-Mapbuffer (from `../react-native/ReactCommon`) - React-microtasksnativemodule (from `../react-native/ReactCommon/react/nativemodule/microtasks`) - React-NativeModulesApple (from `../react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../react-native/ReactCommon/react/networking`) - React-oscompat (from `../react-native/ReactCommon/oscompat`) - React-perflogger (from `../react-native/ReactCommon/reactperflogger`) - React-performancecdpmetrics (from `../react-native/ReactCommon/react/performance/cdpmetrics`) @@ -2498,41 +1935,29 @@ DEPENDENCIES: - React-runtimescheduler (from `../react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../react-native/ReactCommon/react/timing`) - React-utils (from `../react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-webperformancenativemodule (from `../react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon-Samples (from `../react-native/ReactCommon/react/nativemodule/samples`) - ReactCommon/turbomodule/core (from `../react-native/ReactCommon`) + - ReactNativeDependencies (from `../react-native/third-party-podspecs/ReactNativeDependencies.podspec`) - ScreenshotManager (from `NativeModuleExample`) - - SocketRocket (~> 0.7.1) - Yoga (from `../react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - OCMock - - SocketRocket EXTERNAL SOURCES: - boost: - :podspec: "../react-native/third-party-podspecs/boost.podspec" - DoubleConversion: - :podspec: "../react-native/third-party-podspecs/DoubleConversion.podspec" - fast_float: - :podspec: "../react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: :path: "../react-native/Libraries/FBLazyVector" - fmt: - :podspec: "../react-native/third-party-podspecs/fmt.podspec" - glog: - :podspec: "../react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: '' + :tag: hermes-v250829098.0.10 MyNativeView: :path: NativeComponentExample NativeCxxModuleExample: :path: NativeCxxModuleExample - RCT-Folly: - :podspec: "../react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: :path: "../react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: @@ -2549,6 +1974,8 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/callinvoker" React-Core: :path: "../react-native/" + React-Core-prebuilt: + :podspec: "../react-native/React-Core-prebuilt.podspec" React-CoreModules: :path: "../react-native/React/CoreModules" React-cxxreact: @@ -2577,6 +2004,8 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-intersectionobservernativemodule: + :path: "../react-native/ReactCommon/react/nativemodule/intersectionobserver" React-jserrorhandler: :path: "../react-native/ReactCommon/jserrorhandler" React-jsi: @@ -2603,6 +2032,8 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/nativemodule/microtasks" React-NativeModulesApple: :path: "../react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../react-native/ReactCommon/react/networking" React-oscompat: :path: "../react-native/ReactCommon/oscompat" React-perflogger: @@ -2661,101 +2092,105 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/timing" React-utils: :path: "../react-native/ReactCommon/react/utils" + React-webperformancenativemodule: + :path: "../react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../react-native/ReactCommon" ReactCommon-Samples: :path: "../react-native/ReactCommon/react/nativemodule/samples" + ReactNativeDependencies: + :podspec: "../react-native/third-party-podspecs/ReactNativeDependencies.podspec" ScreenshotManager: :path: NativeModuleExample Yoga: :path: "../react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 - DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: d3c2dd739a63c1a124e775df075dc7c517a719cb - fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd - glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 - hermes-engine: 5a9adf9081befbac6b81bc0c81522430a7eb7da1 - MyNativeView: 26b517931cc8bfc7b602c410572b323348185461 - NativeCxxModuleExample: 6a9788a749d522f8b6cc55a56f4760a670e4e2eb + FBLazyVector: 26fd21c75314e101f280d401e97f27d54f3f7064 + hermes-engine: f90d3ed4356353666bbee687f51d701f0685b494 + MyNativeView: c9ca827efe0680838f430f3921a581e3c623804d + NativeCxxModuleExample: c229b8d2df348077a6a91f2115ff00dbc278444a OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 - RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 - RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: a00614e2da5344c2cda3d287050b6cee00e21dc6 - RCTTypeSafety: 459a16418c6b413060d35434ba3e83f5b0bd2651 - React: 170a01a19ba2525ab7f11243e2df6b19bf268093 - React-callinvoker: f08f425e4043cd1998a158b6e39a6aed1fd1d718 - React-Core: d35c5cf69898fd026e5cd93a0454b1d42e999d3e - React-CoreModules: 3ce1d43f6cc37f43759ec543ce1c0010080f1de1 - React-cxxreact: 52ea845cf7eb1e0fb201ed36e2192de6522a1f60 - React-debug: 195df38487d3f48a7af04deddeb4a5c6d4440416 - React-defaultsnativemodule: 8afea5a4bd07addb523bf48489b8a684ea1bdff0 - React-domnativemodule: 00a3d08568b4e573dcc21ecec829ed425ab10763 - React-Fabric: e2ee903224e68c8fa24aa96e217bad36d7660f5a - React-FabricComponents: 82043c131381c8b1f6e91c559eb04cdf61decdb7 - React-FabricImage: 264c9ce5241e43e25b94c8de55ac6c3c8a046472 - React-featureflags: 595651ea13c63a9f77f06d9a1973b665b4a28b7e - React-featureflagsnativemodule: 06823479a2ee210cfa0e9c19447c2722a8d995f2 - React-graphics: 1f99b9b5515eac389f0cf9c85b03abc366d6a933 - React-hermes: f1034a4d5d8edaf78d47a4f21e9898c4bf6fe02f - React-idlecallbacksnativemodule: 4e65f183318b8a0fbabc481a4eafc0f0d62d1cbf - React-ImageManager: a6833445e17879933378b7c0ba45ee42115c14bc - React-jserrorhandler: bec134a192c50338193544404d45df24fb8a19ca - React-jsi: 4ad77650fb0ca4229569eb2532db7a87e3d12662 - React-jsiexecutor: fa5b80bdbe1ceffc33a892da20fc07b4dfa4df7a - React-jsinspector: 10b5dc4eef2a3d05b80be2114ed676496c5bf59c - React-jsinspectorcdp: 5fb266e5f23d3a2819ba848e9d4d0b6b00f95934 - React-jsinspectornetwork: 1655a81f3fe14789df41e063bd56dd130cc3562a - React-jsinspectortracing: 5b0be488e06958a572e1badfe8509929ae1cc83b - React-jsitooling: 9e563b89f94cf4baf872fe47105d60ae83f4ce4d - React-jsitracing: ce443686f52538d1033ce7db1e7d643e866262f0 - React-logger: 116c3ae5a9906671d157aa00882a5ee75a5a7ebc - React-Mapbuffer: fc937cfa41140d7724c559c3d16c50dd725361c8 - React-microtasksnativemodule: 09899c7389250279bdcc5384f0281bb069979855 - React-NativeModulesApple: d05b718ccd8b68c184e76dbc1efb63385197595b - React-oscompat: 7133e0e945cda067ae36b22502df663d73002864 - React-perflogger: ada3cdf3dfc8b7cd1fabe3c91b672e23981611ab - React-performancecdpmetrics: 89ea4585d30c7681ab1378afb3fd845cd0647860 - React-performancetimeline: e7d5849d89ee39557dcd56dfb6e7b0d49003d925 - React-RCTActionSheet: 1bf8cc8086ad1c15da3407dfb7bc9dd94dc7595d - React-RCTAnimation: 263593e66c89bf810604b1ace15dfa382a1ca2df - React-RCTAppDelegate: f66939ac7ce5da6eb839c3d84a7098e62498a791 - React-RCTBlob: 7b76230c53fe87d305eeeb250b0aae031bb6cbae - React-RCTFabric: 2fd2ef899c7219fd39fd61c39750510f88a81434 - React-RCTFBReactNativeSpec: bd9c8093cc3388fe55a8cce47e66712e326e967a - React-RCTImage: 3e28f3015bc7e8375298e01ebb2032aa05635c32 - React-RCTLinking: 06742cfad41c506091403a414370743a4ed75af3 - React-RCTNetwork: b4577eec0092c16d8996e415e4cac7a372d6d362 - React-RCTPushNotification: ea11178d499696516e0ff9ae335edbe99b06f94b - React-RCTRuntime: 925039e78fc530e0421c308ccc607f214f3c7be1 - React-RCTSettings: d3c2dd305ec81f7faf42762ec598d57f07fd43be - React-RCTTest: 2db46eda60bc2228cb67622a580e8e86b00088d9 - React-RCTText: e416825b80c530647040ef91d23ffd35ccc87981 - React-RCTVibration: 1837a27fc16eeffc9509779c3334fde54c012bcc - React-rendererconsistency: 777c894edc43dde01499189917ac54ee76ae6a6a - React-renderercss: a9cb6ba7f49a80dc4b4f7008bae1590d12f27049 - React-rendererdebug: fea8bde927403a198742b2d940a5f1cd8230c0b4 - React-RuntimeApple: 6a0c164a8855edb4987b90da2d4d8601302de72d - React-RuntimeCore: 6dec37113b759b76641bd028bfbbbec8cf923356 - React-runtimeexecutor: f6ad01d321a3b99e772509b4d6f5c25b670103fa - React-RuntimeHermes: d4f661204d3061219a63951eb4efed4dcaf3f12f - React-runtimescheduler: ae44fe8b4170a9d59f62e8b7d7b060c179db739d - React-timing: 9d49179631e5e3c759e6e82d4c613c73da80a144 - React-utils: 0944df8d553d66b27f486282c42a84a969fd2f6c - ReactAppDependencyProvider: 68f2d2cefd6c9b9f2865246be2bfe86ebd49238d - ReactCodegen: ff8d79aa6b195efceb75a7cd3cafa9f05d1cbfe0 - ReactCommon: a53973ab35d399560ace331ec9e2b26db0592cec - ReactCommon-Samples: dcc128cbf51ac38d2578791750d0a046d1b8a5e9 - ScreenshotManager: 370045f403c555760ae26d85a01dda89d257fa7b - SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 59290f2ce3fc5c34797a21244288cad99b357b63 + RCTDeprecation: c7a2768f905d76ca6d2cfefb26e4349eacbdfca3 + RCTRequired: 5e502c3553cfbed090a991c444448da452fb752e + RCTSwiftUI: 5ce3ccbdc58b78cc4ebbaace01709ec22d58e131 + RCTSwiftUIWrapper: a8317a87bb70ef8a07dcecaf4977db7f60cf04c1 + RCTTypeSafety: 5826cf1f2269e44caee5e7c8d64e2a43af8cf0ef + React: 13cf8451582adb1bb324306e1893b91d1cba28c6 + React-callinvoker: 91e6a605826b684ad2e623811253b4d0c4196bef + React-Core: 46818de5f211b2a2759ac823b591af8a0a95c2c1 + React-Core-prebuilt: 9a927ed68f36fa89120d2773a7e417e32c728fa6 + React-CoreModules: a6a37afee48d4a31ab398640b0795462647d5c67 + React-cxxreact: 2ec3e2f7a8ae9303460d4ba94cde183ea90d64cd + React-debug: 0d21117b897ce0359c9d2c9dfe952f237476a14a + React-defaultsnativemodule: d39e708d4da6badf4ecca767da448da50b67c7c9 + React-domnativemodule: 100e502f718502d0f9c22071339e690f911aabc6 + React-Fabric: 8595b459278e6c6bf9757f3df9c6d1bfbbf00e9f + React-FabricComponents: 7da0ce24bcf163d2e447876b249aa2bd81689165 + React-FabricImage: 87d397fe918e2725633211c121457b5aa3ddc437 + React-featureflags: 2302476d727ad40a684724e3e137ebfa21640386 + React-featureflagsnativemodule: dbb8429313c66b48d9bcdf0f446ee095ef28f16a + React-graphics: 086f042572c2b957c505bc3e3138ee8e1c6415c1 + React-hermes: 540a5f1f008eb04fe59b931112b10854ee6c7061 + React-idlecallbacksnativemodule: 0dcf39e4842a8255ce48f834e82524b394c016d2 + React-ImageManager: 367a9979094651c157a35f7cb0e0f7b072451035 + React-intersectionobservernativemodule: 6b695a44eec274569a438d690e468a9e4a74a3dd + React-jserrorhandler: b23306d6d8309693189a89efdd0cf25a5c35b17d + React-jsi: 533b0f879f5e60d6c4047d429d9ba1b6c2a7e113 + React-jsiexecutor: e4380339286988d17dd1bf1b0f31e4e6ac5ef1a0 + React-jsinspector: 6360a071b0c8bd3c77f519e8836ea57bab2456d4 + React-jsinspectorcdp: 7a33cd5cfd16ca10a9b7eff7462456b18daf5d14 + React-jsinspectornetwork: dd8dbb9f54308408e4483c3160aebccb6f03780d + React-jsinspectortracing: 90f7ad9acafd2de4bc56ed5f0b13aca5d221ce4b + React-jsitooling: 713feac6b772e11c9bf2a5d75570bb74d9bfe15f + React-jsitracing: cacd0f0ef50ea61e7035c8ba3a4dc5b38c4da834 + React-logger: 2c87840a9f6322a1226d0df337d9662f44ea6094 + React-Mapbuffer: 1fc10d873f00aa895836c316a9737ce7d43875ce + React-microtasksnativemodule: 85ac7286ff84e8fc8e1956233748b8d4b2a6dcea + React-NativeModulesApple: 993744f42aab769eb02bf5d256b6767c546d0bb5 + React-networking: 251bfddc651caca5e3039d1afa1d2eca890d0c56 + React-oscompat: ed8fa636665935e962d4091180ba6f07dcad7ea9 + React-perflogger: 2c9c7a2cb14c78d12803609d289a1bb8761d4ac3 + React-performancecdpmetrics: 613cb5ee8ac9ef50e9511e7b82aeed4d81b57b81 + React-performancetimeline: 1dde052682d06f61b1472ab79d26598ba0c883f1 + React-RCTActionSheet: f498102098d724dcf921224e213f946368cd482b + React-RCTAnimation: 9b42153018cc5f998ec911736a586cb885e33ccf + React-RCTAppDelegate: daf9f6f1fb452fbe13c81df1a8175378de7ac203 + React-RCTBlob: 8d165c9942d1a591cacadb1f073e3d9f5234d1ea + React-RCTFabric: 8071a9ca7628518420a6634c6457ecde8460e6a3 + React-RCTFBReactNativeSpec: e8eb38cca9abecf12d10a0787e413c84dc2a630f + React-RCTImage: f36bd87ac6e4aa27860518d221fd3860569a57fc + React-RCTLinking: af169ba3619e9fd02e4a0666ac01349ee642a446 + React-RCTNetwork: e31b7555e1c2c4dff1e1c594d8dac0f1a9b22fe5 + React-RCTPushNotification: 59d63717635ecdfd38f94f257ebbe4c2b5b5d1be + React-RCTRuntime: 397c81200ce8c2bf0d2b52b689241ed6463087a3 + React-RCTSettings: f71c195191839901491b5b2e9301514b014fbe8b + React-RCTTest: 840f7d3bfc1fbea729a4a84f14015b7f035e54bf + React-RCTText: 6b0cac11ad4ea9153f526a80aeecdcb0315a2039 + React-RCTVibration: 46b9020e5aab8c0c986bc4005bc2b05e1698c77d + React-rendererconsistency: fba5adaef458215b81f62459f3b1cdcc629348b8 + React-renderercss: d3bb39665d1c2f59e96fb8a04ae5bfd2baf05ca9 + React-rendererdebug: 2634d95dd3fc09f2cf2f0d2664c46a560fb57778 + React-RuntimeApple: 0f8f09f8d8031bb906ab52c683bbd6f18789faf4 + React-RuntimeCore: d4728c58d2143f503391b1389082e3044e8b0f23 + React-runtimeexecutor: a21a37ce38ff623c5f51b41d7a0f05de8e1fb01f + React-RuntimeHermes: 0e7833979b1b14e64cbda469104f48d1d12a573a + React-runtimescheduler: 13582d42d9d9ff6bd2d59c25576b1c13eb62308c + React-timing: 9f1af3753eef091257c424d3856cd6cbedcad01e + React-utils: 862e61256698fe3841aec1af476abf924a6737c3 + React-webperformancenativemodule: e745e43264767cb8f4334fc11bf3fbff880050d0 + ReactAppDependencyProvider: 22e2265d86a4e871e5e858f4e7ef1c8d01103680 + ReactCodegen: 7b4302e1a2027ba3cf399d4043b429973e127320 + ReactCommon: a804bb8d1dcf3ecdec3a77eb8bba19b7863bbbdb + ReactCommon-Samples: 3d7d5eb079bdd41bcd873eb376ae8ff69c2fc3df + ReactNativeDependencies: 22306440f72e64c55b4da609883ef6bc4f670ef3 + ScreenshotManager: 38db7d2211be668fc9eb7d28af78e71b3af49b90 + Yoga: 04bb4bfeb02c0000b940c1e6e89e856cd8de5a71 -PODFILE CHECKSUM: 995beda3236c2c76801e7a4efc7fedcd390220e6 +PODFILE CHECKSUM: 59f1e7d58cffbfafbeb3df31151743dd4c9a52e8 -COCOAPODS: 1.16.2 +COCOAPODS: 1.15.2 diff --git a/packages/rn-tester/package.json b/packages/rn-tester/package.json index 176e34313f03..dc9fd2859672 100644 --- a/packages/rn-tester/package.json +++ b/packages/rn-tester/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/tester", - "version": "0.85.0-main", + "version": "0.85.2", "private": true, "description": "React Native tester app.", "license": "MIT", @@ -25,15 +25,15 @@ "e2e-test-ios": "./scripts/maestro-test-ios.sh" }, "dependencies": { - "@react-native/new-app-screen": "0.85.0-main", - "@react-native/popup-menu-android": "0.85.0-main", + "@react-native/new-app-screen": "0.85.2", + "@react-native/popup-menu-android": "0.85.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "react": "19.2.3", - "react-native": "*" + "react-native": "0.85.2" }, "codegenConfig": { "name": "AppSpecs", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index 4e79505109c9..0936d7546ea2 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/typescript-config", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Default TypeScript configuration for React Native apps", "license": "MIT", "repository": { diff --git a/packages/virtualized-lists/package.json b/packages/virtualized-lists/package.json index b9f80551c32e..40cac77874cd 100644 --- a/packages/virtualized-lists/package.json +++ b/packages/virtualized-lists/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/virtualized-lists", - "version": "0.85.0-main", + "version": "0.85.2", "description": "Virtualized lists for React Native.", "license": "MIT", "repository": { @@ -53,7 +53,7 @@ "peerDependencies": { "@types/react": "^19.2.0", "react": "*", - "react-native": "*" + "react-native": "0.85.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/private/helloworld/package.json b/private/helloworld/package.json index 10f94b7f3b4a..45cc384d22ee 100644 --- a/private/helloworld/package.json +++ b/private/helloworld/package.json @@ -13,17 +13,17 @@ }, "dependencies": { "react": "19.2.3", - "react-native": "1000.0.0" + "react-native": "0.85.2" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", - "@react-native/babel-preset": "0.85.0-main", - "@react-native/core-cli-utils": "0.85.0-main", - "@react-native/eslint-config": "0.85.0-main", - "@react-native/metro-config": "0.85.0-main", - "@react-native/typescript-config": "0.85.0-main", + "@react-native/babel-preset": "0.85.2", + "@react-native/core-cli-utils": "0.85.2", + "@react-native/eslint-config": "0.85.2", + "@react-native/metro-config": "0.85.2", + "@react-native/typescript-config": "0.85.2", "@types/jest": "^29.5.14", "commander": "^12.0.0", "eslint": "^8.19.0", diff --git a/private/react-native-codegen-typescript-test/package.json b/private/react-native-codegen-typescript-test/package.json index fa5205e16f02..507770c28860 100644 --- a/private/react-native-codegen-typescript-test/package.json +++ b/private/react-native-codegen-typescript-test/package.json @@ -13,7 +13,7 @@ "prepare": "yarn run build" }, "dependencies": { - "@react-native/codegen": "0.85.0-main" + "@react-native/codegen": "0.85.2" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/private/react-native-fantom/tester/src/TesterAnimationChoreographer.h b/private/react-native-fantom/tester/src/TesterAnimationChoreographer.h index 859d3f75c12a..c45a84867bcd 100644 --- a/private/react-native-fantom/tester/src/TesterAnimationChoreographer.h +++ b/private/react-native-fantom/tester/src/TesterAnimationChoreographer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include @@ -19,8 +21,22 @@ class TesterAnimationChoreographer : public AnimationChoreographer { void pause() override; void runUITick(AnimationTimestamp timestamp); + AnimationTimestamp now() const override + { + if (clockProvider_) { + return clockProvider_(); + } + return AnimationChoreographer::now(); + } + + void setClockProvider(std::function clockProvider) + { + clockProvider_ = std::move(clockProvider); + } + private: bool isPaused_{false}; + std::function clockProvider_; }; } // namespace facebook::react diff --git a/private/react-native-fantom/tester/src/TesterAppDelegate.cpp b/private/react-native-fantom/tester/src/TesterAppDelegate.cpp index ac0ad0713e68..1fad3777e2f1 100644 --- a/private/react-native-fantom/tester/src/TesterAppDelegate.cpp +++ b/private/react-native-fantom/tester/src/TesterAppDelegate.cpp @@ -112,9 +112,7 @@ TesterAppDelegate::TesterAppDelegate( std::shared_ptr provider; - if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { - provider = std::make_shared(); - } else { + if (!ReactNativeFeatureFlags::useSharedAnimatedBackend()) { provider = std::make_shared( [this](std::function&& onRender, bool /*isAsync*/) { onAnimationRender_ = std::move(onRender); diff --git a/scripts/releases/ios-prebuild/configuration.js b/scripts/releases/ios-prebuild/configuration.js index 5719eaf3d13d..4a00cdc0e4b4 100644 --- a/scripts/releases/ios-prebuild/configuration.js +++ b/scripts/releases/ios-prebuild/configuration.js @@ -80,9 +80,9 @@ const dependencies /*: $ReadOnlyArray */ = [ }, { name: 'fmt', - version: '11.0.2', + version: '12.1.0', url: new URL( - 'https://github.com/fmtlib/fmt/archive/refs/tags/11.0.2.tar.gz', + 'https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz', ), files: { sources: ['src/format.cc', 'include/fmt/*.h'], diff --git a/scripts/releases/use-hermes-nightly.js b/scripts/releases/use-hermes-nightly.js index 5dc782e93d14..0be251b394a5 100644 --- a/scripts/releases/use-hermes-nightly.js +++ b/scripts/releases/use-hermes-nightly.js @@ -10,9 +10,17 @@ 'use strict'; +const {getReactNativePackage} = require('../shared/monorepoUtils'); const {updateHermesVersionsToNightly} = require('./utils/hermes-utils'); async function main() { + const {packageJson} = await getReactNativePackage(); + const hermesCompilerVersion = packageJson.dependencies?.['hermes-compiler']; + + if (hermesCompilerVersion !== '0.0.0') { + return; + } + await updateHermesVersionsToNightly(); }