diff --git a/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch b/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch
deleted file mode 100644
index bb42fc62..00000000
--- a/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/third-party-podspecs/RCT-Folly.podspec b/third-party-podspecs/RCT-Folly.podspec
-index 8852179b6ce2ef6ae64e0239edb2594925ff8bc1..040c4f0ca82e6a7342d5b3ed54e556431e5853d2 100644
---- a/third-party-podspecs/RCT-Folly.podspec
-+++ b/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/third-party-podspecs/fmt.podspec b/third-party-podspecs/fmt.podspec
-index 2f38990e226c13f483aaf1b986302d4094243814..a40c5755e049974e98a4038c177661d2bdc5681f 100644
---- a/third-party-podspecs/fmt.podspec
-+++ b/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/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch b/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch
new file mode 100644
index 00000000..0546888c
--- /dev/null
+++ b/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch
@@ -0,0 +1,14 @@
+diff --git a/scripts/cocoapods/new_architecture.rb b/scripts/cocoapods/new_architecture.rb
+index 3873632a7d7b88832b7e5058415734ab0a43679a..6c0683f5044903224245241afaa8369ca7711f66 100644
+--- a/scripts/cocoapods/new_architecture.rb
++++ b/scripts/cocoapods/new_architecture.rb
+@@ -171,8 +171,7 @@ class NewArchitectureHelper
+ excluded_info_plist = ["/Pods", "Tests", "metainternal", ".bundle", "build/", "DerivedData/", ".xcframework", ".framework", "watchkitapp", "today-extention"]
+ projectPaths.each do |projectPath|
+ projectFolderPath = File.dirname(projectPath)
+- infoPlistFiles = `find #{projectFolderPath} -name "Info.plist"`
+- infoPlistFiles = infoPlistFiles.split("\n").map { |f| f.strip }
++ infoPlistFiles = Dir.glob(File.join(projectFolderPath, "**", "Info.plist"))
+
+ infoPlistFiles.each do |infoPlistFile|
+ # If infoPlistFile contains Pods or tests, skip it
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bd255b1c..c92bb942 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,45 @@
All notable changes to this project will be documented in this file.
+## [Unreleased]
+
+## [3.0.92] - 2026-08-29
+
+### Bug Fixes
+- **text-input (Android)**: Resolve the React event dispatcher when a paste occurs and safely skip the custom event when the surface is not ready, avoiding a first-mount null-pointer crash without affecting the system paste action.
+
+### Chores
+- Bump all publishable packages to 3.0.92.
+
+## [3.0.91] - 2026-08-28
+
+### Features
+- **text-input**: Move `@onekeyfe/react-native-text-input` into app-modules and add package-owned iOS text/image paste handling so consumers no longer patch React Native's TextInput sources.
+
+### Bug Fixes
+- **background-thread**: Integrate the app-monorepo `x` runtime-generation, background-HMR teardown, and replacement-runtime lifecycle fixes on Android and iOS.
+- **split-bundle-loader (iOS)**: Integrate dev-vendor entry loading, HMR setup, and cold-build synchronization from app-monorepo `x`.
+
+### Chores
+- Bump all publishable packages to 3.0.91.
+
+## [3.0.90] - 2026-08-26
+
+### Bug Fixes
+- **background-thread (iOS)**: Add an ordered startup API that waits for the main JS runtime's shared bridge installation before creating an Expo-backed background runtime, preventing concurrent Expo module registration crashes.
+
+### Chores
+- Bump all publishable packages to 3.0.90.
+
+## [3.0.89] - 2026-08-25
+
+### Bug Fixes
+- **background-thread (iOS)**: Initialize secondary runtimes through Expo's React Native factory when Expo is present, while preserving the plain React Native fallback.
+
+### Chores
+- Upgrade the development and example app baseline to React Native 0.86.2 and React 19.2.3, with a minimum iOS deployment target of 16.4.
+- Bump all publishable packages to 3.0.89.
+
## [3.0.88] - 2026-08-25
### Bug Fixes
diff --git a/example/react-native/android/app/build.gradle b/example/react-native/android/app/build.gradle
index 162c612b..30827707 100644
--- a/example/react-native/android/app/build.gradle
+++ b/example/react-native/android/app/build.gradle
@@ -8,7 +8,7 @@ apply plugin: "com.facebook.react"
*/
react {
reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
- hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
+ hermesCommand = new File(["node", "--print", "require.resolve('hermes-compiler/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/hermesc/%OS-BIN%/hermesc"
codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
/* Folders */
diff --git a/example/react-native/ios/Podfile b/example/react-native/ios/Podfile
index 3b73561b..48db9b2e 100644
--- a/example/react-native/ios/Podfile
+++ b/example/react-native/ios/Podfile
@@ -12,9 +12,8 @@ require Pod::Executable.execute_command('node', ['-p',
{paths: [process.argv[1]]},
)', __dir__]).strip
-# Raised to 15.5 to match the OneKey app (app-monorepo) and to satisfy
-# SSZipArchive >= 2.5.4 (the zip-slip CVE fix), which requires iOS 15.5.
-platform :ios, '15.5'
+# Match the OneKey app's minimum deployment target for the RN 0.86 upgrade.
+platform :ios, '16.4'
prepare_react_native_project!
linkage = ENV['USE_FRAMEWORKS']
diff --git a/example/react-native/ios/Podfile.lock b/example/react-native/ios/Podfile.lock
index c2c15c72..577182b1 100644
--- a/example/react-native/ios/Podfile.lock
+++ b/example/react-native/ios/Podfile.lock
@@ -1,16 +1,10 @@
PODS:
- - AesCrypto (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - AesCrypto (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -25,20 +19,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - AsyncStorage (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - AsyncStorage (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -53,22 +41,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - AutoSizeInput (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - AutoSizeInput (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -83,20 +65,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - BackgroundThread (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - BackgroundThread (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -111,24 +87,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - boost (1.84.0)
- - ChartWebview (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ChartWebview (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -143,21 +112,15 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - CloudFs (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - CloudFs (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -172,22 +135,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - CloudKitModule (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - CloudKitModule (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -202,24 +159,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- CocoaLumberjack/Core (3.9.1)
- CocoaLumberjack/Swift (3.9.1):
- CocoaLumberjack/Core
- - DnsLookup (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - DnsLookup (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -234,33 +185,23 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - DoubleConversion (1.1.6)
- EMASCurl (1.5.5):
- EMASCurl/HTTP2 (= 1.5.5)
- EMASCurl/HTTP2 (1.5.5)
- - fast_float (8.0.0)
- - FBLazyVector (0.83.0)
- - fmt (12.1.0)
- - glog (0.3.5)
- - hermes-engine (0.14.0):
- - hermes-engine/Pre-built (= 0.14.0)
- - hermes-engine/Pre-built (0.14.0)
- - KeychainModule (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - FBLazyVector (0.86.2)
+ - hermes-engine (250829098.0.16):
+ - hermes-engine/Pre-built (= 250829098.0.16)
+ - hermes-engine/Pre-built (250829098.0.16)
+ - KeychainModule (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -275,24 +216,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- MMKV (2.4.0):
- MMKVCore (~> 2.4.0)
- MMKVCore (2.4.0)
- - NetworkInfo (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - NetworkInfo (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -307,23 +242,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- NitroMmkv (4.3.2):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- hermes-engine
- MMKVCore (= 2.4.0)
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -338,21 +267,15 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- NitroModules (0.36.5):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -367,20 +290,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - Pbkdf2 (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - OneKeyTextInput (3.0.90):
+ - React-Core
+ - Pbkdf2 (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -395,22 +314,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - PerpDepthBar (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - PerpDepthBar (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -425,20 +338,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - Ping (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - Ping (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -453,61 +360,36 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - RCT-Folly (2024.11.18.00):
- - boost
- - DoubleConversion
- - fast_float (= 8.0.0)
- - fmt (= 12.1.0)
- - glog
- - RCT-Folly/Default (= 2024.11.18.00)
- - RCT-Folly/Default (2024.11.18.00):
- - boost
- - DoubleConversion
- - fast_float (= 8.0.0)
- - fmt (= 12.1.0)
- - glog
- - RCT-Folly/Fabric (2024.11.18.00):
- - boost
- - DoubleConversion
- - fast_float (= 8.0.0)
- - fmt (= 12.1.0)
- - glog
- - RCTDeprecation (0.83.0)
- - RCTRequired (0.83.0)
- - RCTSwiftUI (0.83.0)
- - RCTSwiftUIWrapper (0.83.0):
+ - RCTDeprecation (0.86.2)
+ - RCTRequired (0.86.2)
+ - RCTSwiftUI (0.86.2)
+ - RCTSwiftUIWrapper (0.86.2):
- RCTSwiftUI
- - RCTTypeSafety (0.83.0):
- - FBLazyVector (= 0.83.0)
- - RCTRequired (= 0.83.0)
- - React-Core (= 0.83.0)
- - React (0.83.0):
- - React-Core (= 0.83.0)
- - React-Core/DevSupport (= 0.83.0)
- - React-Core/RCTWebSocket (= 0.83.0)
- - React-RCTActionSheet (= 0.83.0)
- - React-RCTAnimation (= 0.83.0)
- - React-RCTBlob (= 0.83.0)
- - React-RCTImage (= 0.83.0)
- - React-RCTLinking (= 0.83.0)
- - React-RCTNetwork (= 0.83.0)
- - React-RCTSettings (= 0.83.0)
- - React-RCTText (= 0.83.0)
- - React-RCTVibration (= 0.83.0)
- - React-callinvoker (0.83.0)
- - React-Core (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - RCTTypeSafety (0.86.2):
+ - FBLazyVector (= 0.86.2)
+ - RCTRequired (= 0.86.2)
+ - React-Core (= 0.86.2)
+ - React (0.86.2):
+ - React-Core (= 0.86.2)
+ - React-Core/DevSupport (= 0.86.2)
+ - React-Core/RCTWebSocket (= 0.86.2)
+ - React-RCTActionSheet (= 0.86.2)
+ - React-RCTAnimation (= 0.86.2)
+ - React-RCTBlob (= 0.86.2)
+ - React-RCTImage (= 0.86.2)
+ - React-RCTLinking (= 0.86.2)
+ - React-RCTNetwork (= 0.86.2)
+ - React-RCTSettings (= 0.86.2)
+ - React-RCTText (= 0.86.2)
+ - React-RCTVibration (= 0.86.2)
+ - React-callinvoker (0.86.2)
+ - React-Core (0.86.2):
+ - hermes-engine
- RCTDeprecation
- - React-Core/Default (= 0.83.0)
+ - React-Core-prebuilt
+ - React-Core/Default (= 0.86.2)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -520,18 +402,14 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/CoreModulesHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core-prebuilt (0.86.2):
+ - ReactNativeDependencies
+ - React-Core/CoreModulesHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -545,18 +423,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/Default (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/Default (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-cxxreact
- React-featureflags
- React-hermes
@@ -569,20 +441,14 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/DevSupport (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/DevSupport (0.86.2):
+ - hermes-engine
- RCTDeprecation
- - React-Core/Default (= 0.83.0)
- - React-Core/RCTWebSocket (= 0.83.0)
+ - React-Core-prebuilt
+ - React-Core/Default (= 0.86.2)
+ - React-Core/RCTWebSocket (= 0.86.2)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -595,18 +461,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTActionSheetHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTActionSheetHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -620,18 +480,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTAnimationHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTAnimationHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -645,18 +499,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTBlobHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTBlobHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -670,18 +518,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTImageHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTImageHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -695,18 +537,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTLinkingHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTLinkingHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -720,18 +556,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTNetworkHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTNetworkHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -745,18 +575,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTSettingsHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTSettingsHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -770,18 +594,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTTextHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTTextHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -795,18 +613,12 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTVibrationHeaders (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTVibrationHeaders (0.86.2):
+ - hermes-engine
- RCTDeprecation
+ - React-Core-prebuilt
- React-Core/Default
- React-cxxreact
- React-featureflags
@@ -820,19 +632,13 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Core/RCTWebSocket (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core/RCTWebSocket (0.86.2):
+ - hermes-engine
- RCTDeprecation
- - React-Core/Default (= 0.83.0)
+ - React-Core-prebuilt
+ - React-Core/Default (= 0.86.2)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -845,63 +651,49 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-CoreModules (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - RCTTypeSafety (= 0.83.0)
- - React-Core/CoreModulesHeaders (= 0.83.0)
+ - React-CoreModules (0.86.2):
+ - RCTTypeSafety (= 0.86.2)
+ - React-Core-prebuilt
+ - React-Core/CoreModulesHeaders (= 0.86.2)
- React-debug
- - React-jsi (= 0.83.0)
+ - React-featureflags
+ - React-jsi (= 0.86.2)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.83.0)
+ - React-RCTImage (= 0.86.2)
- React-runtimeexecutor
- React-utils
- ReactCommon
- - SocketRocket
- - React-cxxreact (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-callinvoker (= 0.83.0)
- - React-debug (= 0.83.0)
- - React-jsi (= 0.83.0)
+ - ReactNativeDependencies
+ - React-cxxreact (0.86.2):
+ - hermes-engine
+ - React-callinvoker (= 0.86.2)
+ - React-Core-prebuilt
+ - React-debug (= 0.86.2)
+ - React-jsi (= 0.86.2)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.83.0)
- - React-perflogger (= 0.83.0)
+ - React-logger (= 0.86.2)
+ - React-perflogger (= 0.86.2)
- React-runtimeexecutor
- - React-timing (= 0.83.0)
+ - React-timing (= 0.86.2)
- React-utils
- - SocketRocket
- - React-debug (0.83.0)
- - React-defaultsnativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-debug (0.86.2):
+ - React-debug/redbox (= 0.86.2)
+ - React-debug/redbox (0.86.2)
+ - React-defaultsnativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-domnativemodule
+ - React-Fabric/animated
- React-featureflags
- React-featureflagsnativemodule
- React-idlecallbacksnativemodule
@@ -909,19 +701,15 @@ PODS:
- React-jsi
- React-jsiexecutor
- React-microtasksnativemodule
+ - React-mutationobservernativemodule
- React-RCTFBReactNativeSpec
+ - React-viewtransitionnativemodule
- React-webperformancenativemodule
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-domnativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-domnativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-Fabric
- React-Fabric/bridging
- React-FabricComponents
@@ -931,41 +719,35 @@ PODS:
- React-RCTFBReactNativeSpec
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Fabric (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Fabric (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/animated (= 0.83.0)
- - React-Fabric/animationbackend (= 0.83.0)
- - React-Fabric/animations (= 0.83.0)
- - React-Fabric/attributedstring (= 0.83.0)
- - React-Fabric/bridging (= 0.83.0)
- - React-Fabric/componentregistry (= 0.83.0)
- - React-Fabric/componentregistrynative (= 0.83.0)
- - React-Fabric/components (= 0.83.0)
- - React-Fabric/consistency (= 0.83.0)
- - React-Fabric/core (= 0.83.0)
- - React-Fabric/dom (= 0.83.0)
- - React-Fabric/imagemanager (= 0.83.0)
- - React-Fabric/leakchecker (= 0.83.0)
- - React-Fabric/mounting (= 0.83.0)
- - React-Fabric/observers (= 0.83.0)
- - React-Fabric/scheduler (= 0.83.0)
- - React-Fabric/telemetry (= 0.83.0)
- - React-Fabric/templateprocessor (= 0.83.0)
- - React-Fabric/uimanager (= 0.83.0)
+ - React-Fabric/animated (= 0.86.2)
+ - React-Fabric/animationbackend (= 0.86.2)
+ - React-Fabric/animations (= 0.86.2)
+ - React-Fabric/attributedstring (= 0.86.2)
+ - React-Fabric/bridging (= 0.86.2)
+ - React-Fabric/componentregistry (= 0.86.2)
+ - React-Fabric/componentregistrynative (= 0.86.2)
+ - React-Fabric/components (= 0.86.2)
+ - React-Fabric/consistency (= 0.86.2)
+ - React-Fabric/core (= 0.86.2)
+ - React-Fabric/dom (= 0.86.2)
+ - React-Fabric/imagemanager (= 0.86.2)
+ - React-Fabric/leakchecker (= 0.86.2)
+ - React-Fabric/mounting (= 0.86.2)
+ - React-Fabric/observers (= 0.86.2)
+ - React-Fabric/scheduler (= 0.86.2)
+ - React-Fabric/telemetry (= 0.86.2)
+ - React-Fabric/uimanager (= 0.86.2)
+ - React-Fabric/viewtransition (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -976,21 +758,16 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/animated (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/animated (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
+ - React-Fabric/animationbackend
- React-featureflags
- React-graphics
- React-jsi
@@ -1001,19 +778,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/animationbackend (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/animationbackend (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1026,19 +797,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/animations (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/animations (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1051,19 +816,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/attributedstring (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/attributedstring (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1076,19 +835,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/bridging (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/bridging (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1101,19 +854,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/componentregistry (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/componentregistry (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1126,19 +873,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/componentregistrynative (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/componentregistrynative (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1151,25 +892,19 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/components (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/components (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.83.0)
- - React-Fabric/components/root (= 0.83.0)
- - React-Fabric/components/scrollview (= 0.83.0)
- - React-Fabric/components/view (= 0.83.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.86.2)
+ - React-Fabric/components/root (= 0.86.2)
+ - React-Fabric/components/scrollview (= 0.86.2)
+ - React-Fabric/components/view (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -1180,19 +915,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/components/legacyviewmanagerinterop (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/components/legacyviewmanagerinterop (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1205,19 +934,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/components/root (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/components/root (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1230,19 +953,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/components/scrollview (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/components/scrollview (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1255,19 +972,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/components/view (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/components/view (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1281,20 +992,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-Fabric/consistency (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Fabric/consistency (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1307,19 +1012,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/core (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/core (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1332,19 +1031,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/dom (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/dom (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1357,19 +1050,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/imagemanager (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/imagemanager (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1382,19 +1069,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/leakchecker (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/leakchecker (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1407,48 +1088,38 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/mounting (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/mounting (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
- React-graphics
- React-jsi
- React-jsiexecutor
+ - React-jsinspectortracing
- React-logger
- React-rendererdebug
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/observers (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/observers (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.83.0)
- - React-Fabric/observers/intersection (= 0.83.0)
+ - React-Fabric/observers/events (= 0.86.2)
+ - React-Fabric/observers/intersection (= 0.86.2)
+ - React-Fabric/observers/mutation (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -1459,19 +1130,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/observers/events (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/observers/events (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1484,19 +1149,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/observers/intersection (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/observers/intersection (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1509,72 +1168,56 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/scheduler (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/observers/mutation (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events
- React-featureflags
- React-graphics
- React-jsi
- React-jsiexecutor
- React-logger
- - React-performancecdpmetrics
- - React-performancetimeline
- React-rendererdebug
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/telemetry (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/scheduler (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
+ - React-Fabric/animationbackend
+ - React-Fabric/observers/events
+ - React-Fabric/viewtransition
- React-featureflags
- React-graphics
- React-jsi
- React-jsiexecutor
- React-logger
+ - React-performancecdpmetrics
+ - React-performancetimeline
- React-rendererdebug
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/templateprocessor (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/telemetry (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1587,22 +1230,16 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/uimanager (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/uimanager (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.83.0)
+ - React-Fabric/uimanager/consistency (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -1614,19 +1251,13 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-Fabric/uimanager/consistency (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/uimanager/consistency (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -1640,63 +1271,37 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-FabricComponents (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-Fabric/viewtransition (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric
- - React-FabricComponents/components (= 0.83.0)
- - React-FabricComponents/textlayoutmanager (= 0.83.0)
- React-featureflags
- React-graphics
- React-jsi
- React-jsiexecutor
- React-logger
- - React-RCTFBReactNativeSpec
- React-rendererdebug
+ - React-runtimeexecutor
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
- - Yoga
- - React-FabricComponents/components (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-FabricComponents (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.83.0)
- - React-FabricComponents/components/iostextinput (= 0.83.0)
- - React-FabricComponents/components/modal (= 0.83.0)
- - React-FabricComponents/components/rncore (= 0.83.0)
- - React-FabricComponents/components/safeareaview (= 0.83.0)
- - React-FabricComponents/components/scrollview (= 0.83.0)
- - React-FabricComponents/components/switch (= 0.83.0)
- - React-FabricComponents/components/text (= 0.83.0)
- - React-FabricComponents/components/textinput (= 0.83.0)
- - React-FabricComponents/components/unimplementedview (= 0.83.0)
- - React-FabricComponents/components/virtualview (= 0.83.0)
- - React-FabricComponents/components/virtualviewexperimental (= 0.83.0)
+ - React-FabricComponents/components (= 0.86.2)
+ - React-FabricComponents/textlayoutmanager (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -1707,23 +1312,28 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/inputaccessory (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
+ - React-FabricComponents/components/inputaccessory (= 0.86.2)
+ - React-FabricComponents/components/iostextinput (= 0.86.2)
+ - React-FabricComponents/components/modal (= 0.86.2)
+ - React-FabricComponents/components/rncore (= 0.86.2)
+ - React-FabricComponents/components/safeareaview (= 0.86.2)
+ - React-FabricComponents/components/scrollview (= 0.86.2)
+ - React-FabricComponents/components/switch (= 0.86.2)
+ - React-FabricComponents/components/text (= 0.86.2)
+ - React-FabricComponents/components/textinput (= 0.86.2)
+ - React-FabricComponents/components/unimplementedview (= 0.86.2)
+ - React-FabricComponents/components/virtualview (= 0.86.2)
- React-featureflags
- React-graphics
- React-jsi
@@ -1734,20 +1344,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/iostextinput (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/inputaccessory (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1761,20 +1365,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/modal (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/iostextinput (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1788,20 +1386,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/rncore (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/modal (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1815,20 +1407,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/safeareaview (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/rncore (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1842,20 +1428,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/scrollview (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/safeareaview (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1869,20 +1449,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/switch (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/scrollview (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1896,20 +1470,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/text (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/switch (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1923,20 +1491,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/textinput (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/text (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1950,20 +1512,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/unimplementedview (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/textinput (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -1977,20 +1533,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualview (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/unimplementedview (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -2004,20 +1554,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualviewexperimental (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/components/virtualview (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -2031,20 +1575,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricComponents/textlayoutmanager (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-FabricComponents/textlayoutmanager (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-Fabric
@@ -2058,127 +1596,82 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-FabricImage (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - RCTRequired (= 0.83.0)
- - RCTTypeSafety (= 0.83.0)
+ - React-FabricImage (0.86.2):
+ - hermes-engine
+ - RCTRequired (= 0.86.2)
+ - RCTTypeSafety (= 0.86.2)
+ - React-Core-prebuilt
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.83.0)
+ - React-jsiexecutor (= 0.86.2)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-featureflags (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - SocketRocket
- - React-featureflagsnativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-featureflags (0.86.2):
+ - React-Core-prebuilt
+ - ReactNativeDependencies
+ - React-featureflagsnativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-featureflags
- React-jsi
- React-jsiexecutor
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-graphics (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies
+ - React-graphics (0.86.2):
- hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core-prebuilt
+ - React-featureflags
- React-jsi
- React-jsiexecutor
+ - React-rendererdebug
- React-utils
- - SocketRocket
- - React-hermes (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-cxxreact (= 0.83.0)
- - React-jsi
- - React-jsiexecutor (= 0.83.0)
+ - ReactNativeDependencies
+ - React-hermes (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
+ - React-cxxreact (= 0.86.2)
+ - React-jsi
+ - React-jsiexecutor (= 0.86.2)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
+ - React-jsitooling
- React-oscompat
- - React-perflogger (= 0.83.0)
+ - React-perflogger (= 0.86.2)
- React-runtimeexecutor
- - SocketRocket
- - React-idlecallbacksnativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies
+ - React-idlecallbacksnativemodule (0.86.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 (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-ImageManager (0.86.2):
+ - React-Core-prebuilt
- React-Core/Default
- React-debug
- React-Fabric
- React-graphics
- React-rendererdebug
- React-utils
- - SocketRocket
- - React-intersectionobservernativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-intersectionobservernativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-cxxreact
- React-Fabric
- React-Fabric/bridging
@@ -2189,168 +1682,115 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-jserrorhandler (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-jserrorhandler (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
- React-jsi
- ReactCommon/turbomodule/bridging
- - SocketRocket
- - React-jsi (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - SocketRocket
- - React-jsiexecutor (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-jsi (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
+ - ReactNativeDependencies
+ - React-jsiexecutor (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
+ - React-jserrorhandler
- React-jsi
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
+ - React-jsitooling
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket
- - React-jsinspector (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-jsinspector (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-featureflags
- React-jsi
- React-jsinspectorcdp
- React-jsinspectornetwork
- React-jsinspectortracing
- React-oscompat
- - React-perflogger (= 0.83.0)
+ - React-perflogger (= 0.86.2)
- React-runtimeexecutor
- React-utils
- - SocketRocket
- - React-jsinspectorcdp (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - SocketRocket
- - React-jsinspectornetwork (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-jsinspectorcdp (0.86.2):
+ - React-Core-prebuilt
+ - ReactNativeDependencies
+ - React-jsinspectornetwork (0.86.2):
+ - React-Core-prebuilt
- React-jsinspectorcdp
- - SocketRocket
- - React-jsinspectortracing (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies
+ - React-jsinspectortracing (0.86.2):
- hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core-prebuilt
- React-jsi
- React-jsinspectornetwork
- React-oscompat
- React-timing
- - SocketRocket
- - React-jsitooling (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-cxxreact (= 0.83.0)
+ - React-utils
+ - ReactNativeDependencies
+ - React-jsitooling (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
+ - React-cxxreact (= 0.86.2)
- React-debug
- - React-jsi (= 0.83.0)
+ - React-jsi (= 0.86.2)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- React-utils
- - SocketRocket
- - React-jsitracing (0.83.0):
- - React-jsi
- - React-logger (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - SocketRocket
- - React-Mapbuffer (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-jsitracing (0.86.2):
+ - React-jsi
+ - React-logger (0.86.2):
+ - React-Core-prebuilt
+ - ReactNativeDependencies
+ - React-Mapbuffer (0.86.2):
+ - React-Core-prebuilt
- React-debug
- - SocketRocket
- - React-microtasksnativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies
+ - React-microtasksnativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - React-mutationobservernativemodule (0.86.2):
- hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-Core-prebuilt
+ - React-cxxreact
+ - React-Fabric
+ - React-Fabric/bridging
+ - React-Fabric/observers/mutation
+ - React-featureflags
- React-jsi
- React-jsiexecutor
- React-RCTFBReactNativeSpec
+ - React-runtimeexecutor
- ReactCommon/turbomodule/core
- - SocketRocket
- - react-native-pager-view (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - Yoga
+ - react-native-pager-view (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2365,20 +1805,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- react-native-safe-area-context (5.6.2):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2395,20 +1829,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- react-native-safe-area-context/common (5.6.2):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2423,20 +1851,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- react-native-safe-area-context/fabric (5.6.2):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2452,27 +1874,21 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - react-native-tab-view (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - react-native-tab-view (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - react-native-tab-view/common (= 3.0.88)
+ - react-native-tab-view/common (= 3.0.90)
- React-NativeModulesApple
- React-RCTFabric
- React-renderercss
@@ -2481,20 +1897,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - react-native-tab-view/common (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - react-native-tab-view/common (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2509,19 +1919,13 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-NativeModulesApple (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-NativeModulesApple (0.86.2):
+ - hermes-engine
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -2531,88 +1935,53 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
- - React-networking (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-featureflags
+ - ReactNativeDependencies
+ - React-networking (0.86.2):
+ - React-Core-prebuilt
- React-jsinspectornetwork
- React-jsinspectortracing
- React-performancetimeline
- React-timing
- - SocketRocket
- - React-oscompat (0.83.0)
- - React-perflogger (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - SocketRocket
- - React-performancecdpmetrics (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-oscompat (0.86.2)
+ - React-perflogger (0.86.2):
+ - React-Core-prebuilt
+ - ReactNativeDependencies
+ - React-performancecdpmetrics (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-jsi
- React-performancetimeline
- React-runtimeexecutor
- React-timing
- - SocketRocket
- - React-performancetimeline (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-performancetimeline (0.86.2):
+ - React-Core-prebuilt
- React-featureflags
+ - React-jsinspector
- React-jsinspectortracing
- React-perflogger
- React-timing
- - SocketRocket
- - React-RCTActionSheet (0.83.0):
- - React-Core/RCTActionSheetHeaders (= 0.83.0)
- - React-RCTAnimation (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTActionSheet (0.86.2):
+ - React-Core/RCTActionSheetHeaders (= 0.86.2)
+ - React-RCTAnimation (0.86.2):
- RCTTypeSafety
+ - React-Core-prebuilt
- React-Core/RCTAnimationHeaders
+ - React-debug
- React-featureflags
- React-jsi
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - SocketRocket
- - React-RCTAppDelegate (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTAppDelegate (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-CoreModules
- React-debug
- React-defaultsnativemodule
@@ -2634,16 +2003,10 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactCommon
- - SocketRocket
- - React-RCTBlob (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTBlob (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-Core/RCTBlobHeaders
- React-Core/RCTWebSocket
- React-jsi
@@ -2653,18 +2016,12 @@ PODS:
- React-RCTFBReactNativeSpec
- React-RCTNetwork
- ReactCommon
- - SocketRocket
- - React-RCTFabric (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTFabric (0.86.2):
+ - hermes-engine
- RCTSwiftUIWrapper
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-FabricComponents
@@ -2689,37 +2046,25 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-RCTFBReactNativeSpec (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-RCTFBReactNativeSpec (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.83.0)
+ - React-RCTFBReactNativeSpec/components (= 0.86.2)
- ReactCommon
- - SocketRocket
- - React-RCTFBReactNativeSpec/components (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTFBReactNativeSpec/components (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -2729,40 +2074,28 @@ PODS:
- React-rendererdebug
- React-utils
- ReactCommon
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - React-RCTImage (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-RCTImage (0.86.2):
- RCTTypeSafety
+ - React-Core-prebuilt
- React-Core/RCTImageHeaders
- React-jsi
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- React-RCTNetwork
- ReactCommon
- - SocketRocket
- - React-RCTLinking (0.83.0):
- - React-Core/RCTLinkingHeaders (= 0.83.0)
- - React-jsi (= 0.83.0)
+ - ReactNativeDependencies
+ - React-RCTLinking (0.86.2):
+ - React-Core/RCTLinkingHeaders (= 0.86.2)
+ - React-jsi (= 0.86.2)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.83.0)
- - React-RCTNetwork (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactCommon/turbomodule/core (= 0.86.2)
+ - React-RCTNetwork (0.86.2):
- RCTTypeSafety
+ - React-Core-prebuilt
- React-Core/RCTNetworkHeaders
- React-debug
- React-featureflags
@@ -2773,17 +2106,11 @@ PODS:
- React-networking
- React-RCTFBReactNativeSpec
- ReactCommon
- - SocketRocket
- - React-RCTRuntime (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTRuntime (0.86.2):
+ - hermes-engine
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-jsi
- React-jsinspector
@@ -2795,63 +2122,39 @@ PODS:
- React-runtimeexecutor
- React-RuntimeHermes
- React-utils
- - SocketRocket
- - React-RCTSettings (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RCTSettings (0.86.2):
- RCTTypeSafety
+ - React-Core-prebuilt
- React-Core/RCTSettingsHeaders
- React-jsi
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - SocketRocket
- - React-RCTText (0.83.0):
- - React-Core/RCTTextHeaders (= 0.83.0)
+ - ReactNativeDependencies
+ - React-RCTText (0.86.2):
+ - React-Core/RCTTextHeaders (= 0.86.2)
- Yoga
- - React-RCTVibration (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-RCTVibration (0.86.2):
+ - React-Core-prebuilt
- React-Core/RCTVibrationHeaders
- React-jsi
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - SocketRocket
- - React-rendererconsistency (0.83.0)
- - React-renderercss (0.83.0):
+ - ReactNativeDependencies
+ - React-rendererconsistency (0.86.2)
+ - React-renderercss (0.86.2):
- React-debug
- React-utils
- - React-rendererdebug (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-rendererdebug (0.86.2):
+ - React-Core-prebuilt
- React-debug
- - SocketRocket
- - React-RuntimeApple (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RuntimeApple (0.86.2):
+ - hermes-engine
- React-callinvoker
+ - React-Core-prebuilt
- React-Core/Default
- React-CoreModules
- React-cxxreact
@@ -2870,16 +2173,10 @@ PODS:
- React-RuntimeHermes
- React-runtimescheduler
- React-utils
- - SocketRocket
- - React-RuntimeCore (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RuntimeCore (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-cxxreact
- React-Fabric
- React-featureflags
@@ -2892,29 +2189,17 @@ PODS:
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
- - SocketRocket
- - React-runtimeexecutor (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-runtimeexecutor (0.86.2):
+ - React-Core-prebuilt
- React-debug
- React-featureflags
- - React-jsi (= 0.83.0)
+ - React-jsi (= 0.86.2)
- React-utils
- - SocketRocket
- - React-RuntimeHermes (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-RuntimeHermes (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-featureflags
- React-hermes
- React-jsi
@@ -2926,17 +2211,11 @@ PODS:
- React-RuntimeCore
- React-runtimeexecutor
- React-utils
- - SocketRocket
- - React-runtimescheduler (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeDependencies
+ - React-runtimescheduler (0.86.2):
+ - hermes-engine
- React-callinvoker
+ - React-Core-prebuilt
- React-cxxreact
- React-debug
- React-featureflags
@@ -2948,30 +2227,30 @@ PODS:
- React-runtimeexecutor
- React-timing
- React-utils
- - SocketRocket
- - React-timing (0.83.0):
+ - ReactNativeDependencies
+ - React-timing (0.86.2):
- React-debug
- - React-utils (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-utils (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-debug
- - React-jsi (= 0.83.0)
- - SocketRocket
- - React-webperformancenativemodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - React-jsi (= 0.86.2)
+ - ReactNativeDependencies
+ - React-viewtransitionnativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
+ - React-Fabric
+ - React-Fabric/bridging
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - Yoga
+ - React-webperformancenativemodule (0.86.2):
+ - hermes-engine
+ - React-Core-prebuilt
- React-cxxreact
- React-jsi
- React-jsiexecutor
@@ -2979,21 +2258,15 @@ PODS:
- React-RCTFBReactNativeSpec
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- - SocketRocket
- - ReactAppDependencyProvider (0.83.0):
+ - ReactNativeDependencies
+ - ReactAppDependencyProvider (0.86.2):
- ReactCodegen
- - ReactCodegen (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactCodegen (0.86.2):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-FabricImage
@@ -3007,81 +2280,51 @@ PODS:
- React-utils
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
- - ReactCommon (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - RCT-Folly
- - RCT-Folly/Fabric
- - ReactCommon/turbomodule (= 0.83.0)
- - SocketRocket
- - ReactCommon/turbomodule (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-callinvoker (= 0.83.0)
- - React-cxxreact (= 0.83.0)
- - React-jsi (= 0.83.0)
- - React-logger (= 0.83.0)
- - React-perflogger (= 0.83.0)
- - ReactCommon/turbomodule/bridging (= 0.83.0)
- - ReactCommon/turbomodule/core (= 0.83.0)
- - SocketRocket
- - ReactCommon/turbomodule/bridging (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-callinvoker (= 0.83.0)
- - React-cxxreact (= 0.83.0)
- - React-jsi (= 0.83.0)
- - React-logger (= 0.83.0)
- - React-perflogger (= 0.83.0)
- - SocketRocket
- - ReactCommon/turbomodule/core (0.83.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - React-callinvoker (= 0.83.0)
- - React-cxxreact (= 0.83.0)
- - React-debug (= 0.83.0)
- - React-featureflags (= 0.83.0)
- - React-jsi (= 0.83.0)
- - React-logger (= 0.83.0)
- - React-perflogger (= 0.83.0)
- - React-utils (= 0.83.0)
- - SocketRocket
- - ReactNativeAppUpdate (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies
+ - ReactCommon (0.86.2):
+ - React-Core-prebuilt
+ - ReactCommon/turbomodule (= 0.86.2)
+ - ReactNativeDependencies
+ - ReactCommon/turbomodule (0.86.2):
+ - hermes-engine
+ - React-callinvoker (= 0.86.2)
+ - React-Core-prebuilt
+ - React-cxxreact (= 0.86.2)
+ - React-jsi (= 0.86.2)
+ - React-logger (= 0.86.2)
+ - React-perflogger (= 0.86.2)
+ - ReactCommon/turbomodule/bridging (= 0.86.2)
+ - ReactCommon/turbomodule/core (= 0.86.2)
+ - ReactNativeDependencies
+ - ReactCommon/turbomodule/bridging (0.86.2):
+ - hermes-engine
+ - React-callinvoker (= 0.86.2)
+ - React-Core-prebuilt
+ - React-cxxreact (= 0.86.2)
+ - React-jsi (= 0.86.2)
+ - React-logger (= 0.86.2)
+ - React-perflogger (= 0.86.2)
+ - ReactNativeDependencies
+ - ReactCommon/turbomodule/core (0.86.2):
+ - hermes-engine
+ - React-callinvoker (= 0.86.2)
+ - React-Core-prebuilt
+ - React-cxxreact (= 0.86.2)
+ - React-debug (= 0.86.2)
+ - React-featureflags (= 0.86.2)
+ - React-jsi (= 0.86.2)
+ - React-logger (= 0.86.2)
+ - React-perflogger (= 0.86.2)
+ - React-utils (= 0.86.2)
+ - ReactNativeDependencies
+ - ReactNativeAppUpdate (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3096,23 +2339,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeBundleCrypto (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeBundleCrypto (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3127,24 +2364,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeBundleUpdate (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeBundleUpdate (3.0.90):
- hermes-engine
- MMKV (= 2.4.0)
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3160,25 +2391,19 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeBundleCrypto
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- ReactNativeRangeDownloader
- - SocketRocket
- SSZipArchive (>= 2.5.4)
- Yoga
- - ReactNativeCheckBiometricAuthChanged (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeCheckBiometricAuthChanged (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3193,23 +2418,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeDeviceUtils (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeDependencies (0.86.2)
+ - ReactNativeDeviceUtils (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3224,23 +2444,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeGetRandomValues (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeGetRandomValues (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3255,21 +2469,15 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeLiteCard (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - ReactNativeLiteCard (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3284,24 +2492,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeNativeLogger (3.0.88):
- - boost
+ - ReactNativeNativeLogger (3.0.90):
- CocoaLumberjack/Swift (~> 3.8)
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3316,22 +2518,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - ReactNativePerfMemory (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativePerfMemory (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3346,23 +2542,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativePerfStats (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativePerfStats (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3377,23 +2567,17 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeRangeDownloader (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeRangeDownloader (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3408,24 +2592,18 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- SSZipArchive (= 2.5.5)
- Yoga
- - ReactNativeSplashScreen (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeSplashScreen (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3440,22 +2618,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- - ReactNativeZipArchive (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ReactNativeZipArchive (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3470,21 +2642,15 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- SSZipArchive (>= 2.5.4)
- Yoga
- RNScreens (4.24.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3500,21 +2666,15 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- RNScreens/common (= 4.24.0)
- - SocketRocket
- Yoga
- RNScreens/common (4.24.0):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3530,22 +2690,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - ScrollGuard (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - ScrollGuard (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3560,22 +2714,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - SegmentSlider (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - SegmentSlider (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3590,22 +2738,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - Skeleton (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
+ - Skeleton (3.0.90):
- hermes-engine
- NitroModules
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3620,22 +2762,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - SniConnect (3.0.88):
- - boost
- - DoubleConversion
+ - SniConnect (3.0.90):
- EMASCurl (= 1.5.5)
- - fast_float
- - fmt
- - glog
- hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-callinvoker
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3650,21 +2786,14 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- - SocketRocket (0.7.1)
- - SplitBundleLoader (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - SplitBundleLoader (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3679,22 +2808,16 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
+ - ReactNativeDependencies
- ReactNativeNativeLogger
- - SocketRocket
- Yoga
- SSZipArchive (2.5.5)
- - TcpSocket (3.0.88):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
+ - TcpSocket (3.0.90):
+ - hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
+ - React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
@@ -3709,7 +2832,7 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - SocketRocket
+ - ReactNativeDependencies
- Yoga
- Yoga (0.0.0)
@@ -3718,26 +2841,21 @@ DEPENDENCIES:
- "AsyncStorage (from `../../../node_modules/@onekeyfe/react-native-async-storage`)"
- "AutoSizeInput (from `../../../node_modules/@onekeyfe/react-native-auto-size-input`)"
- "BackgroundThread (from `../../../node_modules/@onekeyfe/react-native-background-thread`)"
- - boost (from `../../../node_modules/react-native/third-party-podspecs/boost.podspec`)
- "ChartWebview (from `../../../node_modules/@onekeyfe/react-native-chart-webview`)"
- "CloudFs (from `../../../node_modules/@onekeyfe/react-native-cloud-fs`)"
- "CloudKitModule (from `../../../node_modules/@onekeyfe/react-native-cloud-kit-module`)"
- "DnsLookup (from `../../../node_modules/@onekeyfe/react-native-dns-lookup`)"
- - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- EMASCurl
- - fast_float (from `../../../node_modules/react-native/third-party-podspecs/fast_float.podspec`)
- FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`)
- - fmt (from `../../../node_modules/react-native/third-party-podspecs/fmt.podspec`)
- - glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- "KeychainModule (from `../../../node_modules/@onekeyfe/react-native-keychain-module`)"
- "NetworkInfo (from `../../../node_modules/@onekeyfe/react-native-network-info`)"
- NitroMmkv (from `../../../node_modules/react-native-mmkv`)
- NitroModules (from `../../../node_modules/react-native-nitro-modules`)
+ - "OneKeyTextInput (from `../../../node_modules/@onekeyfe/react-native-text-input`)"
- "Pbkdf2 (from `../../../node_modules/@onekeyfe/react-native-pbkdf2`)"
- "PerpDepthBar (from `../../../node_modules/@onekeyfe/react-native-perp-depth-bar`)"
- "Ping (from `../../../node_modules/@onekeyfe/react-native-ping`)"
- - RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTDeprecation (from `../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
- RCTRequired (from `../../../node_modules/react-native/Libraries/Required`)
- RCTSwiftUI (from `../../../node_modules/react-native/ReactApple/RCTSwiftUI`)
@@ -3746,6 +2864,7 @@ DEPENDENCIES:
- React (from `../../../node_modules/react-native/`)
- React-callinvoker (from `../../../node_modules/react-native/ReactCommon/callinvoker`)
- React-Core (from `../../../node_modules/react-native/`)
+ - React-Core-prebuilt (from `../../../node_modules/react-native/React-Core-prebuilt.podspec`)
- React-Core/RCTWebSocket (from `../../../node_modules/react-native/`)
- React-CoreModules (from `../../../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../../../node_modules/react-native/ReactCommon/cxxreact`)
@@ -3774,6 +2893,7 @@ DEPENDENCIES:
- React-logger (from `../../../node_modules/react-native/ReactCommon/logger`)
- React-Mapbuffer (from `../../../node_modules/react-native/ReactCommon`)
- React-microtasksnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
+ - React-mutationobservernativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver`)
- "react-native-pager-view (from `../../../node_modules/@onekeyfe/react-native-pager-view`)"
- react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`)
- "react-native-tab-view (from `../../../node_modules/@onekeyfe/react-native-tab-view`)"
@@ -3806,6 +2926,7 @@ DEPENDENCIES:
- React-runtimescheduler (from `../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-timing (from `../../../node_modules/react-native/ReactCommon/react/timing`)
- React-utils (from `../../../node_modules/react-native/ReactCommon/react/utils`)
+ - React-viewtransitionnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition`)
- React-webperformancenativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`)
- ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`)
- ReactCodegen (from `build/generated/ios/ReactCodegen`)
@@ -3814,6 +2935,7 @@ DEPENDENCIES:
- "ReactNativeBundleCrypto (from `../../../node_modules/@onekeyfe/react-native-bundle-crypto`)"
- "ReactNativeBundleUpdate (from `../../../node_modules/@onekeyfe/react-native-bundle-update`)"
- "ReactNativeCheckBiometricAuthChanged (from `../../../node_modules/@onekeyfe/react-native-check-biometric-auth-changed`)"
+ - ReactNativeDependencies (from `../../../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`)
- "ReactNativeDeviceUtils (from `../../../node_modules/@onekeyfe/react-native-device-utils`)"
- "ReactNativeGetRandomValues (from `../../../node_modules/@onekeyfe/react-native-get-random-values`)"
- "ReactNativeLiteCard (from `../../../node_modules/@onekeyfe/react-native-lite-card`)"
@@ -3828,7 +2950,6 @@ DEPENDENCIES:
- "SegmentSlider (from `../../../node_modules/@onekeyfe/react-native-segment-slider`)"
- "Skeleton (from `../../../node_modules/@onekeyfe/react-native-skeleton`)"
- "SniConnect (from `../../../node_modules/@onekeyfe/react-native-sni-connect`)"
- - SocketRocket (~> 0.7.1)
- "SplitBundleLoader (from `../../../node_modules/@onekeyfe/react-native-split-bundle-loader`)"
- "TcpSocket (from `../../../node_modules/@onekeyfe/react-native-tcp-socket`)"
- Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`)
@@ -3841,8 +2962,6 @@ SPEC REPOS:
- MMKV
- MMKVCore
- SSZipArchive
- trunk:
- - SocketRocket
EXTERNAL SOURCES:
AesCrypto:
@@ -3853,8 +2972,6 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/@onekeyfe/react-native-auto-size-input"
BackgroundThread:
:path: "../../../node_modules/@onekeyfe/react-native-background-thread"
- boost:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/boost.podspec"
ChartWebview:
:path: "../../../node_modules/@onekeyfe/react-native-chart-webview"
CloudFs:
@@ -3863,19 +2980,11 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/@onekeyfe/react-native-cloud-kit-module"
DnsLookup:
:path: "../../../node_modules/@onekeyfe/react-native-dns-lookup"
- DoubleConversion:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
- fast_float:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/fast_float.podspec"
FBLazyVector:
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
- fmt:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/fmt.podspec"
- glog:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-v0.14.0
+ :tag: hermes-v250829098.0.16
KeychainModule:
:path: "../../../node_modules/@onekeyfe/react-native-keychain-module"
NetworkInfo:
@@ -3884,14 +2993,14 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native-mmkv"
NitroModules:
:path: "../../../node_modules/react-native-nitro-modules"
+ OneKeyTextInput:
+ :path: "../../../node_modules/@onekeyfe/react-native-text-input"
Pbkdf2:
:path: "../../../node_modules/@onekeyfe/react-native-pbkdf2"
PerpDepthBar:
:path: "../../../node_modules/@onekeyfe/react-native-perp-depth-bar"
Ping:
:path: "../../../node_modules/@onekeyfe/react-native-ping"
- RCT-Folly:
- :podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTDeprecation:
:path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
RCTRequired:
@@ -3908,6 +3017,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon/callinvoker"
React-Core:
:path: "../../../node_modules/react-native/"
+ React-Core-prebuilt:
+ :podspec: "../../../node_modules/react-native/React-Core-prebuilt.podspec"
React-CoreModules:
:path: "../../../node_modules/react-native/React/CoreModules"
React-cxxreact:
@@ -3962,6 +3073,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon"
React-microtasksnativemodule:
:path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ React-mutationobservernativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver"
react-native-pager-view:
:path: "../../../node_modules/@onekeyfe/react-native-pager-view"
react-native-safe-area-context:
@@ -4026,6 +3139,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon/react/timing"
React-utils:
:path: "../../../node_modules/react-native/ReactCommon/react/utils"
+ React-viewtransitionnativemodule:
+ :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition"
React-webperformancenativemodule:
:path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/webperformance"
ReactAppDependencyProvider:
@@ -4042,6 +3157,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/@onekeyfe/react-native-bundle-update"
ReactNativeCheckBiometricAuthChanged:
:path: "../../../node_modules/@onekeyfe/react-native-check-biometric-auth-changed"
+ ReactNativeDependencies:
+ :podspec: "../../../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec"
ReactNativeDeviceUtils:
:path: "../../../node_modules/@onekeyfe/react-native-device-utils"
ReactNativeGetRandomValues:
@@ -4078,128 +3195,126 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
- AesCrypto: cb4ec597a15e7eb5c723aaef8974dcb07f483b12
- AsyncStorage: 8e96a2b3d619c89de3cde8308dc40585ca8c48fe
- AutoSizeInput: 82b2b1cc40952ed30efaffcd9fddbd5acf7b3f67
- BackgroundThread: e5b19f216f36ee8e0ab2f1485de499d40329e426
- boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
- ChartWebview: 454e78bb994913699dccbaeba16323065d267bb7
- CloudFs: 31776e777642b192b25c494768ff35dd0220dc50
- CloudKitModule: d3ad84e0e1e5b57f666ad9e71222634efe3f0c7f
+ AesCrypto: d346fe9aa7c66722ed09eae00e1a5a92b11cc4a8
+ AsyncStorage: 859501b9da966b1d78ef24b476a2a8cc951ec915
+ AutoSizeInput: 334d807374e1d841a78c5cc0b2344e5c8d9079f4
+ BackgroundThread: 973c4bbce7468d57d8ddef51822dcf1f6e75194f
+ ChartWebview: 8bf15c939a1d2e674b3f27df7c9ed7b951c32732
+ CloudFs: 018e5b44ee7ab089e5b45d438a68b8f7836af81c
+ CloudKitModule: ff2ebc0f930061c62e18be8799b6216d8e422828
CocoaLumberjack: e4ba3b414dfca8c1916c6303d37f63b3a95134c6
- DnsLookup: d3641304749c67f90806b689982bee81052b061a
- DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
+ DnsLookup: 0220553aa658d2009475590557664f1bc8649a0b
EMASCurl: d75387e1ce9dec1a75cd25cb33c7a7e7bf21997f
- fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6
- FBLazyVector: a293a88992c4c33f0aee184acab0b64a08ff9458
- fmt: 530618a01105dae0fa3a2f27c81ae11fa8f67eac
- glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
- hermes-engine: 1cce3d70a3d2052d5fc6751fdbf4e0649c710867
- KeychainModule: f5b50cb53c18381347913bf9ecdab9e5678092b5
+ FBLazyVector: 3c3be9a019176b5699455f7f66c5444b78a411c6
+ hermes-engine: 31834dd8ee77c3307d4754540214d2588c428241
+ KeychainModule: a998ea6dfc8dba3d7d90adf249459077a96b15e5
MMKV: 86859fdfa2b0b21db1fd6e48788474a6416a2c77
MMKVCore: 3d16ce9f7d411e135020915fde98a056859a1efa
- NetworkInfo: 3ae1a9f4dcc71d6361ac8f2f2a6cc8dfd1bfb7c0
- NitroMmkv: 975be1948fd74280e6febcda06671d7bf604a4cd
- NitroModules: ab089a25876d6510138cc21fbf2e36e872f7d607
- Pbkdf2: b1171da3e742ebd02501a8db757862e51e7c7d16
- PerpDepthBar: 80b4d40ccce5edb46032de7afa0f2951dcf8b451
- Ping: 670d4f222bced4e2c37be167a309c079a2a192a9
- RCT-Folly: b29feb752b08042c62badaef7d453f3bb5e6ae23
- RCTDeprecation: 2b70c6e3abe00396cefd8913efbf6a2db01a2b36
- RCTRequired: f3540eee8094231581d40c5c6d41b0f170237a81
- RCTSwiftUI: 5928f7ca7e9e2f1a82d85d4c79ea3065137ad81c
- RCTSwiftUIWrapper: 8ff2f9da84b47db66d11ece1589d8e5515c0ab8b
- RCTTypeSafety: 6359ff3fcbe18c52059f4d4ce301e47f9da5f0d5
- React: f6f8fc5c01e77349cdfaf49102bcb928ac31d8ed
- React-callinvoker: 032b6d1d03654b9fb7de9e2b3b978d3cb1a893ad
- React-Core: 418c9278f8a071b44a88a87be9a4943234cc2e77
- React-CoreModules: 925b8cb677649f967f6000f9b1ef74dc4ff60c30
- React-cxxreact: 21f6f0cb2a7d26fbed4d09e04482e5c75662beaf
- React-debug: 8fc21f2fecd3d6244e988dc55d60cb117d122588
- React-defaultsnativemodule: 05c6115a2d3a7f4a2cc3f96022261570700dbfa5
- React-domnativemodule: f19d7fd59facf19a4e6cb75bf48357c329acaea7
- React-Fabric: 94acdbc0b889bdcec2d5b1a90ae48f1032c5a5a1
- React-FabricComponents: 9754fb783979b88fb82ed3d0c50ae5f5d775a86f
- React-FabricImage: d8f5bcb5006eafc0e2262c11bf4dedaa610fd66c
- React-featureflags: 8bd4abaf8adf3cf5cc115f128e8761fd3d95b848
- React-featureflagsnativemodule: 0062ca1dc92cb5aae22df8aed4e8f261759cb3bd
- React-graphics: 318048b8f98e040c093adcb77ffeb46d78961c30
- React-hermes: 05ca52f53557a31b8ef8bac8f94c3f9db1ff00ed
- React-idlecallbacksnativemodule: d3c5ba0150555ce9b7db85008aeb170a02bbf2d8
- React-ImageManager: 225b19fcb16fd353851d664c344025a6d4d79870
- React-intersectionobservernativemodule: d490ebd28572754dfdad4a8d0771573345b1ec92
- React-jserrorhandler: caafb9c1d42c24422829e71e8178de3dd1c7ea12
- React-jsi: 749de748ad3b760011255326c63bf7b7dd6f8f9d
- React-jsiexecutor: 02a5ee45bffcae98197eaa253fbf13b65c95073d
- React-jsinspector: 4a031b0605009d4bcd079c99df85eb55d142cd12
- React-jsinspectorcdp: 6d25166ec876053b7b6e290eb57f41a9f9496846
- React-jsinspectornetwork: 5c481d208eade7a338f545b2645a2cf134fdf265
- React-jsinspectortracing: b4d2404ecd64a0dd65e2746d9867fbc3a7cd0927
- React-jsitooling: e0d93e78a5a231e4089459ddbed8d4844be9e238
- React-jsitracing: f3c4aae144b86799e9e23eb5ef16bae6b474d4e2
- React-logger: 9e597cbeda7b8cc8aa8fb93860dade97190f69cc
- React-Mapbuffer: 20046c0447efaa7aace0b76085aa9bb35b0e8105
- React-microtasksnativemodule: 0e837de56519c92d8a2e3097717df9497feb33cb
- react-native-pager-view: f32a590a76c303c9da2e80b6d9f77d87abe10ce1
- react-native-safe-area-context: c00143b4823773bba23f2f19f85663ae89ceb460
- react-native-tab-view: 3414a57b6d155d2993d2880d8e8fb62e4e8d55bf
- React-NativeModulesApple: 1a378198515f8e825c5931a7613e98da69320cee
- React-networking: bfd1695ada5a57023006ce05823ac5391c3ce072
- React-oscompat: aedc0afbded67280de6bb6bfac8cfde0389e2b33
- React-perflogger: c174462de00c0b7d768f0b2d61b8e2240717a667
- React-performancecdpmetrics: 2607a034407d55049f1820b7ec86db1efd3d22e1
- React-performancetimeline: 6ebdcdf745dbe372508ad7164e732362e7eeae6f
- React-RCTActionSheet: 175c74d343e92793d3187b3a819d565f534e0b1d
- React-RCTAnimation: d67919cddb7da39c949b8010b4fd4ea39815fe4e
- React-RCTAppDelegate: 5f7b1e4b7ee5a44faf5f9518a7d3cabafb801adf
- React-RCTBlob: 7ceb93e0918511163f036cfd295973f132a2bc57
- React-RCTFabric: f2250d34e1143c659b845af7e369b3f8f015950c
- React-RCTFBReactNativeSpec: b0fc0c9c8adaf8b9183f9e9fb5455ca5deedc7a0
- React-RCTImage: d6297035168312fc3089f8ca0ee7a75216f21715
- React-RCTLinking: 619a2553c4ef83acaccfb551ada1b7d45cf1cce3
- React-RCTNetwork: 7df41788a194dc5b628f58db6a765224b6b37eac
- React-RCTRuntime: f75ec08d991c611f1d74154dfeb852e30b1825dd
- React-RCTSettings: fa7882ce3d73f1e3482fe05f9cb3167a35a60869
- React-RCTText: 4d659598d9b7730343d465c43d97b3f4aad13938
- React-RCTVibration: 968c3184bfe5005bedd86c913a3b52438222e3a4
- React-rendererconsistency: 1204c62facf6168b69bc5022e0020f19c92f138e
- React-renderercss: 36c02a3c55402fdb06226c2ef04d82fc06c4e2fc
- React-rendererdebug: 11b54233498d961d939d2f2ec6c640d44efa3c12
- React-RuntimeApple: 5287d92680f4b08c8e882afe9791a41eab69d4a7
- React-RuntimeCore: 402b658d8e9cefb44824624e39a0804f2237e205
- React-runtimeexecutor: a1ce75c4e153ede11be957ef31bb72eef9cc4daf
- React-RuntimeHermes: c987b19a1284c685062d3eaad79fd9300a3aa82f
- React-runtimescheduler: a12722da46f562626f5897edf9b8fa02219de065
- React-timing: a453a65192dbe400d61d299024e95a302e726661
- React-utils: 43479e74f806f6633ee04c212c48811530041170
- React-webperformancenativemodule: bd1ad71ea9e217e55f66233e99d02581ee3d5cb7
- ReactAppDependencyProvider: ebcf3a78dc1bcdf054c9e8d309244bade6b31568
- ReactCodegen: 554b421c45b7df35ac791da1b734335470b55fcc
- ReactCommon: 424cc34cf5055d69a3dcf02f3436481afb8b0f6f
- ReactNativeAppUpdate: cc2fd3cbc82ea9c30f300a35e015e81f59c46312
- ReactNativeBundleCrypto: ea60fb24ee6a5d637a09c37f71897c377841d5c8
- ReactNativeBundleUpdate: 63eae09acacd098921ea552c4ee6501f80081546
- ReactNativeCheckBiometricAuthChanged: 57b10edea2b9fbfd8e9d7cec4b0da3a912153180
- ReactNativeDeviceUtils: f1cc409788fb4c051e575722388de5ae0972cc19
- ReactNativeGetRandomValues: e31b2060624eed66630ac7096ed51e520c8bf7a1
- ReactNativeLiteCard: df83f511578181268ea2b9022707beafe971de17
- ReactNativeNativeLogger: dafba54e0ffca3dcdf22c4a6743a14fae2c775e8
- ReactNativePerfMemory: babb788dfec4ab5813f24b99091b6e9f65ed96a8
- ReactNativePerfStats: 5115ab27cda5f294385a8741a950afc3faf9ce41
- ReactNativeRangeDownloader: 82fce060b7aac507e2dbca60302e457d356db183
- ReactNativeSplashScreen: 99e64fcb2cc68c79312c4c9ff20086e9504d03b0
- ReactNativeZipArchive: 006659d2ed3af6116776a3b72b95047d57ac63ea
- RNScreens: 7f643ee0fd1407dc5085c7795460bd93da113b8f
- ScrollGuard: fc420757c5939857ca5f1befff1f3107b277c0e3
- SegmentSlider: da63e0e377204a53de198b7eb3da968658ac6a50
- Skeleton: def8d256b9cea2b67ddc4afa841629027f1de92b
- SniConnect: c83b685659294a11425a971253f2e70020ec52e2
- SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
- SplitBundleLoader: 155685fc0c78b0f38929c2a09b560116bd8f0d07
+ NetworkInfo: cf0e0b1fdeb63a44bebf41b838532f42a5598af6
+ NitroMmkv: 85a251e15c39d7c95fe58cf40786fa126b8d143c
+ NitroModules: 452230d9b63c6c3f59dd97eeaa27ec3449271d4a
+ OneKeyTextInput: 11bdccb319723ad805b26fb9f8b0679af5295535
+ Pbkdf2: 94d9510f31adf14ecde7dfff7d586567bd6d9b8a
+ PerpDepthBar: 1feab81472d5737ed61e2fa8662e1cdf274620d7
+ Ping: 1286aea6344805e7c331dbe1e2eaf4082ed680f2
+ RCTDeprecation: bccb6545c26db881ecddfd83a3f9ea82aba1605f
+ RCTRequired: b2f74764d596fc0051f00fee94b49bf41a6f7f5a
+ RCTSwiftUI: c6d6a31b849b9dfa64c33b55dc91ac15dd55774c
+ RCTSwiftUIWrapper: bdff268d65d662a79b1e571e841e1512275f9319
+ RCTTypeSafety: 159e394bdab42023fbdd8fa022dfdc5577a8b9ad
+ React: 4b2532a459d15e1adf6c22d3e399e5c85a94220f
+ React-callinvoker: 0b8ce4057e02a0bd15cf0532596e8eb8c0392e92
+ React-Core: 5af045531a540ba3f65f07de1e3f585ddfb27948
+ React-Core-prebuilt: 405cf395d66cf694faf9aed3483a21b5515cec85
+ React-CoreModules: 99b194a721de84ccfc1be149a0de52647dc38c0e
+ React-cxxreact: b7e8e254074fd8111d147202b391ccf7816946a6
+ React-debug: 6bc17013f4dc724c23c91e1c83220251d1eacee6
+ React-defaultsnativemodule: aec0c526e254a5ce43c79fecb83123f4aecd4199
+ React-domnativemodule: edd8f47d850a7d3fae0626b624a669e8a9e40f21
+ React-Fabric: a3b0ce70506ac2e737b9cd6667877382f2ee2f29
+ React-FabricComponents: 18bf172f8dc2308cb93c539713a3ac778192e225
+ React-FabricImage: 260ea6794cb5d08aacc0f591110bbf66dfc3ed80
+ React-featureflags: 828f711206ab1a3aa0ec40f39d9f7f793352489d
+ React-featureflagsnativemodule: cc62b7be20aa1e76efde77550dbc34db8556d604
+ React-graphics: 9a9fa8dd605d210a43d88e7d4c78bfff544b09ad
+ React-hermes: 6fd579ceeb680830fc508697acdd5e8cd8dbf29f
+ React-idlecallbacksnativemodule: af59e31212470464d6e6fda0f6cc7e5c413b5d29
+ React-ImageManager: 5c97e7ce5c37335c0392f629daba4c2143f0be2f
+ React-intersectionobservernativemodule: ea5682b04b6cff32fe57d5f0f530f07c33a55b34
+ React-jserrorhandler: baa4284f642fd0cbcf7664860abe7e18e54d05de
+ React-jsi: 7b14065a285f91b3dbe5448371ff575bbb523d59
+ React-jsiexecutor: 10b4ba40ec9fd571370dfee20251201f57712e79
+ React-jsinspector: ec4602cc56d9ec4c7789017a51a639052d4642e0
+ React-jsinspectorcdp: 46a17a5e80e4c84e734ba9cbc8fe4efaa496722a
+ React-jsinspectornetwork: a6743d072cb0e383de2b9bc7ddc4c824e617c681
+ React-jsinspectortracing: 24b2dd80722ef691af02d4aa6a1e32e1f61d9bfb
+ React-jsitooling: e483e01f15f2b11d8f5317372de762deaff4dcd9
+ React-jsitracing: db1285e61be69980443ca27e4f8dea36f8a3b906
+ React-logger: 35ab012027cc552057f7ca5d031c6721f896e6bc
+ React-Mapbuffer: 44dd007f917e2396afa0e70bbd70273237d93fde
+ React-microtasksnativemodule: f413ee411341fb3c34d20e85e9f6f524921fab15
+ React-mutationobservernativemodule: 58f6d2adf7d98e72b241608dfa2ddce414d2a4e7
+ react-native-pager-view: 3b75e1ada7605070212a1c12a589148089d41b19
+ react-native-safe-area-context: 91a90d98c310adcc90a511e5aeb6046d7c19d885
+ react-native-tab-view: cc5b234cef39e036eb5cb33eef4e0480f8540b5f
+ React-NativeModulesApple: 167e532fb9bae30f3c66636b8ee0092bab263667
+ React-networking: 89f6b69755a3176f30e56ba1ba8e214b1518ecfb
+ React-oscompat: db6675ddaef3bddd1b41533627f3d26ec710c05f
+ React-perflogger: c34660c72849d23319f5e544c97e6c6ed687b186
+ React-performancecdpmetrics: 13ce0ca13d32007b7369f295c81bfad6316514bc
+ React-performancetimeline: b68271d5199dc356a80b661bb05622f5ed6777fb
+ React-RCTActionSheet: 7d18777c531c516ab9f86342583057b15fb7fd7d
+ React-RCTAnimation: f2505067d2d83268f5619192f8f5ff14b2606c7f
+ React-RCTAppDelegate: 7bfa4d752f45a0b9195b8da0f188f8904806a86f
+ React-RCTBlob: 7b4d25eca2a6ecd83766d76790879774b73b4cd5
+ React-RCTFabric: a225895f3fd2b11f2c44b13229f2d99065eedda1
+ React-RCTFBReactNativeSpec: cb15356d207d325e689eca0c7b15d737aac8c6dc
+ React-RCTImage: 9123b010921479b5bcd3771a4a4d4e788227a427
+ React-RCTLinking: 358d42629d7012c5d75060fd3e25023b72ebae31
+ React-RCTNetwork: 32f5274abd61e937bdcbfd85810ae784d3f0e38a
+ React-RCTRuntime: b11ef93babc2be36f5e10835d246e0e623f6570b
+ React-RCTSettings: 86aa6e6a3a335d989e3fcd1bd98b9ea6331adfa9
+ React-RCTText: 59376611225f3c6fdc75d57571d7c345bdd0be1e
+ React-RCTVibration: 3c7d17d3373c114220be9ac3b99df1646009b8fe
+ React-rendererconsistency: c9a2d2351407696ccbefdeb53b4aee109c4cb008
+ React-renderercss: 883aebdf574736450571800eeb3edbc804385c76
+ React-rendererdebug: fc1e330efedfd4dfe4fd7d75736f9a219dae196f
+ React-RuntimeApple: f099a47224222ddfc7ddaffdd9aa2ac47a216ee0
+ React-RuntimeCore: e91b17661cc543f4a241e69b3f038182d7db8fd6
+ React-runtimeexecutor: d27e321bd8e04d4737bc8924473a25defb33a031
+ React-RuntimeHermes: 760a0793748cb12b4dd11f323bd516668b7e3b99
+ React-runtimescheduler: df1c84ed1a5b78a1a7953d3e86db6163c4542906
+ React-timing: 791690a2daa7b13554060f6836c260c8bc311a98
+ React-utils: 13f4f227561d2660201dee5cbea253c07d8b5d3a
+ React-viewtransitionnativemodule: 93335dacae2dd7db207320f384111c2b4c58fca8
+ React-webperformancenativemodule: 0bed183d6447493571431c031ad2401c027b5866
+ ReactAppDependencyProvider: 0e13d430eadac8a2ef18515a860d5c59df05b475
+ ReactCodegen: 01cbf7a08c30e8b71ad71489bb56b5bed195fa5e
+ ReactCommon: 9002f006f571256348994183f7d4387aa7cf84e8
+ ReactNativeAppUpdate: d105678b1f9863047b645a7ec4fff6b49e54bb1b
+ ReactNativeBundleCrypto: 105efea759c3b8b105a49bc4ed7f1ab55ce0fbf8
+ ReactNativeBundleUpdate: 4db59b144f7364db210c022413428ea68811d8df
+ ReactNativeCheckBiometricAuthChanged: e661de0668399e2228a457150b2464a33507d148
+ ReactNativeDependencies: 2bd6854ade79bf1b60586d1ab7813a389df1b6bf
+ ReactNativeDeviceUtils: aa5892571a18a5a53960f18f72ae954b9e475c6f
+ ReactNativeGetRandomValues: 5c54063b15dd9d635c483344e6d3bb599e7db68f
+ ReactNativeLiteCard: 255f947b3b3ac561e1056008b49752d5e2b05a5f
+ ReactNativeNativeLogger: eba564ddcdb4db8fd73b75d4f3129c9c5b75ff5d
+ ReactNativePerfMemory: ad559eb338f15eaeecb2983a61ad02c03c8d7306
+ ReactNativePerfStats: 2b5324011aa09573bfc4cdfca6b37650be3fc4aa
+ ReactNativeRangeDownloader: 73f76cd50f5ed66cbb68685641382fefa55bf564
+ ReactNativeSplashScreen: dbb77a2df1f54906d0d0fb7e2fbc3812c7fb9d73
+ ReactNativeZipArchive: 1bbb9bf3b00dbe9c0405f42c4ccf66f6e7cf1e75
+ RNScreens: 01b065ded2dfe7987bcce770ff3a196be417ff41
+ ScrollGuard: 26cd578719836d1b94e5103bfe0fcfc6abdfd00c
+ SegmentSlider: 7f3c5cb28f7d8af9396a8a3d553abf8874e09971
+ Skeleton: 517685e61baf765eb30434f895db86f93da16843
+ SniConnect: be1f9514b7c4d9261d5e467329a2b28e88a8ef37
+ SplitBundleLoader: 2f93f1d8651e695cdca5fa1cb693dd35d4a0cc00
SSZipArchive: c69881e8ac5521f0e622291387add5f60f30f3c4
- TcpSocket: 860b949aa9ca1ac7a84966970f03d8653def109c
- Yoga: 6ca93c8c13f56baeec55eb608577619b17a4d64e
+ TcpSocket: 01bfea9a0c17a3b3dc494eeea2259d66b60c5b34
+ Yoga: 9891cfb1c680f64de9c41b09e7453dea33454d2b
-PODFILE CHECKSUM: 7dbc28b8923a22b4d9fcd35e5fe10389c4fccc09
+PODFILE CHECKSUM: 3be463caa9ed361a5e4482d8655995f4766ac0d4
COCOAPODS: 1.16.2
diff --git a/example/react-native/ios/example.xcodeproj/project.pbxproj b/example/react-native/ios/example.xcodeproj/project.pbxproj
index e6705ee6..474902b1 100644
--- a/example/react-native/ios/example.xcodeproj/project.pbxproj
+++ b/example/react-native/ios/example.xcodeproj/project.pbxproj
@@ -295,7 +295,7 @@
CURRENT_PROJECT_VERSION = 1;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = example/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 15.5;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -325,7 +325,7 @@
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
INFOPLIST_FILE = example/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 15.5;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -393,7 +393,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 15.5;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
@@ -405,7 +405,10 @@
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_CFLAGS = "$(inherited)";
+ OTHER_CFLAGS = (
+ "$(inherited)",
+ "-DRCT_REMOVE_LEGACY_ARCH=1",
+ );
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
@@ -413,10 +416,13 @@
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ "-DRCT_REMOVE_LEGACY_ARCH=1",
);
+ PODFILE_DIR = "$(SRCROOT)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
+ SWIFT_ENABLE_EXPLICIT_MODULES = NO;
USE_HERMES = true;
};
name = Debug;
@@ -463,7 +469,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 15.5;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
@@ -474,7 +480,10 @@
"\"$(inherited)\"",
);
MTL_ENABLE_DEBUG_INFO = NO;
- OTHER_CFLAGS = "$(inherited)";
+ OTHER_CFLAGS = (
+ "$(inherited)",
+ "-DRCT_REMOVE_LEGACY_ARCH=1",
+ );
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
@@ -482,9 +491,12 @@
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ "-DRCT_REMOVE_LEGACY_ARCH=1",
);
+ PODFILE_DIR = "$(SRCROOT)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native";
SDKROOT = iphoneos;
+ SWIFT_ENABLE_EXPLICIT_MODULES = NO;
USE_HERMES = true;
VALIDATE_PRODUCT = YES;
};
diff --git a/example/react-native/package.json b/example/react-native/package.json
index 557568c9..d64c662d 100644
--- a/example/react-native/package.json
+++ b/example/react-native/package.json
@@ -44,13 +44,14 @@
"@onekeyfe/react-native-split-bundle-loader": "workspace:*",
"@onekeyfe/react-native-tab-view": "workspace:*",
"@onekeyfe/react-native-tcp-socket": "workspace:*",
+ "@onekeyfe/react-native-text-input": "workspace:*",
"@onekeyfe/react-native-zip-archive": "workspace:*",
- "@react-native/new-app-screen": "0.83.0",
+ "@react-native/new-app-screen": "0.86.2",
"@react-navigation/native": "^7.1.33",
"@react-navigation/native-stack": "^7.14.4",
"fast-base64-decode": "*",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-mmkv": "4.3.2",
"react-native-safe-area-context": "^5.5.2",
"react-native-screens": "^4.24.0"
@@ -59,13 +60,14 @@
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0",
- "@react-native-community/cli": "20.0.0",
- "@react-native-community/cli-platform-android": "20.0.0",
- "@react-native-community/cli-platform-ios": "20.0.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
- "@react-native/metro-config": "0.83.0",
- "@react-native/typescript-config": "0.83.0",
+ "@react-native-community/cli": "20.1.0",
+ "@react-native-community/cli-platform-android": "20.1.0",
+ "@react-native-community/cli-platform-ios": "20.1.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
+ "@react-native/jest-preset": "0.86.2",
+ "@react-native/metro-config": "0.86.2",
+ "@react-native/typescript-config": "0.86.2",
"@types/jest": "^29.5.13",
"@types/react": "^19.2.0",
"@types/react-test-renderer": "^19.1.0",
@@ -73,7 +75,7 @@
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-native-nitro-modules": "0.36.5",
- "react-test-renderer": "19.2.0",
+ "react-test-renderer": "19.2.3",
"typescript": "^5.8.3"
},
"engines": {
diff --git a/example/react-native/pages/TextInputTestPage.tsx b/example/react-native/pages/TextInputTestPage.tsx
new file mode 100644
index 00000000..e2608be4
--- /dev/null
+++ b/example/react-native/pages/TextInputTestPage.tsx
@@ -0,0 +1,81 @@
+import { useCallback, useState } from 'react';
+import { StyleSheet, Text, View } from 'react-native';
+import TextInput, {
+ type IPasteEventParams,
+} from '@onekeyfe/react-native-text-input';
+import { TestPageBase } from './TestPageBase';
+
+export function TextInputTestPage() {
+ const [singleLineText, setSingleLineText] = useState('');
+ const [multilineText, setMultilineText] = useState('');
+ const [lastPaste, setLastPaste] = useState('No paste event yet');
+
+ const handlePaste = useCallback((event: IPasteEventParams) => {
+ const item = event.nativeEvent.items?.[0];
+ setLastPaste(
+ item == null
+ ? 'Paste event contained no items'
+ : `${item.type ?? 'unknown'}: ${item.data ?? ''}`,
+ );
+ }, []);
+
+ return (
+
+ Single line
+
+
+ Multiline
+
+
+
+ Last paste
+ {lastPaste}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ label: {
+ fontSize: 16,
+ fontWeight: '600',
+ marginBottom: 8,
+ marginTop: 16,
+ },
+ input: {
+ borderColor: '#C7C7CC',
+ borderRadius: 10,
+ borderWidth: 1,
+ fontSize: 17,
+ minHeight: 48,
+ paddingHorizontal: 12,
+ paddingVertical: 10,
+ },
+ multiline: {
+ minHeight: 120,
+ textAlignVertical: 'top',
+ },
+ result: {
+ backgroundColor: '#F2F2F7',
+ borderRadius: 10,
+ marginTop: 24,
+ padding: 12,
+ },
+ resultTitle: {
+ fontWeight: '600',
+ marginBottom: 8,
+ },
+});
diff --git a/example/react-native/route.tsx b/example/react-native/route.tsx
index 857f87d5..10ec79e1 100644
--- a/example/react-native/route.tsx
+++ b/example/react-native/route.tsx
@@ -1,5 +1,14 @@
import { useCallback, useMemo, useRef, useState } from 'react';
-import { View, Text, StyleSheet, TouchableOpacity, ScrollView, TextInput, PanResponder, type LayoutChangeEvent } from 'react-native';
+import {
+ View,
+ Text,
+ StyleSheet,
+ TouchableOpacity,
+ ScrollView,
+ TextInput,
+ PanResponder,
+ type LayoutChangeEvent,
+} from 'react-native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
import { useNavigation } from '@react-navigation/native';
@@ -30,6 +39,7 @@ import { ChartSingletonTestPage } from './pages/ChartSingletonTestPage';
import { SplashScreenTestPage } from './pages/SplashScreenTestPage';
import { TabViewTestPage } from './pages/TabViewTestPage';
import { TabViewSettingsPage } from './pages/TabViewSettingsPage';
+import { TextInputTestPage } from './pages/TextInputTestPage';
export type TabViewSettingsState = {
showBadge: boolean;
@@ -69,17 +79,25 @@ export type RootStackParamList = {
SplashScreen: undefined;
TabView: undefined;
TabViewSettings: undefined;
+ TextInput: undefined;
};
-export type RootStackNavigationProp = NativeStackNavigationProp;
+export type RootStackNavigationProp =
+ NativeStackNavigationProp;
const Stack = createNativeStackNavigator();
-const modules: { screen: keyof RootStackParamList; name: string; description: string; icon: string }[] = [
+const modules: {
+ screen: keyof RootStackParamList;
+ name: string;
+ description: string;
+ icon: string;
+}[] = [
{
screen: 'AutoSizeInput',
name: 'Auto Size Input',
- description: 'Input with auto-shrinking font size, prefix/suffix, single & multi-line',
+ description:
+ 'Input with auto-shrinking font size, prefix/suffix, single & multi-line',
icon: '⌨️',
},
{
@@ -103,49 +121,57 @@ const modules: { screen: keyof RootStackParamList; name: string; description: st
{
screen: 'BundleUpdate',
name: 'Bundle Update',
- description: 'JS bundle download, verification, install, and path management',
+ description:
+ 'JS bundle download, verification, install, and path management',
icon: '📥',
},
{
screen: 'BundleCrypto',
name: 'Bundle Crypto',
- description: 'sha256OfFile, secureEqualHex, validateExtractedPathSafety, verifyGpgCleartext',
+ description:
+ 'sha256OfFile, secureEqualHex, validateExtractedPathSafety, verifyGpgCleartext',
icon: '🔏',
},
{
screen: 'OtaPipeline',
name: 'JS Bundle OTA Pipeline',
- description: 'JS bundle OTA: download → sha256 verify → GPG cleartext verify → unzip → path-safety',
+ description:
+ 'JS bundle OTA: download → sha256 verify → GPG cleartext verify → unzip → path-safety',
icon: '🔗',
},
{
screen: 'ApkOtaPipeline',
name: 'APK OTA Pipeline',
- description: 'APK OTA: download → sha256 → verify detached SHA256SUMS.asc → match → install',
+ description:
+ 'APK OTA: download → sha256 → verify detached SHA256SUMS.asc → match → install',
icon: '📲',
},
{
screen: 'ChartWebView',
name: 'Chart WebView',
- description: 'Offline TradingView chart via virtual same-origin + JS↔native message bridge',
+ description:
+ 'Offline TradingView chart via virtual same-origin + JS↔native message bridge',
icon: '📈',
},
{
screen: 'ChartSingleton',
name: 'Chart Singleton',
- description: 'One shared WebView reparented across mount slots (pooled reuseKey)',
+ description:
+ 'One shared WebView reparented across mount slots (pooled reuseKey)',
icon: '♻️',
},
{
screen: 'RangeDownloader',
name: 'Range Downloader',
- description: 'Concurrent multi-range download with progress events and artifact discard',
+ description:
+ 'Concurrent multi-range download with progress events and artifact discard',
icon: '🚀',
},
{
screen: 'ZipArchive',
name: 'Zip Archive',
- description: 'unzip, getUncompressedSize, isPasswordProtected for OTA bundle archives',
+ description:
+ 'unzip, getUncompressedSize, isPasswordProtected for OTA bundle archives',
icon: '🗜️',
},
{
@@ -187,7 +213,8 @@ const modules: { screen: keyof RootStackParamList; name: string; description: st
{
screen: 'PagerView',
name: 'Pager View',
- description: 'Native page container with swipe navigation and imperative controls',
+ description:
+ 'Native page container with swipe navigation and imperative controls',
icon: '📄',
},
{
@@ -199,19 +226,22 @@ const modules: { screen: keyof RootStackParamList; name: string; description: st
{
screen: 'PerpDepthBar',
name: 'Perp Depth Bar',
- description: 'Native order-book depth bars + side-ratio (replaces reanimated)',
+ description:
+ 'Native order-book depth bars + side-ratio (replaces reanimated)',
icon: '📊',
},
{
screen: 'ScrollGuard',
name: 'Scroll Guard',
- description: 'Prevent parent PagerView from intercepting child ScrollView gestures',
+ description:
+ 'Prevent parent PagerView from intercepting child ScrollView gestures',
icon: '🛡️',
},
{
screen: 'SegmentSlider',
name: 'Segment Slider',
- description: 'Native segmented slider — track, fill, marks, thumb, bubble drawn natively',
+ description:
+ 'Native segmented slider — track, fill, marks, thumb, bubble drawn natively',
icon: '🎚️',
},
{
@@ -229,9 +259,16 @@ const modules: { screen: keyof RootStackParamList; name: string; description: st
{
screen: 'TabView',
name: 'Tab View',
- description: 'Native tab bar with UIKit (iOS) / Material (Android), badges, icons, liquid glass',
+ description:
+ 'Native tab bar with UIKit (iOS) / Material (Android), badges, icons, liquid glass',
icon: '📑',
},
+ {
+ screen: 'TextInput',
+ name: 'Text Input',
+ description: 'Native text and image paste events on iOS and Android',
+ icon: '📝',
+ },
];
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
@@ -243,14 +280,18 @@ function HomeScreen() {
const sectionYRef = useRef>({});
const sidebarRef = useRef(null);
const sidebarLayoutRef = useRef({ y: 0, height: 0 });
- const [activeLetterState, setActiveLetterState] = useState(null);
+ const [activeLetterState, setActiveLetterState] = useState(
+ null,
+ );
const filteredModules = useMemo(() => {
const sorted = [...modules].sort((a, b) => a.name.localeCompare(b.name));
if (!searchQuery) return sorted;
const query = searchQuery.toLowerCase();
return sorted.filter(
- (m) => m.name.toLowerCase().includes(query) || m.description.toLowerCase().includes(query),
+ m =>
+ m.name.toLowerCase().includes(query) ||
+ m.description.toLowerCase().includes(query),
);
}, [searchQuery]);
@@ -266,15 +307,12 @@ function HomeScreen() {
const activeLetters = useMemo(() => new Set(Object.keys(grouped)), [grouped]);
- const scrollToLetter = useCallback(
- (letter: string) => {
- const y = sectionYRef.current[letter];
- if (y != null && scrollViewRef.current) {
- scrollViewRef.current.scrollTo({ y, animated: true });
- }
- },
- [],
- );
+ const scrollToLetter = useCallback((letter: string) => {
+ const y = sectionYRef.current[letter];
+ if (y != null && scrollViewRef.current) {
+ scrollViewRef.current.scrollTo({ y, animated: true });
+ }
+ }, []);
const getLetterFromTouch = useCallback((pageY: number) => {
const { y, height } = sidebarLayoutRef.current;
@@ -288,14 +326,14 @@ function HomeScreen() {
PanResponder.create({
onStartShouldSetPanResponder: () => true,
onMoveShouldSetPanResponder: () => true,
- onPanResponderGrant: (evt) => {
+ onPanResponderGrant: evt => {
const letter = getLetterFromTouch(evt.nativeEvent.pageY);
if (letter && activeLetters.has(letter)) {
setActiveLetterState(letter);
scrollToLetter(letter);
}
},
- onPanResponderMove: (evt) => {
+ onPanResponderMove: evt => {
const letter = getLetterFromTouch(evt.nativeEvent.pageY);
if (letter && activeLetters.has(letter)) {
setActiveLetterState(letter);
@@ -309,9 +347,12 @@ function HomeScreen() {
[activeLetters, getLetterFromTouch, scrollToLetter],
);
- const handleSectionLayout = useCallback((letter: string, event: LayoutChangeEvent) => {
- sectionYRef.current[letter] = event.nativeEvent.layout.y;
- }, []);
+ const handleSectionLayout = useCallback(
+ (letter: string, event: LayoutChangeEvent) => {
+ sectionYRef.current[letter] = event.nativeEvent.layout.y;
+ },
+ [],
+ );
const handleSidebarLayout = useCallback(() => {
sidebarRef.current?.measureInWindow((_x, y, _w, height) => {
@@ -341,14 +382,11 @@ function HomeScreen() {
{sections.length > 0 ? (
- sections.map((letter) => (
- handleSectionLayout(letter, e)}
- >
+ sections.map(letter => (
+ handleSectionLayout(letter, e)}>
{letter}
- {grouped[letter]!.map((module) => (
+ {grouped[letter]!.map(module => (
{module.icon}
{module.name}
- {module.description}
+
+ {module.description}
+
›
@@ -369,7 +409,9 @@ function HomeScreen() {
) : (
No modules found
- Try a different search term
+
+ Try a different search term
+
)}
@@ -381,7 +423,7 @@ function HomeScreen() {
onLayout={handleSidebarLayout}
{...panResponder.panHandlers}
>
- {ALPHABET.map((letter) => {
+ {ALPHABET.map(letter => {
const isActive = activeLetters.has(letter);
const isHighlighted = activeLetterState === letter;
return (
@@ -406,34 +448,151 @@ function HomeScreen() {
export function AppNavigator() {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/native-modules/native-logger/package.json b/native-modules/native-logger/package.json
index 3966eb48..aa9786ef 100644
--- a/native-modules/native-logger/package.json
+++ b/native-modules/native-logger/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-native-logger",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-native-logger",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-aes-crypto/package.json b/native-modules/react-native-aes-crypto/package.json
index 7d46c101..aea867cf 100644
--- a/native-modules/react-native-aes-crypto/package.json
+++ b/native-modules/react-native-aes-crypto/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-aes-crypto",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-aes-crypto",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -56,8 +56,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -69,8 +69,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-app-update/package.json b/native-modules/react-native-app-update/package.json
index 8b9fae57..ec23e0bf 100644
--- a/native-modules/react-native-app-update/package.json
+++ b/native-modules/react-native-app-update/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-app-update",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-app-update",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-async-storage/package.json b/native-modules/react-native-async-storage/package.json
index e8ffa2d7..d9217f54 100644
--- a/native-modules/react-native-async-storage/package.json
+++ b/native-modules/react-native-async-storage/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-async-storage",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-async-storage",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -62,8 +62,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -75,8 +75,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-background-thread/android/src/main/cpp/cpp-adapter.cpp b/native-modules/react-native-background-thread/android/src/main/cpp/cpp-adapter.cpp
index f19e02f1..5574d216 100644
--- a/native-modules/react-native-background-thread/android/src/main/cpp/cpp-adapter.cpp
+++ b/native-modules/react-native-background-thread/android/src/main/cpp/cpp-adapter.cpp
@@ -70,6 +70,10 @@ static void invokeOptionalGlobalFunction(jsi::Runtime &runtime, const char *name
static std::mutex gWorkMutex;
static std::unordered_map> gPendingWork;
static int64_t gNextWorkId = 0;
+// Protected by gWorkMutex. Every background executor captures the generation
+// that installed it, so work from an outgoing Hermes runtime can be discarded
+// without ever touching its replacement runtime.
+static int64_t gBgRuntimeGeneration = 0;
using JavaObjectRef = std::shared_ptr<_jobject>;
@@ -108,7 +112,11 @@ static void leakAndClearRuntimeQueue(RuntimeWorkQueue &queue) {
queue.scheduledDrainWorkId = -1;
}
-static bool callScheduleOnJSThread(const JavaObjectRef &ref, bool isMain, int64_t workId) {
+static bool callScheduleOnJSThread(
+ const JavaObjectRef &ref,
+ bool isMain,
+ int64_t workId,
+ int64_t runtimeGeneration) {
JNIEnv *env = getJNIEnv();
if (!env || !ref) {
LOGE("executor: env=%p, ref=%p — aborting", env, ref.get());
@@ -125,7 +133,7 @@ static bool callScheduleOnJSThread(const JavaObjectRef &ref, bool isMain, int64_
return false;
}
- jmethodID mid = env->GetMethodID(cls, "scheduleOnJSThread", "(ZJ)Z");
+ jmethodID mid = env->GetMethodID(cls, "scheduleOnJSThread", "(ZJJ)Z");
if (!mid) {
LOGE("executor: scheduleOnJSThread method not found!");
if (env->ExceptionCheck()) {
@@ -136,12 +144,14 @@ static bool callScheduleOnJSThread(const JavaObjectRef &ref, bool isMain, int64_
return false;
}
- LOGI("executor: calling scheduleOnJSThread(isMain=%d, workId=%ld)", isMain, (long)workId);
+ LOGI("executor: calling scheduleOnJSThread(isMain=%d, workId=%ld, generation=%ld)",
+ isMain, (long)workId, (long)runtimeGeneration);
jboolean scheduled = env->CallBooleanMethod(
ref.get(),
mid,
static_cast(isMain),
- static_cast(workId));
+ static_cast(workId),
+ static_cast(runtimeGeneration));
if (env->ExceptionCheck()) {
LOGE("executor: JNI exception after scheduleOnJSThread");
env->ExceptionDescribe();
@@ -155,15 +165,25 @@ static bool callScheduleOnJSThread(const JavaObjectRef &ref, bool isMain, int64_
static void drainPendingBgEvals(const std::string &reason);
-static void scheduleRuntimeDrain(const JavaObjectRef &ref, bool isMain);
+static void scheduleRuntimeDrain(
+ const JavaObjectRef &ref,
+ bool isMain,
+ int64_t runtimeGeneration);
-static void drainRuntimeWorkQueue(jsi::Runtime &rt, JavaObjectRef ref, bool isMain) {
+static void drainRuntimeWorkQueue(
+ jsi::Runtime &rt,
+ JavaObjectRef ref,
+ bool isMain,
+ int64_t runtimeGeneration) {
size_t drained = 0;
while (drained < kRuntimeDrainBatchSize) {
std::function work;
{
std::lock_guard lock(gWorkMutex);
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ return;
+ }
auto &queue = getRuntimeWorkQueue(isMain);
if (queue.items.empty()) {
break;
@@ -188,6 +208,9 @@ static void drainRuntimeWorkQueue(jsi::Runtime &rt, JavaObjectRef ref, bool isMa
size_t remaining = 0;
{
std::lock_guard lock(gWorkMutex);
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ return;
+ }
auto &queue = getRuntimeWorkQueue(isMain);
remaining = queue.items.size();
if (remaining == 0) {
@@ -206,15 +229,21 @@ static void drainRuntimeWorkQueue(jsi::Runtime &rt, JavaObjectRef ref, bool isMa
}
if (shouldReschedule) {
- scheduleRuntimeDrain(ref, isMain);
+ scheduleRuntimeDrain(ref, isMain, runtimeGeneration);
}
}
-static void scheduleRuntimeDrain(const JavaObjectRef &ref, bool isMain) {
+static void scheduleRuntimeDrain(
+ const JavaObjectRef &ref,
+ bool isMain,
+ int64_t runtimeGeneration) {
int64_t workId;
size_t queued = 0;
{
std::lock_guard lock(gWorkMutex);
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ return;
+ }
auto &queue = getRuntimeWorkQueue(isMain);
// Stale-id guard: drainRuntimeWorkQueue observes remaining>0, drops the
// lock, then calls us — but a concurrent nativeInvalidateSharedRpc can
@@ -233,17 +262,21 @@ static void scheduleRuntimeDrain(const JavaObjectRef &ref, bool isMain) {
// Track the outstanding drain's workId so a teardown path can erase its
// orphaned gPendingWork entry if the post is dropped during reload.
queue.scheduledDrainWorkId = workId;
- gPendingWork[workId] = [ref, isMain](jsi::Runtime &rt) {
- drainRuntimeWorkQueue(rt, ref, isMain);
+ gPendingWork[workId] = [ref, isMain, runtimeGeneration](jsi::Runtime &rt) {
+ drainRuntimeWorkQueue(rt, ref, isMain, runtimeGeneration);
};
}
- bool scheduled = callScheduleOnJSThread(ref, isMain, workId);
+ bool scheduled = callScheduleOnJSThread(ref, isMain, workId, runtimeGeneration);
if (!scheduled) {
+ bool shouldDrainBgEvals = false;
{
std::lock_guard lock(gWorkMutex);
gPendingWork.erase(workId);
- leakAndClearRuntimeQueue(getRuntimeWorkQueue(isMain));
+ if (isMain || runtimeGeneration == gBgRuntimeGeneration) {
+ leakAndClearRuntimeQueue(getRuntimeWorkQueue(isMain));
+ shouldDrainBgEvals = !isMain;
+ }
LOGE("executor: failed to schedule runtime drain isMain=%d, workId=%ld, queued=%zu",
isMain, (long)workId, queued);
}
@@ -254,17 +287,25 @@ static void scheduleRuntimeDrain(const JavaObjectRef &ref, bool isMain) {
// schedule hiccup must never falsely reject healthy bg evals. Called
// outside gWorkMutex: drainPendingBgEvals takes gBgEvalMutex and does a
// Java upcall, so it must not run under a native lock.
- if (!isMain) {
+ if (shouldDrainBgEvals) {
drainPendingBgEvals("Background JS thread unreachable when scheduling segment eval");
}
}
}
-static void enqueueRuntimeWork(JavaObjectRef ref, bool isMain, std::function work) {
+static void enqueueRuntimeWork(
+ JavaObjectRef ref,
+ bool isMain,
+ int64_t runtimeGeneration,
+ std::function work) {
bool shouldSchedule = false;
size_t queued = 0;
{
std::lock_guard lock(gWorkMutex);
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ new std::function(std::move(work));
+ return;
+ }
auto &queue = getRuntimeWorkQueue(isMain);
queue.items.push_back(std::move(work));
queued = queue.items.size();
@@ -279,26 +320,39 @@ static void enqueueRuntimeWork(JavaObjectRef ref, bool isMain, std::function(runtimePtr);
- if (!rt) return;
+ JNIEnv *env,
+ jobject thiz,
+ jlong runtimePtr,
+ jlong workId,
+ jboolean isMain,
+ jlong runtimeGeneration) {
+ LOGI("nativeExecuteWork: runtimePtr=%ld, workId=%ld, generation=%ld",
+ (long)runtimePtr, (long)workId, (long)runtimeGeneration);
std::function work;
{
std::lock_guard lock(gWorkMutex);
auto it = gPendingWork.find(workId);
if (it == gPendingWork.end()) return;
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ new std::function(std::move(it->second));
+ gPendingWork.erase(it);
+ LOGI("nativeExecuteWork: dropped stale background workId=%ld generation=%ld active=%ld",
+ (long)workId, (long)runtimeGeneration, (long)gBgRuntimeGeneration);
+ return;
+ }
work = std::move(it->second);
gPendingWork.erase(it);
}
+ auto *rt = reinterpret_cast(runtimePtr);
+ if (!rt) return;
try {
work(*rt);
} catch (const jsi::JSError &e) {
@@ -989,18 +1043,34 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeEvaluateSegmentInBackgro
// DOES run stale work (it can't — we erased it) would be a harmless no-op.
extern "C" JNIEXPORT void JNICALL
Java_com_backgroundthread_BackgroundThreadManager_nativeDropScheduledWork(
- JNIEnv * /* env */, jobject /* thiz */, jboolean isMain, jlong workId) {
+ JNIEnv * /* env */,
+ jobject /* thiz */,
+ jboolean isMain,
+ jlong workId,
+ jlong runtimeGeneration) {
+ bool shouldDrainBgEvals = false;
{
std::lock_guard lock(gWorkMutex);
- gPendingWork.erase(static_cast(workId));
+ auto pending = gPendingWork.find(static_cast(workId));
+ if (!isMain && runtimeGeneration != gBgRuntimeGeneration) {
+ if (pending != gPendingWork.end()) {
+ new std::function(std::move(pending->second));
+ gPendingWork.erase(pending);
+ }
+ return;
+ }
+ if (pending != gPendingWork.end()) {
+ gPendingWork.erase(pending);
+ }
// TRANSIENT ptr==0 (reload in flight): do NOT abandon queue.items — the
// recovered runtime still needs them (main has no JS retry net). Only
// disarm the drain latch so the next enqueue re-arms a fresh drain.
auto &queue = getRuntimeWorkQueue(static_cast(isMain));
queue.drainScheduled = false;
queue.scheduledDrainWorkId = -1;
+ shouldDrainBgEvals = !isMain;
}
- if (!isMain) {
+ if (shouldDrainBgEvals) {
drainPendingBgEvals("Background runtime unreachable when scheduling segment eval");
}
}
@@ -1009,11 +1079,32 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeDropScheduledWork(
// Install SharedStore and SharedRPC into a runtime.
extern "C" JNIEXPORT void JNICALL
Java_com_backgroundthread_BackgroundThreadManager_nativeInstallSharedBridge(
- JNIEnv *env, jobject thiz, jlong runtimePtr, jboolean isMain) {
+ JNIEnv *env,
+ jobject thiz,
+ jlong runtimePtr,
+ jboolean isMain,
+ jlong runtimeGeneration) {
auto *rt = reinterpret_cast(runtimePtr);
if (!rt) return;
+ if (!isMain) {
+ std::lock_guard lock(gWorkMutex);
+ if (runtimeGeneration < gBgRuntimeGeneration) {
+ LOGI("nativeInstallSharedBridge: ignored stale background generation=%ld active=%ld",
+ (long)runtimeGeneration, (long)gBgRuntimeGeneration);
+ return;
+ }
+ if (runtimeGeneration != gBgRuntimeGeneration) {
+ auto &queue = gBgRuntimeWorkQueue;
+ if (queue.scheduledDrainWorkId >= 0) {
+ gPendingWork.erase(queue.scheduledDrainWorkId);
+ }
+ leakAndClearRuntimeQueue(queue);
+ gBgRuntimeGeneration = runtimeGeneration;
+ }
+ }
+
SharedStore::install(*rt);
// Create executor that schedules work on this runtime's JS thread via Kotlin.
@@ -1027,13 +1118,19 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeInstallSharedBridge(
});
bool capturedIsMain = static_cast(isMain);
- RPCRuntimeExecutor executor = [ref, capturedIsMain](std::function work) {
+ int64_t capturedRuntimeGeneration = static_cast(runtimeGeneration);
+ RPCRuntimeExecutor executor = [ref, capturedIsMain, capturedRuntimeGeneration](
+ std::function work) {
// Coalesce per-runtime work into a single batched drain (see
// enqueueRuntimeWork) instead of one Kotlin scheduleOnJSThread hop per
// item. The bg-eval failure-drain that previously lived inline here now
// runs in scheduleRuntimeDrain's schedule-failure path — under the
// coalesced model that is the single place a schedule can fail.
- enqueueRuntimeWork(ref, capturedIsMain, std::move(work));
+ enqueueRuntimeWork(
+ ref,
+ capturedIsMain,
+ capturedRuntimeGeneration,
+ std::move(work));
};
std::string runtimeId = isMain ? "main" : "background";
@@ -1082,13 +1179,16 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeInstallSharedBridge(
{
std::lock_guard lock(gWorkMutex);
auto &queue = getRuntimeWorkQueue(capturedIsMain);
- if (!queue.items.empty()) {
+ if (
+ !queue.items.empty() &&
+ (capturedIsMain || capturedRuntimeGeneration == gBgRuntimeGeneration)
+ ) {
queue.drainScheduled = true;
shouldRecoverDrain = true;
}
}
if (shouldRecoverDrain) {
- scheduleRuntimeDrain(ref, capturedIsMain);
+ scheduleRuntimeDrain(ref, capturedIsMain, capturedRuntimeGeneration);
}
}
@@ -1164,7 +1264,10 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeSetupErrorHandler(
// instead of dispatching onto a dying runtime (parity with iOS).
extern "C" JNIEXPORT jboolean JNICALL
Java_com_backgroundthread_BackgroundThreadManager_nativeInvalidateSharedRpc(
- JNIEnv *env, jobject thiz, jstring runtimeId) {
+ JNIEnv *env,
+ jobject thiz,
+ jstring runtimeId,
+ jlong runtimeGeneration) {
const char *idChars = env->GetStringUTFChars(runtimeId, nullptr);
if (!idChars) {
@@ -1173,8 +1276,6 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeInvalidateSharedRpc(
std::string id(idChars);
env->ReleaseStringUTFChars(runtimeId, idChars);
- bool found = SharedRPC::invalidate(id);
-
// The runtime named by `id` is being torn down (restart → host.reload).
// Its coalesced work queue must be fully quiesced: if a drain was posted
// (drainScheduled==true) but is dropped during reload, the latch would
@@ -1188,13 +1289,96 @@ Java_com_backgroundthread_BackgroundThreadManager_nativeInvalidateSharedRpc(
std::lock_guard lock(gWorkMutex);
bool isMain = (id == "main");
auto &queue = getRuntimeWorkQueue(isMain);
+ if (!isMain) {
+ gBgRuntimeGeneration = static_cast(runtimeGeneration);
+ }
if (queue.scheduledDrainWorkId >= 0) {
gPendingWork.erase(queue.scheduledDrainWorkId);
}
leakAndClearRuntimeQueue(queue);
}
- LOGI("nativeInvalidateSharedRpc: id=%s found=%d", id.c_str(), found ? 1 : 0);
+ bool found = SharedRPC::invalidate(id);
+
+ if (id == "background") {
+ // Stop old timers from producing more work after the generation was
+ // invalidated. Callback wrappers are intentionally leaked because
+ // destroying a jsi::Function away from its outgoing JS thread is unsafe.
+ std::lock_guard lock(gTimerMutex);
+ for (auto &entry : gTimers) {
+ if (entry.second.callback) {
+ new std::shared_ptr(std::move(entry.second.callback));
+ }
+ }
+ gTimers.clear();
+ gBgTimerExecutor = nullptr;
+ gTimerCv.notify_all();
+ }
+
+ if (id == "background") {
+ drainPendingBgEvals("Background runtime invalidated before segment eval ran");
+ }
+
+ LOGI("nativeInvalidateSharedRpc: id=%s generation=%ld found=%d",
+ id.c_str(), (long)runtimeGeneration, found ? 1 : 0);
+ return found ? JNI_TRUE : JNI_FALSE;
+}
+
+// Invalidate the outgoing background runtime while executing on that runtime's
+// JS thread. This is the normal background-HMR path: it can reclaim timer and
+// queued-work callbacks instead of leaking their jsi::Function wrappers to
+// avoid an unsafe off-thread destructor.
+extern "C" JNIEXPORT jboolean JNICALL
+Java_com_backgroundthread_BackgroundThreadManager_nativeInvalidateBackgroundRuntimeOnJSThread(
+ JNIEnv *env,
+ jobject thiz,
+ jlong runtimeGeneration) {
+
+ bool found = SharedRPC::invalidate("background");
+
+ // Prevent the timer worker from capturing or enqueueing another callback
+ // while the outgoing JS thread drains the callback containers below.
+ gTimerWorkerStop.store(true);
+ gTimerCv.notify_all();
+ if (gTimerWorkerThread.joinable()) {
+ gTimerWorkerThread.join();
+ }
+ gTimerWorkerStarted.store(false);
+
+ std::vector> timerCallbacks;
+ {
+ std::lock_guard lock(gTimerMutex);
+ timerCallbacks.reserve(gTimers.size());
+ for (auto &entry : gTimers) {
+ if (entry.second.callback) {
+ timerCallbacks.push_back(std::move(entry.second.callback));
+ }
+ }
+ gTimers.clear();
+ gBgTimerExecutor = nullptr;
+ }
+
+ std::deque> queuedWork;
+ {
+ std::lock_guard lock(gWorkMutex);
+ gBgRuntimeGeneration = static_cast(runtimeGeneration);
+ auto &queue = gBgRuntimeWorkQueue;
+ if (queue.scheduledDrainWorkId >= 0) {
+ gPendingWork.erase(queue.scheduledDrainWorkId);
+ }
+ queuedWork.swap(queue.items);
+ queue.drainScheduled = false;
+ queue.scheduledDrainWorkId = -1;
+ }
+
+ drainPendingBgEvals(
+ "Background runtime invalidated before segment eval ran");
+
+ // timerCallbacks and queuedWork intentionally fall out of scope here, on
+ // the outgoing runtime's JS thread, before ReactHost.destroy() begins.
+ LOGI("nativeInvalidateBackgroundRuntimeOnJSThread: generation=%ld found=%d timers=%zu work=%zu",
+ (long)runtimeGeneration, found ? 1 : 0,
+ timerCallbacks.size(), queuedWork.size());
return found ? JNI_TRUE : JNI_FALSE;
}
diff --git a/native-modules/react-native-background-thread/android/src/main/java/com/backgroundthread/BackgroundThreadManager.kt b/native-modules/react-native-background-thread/android/src/main/java/com/backgroundthread/BackgroundThreadManager.kt
index 63c295be..3e842fa2 100644
--- a/native-modules/react-native-background-thread/android/src/main/java/com/backgroundthread/BackgroundThreadManager.kt
+++ b/native-modules/react-native-background-thread/android/src/main/java/com/backgroundthread/BackgroundThreadManager.kt
@@ -1,6 +1,7 @@
package com.backgroundthread
import android.app.Activity
+import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Handler
@@ -11,6 +12,7 @@ import com.facebook.react.ReactPackage
import com.facebook.proguard.annotations.DoNotStrip
import com.facebook.react.ReactInstanceEventListener
import com.facebook.react.bridge.JSBundleLoader
+import com.facebook.react.bridge.JavaScriptModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContext
import com.facebook.react.common.annotations.UnstableReactNativeAPI
@@ -18,13 +20,17 @@ import com.facebook.react.defaults.DefaultComponentsRegistry
import com.facebook.react.defaults.DefaultReactHostDelegate
import com.facebook.react.defaults.DefaultTurboModuleManagerDelegate
import com.facebook.react.fabric.ComponentFactory
+import com.facebook.react.interfaces.TaskInterface
import com.facebook.react.runtime.ReactHostImpl
import com.facebook.react.runtime.hermes.HermesInstance
import com.facebook.react.shell.MainReactPackage
import java.io.File
import java.lang.ref.WeakReference
+import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicBoolean
+import java.util.concurrent.atomic.AtomicLong
+import java.util.concurrent.atomic.AtomicReference
/**
* Singleton manager for the background React Native runtime.
@@ -36,9 +42,38 @@ import java.util.concurrent.atomic.AtomicBoolean
* - Cross-runtime communication via SharedRPC onWrite notifications
*/
class BackgroundThreadManager private constructor() {
+ // OneKey patch: the prebuilt RN AAR exposes the legacy six-argument HMRClient
+ // interface, while the patched JS client accepts an exact bundle URL as argument seven.
+ private interface HMRClient : JavaScriptModule {
+ fun setup(
+ platform: String?,
+ bundleEntry: String?,
+ host: String?,
+ port: Int,
+ isEnabled: Boolean,
+ scheme: String?,
+ fullBundleUrlOverride: String?,
+ )
+ }
+ // OneKey patch: background uses the same local dev-vendor HBC as main,
+ // then evaluates its own modulesOnly Metro delta in the isolated runtime.
+ private data class DevVendorConfig(
+ val commonAssetName: String,
+ val fingerprint: String,
+ val backgroundHMREnabled: Boolean,
+ val runtimeGeneration: Long = 0,
+ )
private var bgReactHost: ReactHostImpl? = null
private var reactPackages: List = emptyList()
+ private val backgroundRuntimeGeneration = AtomicLong(0)
+ private val backgroundHMRRestartInFlight = AtomicBoolean(false)
+
+ @Volatile
+ private var lastBackgroundEntryURL: String? = null
+
+ @Volatile
+ private var lastDevVendorConfig: DevVendorConfig? = null
// Tracks the last resumed Activity so we can replay it onto the bg
// ReactContext as soon as the bg host finishes initializing (covers the
@@ -59,7 +94,18 @@ class BackgroundThreadManager private constructor() {
// full process restart in that case.
@Volatile
private var mainReactHost: ReactHost? = null
- private var isStarted = false
+ private val runnerState = AtomicReference(BackgroundRunnerState.IDLE)
+
+ @Volatile
+ private var runnerStartFailureMessage: String? = null
+
+ private enum class BackgroundRunnerState {
+ IDLE,
+ STARTING,
+ RUNNING,
+ FAILED,
+ DESTROYING,
+ }
companion object {
private const val MODULE_NAME = "background"
@@ -101,10 +147,19 @@ class BackgroundThreadManager private constructor() {
// ── JNI declarations ────────────────────────────────────────────────────
- private external fun nativeInstallSharedBridge(runtimePtr: Long, isMain: Boolean)
+ private external fun nativeInstallSharedBridge(
+ runtimePtr: Long,
+ isMain: Boolean,
+ runtimeGeneration: Long,
+ )
private external fun nativeSetupErrorHandler(runtimePtr: Long)
private external fun nativeDestroy()
- private external fun nativeExecuteWork(runtimePtr: Long, workId: Long)
+ private external fun nativeExecuteWork(
+ runtimePtr: Long,
+ workId: Long,
+ isMain: Boolean,
+ runtimeGeneration: Long,
+ )
/**
* Evaluate the segment at [segmentPath] into the BACKGROUND runtime on its
@@ -139,7 +194,11 @@ class BackgroundThreadManager private constructor() {
* released and the JS promise resolves immediately instead of leaking until
* teardown or the bg watchdog. Exactly-once on the native side.
*/
- private external fun nativeDropScheduledWork(isMain: Boolean, workId: Long)
+ private external fun nativeDropScheduledWork(
+ isMain: Boolean,
+ workId: Long,
+ runtimeGeneration: Long,
+ )
/**
* Synchronously mark the SharedRPC listener for `runtimeId` as dead
@@ -147,7 +206,19 @@ class BackgroundThreadManager private constructor() {
* SharedRPC::invalidate (cpp/SharedRPC.cpp) for the cross-runtime
* correctness rationale.
*/
- private external fun nativeInvalidateSharedRpc(runtimeId: String): Boolean
+ private external fun nativeInvalidateSharedRpc(
+ runtimeId: String,
+ runtimeGeneration: Long,
+ ): Boolean
+
+ /**
+ * Quiesce background-native work and release JSI callbacks while this call
+ * still runs on the outgoing background runtime's JS thread. Destroying
+ * those callbacks from the UI or teardown worker thread is unsafe.
+ */
+ private external fun nativeInvalidateBackgroundRuntimeOnJSThread(
+ runtimeGeneration: Long,
+ ): Boolean
// ── SharedBridge ────────────────────────────────────────────────────────
@@ -183,7 +254,7 @@ class BackgroundThreadManager private constructor() {
val ptr = context.javaScriptContextHolder?.get() ?: 0L
if (ptr != 0L) {
mainRuntimePtr = ptr
- nativeInstallSharedBridge(ptr, true)
+ nativeInstallSharedBridge(ptr, true, 0)
BTLogger.info("SharedBridge installed in main runtime")
} else {
BTLogger.warn("Main runtime pointer is 0, cannot install SharedBridge")
@@ -332,7 +403,77 @@ class BackgroundThreadManager private constructor() {
}
}
}
-
+ private fun createDevVendorBundleLoader(
+ appContext: android.content.Context,
+ entryURL: String,
+ config: DevVendorConfig,
+ ): JSBundleLoader {
+ return object : JSBundleLoader() {
+ override fun loadScript(delegate: com.facebook.react.bridge.JSBundleLoaderDelegate): String {
+ val totalStart = System.nanoTime()
+ delegate.loadScriptFromAssets(
+ appContext.assets,
+ "assets://${config.commonAssetName}",
+ false,
+ )
+ val assertionFile = File(appContext.cacheDir, "onekey-dev-vendor-assert-background.js")
+ val quotedEntryURL = org.json.JSONObject.quote(entryURL)
+ assertionFile.writeText(
+ "if(globalThis.__ONEKEY_DEV_VENDOR_FINGERPRINT__!==\"${config.fingerprint}\")" +
+ "{throw new Error(\"Dev-vendor common fingerprint mismatch\");}" +
+ "globalThis.__ONEKEY_DEV_VENDOR_FULL_BUNDLE_URL__=$quotedEntryURL;" +
+ "globalThis.__ONEKEY_RUNTIME_TARGET__=\"background\";" +
+ "globalThis.__ONEKEY_BACKGROUND_RUNTIME_GENERATION__=${config.runtimeGeneration};",
+ )
+ delegate.loadScriptFromFile(
+ assertionFile.absolutePath,
+ entryURL,
+ false,
+ )
+ val deltaFile = File(
+ appContext.cacheDir,
+ "onekey-dev-vendor-background-${config.fingerprint.take(12)}.bundle",
+ )
+ val temporaryFile = File.createTempFile(
+ ".${deltaFile.name}-",
+ ".tmp",
+ deltaFile.parentFile,
+ )
+ try {
+ val connection = java.net.URL(entryURL).openConnection() as java.net.HttpURLConnection
+ try {
+ connection.connectTimeout = 15_000
+ connection.readTimeout = 60_000
+ val statusCode = connection.responseCode
+ if (statusCode !in 200..299) {
+ throw IllegalStateException(
+ "Dev-vendor background delta returned HTTP $statusCode",
+ )
+ }
+ connection.inputStream.use { input ->
+ temporaryFile.outputStream().use { output -> input.copyTo(output) }
+ }
+ } finally {
+ connection.disconnect()
+ }
+ android.system.Os.rename(
+ temporaryFile.absolutePath,
+ deltaFile.absolutePath,
+ )
+ } catch (error: Exception) {
+ temporaryFile.delete()
+ throw RuntimeException("Failed to download dev-vendor background delta", error)
+ }
+ delegate.loadScriptFromFile(deltaFile.absolutePath, entryURL, false)
+ val totalMs = (System.nanoTime() - totalStart) / 1_000_000.0
+ BTLogger.info(
+ "[DevVendor] background common.hbc + Metro delta loaded in " +
+ "${String.format("%.1f", totalMs)}ms",
+ )
+ return entryURL
+ }
+ }
+ }
private fun createLocalFileBundleLoader(localPath: String, sourceURL: String): JSBundleLoader {
return object : JSBundleLoader() {
override fun loadScript(delegate: com.facebook.react.bridge.JSBundleLoaderDelegate): String {
@@ -347,115 +488,332 @@ class BackgroundThreadManager private constructor() {
}
}
- @OptIn(UnstableReactNativeAPI::class)
fun startBackgroundRunnerWithEntryURL(context: ReactApplicationContext, entryURL: String) {
- if (isStarted) {
- BTLogger.warn("Background runner already started")
- return
+ ensureBackgroundRunnerWithEntryURL(context.applicationContext, entryURL)
+ }
+
+ @OptIn(UnstableReactNativeAPI::class)
+ fun ensureBackgroundRunnerWithEntryURL(context: Context, entryURL: String): Boolean {
+ return ensureBackgroundRunner(context, entryURL, null)
+ }
+
+ @OptIn(UnstableReactNativeAPI::class)
+ fun ensureBackgroundRunnerWithDevVendor(
+ context: Context,
+ entryURL: String,
+ commonAssetName: String,
+ fingerprint: String,
+ backgroundHMREnabled: Boolean,
+ ): Boolean {
+ return ensureBackgroundRunner(
+ context,
+ entryURL,
+ DevVendorConfig(commonAssetName, fingerprint, backgroundHMREnabled),
+ )
+ }
+
+ @OptIn(UnstableReactNativeAPI::class)
+ private fun ensureBackgroundRunner(
+ context: Context,
+ entryURL: String,
+ devVendorConfig: DevVendorConfig?,
+ ): Boolean {
+ if (!runnerState.compareAndSet(BackgroundRunnerState.IDLE, BackgroundRunnerState.STARTING)) {
+ BTLogger.info("Background runner start coalesced: state=${getBackgroundRunnerState()}")
+ return false
}
+
+ runnerStartFailureMessage = null
+ val runtimeGeneration = backgroundRuntimeGeneration.incrementAndGet()
+ val activeDevVendorConfig =
+ devVendorConfig?.copy(runtimeGeneration = runtimeGeneration)
+ lastBackgroundEntryURL = entryURL
+ lastDevVendorConfig = devVendorConfig
val bgStartTime = System.nanoTime()
BTLogger.info("[SplitBundle] background runner starting with entryURL: $entryURL")
val appContext = context.applicationContext
- val packages =
- if (reactPackages.isNotEmpty()) {
- reactPackages
- } else {
- BTLogger.warn("No ReactPackages registered for background runtime; call setReactPackages(...) from host before start. Falling back to MainReactPackage only.")
- listOf(MainReactPackage())
- }
+ try {
+ val packages =
+ if (reactPackages.isNotEmpty()) {
+ reactPackages
+ } else {
+ BTLogger.warn("No ReactPackages registered for background runtime; call setReactPackages(...) from host before start. Falling back to MainReactPackage only.")
+ listOf(MainReactPackage())
+ }
- val localBundlePath = resolveLocalBundlePath(entryURL)
- val bundleLoader =
- when {
- // Debug mode: remote URL — use single bundle (Metro dev server)
- isRemoteBundleUrl(entryURL) -> createDownloadedBundleLoader(appContext, entryURL)
-
- // OTA / local file path — try sequential loading with common bundle
- localBundlePath != null -> {
- val commonPath = resolveCommonBundlePath(localBundlePath)
- if (commonPath != null) {
- BTLogger.info("Using sequential file bundle loader: common=$commonPath, entry=$localBundlePath")
- createSequentialFileBundleLoader(commonPath, localBundlePath, entryURL)
- } else {
- BTLogger.info("No common bundle found for OTA path, using single bundle: $localBundlePath")
- createLocalFileBundleLoader(localBundlePath, entryURL)
+ val localBundlePath = resolveLocalBundlePath(entryURL)
+ val bundleLoader =
+ when {
+ activeDevVendorConfig != null && isRemoteBundleUrl(entryURL) ->
+ createDevVendorBundleLoader(appContext, entryURL, activeDevVendorConfig)
+
+ // Debug mode: remote URL — use single bundle (Metro dev server)
+ isRemoteBundleUrl(entryURL) -> createDownloadedBundleLoader(appContext, entryURL)
+
+ // OTA / local file path — try sequential loading with common bundle
+ localBundlePath != null -> {
+ val commonPath = resolveCommonBundlePath(localBundlePath)
+ if (commonPath != null) {
+ BTLogger.info("Using sequential file bundle loader: common=$commonPath, entry=$localBundlePath")
+ createSequentialFileBundleLoader(commonPath, localBundlePath, entryURL)
+ } else {
+ BTLogger.info("No common bundle found for OTA path, using single bundle: $localBundlePath")
+ createLocalFileBundleLoader(localBundlePath, entryURL)
+ }
}
- }
- // Assets-based loading — try sequential loading with common.bundle in assets
- entryURL.startsWith("assets://") -> {
- val entryAssetName = entryURL.removePrefix("assets://")
- if (hasCommonBundleInAssets(appContext)) {
- BTLogger.info("Using sequential asset bundle loader: common=common.bundle, entry=$entryAssetName")
- createSequentialAssetBundleLoader(appContext, "common.bundle", entryAssetName)
- } else {
- BTLogger.info("No common.bundle in assets, using single bundle: $entryURL")
- JSBundleLoader.createAssetLoader(appContext, entryURL, true)
+ // Assets-based loading — try sequential loading with common.bundle in assets
+ entryURL.startsWith("assets://") -> {
+ val entryAssetName = entryURL.removePrefix("assets://")
+ if (hasCommonBundleInAssets(appContext)) {
+ BTLogger.info("Using sequential asset bundle loader: common=common.bundle, entry=$entryAssetName")
+ createSequentialAssetBundleLoader(appContext, "common.bundle", entryAssetName)
+ } else {
+ BTLogger.info("No common.bundle in assets, using single bundle: $entryURL")
+ JSBundleLoader.createAssetLoader(appContext, entryURL, true)
+ }
+ }
+
+ // Bare filename (e.g. "background.bundle") — treat as asset
+ else -> {
+ if (hasCommonBundleInAssets(appContext)) {
+ BTLogger.info("Using sequential asset bundle loader: common=common.bundle, entry=$entryURL")
+ createSequentialAssetBundleLoader(appContext, "common.bundle", entryURL)
+ } else {
+ BTLogger.info("No common.bundle in assets, using single bundle: assets://$entryURL")
+ JSBundleLoader.createAssetLoader(appContext, "assets://$entryURL", true)
+ }
}
}
- // Bare filename (e.g. "background.bundle") — treat as asset
- else -> {
- if (hasCommonBundleInAssets(appContext)) {
- BTLogger.info("Using sequential asset bundle loader: common=common.bundle, entry=$entryURL")
- createSequentialAssetBundleLoader(appContext, "common.bundle", entryURL)
- } else {
- BTLogger.info("No common.bundle in assets, using single bundle: assets://$entryURL")
- JSBundleLoader.createAssetLoader(appContext, "assets://$entryURL", true)
+ val delegate = DefaultReactHostDelegate(
+ jsMainModulePath = MODULE_NAME,
+ jsBundleLoader = bundleLoader,
+ reactPackages = packages,
+ jsRuntimeFactory = HermesInstance(),
+ turboModuleManagerDelegateBuilder = DefaultTurboModuleManagerDelegate.Builder(),
+ )
+
+ val componentFactory = ComponentFactory()
+ DefaultComponentsRegistry.register(componentFactory)
+
+ val host = ReactHostImpl(
+ appContext,
+ delegate,
+ componentFactory,
+ true, /* allowPackagerServerAccess */
+ false, /* useDevSupport */
+ )
+ bgReactHost = host
+
+ host.addReactInstanceEventListener(object : ReactInstanceEventListener {
+ override fun onReactContextInitialized(context: ReactContext) {
+ if (backgroundRuntimeGeneration.get() != runtimeGeneration) {
+ BTLogger.info(
+ "[BackgroundHMR] ignored stale ReactContext generation=$runtimeGeneration",
+ )
+ return
+ }
+ val initMs = (System.nanoTime() - bgStartTime) / 1_000_000.0
+ BTLogger.info("[SplitBundle] background ReactContext initialized in ${String.format("%.1f", initMs)}ms")
+ // Replay the most recent Activity resume so TurboModules on the
+ // bg host can see getCurrentActivity()/ActivityEventListeners
+ // from the very first call, even when the bg host finishes
+ // initializing after the Activity is already resumed.
+ replayLastResumedActivityOnUi()
+ context.runOnJSQueueThread {
+ try {
+ if (
+ backgroundRuntimeGeneration.get() != runtimeGeneration ||
+ bgReactHost?.currentReactContext !== context
+ ) {
+ BTLogger.info(
+ "[BackgroundHMR] skipped stale binding install generation=$runtimeGeneration",
+ )
+ return@runOnJSQueueThread
+ }
+ val ptr = context.javaScriptContextHolder?.get() ?: 0L
+ if (ptr != 0L) {
+ bgRuntimePtr = ptr
+ nativeInstallSharedBridge(ptr, false, runtimeGeneration)
+ nativeSetupErrorHandler(ptr)
+ BTLogger.info("SharedBridge and error handler installed in background runtime")
+ } else {
+ BTLogger.error("Background runtime pointer is 0")
+ }
+ } catch (e: Exception) {
+ BTLogger.error("Error installing bindings in background runtime: ${e.message}")
+ }
+ }
+ if (activeDevVendorConfig?.backgroundHMREnabled == true) {
+ setupBackgroundHMRClient(context, entryURL, runtimeGeneration)
}
}
- }
+ })
- val delegate = DefaultReactHostDelegate(
- jsMainModulePath = MODULE_NAME,
- jsBundleLoader = bundleLoader,
- reactPackages = packages,
- jsRuntimeFactory = HermesInstance(),
- turboModuleManagerDelegateBuilder = DefaultTurboModuleManagerDelegate.Builder(),
- )
+ watchBackgroundRunnerStart(host.start(), bgStartTime, runtimeGeneration)
+ return true
+ } catch (t: Throwable) {
+ markBackgroundRunnerFailed(t, bgStartTime, runtimeGeneration)
+ return false
+ }
+ }
- val componentFactory = ComponentFactory()
- DefaultComponentsRegistry.register(componentFactory)
+ private fun setupBackgroundHMRClient(
+ context: ReactContext,
+ entryURL: String,
+ runtimeGeneration: Long,
+ ) {
+ try {
+ val uri = Uri.parse(entryURL)
+ val hmrRegistrationUri = uri.buildUpon()
+ .path("/apps/mobile/background.bundle")
+ .build()
+ val scheme = hmrRegistrationUri.scheme ?: "http"
+ val port = if (hmrRegistrationUri.port != -1) {
+ hmrRegistrationUri.port
+ } else if (scheme == "https") {
+ 443
+ } else {
+ 80
+ }
+ val path = hmrRegistrationUri.path?.removePrefix("/")
+ ?: "apps/mobile/background.bundle"
+ context.getJSModule(HMRClient::class.java).setup(
+ "android",
+ path,
+ hmrRegistrationUri.host,
+ port,
+ true,
+ scheme,
+ hmrRegistrationUri.toString(),
+ )
+ BTLogger.info(
+ "[BackgroundHMR] client setup queued generation=$runtimeGeneration " +
+ "downloadURL=$entryURL registrationURL=$hmrRegistrationUri",
+ )
+ } catch (t: Throwable) {
+ BTLogger.error("[BackgroundHMR] client setup failed: ${t.message}")
+ }
+ }
+
+ private fun watchBackgroundRunnerStart(
+ task: TaskInterface,
+ bgStartTime: Long,
+ runtimeGeneration: Long,
+ ) {
+ Thread {
+ try {
+ task.waitForCompletion()
+ if (
+ runnerState.get() != BackgroundRunnerState.STARTING ||
+ backgroundRuntimeGeneration.get() != runtimeGeneration
+ ) {
+ return@Thread
+ }
+ when {
+ task.isFaulted() -> markBackgroundRunnerFailed(
+ task.getError() ?: RuntimeException("Background ReactHost start faulted"),
+ bgStartTime,
+ runtimeGeneration,
+ )
+ task.isCancelled() -> markBackgroundRunnerFailed(
+ RuntimeException("Background ReactHost start cancelled"),
+ bgStartTime,
+ runtimeGeneration,
+ )
+ runnerState.compareAndSet(
+ BackgroundRunnerState.STARTING,
+ BackgroundRunnerState.RUNNING,
+ ) -> {
+ val startMs = (System.nanoTime() - bgStartTime) / 1_000_000.0
+ BTLogger.info("Background runner start task completed in ${String.format("%.1f", startMs)}ms")
+ }
+ }
+ } catch (t: Throwable) {
+ markBackgroundRunnerFailed(t, bgStartTime, runtimeGeneration)
+ }
+ }.apply {
+ isDaemon = true
+ name = "OneKey-BgThread-StartWatch"
+ start()
+ }
+ }
- val host = ReactHostImpl(
- appContext,
- delegate,
- componentFactory,
- true, /* allowPackagerServerAccess */
- false, /* useDevSupport */
+ private fun markBackgroundRunnerFailed(
+ t: Throwable,
+ bgStartTime: Long,
+ runtimeGeneration: Long,
+ ) {
+ if (
+ backgroundRuntimeGeneration.get() != runtimeGeneration ||
+ !runnerState.compareAndSet(BackgroundRunnerState.STARTING, BackgroundRunnerState.FAILED)
+ ) {
+ return
+ }
+ val startMs = (System.nanoTime() - bgStartTime) / 1_000_000.0
+ runnerStartFailureMessage = t.message ?: t.javaClass.simpleName
+ bgRuntimePtr = 0
+ BTLogger.error(
+ "Background runner start failed after ${String.format("%.1f", startMs)}ms: " +
+ runnerStartFailureMessage
)
- bgReactHost = host
-
- host.addReactInstanceEventListener(object : ReactInstanceEventListener {
- override fun onReactContextInitialized(context: ReactContext) {
- val initMs = (System.nanoTime() - bgStartTime) / 1_000_000.0
- BTLogger.info("[SplitBundle] background ReactContext initialized in ${String.format("%.1f", initMs)}ms")
- // Replay the most recent Activity resume so TurboModules on the
- // bg host can see getCurrentActivity()/ActivityEventListeners
- // from the very first call, even when the bg host finishes
- // initializing after the Activity is already resumed.
- replayLastResumedActivityOnUi()
- context.runOnJSQueueThread {
- try {
- val ptr = context.javaScriptContextHolder?.get() ?: 0L
- if (ptr != 0L) {
- bgRuntimePtr = ptr
- nativeInstallSharedBridge(ptr, false)
- nativeSetupErrorHandler(ptr)
- BTLogger.info("SharedBridge and error handler installed in background runtime")
- } else {
- BTLogger.error("Background runtime pointer is 0")
+ val failedHost = bgReactHost
+ val destroyTask = try {
+ failedHost?.destroy("Background runner start failed", t as? Exception)
+ } catch (destroyError: Throwable) {
+ BTLogger.error("Failed to destroy faulted background runner: ${destroyError.message}")
+ null
+ }
+ if (destroyTask == null) {
+ if (failedHost == null) {
+ runnerState.compareAndSet(
+ BackgroundRunnerState.FAILED,
+ BackgroundRunnerState.IDLE,
+ )
+ }
+ return
+ }
+ Thread {
+ try {
+ destroyTask.waitForCompletion()
+ if (destroyTask.isFaulted() || destroyTask.isCancelled()) {
+ BTLogger.error(
+ "Faulted background runner teardown did not complete cleanly " +
+ "(faulted=${destroyTask.isFaulted()}, " +
+ "cancelled=${destroyTask.isCancelled()}): " +
+ destroyTask.getError()?.message,
+ )
+ return@Thread
+ }
+ if (
+ runnerState.compareAndSet(
+ BackgroundRunnerState.FAILED,
+ BackgroundRunnerState.DESTROYING,
+ )
+ ) {
+ Handler(Looper.getMainLooper()).post {
+ if (bgReactHost === failedHost) {
+ bgReactHost = null
}
- } catch (e: Exception) {
- BTLogger.error("Error installing bindings in background runtime: ${e.message}")
+ runnerState.set(BackgroundRunnerState.IDLE)
+ BTLogger.info(
+ "Faulted background runner teardown completed; retry is available",
+ )
}
}
+ } catch (destroyError: Throwable) {
+ BTLogger.error(
+ "Failed to await faulted background runner teardown: " +
+ destroyError.message,
+ )
}
- })
-
- host.start()
- isStarted = true
+ }.apply {
+ isDaemon = true
+ name = "OneKey-BgThread-FailedHostDestroy"
+ start()
+ }
}
/**
@@ -463,9 +821,26 @@ class BackgroundThreadManager private constructor() {
* Routes to main or background runtime's JS queue thread, then calls nativeExecuteWork.
*/
@DoNotStrip
- fun scheduleOnJSThread(isMain: Boolean, workId: Long): Boolean {
- val context = if (isMain) mainReactContext else bgReactHost?.currentReactContext
- BTLogger.info("scheduleOnJSThread: isMain=$isMain, workId=$workId, context=${context != null}")
+ fun scheduleOnJSThread(
+ isMain: Boolean,
+ workId: Long,
+ runtimeGeneration: Long,
+ ): Boolean {
+ val backgroundState = runnerState.get()
+ val context = if (isMain) {
+ mainReactContext
+ } else if (
+ backgroundState == BackgroundRunnerState.STARTING ||
+ backgroundState == BackgroundRunnerState.RUNNING
+ ) {
+ bgReactHost?.currentReactContext
+ } else {
+ null
+ }
+ BTLogger.info(
+ "scheduleOnJSThread: isMain=$isMain, workId=$workId, " +
+ "generation=$runtimeGeneration, context=${context != null}",
+ )
if (context == null) {
BTLogger.error("scheduleOnJSThread: context is null! isMain=$isMain, mainCtx=${mainReactContext != null}, bgHost=${bgReactHost != null}, bgCtx=${bgReactHost?.currentReactContext != null}")
// The just-enqueued native work will never reach the JS thread.
@@ -479,13 +854,27 @@ class BackgroundThreadManager private constructor() {
}
return try {
val posted = context.runOnJSQueueThread {
- // Re-read ptr inside the block — if a reload happened between
- // scheduling and execution, the old ptr may be stale.
+ if (
+ !isMain &&
+ (
+ backgroundRuntimeGeneration.get() != runtimeGeneration ||
+ bgReactHost?.currentReactContext !== context
+ )
+ ) {
+ BTLogger.info(
+ "scheduleOnJSThread: dropped stale background workId=$workId " +
+ "generation=$runtimeGeneration active=${backgroundRuntimeGeneration.get()}",
+ )
+ nativeDropScheduledWork(isMain, workId, runtimeGeneration)
+ return@runOnJSQueueThread
+ }
+ // Re-read ptr only after proving this Runnable still belongs to
+ // the active context and generation.
val ptr = if (isMain) mainRuntimePtr else bgRuntimePtr
BTLogger.info("scheduleOnJSThread runOnJSQueueThread: isMain=$isMain, workId=$workId, ptr=$ptr")
if (ptr != 0L) {
try {
- nativeExecuteWork(ptr, workId)
+ nativeExecuteWork(ptr, workId, isMain, runtimeGeneration)
} catch (e: Exception) {
BTLogger.error("Error executing work on JS thread: ${e.message}")
}
@@ -501,7 +890,7 @@ class BackgroundThreadManager private constructor() {
// runtime recovers and main has no JS retry net).
// drainPendingBgEvals inside the native fn is
// gated to !isMain, so settling bg evals only happens for bg.
- nativeDropScheduledWork(isMain, workId)
+ nativeDropScheduledWork(isMain, workId, runtimeGeneration)
}
}
if (!posted) {
@@ -541,7 +930,7 @@ class BackgroundThreadManager private constructor() {
path: String,
onComplete: (code: String?, message: String?) -> Unit
) {
- if (!isStarted) {
+ if (!isBackgroundStarted) {
// Bg runtime not started yet → retryable (the loader will re-attempt
// once the bg host is up).
onComplete("SPLIT_BUNDLE_NO_RUNTIME", "Background runtime not started")
@@ -950,6 +1339,11 @@ class BackgroundThreadManager private constructor() {
fun restart(context: ReactApplicationContext, mode: String, reason: String, promise: com.facebook.react.bridge.Promise) {
val isUi = mode == "ui"
val isAll = mode == "all"
+ val isBackgroundHMR = mode == "background"
+ if (isBackgroundHMR) {
+ restartBackgroundForHMR(context.applicationContext, reason, promise)
+ return
+ }
if (!isUi && !isAll) {
promise.reject(
"BG_RESTART_ERROR",
@@ -961,9 +1355,12 @@ class BackgroundThreadManager private constructor() {
BTLogger.info("restart: mode=$mode reason=$reason")
try {
- nativeInvalidateSharedRpc("main")
+ nativeInvalidateSharedRpc("main", 0)
if (isAll) {
- nativeInvalidateSharedRpc("background")
+ nativeInvalidateSharedRpc(
+ "background",
+ backgroundRuntimeGeneration.incrementAndGet(),
+ )
}
} catch (t: Throwable) {
// Invalidate is best-effort; not fatal if the JNI call somehow
@@ -1071,6 +1468,188 @@ class BackgroundThreadManager private constructor() {
// any further code here is unreachable
}
+ private fun restartBackgroundForHMR(
+ context: Context,
+ reason: String,
+ promise: com.facebook.react.bridge.Promise,
+ ) {
+ if (!BuildConfig.DEBUG) {
+ promise.reject(
+ "BG_RESTART_ERROR",
+ "Background HMR restart is unavailable in release builds",
+ )
+ return
+ }
+ val generation = reason
+ .removePrefix("onekey-bg-hmr:")
+ .substringBefore(':')
+ .toLongOrNull()
+ if (!reason.startsWith("onekey-bg-hmr:") || generation == null) {
+ promise.reject(
+ "BG_RESTART_ERROR",
+ "Background HMR restart is missing its runtime generation",
+ )
+ return
+ }
+
+ Handler(Looper.getMainLooper()).post {
+ val activeGeneration = backgroundRuntimeGeneration.get()
+ if (generation != activeGeneration) {
+ BTLogger.info(
+ "[BackgroundHMR] ignored stale restart requested=$generation active=$activeGeneration",
+ )
+ promise.resolve(null)
+ return@post
+ }
+ val entryURL = lastBackgroundEntryURL
+ val config = lastDevVendorConfig
+ if (
+ entryURL == null ||
+ config?.backgroundHMREnabled != true ||
+ !backgroundHMRRestartInFlight.compareAndSet(false, true)
+ ) {
+ BTLogger.info("[BackgroundHMR] restart coalesced or disabled")
+ promise.resolve(null)
+ return@post
+ }
+
+ val outgoingHost = bgReactHost
+ val outgoingContext = outgoingHost?.currentReactContext
+ val invalidatedGeneration = backgroundRuntimeGeneration.incrementAndGet()
+ runnerState.set(BackgroundRunnerState.DESTROYING)
+ bgRuntimePtr = 0
+ val runtimeInvalidated = CountDownLatch(1)
+ val runtimeInvalidationSucceeded = AtomicBoolean(false)
+ val invalidationScheduled = try {
+ outgoingContext?.runOnJSQueueThread {
+ try {
+ nativeInvalidateBackgroundRuntimeOnJSThread(
+ invalidatedGeneration,
+ )
+ runtimeInvalidationSucceeded.set(true)
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] JS-thread invalidation failed: ${t.message}",
+ )
+ try {
+ nativeInvalidateSharedRpc("background", invalidatedGeneration)
+ runtimeInvalidationSucceeded.set(true)
+ } catch (fallbackError: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] fallback invalidation failed: " +
+ fallbackError.message,
+ )
+ }
+ } finally {
+ runtimeInvalidated.countDown()
+ }
+ } == true
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] failed to schedule JS-thread invalidation: ${t.message}",
+ )
+ false
+ }
+ if (!invalidationScheduled) {
+ try {
+ // Safe fallback for a context whose JS queue is already
+ // unavailable. This retains the old off-thread callback
+ // disposal safeguards, but still quiesces SharedRPC.
+ nativeInvalidateSharedRpc("background", invalidatedGeneration)
+ runtimeInvalidationSucceeded.set(true)
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] SharedRPC invalidate failed: ${t.message}",
+ )
+ }
+ runtimeInvalidated.countDown()
+ }
+ promise.resolve(null)
+
+ Thread {
+ try {
+ runtimeInvalidated.await()
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] outgoing runtime invalidation wait failed: ${t.message}",
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@Thread
+ }
+ if (!runtimeInvalidationSucceeded.get()) {
+ BTLogger.error(
+ "[BackgroundHMR] replacement blocked: runtime invalidation failed",
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@Thread
+ }
+ val destroyTask = try {
+ outgoingHost?.destroy("Background HMR restart", null)
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] outgoing host destroy threw: ${t.message}",
+ )
+ null
+ }
+ if (outgoingHost != null && destroyTask == null) {
+ backgroundHMRRestartInFlight.set(false)
+ return@Thread
+ }
+ if (destroyTask != null) {
+ try {
+ destroyTask.waitForCompletion()
+ } catch (t: Throwable) {
+ BTLogger.error(
+ "[BackgroundHMR] outgoing host destroy wait failed: ${t.message}",
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@Thread
+ }
+ if (destroyTask.isFaulted() || destroyTask.isCancelled()) {
+ BTLogger.error(
+ "[BackgroundHMR] outgoing host destroy did not complete cleanly " +
+ "(faulted=${destroyTask.isFaulted()}, " +
+ "cancelled=${destroyTask.isCancelled()}): " +
+ destroyTask.getError()?.message,
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@Thread
+ }
+ }
+ Handler(Looper.getMainLooper()).post {
+ if (bgReactHost !== outgoingHost) {
+ BTLogger.error(
+ "[BackgroundHMR] replacement aborted: outgoing host changed",
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@post
+ }
+ bgReactHost = null
+ if (
+ !runnerState.compareAndSet(
+ BackgroundRunnerState.DESTROYING,
+ BackgroundRunnerState.IDLE,
+ )
+ ) {
+ BTLogger.error(
+ "[BackgroundHMR] replacement aborted: unexpected state=" +
+ getBackgroundRunnerState(),
+ )
+ backgroundHMRRestartInFlight.set(false)
+ return@post
+ }
+ BTLogger.info("[BackgroundHMR] starting replacement background runtime")
+ ensureBackgroundRunner(context, entryURL, config)
+ backgroundHMRRestartInFlight.set(false)
+ }
+ }.apply {
+ isDaemon = true
+ name = "OneKey-BgThread-HMRRestart"
+ start()
+ }
+ }
+ }
+
/**
* Returns true if Runtime.exit(0) was reached (in which case the process
* is now terminating and any code after the call site is unreachable).
@@ -1097,9 +1676,24 @@ class BackgroundThreadManager private constructor() {
// ── Lifecycle ───────────────────────────────────────────────────────────
- val isBackgroundStarted: Boolean get() = isStarted
+ val isBackgroundStarted: Boolean
+ get() = when (runnerState.get()) {
+ BackgroundRunnerState.STARTING, BackgroundRunnerState.RUNNING -> true
+ else -> false
+ }
+
+ fun getBackgroundRunnerState(): String = when (runnerState.get()) {
+ BackgroundRunnerState.IDLE -> "idle"
+ BackgroundRunnerState.STARTING -> "starting"
+ BackgroundRunnerState.RUNNING -> "running"
+ BackgroundRunnerState.FAILED -> "failed"
+ BackgroundRunnerState.DESTROYING -> "destroying"
+ }
+
+ fun getBackgroundRunnerFailureMessage(): String? = runnerStartFailureMessage
fun destroy() {
+ runnerState.set(BackgroundRunnerState.DESTROYING)
nativeDestroy()
bgRuntimePtr = 0
mainRuntimePtr = 0
@@ -1107,7 +1701,8 @@ class BackgroundThreadManager private constructor() {
mainReactHost = null
bgReactHost?.destroy("BackgroundThreadManager destroyed", null)
bgReactHost = null
- isStarted = false
+ runnerStartFailureMessage = null
+ runnerState.set(BackgroundRunnerState.IDLE)
lastResumedActivityRef = WeakReference(null)
}
}
diff --git a/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.h b/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.h
index 0b7c8823..950cb1d3 100644
--- a/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.h
+++ b/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.h
@@ -30,7 +30,13 @@ NS_ASSUME_NONNULL_BEGIN
* @return Initialized delegate instance with filtered module access
*/
- (instancetype)init;
-
+/// Configure debug startup as local common HBC followed by a remote
+/// modules-only background entry bundle.
+- (void)configureDevVendorCommonBundlePath:(NSString *)commonBundlePath
+ entryURL:(NSURL *)entryURL
+ fingerprint:(NSString *)fingerprint
+ backgroundHMREnabled:(BOOL)backgroundHMREnabled
+ runtimeGeneration:(NSUInteger)runtimeGeneration;
/**
* Register a HBC segment in the background runtime (Phase 2.5 spike).
* Uses RCTInstance's registerSegmentWithId:path: API.
diff --git a/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.mm b/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.mm
index 4cadac61..4acdc374 100644
--- a/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.mm
+++ b/native-modules/react-native-background-thread/ios/BackgroundRunnerReactNativeDelegate.mm
@@ -12,8 +12,9 @@
#include "SharedRPC.h"
#import
+#import
#import
-
+#import
#if __has_include()
// static libs / header maps (no use_frameworks!)
#import
@@ -42,7 +43,33 @@
namespace jsi = facebook::jsi;
namespace TurboModuleConvertUtils = facebook::react::TurboModuleConvertUtils;
using namespace facebook::react;
-
+namespace {
+constexpr int64_t kDevVendorLoadTimeoutSeconds = 60;
+class BackgroundNSDataJSIBuffer : public facebook::jsi::Buffer {
+ public:
+ explicit BackgroundNSDataJSIBuffer(NSData *data) : data_(data) {}
+ size_t size() const override { return data_.length; }
+ const uint8_t *data() const override {
+ return static_cast(data_.bytes);
+ }
+ private:
+ NSData *data_;
+};
+} // namespace
+@interface BTDevVendorDownloadState : NSObject
+@property (nonatomic, strong, nullable) NSData *data;
+@property (nonatomic, strong, nullable) NSError *error;
+@property (nonatomic, strong) dispatch_semaphore_t ready;
+@end
+@implementation BTDevVendorDownloadState
+- (instancetype)init
+{
+ if (self = [super init]) {
+ _ready = dispatch_semaphore_create(0);
+ }
+ return self;
+}
+@end
static void stubJsiFunction(jsi::Runtime &runtime, jsi::Object &object, const char *name)
{
object.setProperty(
@@ -163,6 +190,11 @@ @interface BackgroundReactNativeDelegate () {
RCTInstance *_rctInstance;
std::string _origin;
std::string _jsBundleSource;
+ NSString *_devVendorCommonBundlePath;
+ NSURL *_devVendorEntryURL;
+ NSString *_devVendorFingerprint;
+ BOOL _devVendorBackgroundHMREnabled;
+ NSUInteger _backgroundRuntimeGeneration;
// YES when `bundleURL` observed an active OTA main bundle on its most
// recent invocation, regardless of whether OTA common actually resolved.
// Captures the invariant "this delegate is locked to OTA territory; IPA
@@ -182,7 +214,11 @@ @interface BackgroundReactNativeDelegate () {
- (void)cleanupResources;
- (void)setupErrorHandler:(jsi::Runtime &)runtime;
-
+- (void)finishHostStartWithBundleData:(NSData * _Nullable)bundleData
+ sourceURL:(NSString * _Nullable)sourceURL
+ fingerprint:(NSString * _Nullable)fingerprint
+ evaluateEntry:(BOOL)evaluateEntry
+ downloadState:(BTDevVendorDownloadState * _Nullable)downloadState;
@end
@implementation BackgroundReactNativeDelegate
@@ -221,7 +257,18 @@ - (void)setJsBundleSource:(std::string)jsBundleSource
{
_jsBundleSource = jsBundleSource;
}
-
+- (void)configureDevVendorCommonBundlePath:(NSString *)commonBundlePath
+ entryURL:(NSURL *)entryURL
+ fingerprint:(NSString *)fingerprint
+ backgroundHMREnabled:(BOOL)backgroundHMREnabled
+ runtimeGeneration:(NSUInteger)runtimeGeneration
+{
+ _devVendorCommonBundlePath = [commonBundlePath copy];
+ _devVendorEntryURL = [entryURL copy];
+ _devVendorFingerprint = [fingerprint copy];
+ _devVendorBackgroundHMREnabled = backgroundHMREnabled;
+ _backgroundRuntimeGeneration = runtimeGeneration;
+}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [self bundleURL];
@@ -232,7 +279,9 @@ - (NSURL *)bundleURL
// Reset on every call so a re-entry (e.g. host restart) can't carry over
// a stale OTA assertion from a previous load.
_otaActiveAtBundleResolve = NO;
-
+ if (_devVendorCommonBundlePath.length > 0) {
+ return [NSURL fileURLWithPath:_devVendorCommonBundlePath];
+ }
// When _jsBundleSource is set (dev mode or explicit override), use it as-is.
// This is a single full bundle (not split), so DON'T use common+entry strategy.
if (!_jsBundleSource.empty()) {
@@ -323,7 +372,56 @@ - (void)hostDidStart:(RCTHost *)host
if (!_rctInstance) {
return;
}
-
+ if (_devVendorEntryURL) {
+ NSURL *entryURL = _devVendorEntryURL;
+ NSString *fingerprint = _devVendorFingerprint;
+ BTDevVendorDownloadState *downloadState = [[BTDevVendorDownloadState alloc] init];
+ [RCTJavaScriptLoader loadBundleAtURL:entryURL
+ onProgress:^(RCTLoadingProgress *progress) { (void)progress; }
+ onComplete:^(NSError *error, RCTSource *source) {
+ downloadState.error = error;
+ downloadState.data = source.data;
+ dispatch_semaphore_signal(downloadState.ready);
+ }];
+ [self finishHostStartWithBundleData:nil
+ sourceURL:entryURL.absoluteString
+ fingerprint:fingerprint
+ evaluateEntry:YES
+ downloadState:downloadState];
+ if (_devVendorBackgroundHMREnabled) {
+ NSURLComponents *hmrComponents = [NSURLComponents componentsWithURL:entryURL
+ resolvingAgainstBaseURL:NO];
+ hmrComponents.path = @"/apps/mobile/background.bundle";
+ NSURL *hmrRegistrationURL = hmrComponents.URL;
+ if (!hmrRegistrationURL) {
+ [BTLogger error:@"[BackgroundHMR] failed to construct registration URL"];
+ return;
+ }
+ NSString *path = hmrRegistrationURL.path;
+ if ([path hasPrefix:@"/"]) {
+ path = [path substringFromIndex:1];
+ }
+ NSString *scheme = hmrRegistrationURL.scheme ?: @"http";
+ NSNumber *port = hmrRegistrationURL.port ?: @([scheme isEqualToString:@"https"] ? 443 : 80);
+ [host callFunctionOnJSModule:@"HMRClient"
+ method:@"setup"
+ args:@[
+ @"ios",
+ path ?: @"apps/mobile/background.bundle",
+ hmrRegistrationURL.host ?: @"127.0.0.1",
+ port,
+ @YES,
+ scheme,
+ hmrRegistrationURL.absoluteString
+ ]];
+ [BTLogger info:[NSString stringWithFormat:
+ @"[BackgroundHMR] client setup queued generation=%lu downloadURL=%@ registrationURL=%@",
+ (unsigned long)_backgroundRuntimeGeneration,
+ entryURL.absoluteString,
+ hmrRegistrationURL.absoluteString]];
+ }
+ return;
+ }
// When _jsBundleSource is set, the bundle loaded in bundleURL was already
// a full single bundle (dev mode / explicit override), so skip entry loading.
BOOL isSplitBundle = _jsBundleSource.empty();
@@ -359,49 +457,118 @@ - (void)hostDidStart:(RCTHost *)host
[BTLogger warn:@"Background entry bundle not found, __setupBackgroundRPCHandler may not be defined"];
}
}
-
+ [self finishHostStartWithBundleData:bgBundleData
+ sourceURL:bgBundleSourceURL
+ fingerprint:nil
+ evaluateEntry:isSplitBundle
+ downloadState:nil];
+}
+- (void)finishHostStartWithBundleData:(NSData * _Nullable)bundleData
+ sourceURL:(NSString * _Nullable)sourceURL
+ fingerprint:(NSString * _Nullable)fingerprint
+ evaluateEntry:(BOOL)evaluateEntry
+ downloadState:(BTDevVendorDownloadState * _Nullable)downloadState
+{
+ RCTInstance *instance = _rctInstance;
+ if (!instance) {
+ return;
+ }
CFAbsoluteTime bgStartTime = CFAbsoluteTimeGetCurrent();
-
- [_rctInstance callFunctionOnBufferedRuntimeExecutor:[=](jsi::Runtime &runtime) {
- [self setupErrorHandler:runtime];
-
- // Install SharedStore into background runtime
- SharedStore::install(runtime);
-
- // Install SharedRPC with executor for cross-runtime notifications.
- // Capture the bg RCTInstance __weak so executor lambdas still in flight
- // when the bg host is torn down (BackgroundThread.restart mode=all,
- // OTA bundle install) no-op cleanly instead of dispatching onto a
- // freed instance and crashing.
- __weak RCTInstance *weakBgInstance = _rctInstance;
- RPCRuntimeExecutor bgExecutor = [weakBgInstance](std::function work) {
- RCTInstance *strongBgInstance = weakBgInstance;
- if (!strongBgInstance) {
- return;
+ __weak RCTInstance *weakBgInstance = instance;
+
+ [instance callFunctionOnBufferedRuntimeExecutor:[=](jsi::Runtime &runtime) {
+ try {
+ NSData *entryData = bundleData;
+ if (downloadState) {
+ // Queue this executor before the background surface starts. Once the
+ // local common HBC completes, wait for Metro without blocking main.
+ dispatch_time_t deadline = dispatch_time(
+ DISPATCH_TIME_NOW, kDevVendorLoadTimeoutSeconds * NSEC_PER_SEC);
+ if (dispatch_semaphore_wait(downloadState.ready, deadline) != 0) {
+ NSError *timeoutError = [NSError errorWithDomain:@"BackgroundThread"
+ code:21
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ @"Timed out loading dev-vendor background delta"
+ }];
+ [BTLogger error:@"Dev-vendor background delta timed out after 60 seconds"];
+ dispatch_async(dispatch_get_main_queue(), ^{ RCTFatal(timeoutError); });
+ return;
}
- [strongBgInstance callFunctionOnBufferedRuntimeExecutor:[work](jsi::Runtime &rt) {
- work(rt);
- }];
- };
- SharedRPC::install(runtime, std::move(bgExecutor), "background");
- [BTLogger info:@"SharedStore and SharedRPC installed in background runtime"];
-
- // In split-bundle mode, evaluate the background entry bundle now.
- // This must happen BEFORE invokeOptionalGlobalFunction since the entry
- // bundle defines __setupBackgroundRPCHandler.
- if (isSplitBundle && bgBundleData && bgBundleData.length > 0) {
- CFAbsoluteTime bgEvalStart = CFAbsoluteTimeGetCurrent();
- auto buffer = std::make_shared(
- std::string(static_cast(bgBundleData.bytes), bgBundleData.length));
- runtime.evaluateJavaScript(std::move(buffer), [bgBundleSourceURL UTF8String]);
- double bgEvalMs = (CFAbsoluteTimeGetCurrent() - bgEvalStart) * 1000.0;
- [BTLogger info:[NSString stringWithFormat:@"[SplitBundle] bg entry evaluated in %.1fms", bgEvalMs]];
+ if (downloadState.error || downloadState.data.length == 0) {
+ NSError *loadError = downloadState.error ?: [NSError errorWithDomain:@"BackgroundThread"
+ code:20
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ @"Dev-vendor background delta is empty"
+ }];
+ [BTLogger error:[NSString stringWithFormat:
+ @"Dev-vendor background delta failed: %@", loadError.localizedDescription]];
+ dispatch_async(dispatch_get_main_queue(), ^{ RCTFatal(loadError); });
+ return;
+ }
+ entryData = downloadState.data;
+ }
+
+ if (fingerprint.length > 0) {
+ jsi::Value marker = runtime.global().getProperty(
+ runtime, "__ONEKEY_DEV_VENDOR_FINGERPRINT__");
+ if (!marker.isString() ||
+ marker.asString(runtime).utf8(runtime) != std::string(fingerprint.UTF8String)) {
+ throw std::runtime_error("Dev-vendor common fingerprint mismatch");
+ }
+ runtime.global().setProperty(
+ runtime,
+ "__ONEKEY_DEV_VENDOR_FULL_BUNDLE_URL__",
+ jsi::String::createFromUtf8(runtime, sourceURL.UTF8String));
+ runtime.global().setProperty(
+ runtime,
+ "__ONEKEY_RUNTIME_TARGET__",
+ jsi::String::createFromUtf8(runtime, "background"));
+ runtime.global().setProperty(
+ runtime,
+ "__ONEKEY_BACKGROUND_RUNTIME_GENERATION__",
+ static_cast(_backgroundRuntimeGeneration));
+ }
+
+ [self setupErrorHandler:runtime];
+ SharedStore::install(runtime);
+
+ RPCRuntimeExecutor bgExecutor = [weakBgInstance](std::function work) {
+ RCTInstance *strongBgInstance = weakBgInstance;
+ if (!strongBgInstance) {
+ return;
+ }
+ [strongBgInstance callFunctionOnBufferedRuntimeExecutor:[work](jsi::Runtime &rt) {
+ work(rt);
+ }];
+ };
+ SharedRPC::install(runtime, std::move(bgExecutor), "background");
+ [BTLogger info:@"SharedStore and SharedRPC installed in background runtime"];
+
+ // The entry defines __setupBackgroundRPCHandler, so it must execute
+ // before the runtime is reported ready.
+ if (evaluateEntry && entryData.length > 0 && sourceURL.length > 0) {
+ CFAbsoluteTime bgEvalStart = CFAbsoluteTimeGetCurrent();
+ auto buffer = std::make_shared(entryData);
+ runtime.evaluateJavaScript(buffer, sourceURL.UTF8String);
+ double bgEvalMs = (CFAbsoluteTimeGetCurrent() - bgEvalStart) * 1000.0;
+ [BTLogger info:[NSString stringWithFormat:@"[SplitBundle] bg entry evaluated in %.1fms", bgEvalMs]];
+ }
+
+ double bgTotalMs = (CFAbsoluteTimeGetCurrent() - bgStartTime) * 1000.0;
+ [BTLogger info:[NSString stringWithFormat:@"[SplitBundle] bg hostDidStart total setup in %.1fms", bgTotalMs]];
+ invokeOptionalGlobalFunction(runtime, "__setupBackgroundRPCHandler");
+ } catch (const std::exception &exception) {
+ NSString *message = [NSString stringWithUTF8String:exception.what()];
+ NSError *evaluationError = [NSError errorWithDomain:@"BackgroundThread"
+ code:21
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ message ?: @"Dev-vendor background evaluation failed"
+ }];
+ dispatch_async(dispatch_get_main_queue(), ^{ RCTFatal(evaluationError); });
}
-
- double bgTotalMs = (CFAbsoluteTimeGetCurrent() - bgStartTime) * 1000.0;
- [BTLogger info:[NSString stringWithFormat:@"[SplitBundle] bg hostDidStart total setup in %.1fms", bgTotalMs]];
-
- invokeOptionalGlobalFunction(runtime, "__setupBackgroundRPCHandler");
}];
}
diff --git a/native-modules/react-native-background-thread/ios/BackgroundThreadManager.h b/native-modules/react-native-background-thread/ios/BackgroundThreadManager.h
index 09185f60..ed0c23e5 100644
--- a/native-modules/react-native-background-thread/ios/BackgroundThreadManager.h
+++ b/native-modules/react-native-background-thread/ios/BackgroundThreadManager.h
@@ -66,6 +66,20 @@ typedef NS_ENUM(NSInteger, EBgMgrSegmentEvalError) {
/// @param host The RCTHost for the main runtime
+ (void)installSharedBridgeInMainRuntime:(RCTHost *)host;
+/// Install the main-runtime bridge and start the background runtime only after
+/// that installation has executed on the main JS runtime. Expo initializes its
+/// module registry on the JS thread, so this ordered entry point prevents a
+/// second Expo-backed runtime from registering modules during foreground
+/// runtime startup.
+///
+/// @param host The RCTHost for the main runtime
+/// @param entryURL The custom entry URL for the background runner
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host
+ thenStartBackgroundRunnerWithEntryURL:(NSString *)entryURL;
+/// Install the main-runtime bridge and start a background runtime from a
+/// local common HBC followed by a remote modules-only entry bundle.
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host
+ thenStartBackgroundRunnerWithDevVendorConfig:(NSDictionary *)config;
/// Start background runner with default entry URL
- (void)startBackgroundRunner;
diff --git a/native-modules/react-native-background-thread/ios/BackgroundThreadManager.mm b/native-modules/react-native-background-thread/ios/BackgroundThreadManager.mm
index 1c9fd826..129f85bd 100644
--- a/native-modules/react-native-background-thread/ios/BackgroundThreadManager.mm
+++ b/native-modules/react-native-background-thread/ios/BackgroundThreadManager.mm
@@ -44,6 +44,19 @@ explicit BgMgrNSDataJSIBuffer(NSData *data) : data_(data) {}
} // namespace
+static RCTReactNativeFactory *CreateBackgroundReactNativeFactory(
+ id delegate) {
+ Class expoFactoryClass = NSClassFromString(@"EXReactNativeFactory");
+ if (expoFactoryClass &&
+ [expoFactoryClass isSubclassOfClass:[RCTReactNativeFactory class]]) {
+ [BTLogger info:@"Using Expo React Native factory for background runtime"];
+ return [(RCTReactNativeFactory *)[expoFactoryClass alloc]
+ initWithDelegate:delegate];
+ }
+
+ return [[RCTReactNativeFactory alloc] initWithDelegate:delegate];
+}
+
// Exactly-once settle guard for the bg watchdog — same design as
// SplitBundleLoader's SBLSettleGuard. An ARC object captured by both the
// executor block and the watchdog dispatch_after; ARC keeps its lock alive
@@ -129,7 +142,11 @@ @interface BackgroundThreadManager ()
// same reason as isStarted: written from the caller's thread (public API
// doesn't pin start... to main) and read on main by the health-check.
@property (atomic, copy) NSString *lastEntryURL;
-
+// Debug-only dev-vendor bootstrap contract. Retained across mode='all'
+// reloads so the self-heal path cannot fall back to a monolithic bundle.
+@property (atomic, copy, nullable) NSDictionary *lastDevVendorConfig;
+@property (nonatomic, assign) NSUInteger backgroundRuntimeGeneration;
+@property (nonatomic, assign) BOOL backgroundHMRRestartInFlight;
// Forward declaration so restartWithMode: can call it; definition lives
// after restartWithMode: for readability (the call site is the natural
// place to start reading the restart flow).
@@ -137,6 +154,11 @@ - (void)scheduleHealthCheckForRestart:(NSString *)mode
isAll:(BOOL)isAll
generation:(NSUInteger)myGen
retried:(BOOL)retried;
+- (void)startBackgroundRunnerWithDevVendorConfig:(NSDictionary *)config;
+- (void)startBackgroundRunnerWithEntryURL:(NSString *)entryURL
+ devVendorConfig:(NSDictionary * _Nullable)devVendorConfig;
+- (void)restartBackgroundForHMRReason:(NSString *)reason
+ completion:(void (^)(NSError * _Nullable error))completion;
@end
// First-stage delay for the post-reload health-check. Picked so the host's
@@ -151,7 +173,11 @@ @implementation BackgroundThreadManager
static dispatch_once_t onceToken;
static NSString *const MODULE_NAME = @"background";
static NSString *const MODULE_DEBUG_URL = @"http://localhost:8082/apps/mobile/background.bundle?platform=ios&dev=true&lazy=false&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&excludeSource=true&sourcePaths=url-server&app=so.onekey.wallet&transform.routerRoot=app&transform.engine=hermes&transform.bytecode=1&unstable_transformProfile=hermes-stable";
-
+static NSString *const DEV_VENDOR_COMMON_PATH_KEY = @"commonBundlePath";
+static NSString *const DEV_VENDOR_ENTRY_URL_KEY = @"entryURL";
+static NSString *const DEV_VENDOR_FINGERPRINT_KEY = @"fingerprint";
+static NSString *const DEV_VENDOR_BACKGROUND_HMR_KEY = @"backgroundHMREnabled";
+static NSString *const BACKGROUND_HMR_REASON_PREFIX = @"onekey-bg-hmr:";
#pragma mark - Singleton
+ (instancetype)sharedInstance {
@@ -172,7 +198,8 @@ - (instancetype)init {
#pragma mark - SharedBridge
-+ (void)installSharedBridgeInMainRuntime:(RCTHost *)host {
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host
+ completion:(dispatch_block_t)completion {
if (!host) {
[BTLogger error:@"Cannot install SharedBridge: RCTHost is nil"];
return;
@@ -196,15 +223,30 @@ + (void)installSharedBridgeInMainRuntime:(RCTHost *)host {
// see a nil strong reference and bail out — instead of dispatching
// callFunctionOnBufferedRuntimeExecutor on a freed instance and
// crashing (EXC_BAD_ACCESS / use-after-free).
+ __weak RCTHost *weakHost = host;
__weak id weakInstance = instance;
- RPCRuntimeExecutor mainExecutor = [weakInstance](std::function work) {
- id strongInstance = weakInstance;
- if (!strongInstance) {
- return;
- }
- [strongInstance callFunctionOnBufferedRuntimeExecutor:[work](jsi::Runtime &rt) {
- work(rt);
- }];
+ RPCRuntimeExecutor mainExecutor = [weakHost, weakInstance](std::function work) {
+ // RCTHost invalidates and swaps its RCTInstance on the main queue.
+ // Serialize the identity check with that swap: retaining the old
+ // Objective-C wrapper is not sufficient because its C++
+ // ReactInstance may already have been reset during reload.
+ dispatch_async(dispatch_get_main_queue(), ^{
+ RCTHost *strongHost = weakHost;
+ id strongInstance = weakInstance;
+ if (!strongHost || !strongInstance) {
+ return;
+ }
+
+ Ivar currentInstanceIvar = class_getInstanceVariable([strongHost class], "_instance");
+ id currentInstance = object_getIvar(strongHost, currentInstanceIvar);
+ if (currentInstance != strongInstance) {
+ return;
+ }
+
+ [strongInstance callFunctionOnBufferedRuntimeExecutor:[work](jsi::Runtime &rt) {
+ work(rt);
+ }];
+ });
};
SharedRPC::install(runtime, std::move(mainExecutor), "main");
// Set the integration-health flag from inside the JS-thread lambda so
@@ -212,9 +254,30 @@ + (void)installSharedBridgeInMainRuntime:(RCTHost *)host {
// reload observer reads this to detect host hostDidStart: omissions.
[BackgroundThreadManager sharedInstance].mainSharedBridgeInstalled = YES;
[BTLogger info:@"SharedStore and SharedRPC installed in main runtime"];
+ if (completion) {
+ completion();
+ }
}];
}
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host {
+ [self installSharedBridgeInMainRuntime:host completion:nil];
+}
+
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host
+ thenStartBackgroundRunnerWithEntryURL:(NSString *)entryURL {
+ [self installSharedBridgeInMainRuntime:host completion:^{
+ [[BackgroundThreadManager sharedInstance]
+ startBackgroundRunnerWithEntryURL:entryURL];
+ }];
+}
++ (void)installSharedBridgeInMainRuntime:(RCTHost *)host
+ thenStartBackgroundRunnerWithDevVendorConfig:(NSDictionary *)config {
+ [self installSharedBridgeInMainRuntime:host completion:^{
+ [[BackgroundThreadManager sharedInstance]
+ startBackgroundRunnerWithDevVendorConfig:config];
+ }];
+}
#pragma mark - Public Methods
- (void)startBackgroundRunner {
@@ -227,6 +290,35 @@ - (void)startBackgroundRunner {
}
- (void)startBackgroundRunnerWithEntryURL:(NSString *)entryURL {
+ [self startBackgroundRunnerWithEntryURL:entryURL devVendorConfig:nil];
+}
+
+- (void)startBackgroundRunnerWithDevVendorConfig:(NSDictionary *)config {
+ NSString *commonBundlePath = config[DEV_VENDOR_COMMON_PATH_KEY];
+ NSString *entryURL = config[DEV_VENDOR_ENTRY_URL_KEY];
+ NSString *fingerprint = config[DEV_VENDOR_FINGERPRINT_KEY];
+ NSString *backgroundHMRValue = config[DEV_VENDOR_BACKGROUND_HMR_KEY];
+ NSURL *parsedEntryURL = [NSURL URLWithString:entryURL];
+ NSRegularExpression *fingerprintPattern =
+ [NSRegularExpression regularExpressionWithPattern:@"^[0-9a-f]{64}$"
+ options:0
+ error:nil];
+ if (commonBundlePath.length == 0 ||
+ ![[NSFileManager defaultManager] fileExistsAtPath:commonBundlePath] ||
+ parsedEntryURL.host.length == 0 ||
+ !([backgroundHMRValue isEqualToString:@"true"] ||
+ [backgroundHMRValue isEqualToString:@"false"]) ||
+ [fingerprintPattern numberOfMatchesInString:fingerprint
+ options:0
+ range:NSMakeRange(0, fingerprint.length)] != 1) {
+ [BTLogger error:@"Invalid dev-vendor background bootstrap config"];
+ return;
+ }
+ [self startBackgroundRunnerWithEntryURL:entryURL devVendorConfig:config];
+}
+
+- (void)startBackgroundRunnerWithEntryURL:(NSString *)entryURL
+ devVendorConfig:(NSDictionary * _Nullable)devVendorConfig {
if (self.isStarted) {
// Surface the URL mismatch when a second start... call would
// otherwise silently drop the host's intent — most common in the
@@ -249,18 +341,27 @@ - (void)startBackgroundRunnerWithEntryURL:(NSString *)entryURL {
// Updated unconditionally — first-time and re-start with a new URL
// both reflect into lastEntryURL.
self.lastEntryURL = entryURL;
+ self.lastDevVendorConfig = devVendorConfig;
[BTLogger info:[NSString stringWithFormat:@"Starting background runner with entryURL: %@", entryURL]];
dispatch_async(dispatch_get_main_queue(), ^{
+ NSUInteger runtimeGeneration = ++self.backgroundRuntimeGeneration;
NSDictionary *initialProperties = @{};
NSDictionary *launchOptions = @{};
self.reactNativeFactoryDelegate = [[BackgroundReactNativeDelegate alloc] init];
- self.reactNativeFactory = [[RCTReactNativeFactory alloc] initWithDelegate:self.reactNativeFactoryDelegate];
-
+ self.reactNativeFactory = CreateBackgroundReactNativeFactory(self.reactNativeFactoryDelegate);
+ if (devVendorConfig) {
+ [self.reactNativeFactoryDelegate
+ configureDevVendorCommonBundlePath:devVendorConfig[DEV_VENDOR_COMMON_PATH_KEY]
+ entryURL:[NSURL URLWithString:devVendorConfig[DEV_VENDOR_ENTRY_URL_KEY]]
+ fingerprint:devVendorConfig[DEV_VENDOR_FINGERPRINT_KEY]
+ backgroundHMREnabled:[devVendorConfig[DEV_VENDOR_BACKGROUND_HMR_KEY] isEqualToString:@"true"]
+ runtimeGeneration:runtimeGeneration];
+ }
// Only set jsBundleSource for debug HTTP URLs or explicit OTA overrides.
// Leaving the default release name ("background.bundle") unset lets the
// delegate fall back to split-bundle mode (common.bundle + entry).
- if (![entryURL isEqualToString:@"background.bundle"]) {
+ if (!devVendorConfig && ![entryURL isEqualToString:@"background.bundle"]) {
[self.reactNativeFactoryDelegate setJsBundleSource:std::string([entryURL UTF8String])];
}
@@ -447,6 +548,20 @@ - (void)restartWithMode:(NSString *)mode
{
BOOL isUI = [mode isEqualToString:@"ui"];
BOOL isAll = [mode isEqualToString:@"all"];
+ BOOL isBackgroundHMR = [mode isEqualToString:@"background"];
+
+ if (isBackgroundHMR) {
+#if DEBUG
+ [self restartBackgroundForHMRReason:reason completion:completion];
+#else
+ NSError *error = [NSError errorWithDomain:@"BackgroundThread"
+ code:12
+ userInfo:@{NSLocalizedDescriptionKey:
+ @"Background HMR restart is unavailable in release builds"}];
+ if (completion) completion(error);
+#endif
+ return;
+ }
if (!isUI && !isAll) {
NSError *error = [NSError errorWithDomain:@"BackgroundThread"
@@ -523,6 +638,59 @@ - (void)restartWithMode:(NSString *)mode
}
}
+- (void)restartBackgroundForHMRReason:(NSString *)reason
+ completion:(void (^)(NSError * _Nullable error))completion
+{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ if (![reason hasPrefix:BACKGROUND_HMR_REASON_PREFIX]) {
+ NSError *error = [NSError errorWithDomain:@"BackgroundThread"
+ code:13
+ userInfo:@{NSLocalizedDescriptionKey:
+ @"Background HMR restart is missing its runtime generation"}];
+ if (completion) completion(error);
+ return;
+ }
+ NSString *generationAndReason = [reason substringFromIndex:BACKGROUND_HMR_REASON_PREFIX.length];
+ NSRange separator = [generationAndReason rangeOfString:@":"];
+ NSString *generationText = separator.location == NSNotFound
+ ? generationAndReason
+ : [generationAndReason substringToIndex:separator.location];
+ NSScanner *scanner = [NSScanner scannerWithString:generationText];
+ unsigned long long generation = 0;
+ if (![scanner scanUnsignedLongLong:&generation] || !scanner.isAtEnd ||
+ generation != self.backgroundRuntimeGeneration) {
+ [BTLogger info:[NSString stringWithFormat:
+ @"[BackgroundHMR] ignored stale restart requested=%@ active=%lu",
+ generationText,
+ (unsigned long)self.backgroundRuntimeGeneration]];
+ if (completion) completion(nil);
+ return;
+ }
+ NSDictionary *config = self.lastDevVendorConfig;
+ if (![config[DEV_VENDOR_BACKGROUND_HMR_KEY] isEqualToString:@"true"] ||
+ self.backgroundHMRRestartInFlight) {
+ [BTLogger info:@"[BackgroundHMR] restart coalesced or disabled"];
+ if (completion) completion(nil);
+ return;
+ }
+
+ self.backgroundHMRRestartInFlight = YES;
+ ++self.backgroundRuntimeGeneration;
+ SharedRPC::invalidate("background");
+ self.reactNativeFactory = nil;
+ self.reactNativeFactoryDelegate = nil;
+ self.isStarted = NO;
+ if (completion) completion(nil);
+
+ // Leave the outgoing TurboModule callback before creating its replacement.
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [BTLogger info:@"[BackgroundHMR] starting replacement background runtime"];
+ [self startBackgroundRunnerWithDevVendorConfig:config];
+ self.backgroundHMRRestartInFlight = NO;
+ });
+ });
+}
+
#pragma mark - Restart Health Check
// Two-stage post-reload health-check.
@@ -605,6 +773,7 @@ - (void)scheduleHealthCheckForRestart:(NSString *)mode
if (isAll && !strongSelf.isStarted) {
NSString *cachedURL = strongSelf.lastEntryURL;
+ NSDictionary *devVendorConfig = strongSelf.lastDevVendorConfig;
// Treat the bundled default name as "no real cache" so the
// OTA warn still fires for hosts that initially bootstrapped
// with the default URL and haven't yet swapped to an OTA-
@@ -612,7 +781,12 @@ - (void)scheduleHealthCheckForRestart:(NSString *)mode
// lastEntryURL that distinguishes them.
BOOL hasCustomCachedURL = cachedURL.length > 0
&& ![cachedURL isEqualToString:@"background.bundle"];
- if (hasCustomCachedURL) {
+ if (devVendorConfig) {
+ [BTLogger info:[NSString stringWithFormat:
+ @"restart(%@): bg not respawned by host AppDelegate; replaying dev-vendor common + delta",
+ mode]];
+ [strongSelf startBackgroundRunnerWithDevVendorConfig:devVendorConfig];
+ } else if (hasCustomCachedURL) {
// Preferred path: replay the host's last entry URL. On OTA
// devices this is the OTA-resolved bundle, which keeps the
// bg moduleId table aligned with the new main bundle and
diff --git a/native-modules/react-native-background-thread/package.json b/native-modules/react-native-background-thread/package.json
index 8d9360e5..0c83713e 100644
--- a/native-modules/react-native-background-thread/package.json
+++ b/native-modules/react-native-background-thread/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-background-thread",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-background-thread",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -63,8 +63,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -76,8 +76,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-bundle-crypto/package.json b/native-modules/react-native-bundle-crypto/package.json
index f27bd1bb..89da7f9a 100644
--- a/native-modules/react-native-bundle-crypto/package.json
+++ b/native-modules/react-native-bundle-crypto/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-bundle-crypto",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-bundle-crypto",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-bundle-update/package.json b/native-modules/react-native-bundle-update/package.json
index 0d25f1c7..f3ce6096 100644
--- a/native-modules/react-native-bundle-update/package.json
+++ b/native-modules/react-native-bundle-update/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-bundle-update",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-bundle-update",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-check-biometric-auth-changed/package.json b/native-modules/react-native-check-biometric-auth-changed/package.json
index c6c4677f..dd6530cf 100644
--- a/native-modules/react-native-check-biometric-auth-changed/package.json
+++ b/native-modules/react-native-check-biometric-auth-changed/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-check-biometric-auth-changed",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-check-biometric-auth-changed",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-cloud-fs/package.json b/native-modules/react-native-cloud-fs/package.json
index af0de275..c7ec0eb6 100644
--- a/native-modules/react-native-cloud-fs/package.json
+++ b/native-modules/react-native-cloud-fs/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-cloud-fs",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-cloud-fs TurboModule for OneKey",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -53,9 +53,9 @@
"react-native": "*"
},
"devDependencies": {
- "@react-native/babel-preset": "0.83.0",
- "react": "19.2.0",
- "react-native": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"typescript": "^5.9.2"
},
diff --git a/native-modules/react-native-cloud-kit-module/package.json b/native-modules/react-native-cloud-kit-module/package.json
index 05e9dd2c..7fe60720 100644
--- a/native-modules/react-native-cloud-kit-module/package.json
+++ b/native-modules/react-native-cloud-kit-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-cloud-kit-module",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-cloud-kit-module",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-device-utils/package.json b/native-modules/react-native-device-utils/package.json
index afa7b5c3..f2e18f55 100644
--- a/native-modules/react-native-device-utils/package.json
+++ b/native-modules/react-native-device-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-device-utils",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-device-utils",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-dns-lookup/package.json b/native-modules/react-native-dns-lookup/package.json
index 78741d8b..af959e21 100644
--- a/native-modules/react-native-dns-lookup/package.json
+++ b/native-modules/react-native-dns-lookup/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-dns-lookup",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-dns-lookup",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -61,8 +61,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -74,8 +74,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-get-random-values/package.json b/native-modules/react-native-get-random-values/package.json
index ad93aa55..c46c08ed 100644
--- a/native-modules/react-native-get-random-values/package.json
+++ b/native-modules/react-native-get-random-values/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-get-random-values",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-get-random-values",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-keychain-module/package.json b/native-modules/react-native-keychain-module/package.json
index 90f1b862..b6200adf 100644
--- a/native-modules/react-native-keychain-module/package.json
+++ b/native-modules/react-native-keychain-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-keychain-module",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-keychain-module",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-lite-card/package.json b/native-modules/react-native-lite-card/package.json
index 27b6207a..8a7afba6 100644
--- a/native-modules/react-native-lite-card/package.json
+++ b/native-modules/react-native-lite-card/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-lite-card",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "lite card",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -78,8 +78,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-network-info/package.json b/native-modules/react-native-network-info/package.json
index ab3257d0..0603aa63 100644
--- a/native-modules/react-native-network-info/package.json
+++ b/native-modules/react-native-network-info/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-network-info",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-network-info",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -61,8 +61,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -74,8 +74,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-network-throttle/package.json b/native-modules/react-native-network-throttle/package.json
index 29cd4afe..b43c85c2 100644
--- a/native-modules/react-native-network-throttle/package.json
+++ b/native-modules/react-native-network-throttle/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-network-throttle",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-network-throttle",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -63,8 +63,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -76,8 +76,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-pbkdf2/package.json b/native-modules/react-native-pbkdf2/package.json
index e8c176c8..f868439b 100644
--- a/native-modules/react-native-pbkdf2/package.json
+++ b/native-modules/react-native-pbkdf2/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-pbkdf2",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-pbkdf2",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -56,8 +56,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -69,8 +69,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-perf-memory/package.json b/native-modules/react-native-perf-memory/package.json
index f71fa5e3..1e504591 100644
--- a/native-modules/react-native-perf-memory/package.json
+++ b/native-modules/react-native-perf-memory/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-perf-memory",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-perf-memory",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-perf-stats/package.json b/native-modules/react-native-perf-stats/package.json
index 1c11d026..77739e09 100644
--- a/native-modules/react-native-perf-stats/package.json
+++ b/native-modules/react-native-perf-stats/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-perf-stats",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-perf-stats",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "0.83.0",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-ping/package.json b/native-modules/react-native-ping/package.json
index 871ca2aa..5e8831de 100644
--- a/native-modules/react-native-ping/package.json
+++ b/native-modules/react-native-ping/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-ping",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-ping TurboModule for OneKey",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -53,9 +53,9 @@
"react-native": "*"
},
"devDependencies": {
- "@react-native/babel-preset": "0.83.0",
- "react": "19.2.0",
- "react-native": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"typescript": "^5.9.2"
},
diff --git a/native-modules/react-native-range-downloader/package.json b/native-modules/react-native-range-downloader/package.json
index 51fc48ca..c2ef49fe 100644
--- a/native-modules/react-native-range-downloader/package.json
+++ b/native-modules/react-native-range-downloader/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-range-downloader",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-range-downloader",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-sni-connect/package.json b/native-modules/react-native-sni-connect/package.json
index 3b3d59a5..313f915a 100644
--- a/native-modules/react-native-sni-connect/package.json
+++ b/native-modules/react-native-sni-connect/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-sni-connect",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "A React Native library for SNI-based HTTP requests with DNS caching and request management",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -64,8 +64,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -77,8 +77,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-splash-screen/package.json b/native-modules/react-native-splash-screen/package.json
index 1833828e..318563f1 100644
--- a/native-modules/react-native-splash-screen/package.json
+++ b/native-modules/react-native-splash-screen/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-splash-screen",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-splash-screen",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.h b/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.h
index e3178b90..aeb0f842 100644
--- a/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.h
+++ b/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.h
@@ -24,5 +24,11 @@
/// @param bundlePath Absolute filesystem path to the bundle file.
/// @param host The RCTHost whose runtime should evaluate the bundle.
+ (void)loadEntryBundle:(NSString *)bundlePath inHost:(id)host;
-
+/// Download and evaluate a dev-vendor modules-only entry bundle after the
+/// host has booted from its local common HBC. HMR setup is queued after the
+/// entry bundle evaluation.
++ (void)loadDevVendorEntryBundle:(NSURL *)bundleURL
+ hmrBundleURL:(NSURL *)hmrBundleURL
+ fingerprint:(NSString *)fingerprint
+ inHost:(id)host;
@end
diff --git a/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.mm b/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.mm
index 7ec0db39..bdb58639 100644
--- a/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.mm
+++ b/native-modules/react-native-split-bundle-loader/ios/SplitBundleLoader.mm
@@ -1,5 +1,9 @@
#import "SplitBundleLoader.h"
#import "SBLLogger.h"
+#import
+#import
+#import
+#import
#import
#import
#import
@@ -11,7 +15,6 @@
#include
namespace {
-
// Zero-copy jsi::Buffer over an NSData (M4/M5).
//
// WHY: the previous code did `std::string(data.bytes, data.length)` inside a
@@ -901,7 +904,149 @@ + (void)loadEntryBundle:(NSString *)bundlePath inHost:(id)host
double totalMs = (CFAbsoluteTimeGetCurrent() - startTime) * 1000.0;
[SBLLogger info:[NSString stringWithFormat:@"[SplitBundle] loadEntryBundle: %@ dispatched in %.1fms (eval is async)", sourceURL, totalMs]];
}
-
++ (void)loadDevVendorEntryBundle:(NSURL *)bundleURL
+ hmrBundleURL:(NSURL *)hmrBundleURL
+ fingerprint:(NSString *)fingerprint
+ inHost:(id)host
+{
+ if (!host || !bundleURL || bundleURL.fileURL || bundleURL.host.length == 0 ||
+ !hmrBundleURL || hmrBundleURL.fileURL || hmrBundleURL.host.length == 0 ||
+ fingerprint.length == 0) {
+ [SBLLogger warn:@"loadDevVendorEntryBundle: invalid arguments"];
+ return;
+ }
+ RCTHost *reactHost = (RCTHost *)host;
+ Ivar ivar = class_getInstanceVariable([reactHost class], "_instance");
+ RCTInstance *instance = ivar ? object_getIvar(reactHost, ivar) : nil;
+ if (!instance) {
+ [SBLLogger warn:@"loadDevVendorEntryBundle: RCTInstance is unavailable"];
+ return;
+ }
+ NSURLComponents *components = [NSURLComponents componentsWithURL:hmrBundleURL
+ resolvingAgainstBaseURL:NO];
+ NSString *path = [components.path hasPrefix:@"/"]
+ ? [components.path substringFromIndex:1]
+ : components.path;
+ NSString *scheme = components.scheme.lowercaseString;
+ NSString *hostName = components.host;
+ NSNumber *port = components.port;
+ if (!port && [scheme isEqualToString:@"http"]) {
+ port = @80;
+ } else if (!port && [scheme isEqualToString:@"https"]) {
+ port = @443;
+ }
+ RCTDevSettings *devSettings =
+ (RCTDevSettings *)[reactHost.moduleRegistry moduleForName:"DevSettings"];
+ if (!devSettings || path.length == 0 || hostName.length == 0 ||
+ scheme.length == 0 || port.integerValue <= 0 || port.integerValue > 65535) {
+ NSError *configurationError = [NSError errorWithDomain:@"SplitBundleLoader"
+ code:3
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ @"Invalid dev-vendor HMR configuration"
+ }];
+ [SBLLogger error:@"loadDevVendorEntryBundle: invalid HMR configuration"];
+ RCTFatal(configurationError);
+ return;
+ }
+ __weak RCTHost *weakHost = reactHost;
+ __weak RCTInstance *weakInstance = instance;
+ __block NSError *downloadError = nil;
+ __block RCTSource *downloadedSource = nil;
+ dispatch_semaphore_t downloadReady = dispatch_semaphore_create(0);
+ dispatch_semaphore_t hostRegistrationReady = dispatch_semaphore_create(0);
+ [RCTJavaScriptLoader loadBundleAtURL:bundleURL
+ onProgress:^(RCTLoadingProgress *progress) { (void)progress; }
+ onComplete:^(NSError *error, RCTSource *source) {
+ downloadError = error;
+ downloadedSource = source;
+ dispatch_semaphore_signal(downloadReady);
+ }];
+ dispatch_async(dispatch_get_main_queue(), ^{
+ // Match the production loader's next-run-loop deferral so Expo finishes
+ // native module registration before the entry begins evaluating.
+ dispatch_semaphore_signal(hostRegistrationReady);
+ });
+ // Queue this before RCTHost starts/restarts surfaces. The executor remains
+ // buffered until common.hbc completes, then waits only for Metro I/O. This
+ // preserves common -> delta -> runApplication ordering without blocking the
+ // main thread. Let RCTJavaScriptLoader completion govern the cold-build wait:
+ // a fixed deadline can crash a healthy but contended Metro serialization.
+ // Keep bundleManager on the local common HBC until this buffered executor
+ // proves RCTInstance completed the initial read.
+ [instance callFunctionOnBufferedRuntimeExecutor:^(facebook::jsi::Runtime &runtime) {
+ dispatch_semaphore_wait(downloadReady, DISPATCH_TIME_FOREVER);
+ dispatch_semaphore_wait(hostRegistrationReady, DISPATCH_TIME_FOREVER);
+ RCTHost *strongHost = weakHost;
+ RCTInstance *strongInstance = weakInstance;
+ Ivar currentIvar = strongHost
+ ? class_getInstanceVariable([strongHost class], "_instance")
+ : nil;
+ if (!strongHost || !strongInstance || !currentIvar ||
+ object_getIvar(strongHost, currentIvar) != strongInstance) {
+ return;
+ }
+ RCTSource *source = downloadedSource;
+ if (downloadError || source.data.length == 0) {
+ NSError *loadError = downloadError ?: [NSError errorWithDomain:@"SplitBundleLoader"
+ code:1
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ @"Dev-vendor main delta is empty"
+ }];
+ [SBLLogger error:[NSString stringWithFormat:
+ @"loadDevVendorEntryBundle failed: %@", loadError.localizedDescription]];
+ dispatch_async(dispatch_get_main_queue(), ^{ RCTFatal(loadError); });
+ return;
+ }
+ // Keep native reload targeting the live graph after the common HBC is read.
+ strongHost.bundleManager.bundleURL = bundleURL;
+ NSData *data = source.data;
+ NSString *sourceURL = hmrBundleURL.absoluteString;
+ try {
+ facebook::jsi::Value marker = runtime.global().getProperty(
+ runtime, "__ONEKEY_DEV_VENDOR_FINGERPRINT__");
+ if (!marker.isString() ||
+ marker.asString(runtime).utf8(runtime) != std::string(fingerprint.UTF8String)) {
+ throw std::runtime_error("Dev-vendor common fingerprint mismatch");
+ }
+ runtime.global().setProperty(
+ runtime,
+ "__ONEKEY_DEV_VENDOR_FULL_BUNDLE_URL__",
+ facebook::jsi::String::createFromUtf8(runtime, sourceURL.UTF8String));
+ auto buffer = std::make_shared(data);
+ runtime.evaluateJavaScript(buffer, sourceURL.UTF8String);
+ [SBLLogger info:[NSString stringWithFormat:
+ @"[DevVendor] main common.hbc + Metro delta ready (%lu bytes)",
+ (unsigned long)data.length]];
+ } catch (const std::exception &exception) {
+ NSString *message = [NSString stringWithUTF8String:exception.what()];
+ NSError *evaluationError = [NSError errorWithDomain:@"SplitBundleLoader"
+ code:2
+ userInfo:@{
+ NSLocalizedDescriptionKey:
+ message ?: @"Dev-vendor main delta evaluation failed"
+ }];
+ dispatch_async(dispatch_get_main_queue(), ^{ RCTFatal(evaluationError); });
+ }
+ }];
+ // The initial HBC has a file URL, so RN intentionally skipped HMR setup.
+ // Queue exactly one setup call after the common+delta executor but before
+ // RCTHost queues surface startup. Full reload creates a new runtime and runs
+ // this path again; Fast Refresh reuses the existing HMR client.
+ [reactHost callFunctionOnJSModule:@"HMRClient"
+ method:@"setup"
+ args:@[
+ @"ios",
+ path,
+ hostName,
+ port,
+ @(devSettings.isHotLoadingEnabled),
+ scheme,
+ hmrBundleURL.absoluteString
+ ]];
+ [SBLLogger info:@"[DevVendor] main HMR client setup queued"];
+}
// MARK: - loadSegment
- (void)loadSegment:(double)segmentId
diff --git a/native-modules/react-native-split-bundle-loader/package.json b/native-modules/react-native-split-bundle-loader/package.json
index 29e12160..d0413580 100644
--- a/native-modules/react-native-split-bundle-loader/package.json
+++ b/native-modules/react-native-split-bundle-loader/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-split-bundle-loader",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-split-bundle-loader",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -61,8 +61,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -74,8 +74,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-tcp-socket/package.json b/native-modules/react-native-tcp-socket/package.json
index fe8812ed..5f14192d 100644
--- a/native-modules/react-native-tcp-socket/package.json
+++ b/native-modules/react-native-tcp-socket/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-tcp-socket",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-tcp-socket",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -57,8 +57,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -70,8 +70,8 @@
"jest": "^29.7.0",
"lefthook": "^2.0.3",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"release-it": "^19.0.4",
"turbo": "^2.5.6",
diff --git a/native-modules/react-native-zip-archive/package.json b/native-modules/react-native-zip-archive/package.json
index 5645ee66..782706d2 100644
--- a/native-modules/react-native-zip-archive/package.json
+++ b/native-modules/react-native-zip-archive/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-zip-archive",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-zip-archive Nitro HybridObject for OneKey",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -62,10 +62,10 @@
"react-native-nitro-modules": "0.36.5"
},
"devDependencies": {
- "@react-native/babel-preset": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
"nitrogen": "0.36.5",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.17",
"react-native-nitro-modules": "0.36.5",
"typescript": "^5.9.2"
diff --git a/native-views/react-native-auto-size-input/package.json b/native-views/react-native-auto-size-input/package.json
index 9fa9c47e..14bc56e8 100644
--- a/native-views/react-native-auto-size-input/package.json
+++ b/native-views/react-native-auto-size-input/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-auto-size-input",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "Auto-sizing text input with font scaling, prefix and suffix support",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-views/react-native-chart-webview/package.json b/native-views/react-native-chart-webview/package.json
index 13f80b8b..505ce057 100644
--- a/native-views/react-native-chart-webview/package.json
+++ b/native-views/react-native-chart-webview/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-chart-webview",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-chart-webview",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-views/react-native-pager-view/package.json b/native-views/react-native-pager-view/package.json
index ebb2fb0e..40705125 100644
--- a/native-views/react-native-pager-view/package.json
+++ b/native-views/react-native-pager-view/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-pager-view",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "React Native wrapper for Android and iOS ViewPager",
"source": "./src/index.tsx",
"main": "./lib/module/index.js",
@@ -59,8 +59,8 @@
},
"devDependencies": {
"@types/react": "^19.2.0",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"typescript": "^5.9.2"
},
diff --git a/native-views/react-native-perp-depth-bar/package.json b/native-views/react-native-perp-depth-bar/package.json
index df3505cf..7ff2f86c 100644
--- a/native-views/react-native-perp-depth-bar/package.json
+++ b/native-views/react-native-perp-depth-bar/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-perp-depth-bar",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-perp-depth-bar",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-views/react-native-scroll-guard/package.json b/native-views/react-native-scroll-guard/package.json
index 05cbafeb..1a12093d 100644
--- a/native-views/react-native-scroll-guard/package.json
+++ b/native-views/react-native-scroll-guard/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-scroll-guard",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "A native view wrapper that prevents parent scrollable containers (PagerView/ViewPager2) from intercepting child scroll gestures",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -60,11 +60,11 @@
"registry": "https://registry.npmjs.org/"
},
"devDependencies": {
- "@react-native/babel-preset": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
"del-cli": "^6.0.0",
"nitrogen": "0.36.5",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"typescript": "^5.9.2"
diff --git a/native-views/react-native-segment-slider/package.json b/native-views/react-native-segment-slider/package.json
index 520b0595..5cfc147c 100644
--- a/native-views/react-native-segment-slider/package.json
+++ b/native-views/react-native-segment-slider/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-segment-slider",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-segment-slider",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-views/react-native-skeleton/package.json b/native-views/react-native-skeleton/package.json
index bcac1648..669313de 100644
--- a/native-views/react-native-skeleton/package.json
+++ b/native-views/react-native-skeleton/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-skeleton",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "react-native-skeleton",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
@@ -66,8 +66,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -80,8 +80,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/native-views/react-native-tab-view/package.json b/native-views/react-native-tab-view/package.json
index 1be40eab..81dcdd10 100644
--- a/native-views/react-native-tab-view/package.json
+++ b/native-views/react-native-tab-view/package.json
@@ -1,6 +1,6 @@
{
"name": "@onekeyfe/react-native-tab-view",
- "version": "3.0.88",
+ "version": "3.0.92",
"description": "Native Bottom Tabs for React Native (UIKit implementation)",
"source": "./src/index.tsx",
"main": "./lib/module/index.js",
@@ -61,8 +61,8 @@
},
"devDependencies": {
"@types/react": "^19.2.0",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"typescript": "^5.9.2"
},
diff --git a/native-views/react-native-text-input/LICENSE b/native-views/react-native-text-input/LICENSE
new file mode 100644
index 00000000..c7fd288b
--- /dev/null
+++ b/native-views/react-native-text-input/LICENSE
@@ -0,0 +1,20 @@
+MIT License
+
+Copyright (c) 2024 OneKeyHQ
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/native-views/react-native-text-input/OneKeyTextInput.podspec b/native-views/react-native-text-input/OneKeyTextInput.podspec
new file mode 100644
index 00000000..41ee3049
--- /dev/null
+++ b/native-views/react-native-text-input/OneKeyTextInput.podspec
@@ -0,0 +1,18 @@
+require "json"
+
+package = JSON.parse(File.read(File.join(__dir__, "package.json")))
+
+Pod::Spec.new do |s|
+ s.name = "OneKeyTextInput"
+ s.version = package["version"]
+ s.summary = package["description"]
+ s.homepage = package["homepage"]
+ s.license = package["license"]
+ s.authors = package["author"]
+ s.platforms = { :ios => "15.5" }
+ s.source = { :git => "https://github.com/OneKeyHQ/app-modules.git", :tag => "#{s.version}" }
+ s.source_files = "ios/**/*.{h,m,mm}"
+ s.frameworks = "UIKit", "UniformTypeIdentifiers"
+
+ s.dependency "React-Core"
+end
diff --git a/native-views/react-native-text-input/README.md b/native-views/react-native-text-input/README.md
new file mode 100644
index 00000000..2ff5e4f7
--- /dev/null
+++ b/native-views/react-native-text-input/README.md
@@ -0,0 +1,15 @@
+# @onekeyfe/react-native-text-input
+
+React Native TextInput with paste events for text and images on Android and iOS.
+
+```tsx
+import TextInput from '@onekeyfe/react-native-text-input';
+
+ {
+ console.log(nativeEvent.items);
+ }}
+/>
+```
+
+Image paste items contain a MIME type and a temporary local file URL. Text paste items use `text/plain`.
diff --git a/native-views/react-native-text-input/android/build.gradle b/native-views/react-native-text-input/android/build.gradle
new file mode 100644
index 00000000..b103755d
--- /dev/null
+++ b/native-views/react-native-text-input/android/build.gradle
@@ -0,0 +1,126 @@
+buildscript {
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["TextInput_kotlinVersion"]
+
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath "com.android.tools.build:gradle:8.7.2"
+ // noinspection DifferentKotlinGradleVersion
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+def reactNativeArchitectures() {
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
+}
+
+def isNewArchitectureEnabled() {
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
+}
+
+apply plugin: "com.android.library"
+apply plugin: "kotlin-android"
+
+if (isNewArchitectureEnabled()) {
+ apply plugin: "com.facebook.react"
+}
+
+def getExtOrDefault(name) {
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["TextInput_" + name]
+}
+
+def getExtOrIntegerDefault(name) {
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["TextInput_" + name]).toInteger()
+}
+
+def supportsNamespace() {
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
+ def major = parsed[0].toInteger()
+ def minor = parsed[1].toInteger()
+
+ // Namespace support was added in 7.3.0
+ return (major == 7 && minor >= 3) || major >= 8
+}
+
+android {
+ if (supportsNamespace()) {
+ namespace "com.textinput"
+
+ sourceSets {
+ main {
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
+ }
+ }
+ }
+
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
+
+ defaultConfig {
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
+
+ }
+
+ buildFeatures {
+ buildConfig true
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ }
+ }
+
+ lintOptions {
+ disable "GradleCompatible"
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ sourceSets {
+ main {
+ if (isNewArchitectureEnabled()) {
+ java.srcDirs += [
+ "src/newarch",
+ // Codegen specs
+ "generated/java",
+ "generated/jni"
+ ]
+ } else {
+ java.srcDirs += ["src/oldarch"]
+ }
+ }
+ }
+}
+
+repositories {
+ mavenCentral()
+ google()
+}
+
+def kotlin_version = getExtOrDefault("kotlinVersion")
+
+dependencies {
+ // For < 0.71, this will be from the local maven repo
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
+ //noinspection GradleDynamicVersion
+ implementation "com.facebook.react:react-android"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+}
+
+if (isNewArchitectureEnabled()) {
+ react {
+ jsRootDir = file("../src/")
+ libraryName = "RNTextInputViewSpec"
+ codegenJavaPackageName = "com.textinput"
+ }
+}
diff --git a/native-views/react-native-text-input/android/gradle.properties b/native-views/react-native-text-input/android/gradle.properties
new file mode 100644
index 00000000..d6570b57
--- /dev/null
+++ b/native-views/react-native-text-input/android/gradle.properties
@@ -0,0 +1,5 @@
+TextInput_kotlinVersion=2.1.20
+TextInput_minSdkVersion=24
+TextInput_targetSdkVersion=36
+TextInput_compileSdkVersion=36
+TextInput_ndkversion=27.1.12297006
diff --git a/native-views/react-native-text-input/android/src/main/AndroidManifest.xml b/native-views/react-native-text-input/android/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..b8dead5f
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/native-views/react-native-text-input/android/src/main/AndroidManifestNew.xml b/native-views/react-native-text-input/android/src/main/AndroidManifestNew.xml
new file mode 100644
index 00000000..a2f47b60
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/AndroidManifestNew.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/native-views/react-native-text-input/android/src/main/java/com/textinput/PasteWatcher.kt b/native-views/react-native-text-input/android/src/main/java/com/textinput/PasteWatcher.kt
new file mode 100644
index 00000000..bdd77590
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/java/com/textinput/PasteWatcher.kt
@@ -0,0 +1,10 @@
+package so.onekey.app.wallet.pasteinput
+
+/**
+ * Implement this interface to be informed of paste event in the
+ * ReactTextEdit. This is used by the ReactTextInputManager to forward events
+ * from the EditText to JS
+ */
+interface PasteWatcher {
+ fun onPaste(type: String, data: String)
+}
diff --git a/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPackage.kt b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPackage.kt
new file mode 100644
index 00000000..dfb02ebf
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPackage.kt
@@ -0,0 +1,19 @@
+package com.textinput
+
+import com.facebook.react.ReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.uimanager.ViewManager
+import java.util.ArrayList
+
+class TextInputViewPackage : ReactPackage {
+ override fun createViewManagers(reactContext: ReactApplicationContext): List> {
+ val viewManagers: MutableList> = ArrayList()
+ viewManagers.add(TextInputViewManager())
+ return viewManagers
+ }
+
+ override fun createNativeModules(reactContext: ReactApplicationContext): List {
+ return emptyList()
+ }
+}
diff --git a/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPasteEvent.kt b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPasteEvent.kt
new file mode 100644
index 00000000..a417b17e
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputPasteEvent.kt
@@ -0,0 +1,48 @@
+package com.textinput
+
+import androidx.annotation.Nullable
+import com.facebook.react.bridge.Arguments
+import com.facebook.react.bridge.WritableMap
+import com.facebook.react.bridge.WritableArray
+import com.facebook.react.uimanager.common.ViewUtil
+import com.facebook.react.uimanager.events.Event
+
+/**
+ * Event emitted by EditText native view when clipboard content is pasted
+ */
+class TextInputPasteEvent : Event {
+
+ companion object {
+ private const val EVENT_NAME = "topPaste"
+ }
+
+ private val mType: String
+ private val mData: String
+
+ @Deprecated("Use the constructor with surfaceId")
+ constructor(viewId: Int, type: String, data: String) : this(ViewUtil.NO_SURFACE_ID, viewId, type, data)
+
+ constructor(surfaceId: Int, viewId: Int, type: String, data: String) : super(surfaceId, viewId) {
+ mType = type
+ mData = data
+ }
+
+ override fun getEventName(): String = EVENT_NAME
+
+ override fun canCoalesce(): Boolean = false
+
+ @Nullable
+ override fun getEventData(): WritableMap? {
+ val eventData = Arguments.createMap()
+
+ val items = Arguments.createArray()
+ val item = Arguments.createMap()
+ item.putString("type", mType)
+ item.putString("data", mData)
+ items.pushMap(item)
+
+ eventData.putArray("items", items)
+
+ return eventData
+ }
+}
diff --git a/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputView.kt b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputView.kt
new file mode 100644
index 00000000..9de35d5e
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputView.kt
@@ -0,0 +1,80 @@
+package com.textinput
+
+import android.content.ClipData
+import android.content.ClipDescription
+import android.content.ClipboardManager
+import android.content.Context
+import android.os.Build
+import android.text.Spanned
+import androidx.annotation.Nullable
+import com.facebook.react.uimanager.UIManagerHelper
+import com.facebook.react.views.textinput.ReactEditText
+import so.onekey.app.wallet.pasteinput.PasteWatcher
+import android.view.Gravity
+
+class TextInputView(context: Context) : ReactEditText(context) {
+
+ private var mPasteWatcher: PasteWatcher? = null
+
+ init {
+ includeFontPadding = false
+ }
+
+ override fun scrollTo(x: Int, y: Int) {
+ if (gravity and Gravity.VERTICAL_GRAVITY_MASK == Gravity.CENTER_VERTICAL) {
+ super.scrollTo(x, 0)
+ } else {
+ super.scrollTo(x, y)
+ }
+ }
+
+ override fun onTextContextMenuItem(id: Int): Boolean {
+ if (id == android.R.id.paste || id == android.R.id.pasteAsPlainText) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ val newId = android.R.id.pasteAsPlainText
+ mPasteWatcher?.let { pasteWatcher ->
+ val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val clipData = clipboardManager.primaryClip
+ var type: String? = null
+ var data: String? = null
+ if (clipData?.description?.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN) == true) {
+ type = ClipDescription.MIMETYPE_TEXT_PLAIN
+ data = clipData.getItemAt(0).text.toString()
+ } else {
+ val itemUri = clipData?.getItemAt(0)?.uri
+ itemUri?.let {
+ val cr = UIManagerHelper.getReactContext(this)?.contentResolver
+ type = cr?.getType(it)
+ data = it.toString()
+ }
+ }
+ if (type != null && data != null) {
+ pasteWatcher.onPaste(type!!, data!!)
+ }
+ }
+ return super.onTextContextMenuItem(newId)
+ } else {
+ val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val previousClipData = clipboard.primaryClip
+ previousClipData?.let {
+ for (i in 0 until it.itemCount) {
+ val text = it.getItemAt(i).coerceToText(context)
+ val paste = if (text is Spanned) text.toString() else text
+ paste?.let { pasteText ->
+ val clipData = ClipData.newPlainText(null, pasteText)
+ clipboard.setPrimaryClip(clipData)
+ }
+ }
+ val actionPerformed = super.onTextContextMenuItem(id)
+ clipboard.setPrimaryClip(previousClipData)
+ return actionPerformed
+ }
+ }
+ }
+ return super.onTextContextMenuItem(id)
+ }
+
+ fun setPasteWatcher(@Nullable pasteWatcher: PasteWatcher?) {
+ mPasteWatcher = pasteWatcher
+ }
+}
diff --git a/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputViewManager.kt b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputViewManager.kt
new file mode 100644
index 00000000..110e65da
--- /dev/null
+++ b/native-views/react-native-text-input/android/src/main/java/com/textinput/TextInputViewManager.kt
@@ -0,0 +1,72 @@
+package com.textinput
+
+import android.text.InputType
+import android.view.ViewGroup
+import com.facebook.react.common.MapBuilder
+import com.facebook.react.module.annotations.ReactModule
+import com.facebook.react.uimanager.ThemedReactContext
+import com.facebook.react.uimanager.UIManagerHelper
+import com.facebook.react.uimanager.annotations.ReactProp
+import com.facebook.react.views.textinput.ReactEditText
+import com.facebook.react.views.textinput.ReactTextInputManager
+import so.onekey.app.wallet.pasteinput.PasteWatcher
+
+@ReactModule(name = TextInputViewManager.REACT_CLASS)
+class TextInputViewManager : ReactTextInputManager() {
+
+ companion object {
+ const val REACT_CLASS = "OneKeyTextInput"
+ }
+
+ override fun getName(): String = REACT_CLASS
+
+ override fun createViewInstance(context: ThemedReactContext): ReactEditText {
+ val editText = TextInputView(context)
+ val inputType = editText.inputType
+ editText.inputType = inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE.inv()
+ editText.returnKeyType = "done"
+ editText.layoutParams = ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ return editText
+ }
+
+ // Fix return type to match ReactTextInputManager's definition, which is Map
+ override fun getExportedCustomDirectEventTypeConstants(): Map {
+ val baseEventTypeConstants =
+ (super.getExportedCustomDirectEventTypeConstants() as? MutableMap)
+ ?: mutableMapOf()
+ baseEventTypeConstants["topPaste"] = MapBuilder.of("registrationName", "onPaste")
+ return baseEventTypeConstants
+ }
+
+ @ReactProp(name = "onPaste", defaultBoolean = false)
+ fun setOnPaste(view: TextInputView, onPaste: Boolean) {
+ if (onPaste) {
+ view.setPasteWatcher(ReactPasteWatcher(view))
+ } else {
+ view.setPasteWatcher(null)
+ }
+ }
+
+ private class ReactPasteWatcher(editText: TextInputView) : PasteWatcher {
+ private val mReactEditText: TextInputView = editText
+
+ override fun onPaste(type: String, data: String) {
+ val reactContext = UIManagerHelper.getReactContext(mReactEditText) ?: return
+ val eventDispatcher =
+ UIManagerHelper.getEventDispatcherForReactTag(reactContext, mReactEditText.id)
+ ?: return
+
+ eventDispatcher.dispatchEvent(
+ TextInputPasteEvent(
+ UIManagerHelper.getSurfaceId(reactContext),
+ mReactEditText.id,
+ type,
+ data
+ )
+ )
+ }
+ }
+}
diff --git a/native-views/react-native-text-input/babel.config.js b/native-views/react-native-text-input/babel.config.js
new file mode 100644
index 00000000..cf231eec
--- /dev/null
+++ b/native-views/react-native-text-input/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ presets: [
+ ["module:react-native-builder-bob/babel-preset", { modules: "commonjs" }],
+ ],
+};
diff --git a/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.h b/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.h
new file mode 100644
index 00000000..a00bb642
--- /dev/null
+++ b/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.h
@@ -0,0 +1,11 @@
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface OneKeyTextInputPasteObserver : RCTEventEmitter
+
++ (void)emitPasteForTarget:(NSInteger)target type:(NSString *)type data:(NSString *)data;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.mm b/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.mm
new file mode 100644
index 00000000..89896bf1
--- /dev/null
+++ b/native-views/react-native-text-input/ios/OneKeyTextInputPasteObserver.mm
@@ -0,0 +1,204 @@
+#import "OneKeyTextInputPasteObserver.h"
+
+#import
+#import
+#import
+#import
+#import
+#import
+
+static NSString *const OneKeyTextInputPasteEvent = @"OneKeyTextInputPaste";
+static __weak OneKeyTextInputPasteObserver *OneKeyPasteObserver = nil;
+static BOOL OneKeyPasteObserverHasListeners = NO;
+static const void *OneKeyPasteInFlightKey = &OneKeyPasteInFlightKey;
+
+@implementation OneKeyTextInputPasteObserver
+
+RCT_EXPORT_MODULE(OneKeyTextInputPasteObserver)
+
++ (BOOL)requiresMainQueueSetup
+{
+ return YES;
+}
+
+- (instancetype)init
+{
+ if (self = [super init]) {
+ OneKeyPasteObserver = self;
+ }
+ return self;
+}
+
+- (NSArray *)supportedEvents
+{
+ return @[ OneKeyTextInputPasteEvent ];
+}
+
+- (void)startObserving
+{
+ OneKeyPasteObserverHasListeners = YES;
+}
+
+- (void)stopObserving
+{
+ OneKeyPasteObserverHasListeners = NO;
+}
+
++ (void)emitPasteForTarget:(NSInteger)target type:(NSString *)type data:(NSString *)data
+{
+ NSCharacterSet *whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet;
+ if (target <= 0 ||
+ [type stringByTrimmingCharactersInSet:whitespace].length == 0 ||
+ [data stringByTrimmingCharactersInSet:whitespace].length == 0) {
+ return;
+ }
+ dispatch_async(dispatch_get_main_queue(), ^{
+ if (!OneKeyPasteObserverHasListeners || OneKeyPasteObserver == nil) {
+ return;
+ }
+ [OneKeyPasteObserver sendEventWithName:OneKeyTextInputPasteEvent
+ body:@{
+ @"target" : @(target),
+ @"items" : @[ @{ @"type" : type, @"data" : data } ],
+ }];
+ });
+}
+
+@end
+
+static NSInteger OneKeyReactTagForBackedTextInput(UIView *view)
+{
+ for (UIView *candidate = view; candidate != nil; candidate = candidate.superview) {
+ if (candidate.reactTag != nil) {
+ return candidate.reactTag.integerValue;
+ }
+ if (candidate.tag > 0 && [NSStringFromClass(candidate.class) containsString:@"TextInputComponentView"]) {
+ return candidate.tag;
+ }
+ }
+ return 0;
+}
+
+static void OneKeyEmitPaste(UIView *view, NSString *type, NSString *data)
+{
+ [OneKeyTextInputPasteObserver emitPasteForTarget:OneKeyReactTagForBackedTextInput(view) type:type data:data];
+}
+
+static BOOL OneKeyProcessImagePaste(UIView *view, UIPasteboard *pasteboard, dispatch_block_t fallbackPaste)
+{
+ if ([objc_getAssociatedObject(view, OneKeyPasteInFlightKey) boolValue]) {
+ return YES;
+ }
+
+ for (NSItemProvider *itemProvider in pasteboard.itemProviders) {
+ for (NSString *identifier in itemProvider.registeredTypeIdentifiers) {
+ UTType *type = [UTType typeWithIdentifier:identifier];
+ if (type == nil || ![type conformsToType:UTTypeImage]) {
+ continue;
+ }
+
+ objc_setAssociatedObject(view, OneKeyPasteInFlightKey, @YES, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ NSString *clipboardString = pasteboard.hasStrings ? pasteboard.string : nil;
+ NSInteger target = OneKeyReactTagForBackedTextInput(view);
+ [itemProvider loadDataRepresentationForTypeIdentifier:identifier
+ completionHandler:^(NSData *data, NSError *error) {
+ NSString *mimeType = type.preferredMIMEType ?: @"application/octet-stream";
+ NSString *fileExtension = type.preferredFilenameExtension ?: @"bin";
+ NSString *fileName = [NSString stringWithFormat:@"%@.%@", NSUUID.UUID.UUIDString, fileExtension];
+ NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
+ BOOL writeSucceeded = error == nil && data != nil && [data writeToFile:filePath atomically:YES];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ objc_setAssociatedObject(view, OneKeyPasteInFlightKey, @NO, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ if (writeSucceeded) {
+ [OneKeyTextInputPasteObserver emitPasteForTarget:target
+ type:mimeType
+ data:[NSURL fileURLWithPath:filePath].absoluteString];
+ } else {
+ if (clipboardString.length > 0) {
+ [OneKeyTextInputPasteObserver emitPasteForTarget:target type:@"text/plain" data:clipboardString];
+ }
+ fallbackPaste();
+ }
+ });
+ }];
+ return YES;
+ }
+ }
+ return NO;
+}
+
+static void OneKeySwizzle(Class cls, SEL originalSelector, SEL replacementSelector)
+{
+ Method originalMethod = class_getInstanceMethod(cls, originalSelector);
+ Method replacementMethod = class_getInstanceMethod(cls, replacementSelector);
+ if (originalMethod != nil && replacementMethod != nil) {
+ method_exchangeImplementations(originalMethod, replacementMethod);
+ }
+}
+
+@implementation RCTUITextField (OneKeyPaste)
+
++ (void)load
+{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ OneKeySwizzle(self, @selector(paste:), @selector(onekey_paste:));
+ OneKeySwizzle(self, @selector(canPerformAction:withSender:), @selector(onekey_canPerformAction:withSender:));
+ });
+}
+
+- (void)onekey_paste:(id)sender
+{
+ UIPasteboard *pasteboard = UIPasteboard.generalPasteboard;
+ if (pasteboard.hasImages && OneKeyProcessImagePaste(self, pasteboard, ^{ [self onekey_paste:nil]; })) {
+ return;
+ }
+ if (pasteboard.hasStrings) {
+ OneKeyEmitPaste(self, @"text/plain", pasteboard.string);
+ }
+ [self onekey_paste:sender];
+}
+
+- (BOOL)onekey_canPerformAction:(SEL)action withSender:(id)sender
+{
+ if (action == @selector(paste:) && UIPasteboard.generalPasteboard.hasImages) {
+ return YES;
+ }
+ return [self onekey_canPerformAction:action withSender:sender];
+}
+
+@end
+
+@implementation RCTUITextView (OneKeyPaste)
+
++ (void)load
+{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ OneKeySwizzle(self, @selector(paste:), @selector(onekey_paste:));
+ OneKeySwizzle(self, @selector(canPerformAction:withSender:), @selector(onekey_canPerformAction:withSender:));
+ });
+}
+
+- (void)onekey_paste:(id)sender
+{
+ UIPasteboard *pasteboard = UIPasteboard.generalPasteboard;
+ if (pasteboard.hasImages && OneKeyProcessImagePaste(self, pasteboard, ^{ [self onekey_paste:nil]; })) {
+ return;
+ }
+ if (pasteboard.hasStrings) {
+ OneKeyEmitPaste(self, @"text/plain", pasteboard.string);
+ }
+ [self onekey_paste:sender];
+}
+
+- (BOOL)onekey_canPerformAction:(SEL)action withSender:(id)sender
+{
+ if (action == @selector(paste:) && UIPasteboard.generalPasteboard.hasImages) {
+ return YES;
+ }
+ return [self onekey_canPerformAction:action withSender:sender];
+}
+
+@end
diff --git a/native-views/react-native-text-input/package.json b/native-views/react-native-text-input/package.json
new file mode 100644
index 00000000..839296f8
--- /dev/null
+++ b/native-views/react-native-text-input/package.json
@@ -0,0 +1,93 @@
+{
+ "name": "@onekeyfe/react-native-text-input",
+ "version": "3.0.92",
+ "description": "React Native TextInput with native paste events",
+ "source": "./src/index.tsx",
+ "main": "./lib/module/index.js",
+ "types": "./lib/typescript/src/index.d.ts",
+ "files": [
+ "src",
+ "lib",
+ "android",
+ "ios",
+ "OneKeyTextInput.podspec",
+ "react-native.config.js",
+ "!ios/build",
+ "!android/build",
+ "!android/gradle",
+ "!android/gradlew",
+ "!android/gradlew.bat",
+ "!android/local.properties",
+ "!**/__tests__",
+ "!**/__fixtures__",
+ "!**/__mocks__",
+ "!**/.*",
+ "!**/*.map"
+ ],
+ "scripts": {
+ "clean": "del-cli android/build lib",
+ "prepare": "rm -rf lib && bob build",
+ "typecheck": "tsc",
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
+ "test": "jest",
+ "release": "yarn prepare && npm whoami && npm publish --access public"
+ },
+ "keywords": [
+ "react-native",
+ "ios",
+ "android",
+ "text-input",
+ "paste"
+ ],
+ "homepage": "https://github.com/OneKeyHQ/app-modules#readme",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/OneKeyHQ/app-modules.git",
+ "directory": "native-views/react-native-text-input"
+ },
+ "author": "@onekeyfe (https://github.com/OneKeyHQ/app-modules)",
+ "license": "MIT",
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org/"
+ },
+ "devDependencies": {
+ "@react-native/babel-preset": "0.86.2",
+ "@types/react": "^19.2.0",
+ "del-cli": "^6.0.0",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
+ "react-native-builder-bob": "^0.40.13",
+ "typescript": "^5.9.2"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ },
+ "packageManager": "yarn@4.1.0",
+ "react-native-builder-bob": {
+ "source": "src",
+ "output": "lib",
+ "targets": [
+ [
+ "module",
+ {
+ "esm": true
+ }
+ ],
+ [
+ "typescript",
+ {
+ "project": "tsconfig.build.json"
+ }
+ ]
+ ]
+ },
+ "codegenConfig": {
+ "name": "RNTextInputViewSpec",
+ "type": "components",
+ "jsSrcsDir": "src",
+ "android": {
+ "javaPackageName": "com.textinput"
+ }
+ }
+}
diff --git a/native-views/react-native-text-input/react-native.config.js b/native-views/react-native-text-input/react-native.config.js
new file mode 100644
index 00000000..e1b1e9ff
--- /dev/null
+++ b/native-views/react-native-text-input/react-native.config.js
@@ -0,0 +1,12 @@
+/**
+ * @type {import('@react-native-community/cli-types').UserDependencyConfig}
+ */
+module.exports = {
+ dependency: {
+ platforms: {
+ android: {
+ cmakeListsPath: "build/generated/source/codegen/jni/CMakeLists.txt",
+ },
+ },
+ },
+};
diff --git a/native-views/react-native-text-input/src/AndroidTextInputNativeComponent.js b/native-views/react-native-text-input/src/AndroidTextInputNativeComponent.js
new file mode 100644
index 00000000..5e585fd2
--- /dev/null
+++ b/native-views/react-native-text-input/src/AndroidTextInputNativeComponent.js
@@ -0,0 +1,756 @@
+/**
+ * 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.
+ *
+ * @flow strict-local
+ * @format
+ */
+
+import type {HostComponent} from 'react-native/src/private/types/HostComponent';
+import type {PartialViewConfig} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';
+import type {ColorValue, TextStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
+import type {
+ BubblingEventHandler,
+ DirectEventHandler,
+ Double,
+ Float,
+ Int32,
+ WithDefault,
+} from 'react-native/Libraries/Types/CodegenTypes';
+import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes';
+import type {TextInputNativeCommands} from 'react-native/Libraries/Components/TextInput/TextInputNativeCommands';
+
+import * as NativeComponentRegistry from 'react-native/Libraries/NativeComponent/NativeComponentRegistry';
+import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
+import {colorAttribute} from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes';
+
+export type KeyboardType =
+ // Cross Platform
+ | 'default'
+ | 'email-address'
+ | 'numeric'
+ | 'phone-pad'
+ | 'number-pad'
+ | 'decimal-pad'
+ | 'url'
+ // iOS-only
+ | 'ascii-capable'
+ | 'numbers-and-punctuation'
+ | 'name-phone-pad'
+ | 'twitter'
+ | 'web-search'
+ // Android-only
+ | 'visible-password';
+
+export type ReturnKeyType =
+ // Cross Platform
+ | 'done'
+ | 'go'
+ | 'next'
+ | 'search'
+ | 'send'
+ // Android-only
+ | 'none'
+ | 'previous'
+ // iOS-only
+ | 'default'
+ | 'emergency-call'
+ | 'google'
+ | 'join'
+ | 'route'
+ | 'yahoo';
+
+export type SubmitBehavior = 'submit' | 'blurAndSubmit' | 'newline';
+
+export type AndroidTextInputNativeProps = Readonly<{
+ // This allows us to inherit everything from ViewProps except for style (see below)
+ // This must be commented for Fabric codegen to work.
+ ...Omit,
+
+ /**
+ * Android props after this
+ */
+ /**
+ * Specifies autocomplete hints for the system, so it can provide autofill. On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content.
+ * To disable autocomplete, set `autoComplete` to `off`.
+ *
+ * *Android Only*
+ *
+ * Possible values for `autoComplete` are:
+ *
+ * - `birthdate-day`
+ * - `birthdate-full`
+ * - `birthdate-month`
+ * - `birthdate-year`
+ * - `cc-csc`
+ * - `cc-exp`
+ * - `cc-exp-day`
+ * - `cc-exp-month`
+ * - `cc-exp-year`
+ * - `cc-number`
+ * - `2fa-app-otp`
+ * - `email`
+ * - `email-otp`
+ * - `flight-confirmation-code`
+ * - `flight-number`
+ * - `gender`
+ * - `gift-card-number`
+ * - `gift-card-pin`
+ * - `loyalty-account-number`
+ * - `name`
+ * - `name-family`
+ * - `name-given`
+ * - `name-middle`
+ * - `name-middle-initial`
+ * - `name-prefix`
+ * - `name-suffix`
+ * - `password`
+ * - `password-new`
+ * - `postal-address`
+ * - `postal-address-country`
+ * - `postal-address-dependent-locality`
+ * - `postal-address-extended`
+ * - `postal-address-extended-postal-code`
+ * - `postal-address-locality`
+ * - `postal-address-region`
+ * - `postal-address-unit`
+ * - `postal-code`
+ * - `promo-code`
+ * - `street-address`
+ * - `sms-otp`
+ * - `tel`
+ * - `tel-country-code`
+ * - `tel-national`
+ * - `tel-device`
+ * - `upi-vpa`
+ * - `wifi-password`
+ * - `username`
+ * - `username-new`
+ * - `off`
+ *
+ * @platform android
+ */
+ autoComplete?: WithDefault<
+ | '2fa-app-otp'
+ | 'birthdate-day'
+ | 'birthdate-full'
+ | 'birthdate-month'
+ | 'birthdate-year'
+ | 'cc-csc'
+ | 'cc-exp'
+ | 'cc-exp-day'
+ | 'cc-exp-month'
+ | 'cc-exp-year'
+ | 'cc-number'
+ | 'email'
+ | 'email-otp'
+ | 'flight-confirmation-code'
+ | 'flight-number'
+ | 'gender'
+ | 'gift-card-number'
+ | 'gift-card-pin'
+ | 'loyalty-account-number'
+ | 'name'
+ | 'name-family'
+ | 'name-given'
+ | 'name-middle'
+ | 'name-middle-initial'
+ | 'name-prefix'
+ | 'name-suffix'
+ | 'password'
+ | 'password-new'
+ | 'postal-address'
+ | 'postal-address-country'
+ | 'postal-address-dependent-locality'
+ | 'postal-address-extended'
+ | 'postal-address-extended-postal-code'
+ | 'postal-address-locality'
+ | 'postal-address-region'
+ | 'postal-address-unit'
+ | 'postal-code'
+ | 'promo-code'
+ | 'street-address'
+ | 'sms-otp'
+ | 'tel'
+ | 'tel-country-code'
+ | 'tel-national'
+ | 'tel-device'
+ | 'upi-vpa'
+ | 'wifi-password'
+ | 'username'
+ | 'username-new'
+ | 'off',
+ 'off',
+ >,
+
+ /**
+ * Sets the return key to the label. Use it instead of `returnKeyType`.
+ * @platform android
+ */
+ returnKeyLabel?: ?string,
+
+ /**
+ * Sets the number of lines for a `TextInput`. Use it with multiline set to
+ * `true` to be able to fill the lines.
+ * @platform android
+ */
+ numberOfLines?: ?Int32,
+
+ /**
+ * When `false`, if there is a small amount of space available around a text input
+ * (e.g. landscape orientation on a phone), the OS may choose to have the user edit
+ * the text inside of a full screen text input mode. When `true`, this feature is
+ * disabled and users will always edit the text directly inside of the text input.
+ * Defaults to `false`.
+ * @platform android
+ */
+ disableFullscreenUI?: ?boolean,
+
+ /**
+ * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`
+ * The default value is `simple`.
+ * @platform android
+ */
+ textBreakStrategy?: WithDefault<
+ 'simple' | 'highQuality' | 'balanced',
+ 'simple',
+ >,
+
+ /**
+ * The color of the `TextInput` underline.
+ * @platform android
+ */
+ underlineColorAndroid?: ?ColorValue,
+
+ /**
+ * If defined, the provided image resource will be rendered on the left.
+ * The image resource must be inside `/android/app/src/main/res/drawable` and referenced
+ * like
+ * ```
+ *
+ * ```
+ * @platform android
+ */
+ inlineImageLeft?: ?string,
+
+ /**
+ * Padding between the inline image, if any, and the text input itself.
+ * @platform android
+ */
+ inlineImagePadding?: ?Int32,
+
+ importantForAutofill?: string /*?(
+ | 'auto'
+ | 'no'
+ | 'noExcludeDescendants'
+ | 'yes'
+ | 'yesExcludeDescendants'
+ ),*/,
+
+ /**
+ * When `false`, it will prevent the soft keyboard from showing when the field is focused.
+ * Defaults to `true`.
+ */
+ showSoftInputOnFocus?: ?boolean,
+
+ /**
+ * TextInput props after this
+ */
+ /**
+ * Can tell `TextInput` to automatically capitalize certain characters.
+ *
+ * - `characters`: all characters.
+ * - `words`: first letter of each word.
+ * - `sentences`: first letter of each sentence (*default*).
+ * - `none`: don't auto capitalize anything.
+ */
+ autoCapitalize?: WithDefault<
+ 'none' | 'sentences' | 'words' | 'characters',
+ 'none',
+ >,
+
+ /**
+ * If `false`, disables auto-correct. The default value is `true`.
+ */
+ autoCorrect?: ?boolean,
+
+ /**
+ * If `true`, focuses the input on `componentDidMount`.
+ * The default value is `false`.
+ */
+ autoFocus?: ?boolean,
+
+ /**
+ * Specifies whether fonts should scale to respect Text Size accessibility settings. The
+ * default is `true`.
+ */
+ allowFontScaling?: ?boolean,
+
+ /**
+ * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.
+ * Possible values:
+ * `null/undefined` (default): inherit from the parent node or the global default (0)
+ * `0`: no max, ignore parent/global default
+ * `>= 1`: sets the maxFontSizeMultiplier of this node to this value
+ */
+ maxFontSizeMultiplier?: ?Float,
+
+ /**
+ * If `false`, text is not editable. The default value is `true`.
+ */
+ editable?: ?boolean,
+
+ /**
+ * Determines which keyboard to open, e.g.`numeric`.
+ *
+ * The following values work across platforms:
+ *
+ * - `default`
+ * - `numeric`
+ * - `number-pad`
+ * - `decimal-pad`
+ * - `email-address`
+ * - `phone-pad`
+ * - `url`
+ *
+ * *Android Only*
+ *
+ * The following values work on Android only:
+ *
+ * - `visible-password`
+ */
+ keyboardType?: WithDefault,
+
+ /**
+ * Determines how the return key should look. On Android you can also use
+ * `returnKeyLabel`.
+ *
+ * *Cross platform*
+ *
+ * The following values work across platforms:
+ *
+ * - `done`
+ * - `go`
+ * - `next`
+ * - `search`
+ * - `send`
+ *
+ * *Android Only*
+ *
+ * The following values work on Android only:
+ *
+ * - `none`
+ * - `previous`
+ */
+ returnKeyType?: WithDefault,
+
+ /**
+ * Limits the maximum number of characters that can be entered. Use this
+ * instead of implementing the logic in JS to avoid flicker.
+ */
+ maxLength?: ?Int32,
+
+ /**
+ * If `true`, the text input can be multiple lines.
+ * The default value is `false`.
+ */
+ multiline?: ?boolean,
+
+ /**
+ * Callback that is called when the text input is blurred.
+ * `target` is the reactTag of the element
+ */
+ onBlur?: ?BubblingEventHandler>,
+
+ /**
+ * Callback that is called when the text input is focused.
+ * `target` is the reactTag of the element
+ */
+ onFocus?: ?BubblingEventHandler>,
+
+ /**
+ * Callback that is called when the text input's text changes.
+ * `target` is the reactTag of the element
+ * TODO: differentiate between onChange and onChangeText
+ */
+ onChange?: ?BubblingEventHandler<
+ Readonly<{target: Int32, eventCount: Int32, text: string}>,
+ >,
+
+ /**
+ * Callback that is called when the text input's text changes.
+ * Changed text is passed as an argument to the callback handler.
+ * TODO: differentiate between onChange and onChangeText
+ */
+ onChangeText?: ?BubblingEventHandler<
+ Readonly<{target: Int32, eventCount: Int32, text: string}>,
+ >,
+
+ /**
+ * Callback that is called when the text input's content size changes.
+ * This will be called with
+ * `{ nativeEvent: { contentSize: { width, height } } }`.
+ *
+ * Only called for multiline text inputs.
+ */
+ onContentSizeChange?: ?DirectEventHandler<
+ Readonly<{
+ target: Int32,
+ contentSize: Readonly<{width: Double, height: Double}>,
+ }>,
+ >,
+
+ /**
+ * Callback that is called when text input ends.
+ */
+ onEndEditing?: ?BubblingEventHandler>,
+
+ /**
+ * Callback that is called when the text input selection is changed.
+ * This will be called with
+ * `{ nativeEvent: { selection: { start, end } } }`.
+ */
+ onSelectionChange?: ?DirectEventHandler<
+ Readonly<{
+ target: Int32,
+ selection: Readonly<{start: Double, end: Double}>,
+ }>,
+ >,
+
+ /**
+ * Callback that is called when the text input's submit button is pressed.
+ * Invalid if `multiline={true}` is specified.
+ */
+ onSubmitEditing?: ?BubblingEventHandler<
+ Readonly<{target: Int32, text: string}>,
+ >,
+
+ /**
+ * Callback that is called when a key is pressed.
+ * This will be called with `{ nativeEvent: { key: keyValue } }`
+ * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and
+ * the typed-in character otherwise including `' '` for space.
+ * Fires before `onChange` callbacks.
+ */
+ onKeyPress?: ?BubblingEventHandler>,
+
+ /**
+ * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.
+ * May also contain other properties from ScrollEvent but on Android contentSize
+ * is not provided for performance reasons.
+ */
+ onScroll?: ?DirectEventHandler<
+ Readonly<{
+ target: Int32,
+ responderIgnoreScroll: boolean,
+ contentInset: Readonly<{
+ top: Double, // always 0 on Android
+ bottom: Double, // always 0 on Android
+ left: Double, // always 0 on Android
+ right: Double, // always 0 on Android
+ }>,
+ contentOffset: Readonly<{
+ x: Double,
+ y: Double,
+ }>,
+ contentSize: Readonly<{
+ width: Double, // always 0 on Android
+ height: Double, // always 0 on Android
+ }>,
+ layoutMeasurement: Readonly<{
+ width: Double,
+ height: Double,
+ }>,
+ velocity: Readonly<{
+ x: Double, // always 0 on Android
+ y: Double, // always 0 on Android
+ }>,
+ }>,
+ >,
+
+ /** Invoked when the user performs a paste action. */
+ onPaste?: ?DirectEventHandler<
+ Readonly<{
+ target: Int32,
+ items: ReadonlyArray>,
+ }>,
+ >,
+
+ /**
+ * The string that will be rendered before text input has been entered.
+ */
+ placeholder?: ?Stringish,
+
+ /**
+ * The text color of the placeholder string.
+ */
+ placeholderTextColor?: ?ColorValue,
+
+ /**
+ * If `true`, the text input obscures the text entered so that sensitive text
+ * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.
+ */
+ secureTextEntry?: ?boolean,
+
+ /**
+ * The highlight and cursor color of the text input.
+ */
+ selectionColor?: ?ColorValue,
+
+ /**
+ * The text selection handle color.
+ */
+ selectionHandleColor?: ?ColorValue,
+
+ /**
+ * The start and end of the text input's selection. Set start and end to
+ * the same value to position the cursor.
+ */
+ selection?: ?Readonly<{
+ start: Int32,
+ end?: ?Int32,
+ }>,
+
+ /**
+ * The value to show for the text input. `TextInput` is a controlled
+ * component, which means the native value will be forced to match this
+ * value prop if provided. For most uses, this works great, but in some
+ * cases this may cause flickering - one common cause is preventing edits
+ * by keeping value the same. In addition to simply setting the same value,
+ * either set `editable={false}`, or set/update `maxLength` to prevent
+ * unwanted edits without flicker.
+ */
+ value?: ?string,
+
+ /**
+ * Provides an initial value that will change when the user starts typing.
+ * Useful for simple use-cases where you do not want to deal with listening
+ * to events and updating the value prop to keep the controlled state in sync.
+ */
+ defaultValue?: ?string,
+
+ /**
+ * If `true`, all text will automatically be selected on focus.
+ */
+ selectTextOnFocus?: ?boolean,
+
+ /**
+ * If `true`, the text field will blur when submitted.
+ * The default value is true for single-line fields and false for
+ * multiline fields. Note that for multiline fields, setting `blurOnSubmit`
+ * to `true` means that pressing return will blur the field and trigger the
+ * `onSubmitEditing` event instead of inserting a newline into the field.
+ *
+ * @deprecated
+ * Note that `submitBehavior` now takes the place of `blurOnSubmit` and will
+ * override any behavior defined by `blurOnSubmit`.
+ * @see submitBehavior
+ */
+ blurOnSubmit?: ?boolean,
+
+ /**
+ * When the return key is pressed,
+ *
+ * For single line inputs:
+ *
+ * - `'newline`' defaults to `'blurAndSubmit'`
+ * - `undefined` defaults to `'blurAndSubmit'`
+ *
+ * For multiline inputs:
+ *
+ * - `'newline'` adds a newline
+ * - `undefined` defaults to `'newline'`
+ *
+ * For both single line and multiline inputs:
+ *
+ * - `'submit'` will only send a submit event and not blur the input
+ * - `'blurAndSubmit`' will both blur the input and send a submit event
+ */
+ submitBehavior?: ?SubmitBehavior,
+
+ /**
+ * Note that not all Text styles are supported, an incomplete list of what is not supported includes:
+ *
+ * - `borderLeftWidth`
+ * - `borderTopWidth`
+ * - `borderRightWidth`
+ * - `borderBottomWidth`
+ * - `borderTopLeftRadius`
+ * - `borderTopRightRadius`
+ * - `borderBottomRightRadius`
+ * - `borderBottomLeftRadius`
+ *
+ * see [Issue#7070](https://github.com/react/react-native/issues/7070)
+ * for more detail.
+ *
+ * [Styles](docs/style.html)
+ */
+ // TODO: figure out what to do with this style prop for codegen/Fabric purposes
+ // This must be commented for Fabric codegen to work; it's currently not possible
+ // to override the default View style prop in codegen.
+ style?: ?TextStyleProp,
+
+ /**
+ * If `true`, caret is hidden. The default value is `false`.
+ * This property is supported only for single-line TextInput component on iOS.
+ */
+ caretHidden?: ?boolean,
+
+ /*
+ * If `true`, contextMenuHidden is hidden. The default value is `false`.
+ */
+ contextMenuHidden?: ?boolean,
+
+ /**
+ * The following are props that `BaseTextShadowNode` takes. It is unclear if they
+ * are used by TextInput.
+ */
+ textShadowColor?: ?ColorValue,
+ textShadowRadius?: ?Float,
+ textDecorationLine?: ?string,
+ fontStyle?: ?string,
+ textShadowOffset?: ?Readonly<{width?: ?Double, height?: ?Double}>,
+ lineHeight?: ?Float,
+ textTransform?: ?string,
+ color?: ?Int32,
+ letterSpacing?: ?Float,
+ fontSize?: ?Float,
+ textAlign?: ?string,
+ includeFontPadding?: ?boolean,
+ fontWeight?: ?string,
+ fontFamily?: ?string,
+
+ /**
+ * I cannot find where these are defined but JS complains without them.
+ */
+ textAlignVertical?: ?string,
+ cursorColor?: ?ColorValue,
+
+ /**
+ * "Private" fields used by TextInput.js and not users of this component directly
+ */
+ mostRecentEventCount: Int32,
+ text?: ?string,
+}>;
+
+type NativeType = HostComponent;
+
+type NativeCommands = TextInputNativeCommands;
+
+export const Commands: NativeCommands = codegenNativeCommands({
+ supportedCommands: ['focus', 'blur', 'setTextAndSelection'],
+});
+
+export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
+ uiViewClassName: 'OneKeyTextInput',
+ bubblingEventTypes: {
+ topEndEditing: {
+ phasedRegistrationNames: {
+ bubbled: 'onEndEditing',
+ captured: 'onEndEditingCapture',
+ },
+ },
+ topKeyPress: {
+ phasedRegistrationNames: {
+ bubbled: 'onKeyPress',
+ captured: 'onKeyPressCapture',
+ },
+ },
+ topSubmitEditing: {
+ phasedRegistrationNames: {
+ bubbled: 'onSubmitEditing',
+ captured: 'onSubmitEditingCapture',
+ },
+ },
+ },
+ directEventTypes: {
+ topScroll: {
+ registrationName: 'onScroll',
+ },
+ topPaste: {
+ registrationName: 'onPaste',
+ },
+ },
+ validAttributes: {
+ acceptDragAndDropTypes: true,
+ maxFontSizeMultiplier: true,
+ adjustsFontSizeToFit: true,
+ minimumFontScale: true,
+ autoFocus: true,
+ placeholder: true,
+ inlineImagePadding: true,
+ contextMenuHidden: true,
+ textShadowColor: colorAttribute,
+ maxLength: true,
+ selectTextOnFocus: true,
+ textShadowRadius: true,
+ underlineColorAndroid: colorAttribute,
+ textDecorationLine: true,
+ submitBehavior: true,
+ textAlignVertical: true,
+ fontStyle: true,
+ textShadowOffset: true,
+ selectionColor: colorAttribute,
+ selectionHandleColor: colorAttribute,
+ placeholderTextColor: colorAttribute,
+ importantForAutofill: true,
+ lineHeight: true,
+ textTransform: true,
+ returnKeyType: true,
+ keyboardType: true,
+ multiline: true,
+ color: colorAttribute,
+ autoComplete: true,
+ numberOfLines: true,
+ letterSpacing: true,
+ returnKeyLabel: true,
+ fontSize: true,
+ onKeyPress: true,
+ cursorColor: colorAttribute,
+ text: true,
+ showSoftInputOnFocus: true,
+ textAlign: true,
+ autoCapitalize: true,
+ autoCorrect: true,
+ caretHidden: true,
+ secureTextEntry: true,
+ textBreakStrategy: true,
+ onScroll: true,
+ onPaste: true,
+ onContentSizeChange: true,
+ disableFullscreenUI: true,
+ includeFontPadding: true,
+ fontWeight: true,
+ fontFamily: true,
+ allowFontScaling: true,
+ onSelectionChange: true,
+ mostRecentEventCount: true,
+ inlineImageLeft: true,
+ editable: true,
+ fontVariant: true,
+ borderBottomRightRadius: true,
+ borderBottomColor: colorAttribute,
+ borderRadius: true,
+ borderRightColor: colorAttribute,
+ borderColor: colorAttribute,
+ borderTopRightRadius: true,
+ borderStyle: true,
+ borderBottomLeftRadius: true,
+ borderLeftColor: colorAttribute,
+ borderTopLeftRadius: true,
+ borderTopColor: colorAttribute,
+ },
+};
+
+let AndroidTextInputNativeComponent =
+ NativeComponentRegistry.get(
+ 'OneKeyTextInput',
+ () => __INTERNAL_VIEW_CONFIG,
+ );
+
+// flowlint-next-line unclear-type:off
+export default AndroidTextInputNativeComponent as any as HostComponent;
diff --git a/native-views/react-native-text-input/src/Input.js b/native-views/react-native-text-input/src/Input.js
new file mode 100644
index 00000000..0d611cd2
--- /dev/null
+++ b/native-views/react-native-text-input/src/Input.js
@@ -0,0 +1,1032 @@
+/**
+ * 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.
+ *
+ * @flow strict-local
+ * @format
+ */
+
+import type {HostInstance} from 'react-native/src/private/types/HostInstance';
+import type {____TextStyle_Internal as TextStyleInternal} from 'react-native/Libraries/StyleSheet/StyleSheetTypes';
+import type {
+ BlurEvent,
+ FocusEvent,
+ GestureResponderEvent,
+ ScrollEvent,
+} from 'react-native/Libraries/Types/CoreEventTypes';
+import type {
+ AutoCapitalize,
+ EnterKeyHintType,
+ EnterKeyHintTypeAndroid,
+ EnterKeyHintTypeIOS,
+ EnterKeyHintTypeOptions,
+ InputModeOptions,
+ KeyboardType,
+ KeyboardTypeAndroid,
+ KeyboardTypeIOS,
+ KeyboardTypeOptions,
+ ReturnKeyType,
+ ReturnKeyTypeAndroid,
+ ReturnKeyTypeIOS,
+ ReturnKeyTypeOptions,
+ Selection,
+ SubmitBehavior,
+ TextContentType,
+ TextInputAndroidProps,
+ TextInputBlurEvent,
+ TextInputChangeEvent,
+ TextInputContentSizeChangeEvent,
+ TextInputEditingEvent,
+ TextInputEndEditingEvent,
+ TextInputEvent,
+ TextInputFocusEvent,
+ TextInputInstance,
+ TextInputIOSProps,
+ TextInputKeyPressEvent,
+ TextInputProps,
+ TextInputSelectionChangeEvent,
+ TextInputSubmitEditingEvent,
+ TextInputType,
+} from 'react-native/Libraries/Components/TextInput/TextInput.flow';
+
+import usePressability from 'react-native/Libraries/Pressability/usePressability';
+import flattenStyle from 'react-native/Libraries/StyleSheet/flattenStyle';
+import StyleSheet, {type TextStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
+import Text from 'react-native/Libraries/Text/Text';
+import TextAncestorContext from 'react-native/Libraries/Text/TextAncestorContext';
+import Platform from 'react-native/Libraries/Utilities/Platform';
+import useMergeRefs from 'react-native/Libraries/Utilities/useMergeRefs';
+import TextInputState from 'react-native/Libraries/Components/TextInput/TextInputState';
+import invariant from 'invariant';
+import nullthrows from 'nullthrows';
+import * as React from 'react';
+import {useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react';
+import {findNodeHandle, NativeEventEmitter, NativeModules} from 'react-native';
+
+type OneKeyPasteItem = Readonly<{
+ type: string,
+ data: string,
+}>;
+
+type OneKeyPasteEvent = Readonly<{
+ nativeEvent: Readonly<{
+ items: ReadonlyArray,
+ }>,
+}>;
+
+type OneKeyTextInputProps = TextInputProps & {
+ onPaste?: ?(event: OneKeyPasteEvent) => void,
+};
+
+const iosPasteEmitter =
+ Platform.OS === 'ios' && NativeModules.OneKeyTextInputPasteObserver != null
+ ? new NativeEventEmitter(NativeModules.OneKeyTextInputPasteObserver)
+ : null;
+
+let AndroidTextInput;
+let AndroidTextInputCommands;
+let RCTSinglelineTextInputView;
+let RCTSinglelineTextInputNativeCommands;
+let RCTMultilineTextInputView;
+let RCTMultilineTextInputNativeCommands;
+
+if (Platform.OS === 'android') {
+ AndroidTextInput = require('./AndroidTextInputNativeComponent').default;
+ AndroidTextInputCommands =
+ require('./AndroidTextInputNativeComponent').Commands;
+} else if (Platform.OS === 'ios') {
+ RCTSinglelineTextInputView =
+ require('react-native/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent').default;
+ RCTSinglelineTextInputNativeCommands =
+ require('react-native/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent').Commands;
+ RCTMultilineTextInputView =
+ require('react-native/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent').default;
+ RCTMultilineTextInputNativeCommands =
+ require('react-native/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent').Commands;
+}
+
+export type {
+ AutoCapitalize,
+ BlurEvent,
+ EnterKeyHintType,
+ EnterKeyHintTypeAndroid,
+ EnterKeyHintTypeIOS,
+ EnterKeyHintTypeOptions,
+ FocusEvent,
+ InputModeOptions,
+ KeyboardType,
+ KeyboardTypeAndroid,
+ KeyboardTypeIOS,
+ KeyboardTypeOptions,
+ ReturnKeyType,
+ ReturnKeyTypeAndroid,
+ ReturnKeyTypeIOS,
+ ReturnKeyTypeOptions,
+ SubmitBehavior,
+ TextContentType,
+ TextInputAndroidProps,
+ TextInputBlurEvent,
+ TextInputChangeEvent,
+ TextInputContentSizeChangeEvent,
+ TextInputEditingEvent,
+ TextInputEndEditingEvent,
+ TextInputEvent,
+ TextInputFocusEvent,
+ TextInputIOSProps,
+ TextInputKeyPressEvent,
+ TextInputProps,
+ TextInputSelectionChangeEvent,
+ TextInputSubmitEditingEvent,
+};
+
+type TextInputStateType = Readonly<{
+ /**
+ * @deprecated Use currentlyFocusedInput
+ * Returns the ID of the currently focused text field, if one exists
+ * If no text field is focused it returns null
+ */
+ currentlyFocusedField: () => ?number,
+
+ /**
+ * Returns the ref of the currently focused text field, if one exists
+ * If no text field is focused it returns null
+ */
+ currentlyFocusedInput: () => ?HostInstance,
+
+ /**
+ * @param textField ref of the text field to focus
+ * Focuses the specified text field
+ * noop if the text field was already focused
+ */
+ focusTextInput: (textField: ?HostInstance) => void,
+
+ /**
+ * @param textField ref of the text field to focus
+ * Unfocuses the specified text field
+ * noop if it wasn't focused
+ */
+ blurTextInput: (textField: ?HostInstance) => void,
+}>;
+
+type ViewCommands = NonNullable<
+ | typeof AndroidTextInputCommands
+ | typeof RCTMultilineTextInputNativeCommands
+ | typeof RCTSinglelineTextInputNativeCommands,
+>;
+
+type LastNativeSelection = {
+ selection: Selection,
+ mostRecentEventCount: number,
+};
+
+const emptyFunctionThatReturnsTrue = () => true;
+
+/**
+ * This hook handles the synchronization between the state of the text input
+ * in native and in JavaScript. This is necessary due to the asynchronous nature
+ * of text input events.
+ */
+function useTextInputStateSynchronization({
+ props,
+ mostRecentEventCount,
+ selection,
+ inputRef,
+ text,
+ viewCommands,
+}: {
+ props: TextInputProps,
+ mostRecentEventCount: number,
+ selection: ?Selection,
+ inputRef: React.RefObject,
+ text?: string,
+ viewCommands: ViewCommands,
+}): {
+ setLastNativeText: string => void,
+ setLastNativeSelection: LastNativeSelection => void,
+} {
+ const [lastNativeText, setLastNativeText] = useState(props.value);
+ const [lastNativeSelectionState, setLastNativeSelection] =
+ useState({
+ mostRecentEventCount,
+ selection: {end: -1, start: -1},
+ });
+
+ const lastNativeSelection = lastNativeSelectionState.selection;
+
+ // This is necessary in case native updates the text and JS decides
+ // that the update should be ignored and we should stick with the value
+ // that we have in JS.
+ useLayoutEffect(() => {
+ const nativeUpdate: {text?: string, selection?: Selection} = {};
+
+ if (lastNativeText !== props.value && typeof props.value === 'string') {
+ nativeUpdate.text = props.value;
+ setLastNativeText(props.value);
+ }
+
+ if (
+ selection &&
+ lastNativeSelection &&
+ (lastNativeSelection.start !== selection.start ||
+ lastNativeSelection.end !== selection.end)
+ ) {
+ nativeUpdate.selection = selection;
+ setLastNativeSelection({mostRecentEventCount, selection});
+ }
+
+ if (Object.keys(nativeUpdate).length === 0) {
+ return;
+ }
+
+ if (inputRef.current != null) {
+ viewCommands.setTextAndSelection(
+ inputRef.current,
+ mostRecentEventCount,
+ text,
+ selection?.start ?? -1,
+ selection?.end ?? -1,
+ );
+ }
+ }, [
+ mostRecentEventCount,
+ inputRef,
+ props.value,
+ props.defaultValue,
+ lastNativeText,
+ selection,
+ lastNativeSelection,
+ text,
+ viewCommands,
+ ]);
+
+ return {setLastNativeSelection, setLastNativeText};
+}
+
+/**
+ * A foundational component for inputting text into the app via a
+ * keyboard. Props provide configurability for several features, such as
+ * auto-correction, auto-capitalization, placeholder text, and different keyboard
+ * types, such as a numeric keypad.
+ *
+ * The simplest use case is to plop down a `TextInput` and subscribe to the
+ * `onChangeText` events to read the user input. There are also other events,
+ * such as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple
+ * example:
+ *
+ * ```ReactNativeWebPlayer
+ * import React, { Component } from 'react';
+ * import { AppRegistry, TextInput } from 'react-native';
+ *
+ * export default class UselessTextInput extends Component {
+ * constructor(props) {
+ * super(props);
+ * this.state = { text: 'Useless Placeholder' };
+ * }
+ *
+ * render() {
+ * return (
+ * this.setState({text})}
+ * value={this.state.text}
+ * />
+ * );
+ * }
+ * }
+ *
+ * // skip this line if using Create React Native App
+ * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);
+ * ```
+ *
+ * Two methods exposed via the native element are .focus() and .blur() that
+ * will focus or blur the TextInput programmatically.
+ *
+ * Note that some props are only available with `multiline={true/false}`.
+ * Additionally, border styles that apply to only one side of the element
+ * (e.g., `borderBottomColor`, `borderLeftWidth`, etc.) will not be applied if
+ * `multiline=false`. To achieve the same effect, you can wrap your `TextInput`
+ * in a `View`:
+ *
+ * ```ReactNativeWebPlayer
+ * import React, { Component } from 'react';
+ * import { AppRegistry, View, TextInput } from 'react-native';
+ *
+ * class UselessTextInput extends Component {
+ * render() {
+ * return (
+ *
+ * );
+ * }
+ * }
+ *
+ * export default class UselessTextInputMultiline extends Component {
+ * constructor(props) {
+ * super(props);
+ * this.state = {
+ * text: 'Useless Multiline Placeholder',
+ * };
+ * }
+ *
+ * // If you type something in the text box that is a color, the background will change to that
+ * // color.
+ * render() {
+ * return (
+ *
+ * this.setState({text})}
+ * value={this.state.text}
+ * />
+ *
+ * );
+ * }
+ * }
+ *
+ * // skip these lines if using Create React Native App
+ * AppRegistry.registerComponent(
+ * 'AwesomeProject',
+ * () => UselessTextInputMultiline
+ * );
+ * ```
+ *
+ * `TextInput` has by default a border at the bottom of its view. This border
+ * has its padding set by the background image provided by the system, and it
+ * cannot be changed. Solutions to avoid this is to either not set height
+ * explicitly, case in which the system will take care of displaying the border
+ * in the correct position, or to not display the border by setting
+ * `underlineColorAndroid` to transparent.
+ *
+ * Note that on Android performing text selection in input can change
+ * app's activity `windowSoftInputMode` param to `adjustResize`.
+ * This may cause issues with components that have position: 'absolute'
+ * while keyboard is active. To avoid this behavior either specify `windowSoftInputMode`
+ * in AndroidManifest.xml ( https://developer.android.com/guide/topics/manifest/activity-element.html )
+ * or control this param programmatically with native code.
+ *
+ */
+function InternalTextInput(props: OneKeyTextInputProps): React.Node {
+ const {
+ 'aria-busy': ariaBusy,
+ 'aria-checked': ariaChecked,
+ 'aria-disabled': ariaDisabled,
+ 'aria-expanded': ariaExpanded,
+ 'aria-selected': ariaSelected,
+ accessibilityState,
+ id,
+ tabIndex,
+ selection: propsSelection,
+ selectionColor,
+ selectionHandleColor,
+ cursorColor,
+ onPaste,
+ ...otherProps
+ } = props;
+
+ const inputRef = useRef(null);
+
+ useEffect(() => {
+ if (Platform.OS !== 'ios' || iosPasteEmitter == null || onPaste == null) {
+ return;
+ }
+ const subscription = iosPasteEmitter.addListener(
+ 'OneKeyTextInputPaste',
+ (event: {target: number, items: Array}) => {
+ const target = findNodeHandle(inputRef.current);
+ if (target != null && target === event.target) {
+ onPaste({nativeEvent: {items: event.items}});
+ }
+ },
+ );
+ return () => subscription.remove();
+ }, [onPaste]);
+
+ const selection: ?Selection =
+ propsSelection == null
+ ? null
+ : {
+ end: propsSelection.end ?? propsSelection.start,
+ start: propsSelection.start,
+ };
+
+ const text =
+ typeof props.value === 'string'
+ ? props.value
+ : typeof props.defaultValue === 'string'
+ ? props.defaultValue
+ : undefined;
+
+ const viewCommands =
+ AndroidTextInputCommands ||
+ (props.multiline === true
+ ? RCTMultilineTextInputNativeCommands
+ : RCTSinglelineTextInputNativeCommands);
+
+ const [mostRecentEventCount, setMostRecentEventCount] = useState(0);
+ const {setLastNativeText, setLastNativeSelection} =
+ useTextInputStateSynchronization({
+ inputRef,
+ mostRecentEventCount,
+ props,
+ selection,
+ text,
+ viewCommands,
+ });
+
+ useLayoutEffect(() => {
+ const inputRefValue = inputRef.current;
+
+ if (inputRefValue != null) {
+ TextInputState.registerInput(inputRefValue);
+
+ return () => {
+ TextInputState.unregisterInput(inputRefValue);
+
+ if (TextInputState.currentlyFocusedInput() === inputRefValue) {
+ nullthrows(inputRefValue).blur();
+ }
+ };
+ }
+ }, []);
+
+ const setLocalRef = useCallback(
+ (instance: HostInstance | null) => {
+ // $FlowExpectedError[incompatible-type]
+ inputRef.current = instance;
+
+ /*
+ Hi reader from the future. I'm sorry for this.
+
+ This is a hack. Ideally we would forwardRef to the underlying
+ host component. However, since TextInput has it's own methods that can be
+ called as well, if we used the standard forwardRef then these
+ methods wouldn't be accessible and thus be a breaking change.
+
+ We have a couple of options of how to handle this:
+ - Return a new ref with everything we methods from both. This is problematic
+ because we need React to also know it is a host component which requires
+ internals of the class implementation of the ref.
+ - Break the API and have some other way to call one set of the methods or
+ the other. This is our long term approach as we want to eventually
+ get the methods on host components off the ref. So instead of calling
+ ref.measure() you might call ReactNative.measure(ref). This would hopefully
+ let the ref for TextInput then have the methods like `.clear`. Or we do it
+ the other way and make it TextInput.clear(textInputRef) which would be fine
+ too. Either way though is a breaking change that is longer term.
+ - Mutate this ref. :( Gross, but accomplishes what we need in the meantime
+ before we can get to the long term breaking change.
+ */
+ if (instance != null) {
+ // Register the input immediately when the ref is set so that focus()
+ // can be called from ref callbacks
+ // Double registering during useLayoutEffect is fine, because the underlying
+ // state is a Set.
+ TextInputState.registerInput(instance);
+
+ // $FlowFixMe[prop-missing] - See the explanation above.
+ // $FlowFixMe[unsafe-object-assign]
+ Object.assign(instance, {
+ clear(): void {
+ if (inputRef.current != null) {
+ viewCommands.setTextAndSelection(
+ inputRef.current,
+ mostRecentEventCount,
+ '',
+ 0,
+ 0,
+ );
+ }
+ },
+ getNativeRef(): ?TextInputInstance {
+ return inputRef.current;
+ },
+ isFocused(): boolean {
+ const currentlyFocusedInput =
+ TextInputState.currentlyFocusedInput();
+ return (
+ currentlyFocusedInput != null &&
+ currentlyFocusedInput === inputRef.current
+ );
+ },
+ setSelection(start: number, end: number): void {
+ if (inputRef.current != null) {
+ viewCommands.setTextAndSelection(
+ inputRef.current,
+ mostRecentEventCount,
+ null,
+ start,
+ end,
+ );
+ }
+ },
+ });
+ }
+ },
+ [mostRecentEventCount, viewCommands],
+ );
+
+ // $FlowExpectedError[incompatible-type]
+ const ref = useMergeRefs(setLocalRef, props.forwardedRef);
+
+ const _onChange = (event: TextInputChangeEvent) => {
+ const currentText = event.nativeEvent.text;
+ props.onChange && props.onChange(event);
+ props.onChangeText && props.onChangeText(currentText);
+
+ if (inputRef.current == null) {
+ // calling `props.onChange` or `props.onChangeText`
+ // may clean up the input itself. Exits here.
+ return;
+ }
+
+ setLastNativeText(currentText);
+ // This must happen last, after we call setLastNativeText.
+ // Different ordering can cause bugs when editing AndroidTextInputs
+ // with multiple Fragments.
+ // We must update this so that controlled input updates work.
+ setMostRecentEventCount(event.nativeEvent.eventCount);
+ };
+
+ const _onSelectionChange = (event: TextInputSelectionChangeEvent) => {
+ props.onSelectionChange && props.onSelectionChange(event);
+
+ if (inputRef.current == null) {
+ // calling `props.onSelectionChange`
+ // may clean up the input itself. Exits here.
+ return;
+ }
+
+ setLastNativeSelection({
+ mostRecentEventCount,
+ selection: event.nativeEvent.selection,
+ });
+ };
+
+ const _onFocus = (event: FocusEvent) => {
+ TextInputState.focusInput(inputRef.current);
+ if (props.onFocus) {
+ props.onFocus(event);
+ }
+ };
+
+ const _onBlur = (event: BlurEvent) => {
+ TextInputState.blurInput(inputRef.current);
+ if (props.onBlur) {
+ props.onBlur(event);
+ }
+ };
+
+ const _onScroll = (event: ScrollEvent) => {
+ props.onScroll && props.onScroll(event);
+ };
+
+ let textInput = null;
+
+ const multiline = props.multiline ?? false;
+
+ let submitBehavior: SubmitBehavior;
+ if (props.submitBehavior != null) {
+ // `submitBehavior` is set explicitly
+ if (!multiline && props.submitBehavior === 'newline') {
+ // For single line text inputs, `'newline'` is not a valid option
+ submitBehavior = 'blurAndSubmit';
+ } else {
+ submitBehavior = props.submitBehavior;
+ }
+ } else if (multiline) {
+ if (props.blurOnSubmit === true) {
+ submitBehavior = 'blurAndSubmit';
+ } else {
+ submitBehavior = 'newline';
+ }
+ } else {
+ // Single line
+ if (props.blurOnSubmit !== false) {
+ submitBehavior = 'blurAndSubmit';
+ } else {
+ submitBehavior = 'submit';
+ }
+ }
+
+ const accessible = props.accessible !== false;
+ const focusable = props.focusable !== false;
+
+ const {
+ editable,
+ hitSlop,
+ onPress,
+ onPressIn,
+ onPressOut,
+ rejectResponderTermination,
+ } = props;
+
+ const config = useMemo(
+ () => ({
+ cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null,
+ hitSlop,
+ onPress: (event: GestureResponderEvent) => {
+ onPress?.(event);
+ if (editable !== false) {
+ if (inputRef.current != null) {
+ inputRef.current.focus();
+ }
+ }
+ },
+ onPressIn,
+ onPressOut,
+ }),
+ [
+ editable,
+ hitSlop,
+ onPress,
+ onPressIn,
+ onPressOut,
+ rejectResponderTermination,
+ ],
+ );
+
+ // Hide caret during test runs due to a flashing caret
+ // makes screenshot tests flakey
+ let caretHidden = props.caretHidden;
+ if (Platform.isTesting) {
+ caretHidden = true;
+ }
+
+ // TextInput handles onBlur and onFocus events
+ // so omitting onBlur and onFocus pressability handlers here.
+ const {onBlur, onFocus, ...eventHandlers} = usePressability(config);
+
+ const _accessibilityLabel =
+ props?.['aria-label'] ?? props?.accessibilityLabel;
+
+ let _accessibilityState;
+ if (
+ accessibilityState != null ||
+ ariaBusy != null ||
+ ariaChecked != null ||
+ ariaDisabled != null ||
+ ariaExpanded != null ||
+ ariaSelected != null
+ ) {
+ _accessibilityState = {
+ busy: ariaBusy ?? accessibilityState?.busy,
+ checked: ariaChecked ?? accessibilityState?.checked,
+ disabled: ariaDisabled ?? accessibilityState?.disabled,
+ expanded: ariaExpanded ?? accessibilityState?.expanded,
+ selected: ariaSelected ?? accessibilityState?.selected,
+ };
+ }
+
+ // Keep the original (potentially nested) style when possible, as React can diff these more efficiently
+ let _style = props.style;
+ const flattenedStyle = flattenStyle(props.style);
+ if (flattenedStyle != null) {
+ let overrides: ?{...TextStyleInternal} = null;
+ if (typeof flattenedStyle?.fontWeight === 'number') {
+ overrides = overrides || ({} as {...TextStyleInternal});
+ overrides.fontWeight =
+ // $FlowFixMe[incompatible-type]
+ flattenedStyle.fontWeight.toString() as TextStyleInternal['fontWeight'];
+ }
+
+ if (flattenedStyle.verticalAlign != null) {
+ overrides = overrides || ({} as {...TextStyleInternal});
+ overrides.textAlignVertical =
+ verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign];
+ overrides.verticalAlign = undefined;
+ }
+
+ if (overrides != null) {
+ // $FlowFixMe[incompatible-type]
+ _style = [_style, overrides];
+ }
+ }
+
+ if (Platform.OS === 'ios') {
+ const RCTTextInputView =
+ props.multiline === true
+ ? RCTMultilineTextInputView
+ : RCTSinglelineTextInputView;
+
+ const useMultilineDefaultStyle =
+ props.multiline === true &&
+ (flattenedStyle == null ||
+ (flattenedStyle.padding == null &&
+ flattenedStyle.paddingVertical == null &&
+ flattenedStyle.paddingTop == null));
+
+ const _accessibilityElementsHidden =
+ props['aria-hidden'] ?? props.accessibilityElementsHidden;
+
+ textInput = (
+
+ );
+ } else if (Platform.OS === 'android') {
+ const autoCapitalize = props.autoCapitalize || 'sentences';
+ const _accessibilityLabelledBy =
+ props?.['aria-labelledby'] ?? props?.accessibilityLabelledBy;
+ const _importantForAccessibility =
+ props['aria-hidden'] === true
+ ? ('no-hide-descendants' as const)
+ : undefined;
+ const placeholder = props.placeholder ?? '';
+ let children = props.children;
+ const childCount = React.Children.count(children);
+ invariant(
+ !(props.value != null && childCount),
+ 'Cannot specify both value and children.',
+ );
+ if (childCount > 1) {
+ children = {children};
+ }
+ // For consistency with iOS set cursor/selectionHandle color as selectionColor
+ const colorProps = {
+ cursorColor: cursorColor === undefined ? selectionColor : cursorColor,
+ selectionColor,
+ selectionHandleColor:
+ selectionHandleColor === undefined
+ ? selectionColor
+ : selectionHandleColor,
+ };
+ textInput = (
+ /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match up
+ * exactly with the props for TextInput. This will need to get fixed */
+ /* $FlowFixMe[incompatible-type] the types for AndroidTextInput don't
+ * match up exactly with the props for TextInput. This will need to get
+ * fixed */
+ /* $FlowFixMe[incompatible-type-arg] the types for AndroidTextInput don't
+ * match up exactly with the props for TextInput. This will need to get
+ * fixed */
+
+ );
+ }
+ return {textInput};
+}
+
+const enterKeyHintToReturnTypeMap = {
+ done: 'done',
+ enter: 'default',
+ go: 'go',
+ next: 'next',
+ previous: 'previous',
+ search: 'search',
+ send: 'send',
+} as const;
+
+const inputModeToKeyboardTypeMap = {
+ decimal: 'decimal-pad',
+ email: 'email-address',
+ none: 'default',
+ numeric: 'number-pad',
+ search:
+ Platform.OS === 'ios' ? ('web-search' as const) : ('default' as const),
+ tel: 'phone-pad',
+ text: 'default',
+ url: 'url',
+} as const;
+
+// Map HTML autocomplete values to Android autoComplete values
+const autoCompleteWebToAutoCompleteAndroidMap = {
+ 'additional-name': 'name-middle',
+ 'address-line1': 'postal-address-region',
+ 'address-line2': 'postal-address-locality',
+ bday: 'birthdate-full',
+ 'bday-day': 'birthdate-day',
+ 'bday-month': 'birthdate-month',
+ 'bday-year': 'birthdate-year',
+ 'cc-csc': 'cc-csc',
+ 'cc-exp': 'cc-exp',
+ 'cc-exp-month': 'cc-exp-month',
+ 'cc-exp-year': 'cc-exp-year',
+ 'cc-number': 'cc-number',
+ country: 'postal-address-country',
+ 'current-password': 'password',
+ email: 'email',
+ 'family-name': 'name-family',
+ 'given-name': 'name-given',
+ 'honorific-prefix': 'name-prefix',
+ 'honorific-suffix': 'name-suffix',
+ name: 'name',
+ 'new-password': 'password-new',
+ off: 'off',
+ 'one-time-code': 'sms-otp',
+ 'postal-code': 'postal-code',
+ sex: 'gender',
+ 'street-address': 'street-address',
+ tel: 'tel',
+ 'tel-country-code': 'tel-country-code',
+ 'tel-national': 'tel-national',
+ username: 'username',
+} as const;
+
+// Map HTML autocomplete values to iOS textContentType values
+const autoCompleteWebToTextContentTypeMap = {
+ 'additional-name': 'middleName',
+ 'address-line1': 'streetAddressLine1',
+ 'address-line2': 'streetAddressLine2',
+ bday: 'birthdate',
+ 'bday-day': 'birthdateDay',
+ 'bday-month': 'birthdateMonth',
+ 'bday-year': 'birthdateYear',
+ 'cc-additional-name': 'creditCardMiddleName',
+ 'cc-csc': 'creditCardSecurityCode',
+ 'cc-exp': 'creditCardExpiration',
+ 'cc-exp-month': 'creditCardExpirationMonth',
+ 'cc-exp-year': 'creditCardExpirationYear',
+ 'cc-family-name': 'creditCardFamilyName',
+ 'cc-given-name': 'creditCardGivenName',
+ 'cc-name': 'creditCardName',
+ 'cc-number': 'creditCardNumber',
+ 'cc-type': 'creditCardType',
+ country: 'countryName',
+ 'current-password': 'password',
+ email: 'emailAddress',
+ 'family-name': 'familyName',
+ 'given-name': 'givenName',
+ 'honorific-prefix': 'namePrefix',
+ 'honorific-suffix': 'nameSuffix',
+ name: 'name',
+ 'new-password': 'newPassword',
+ nickname: 'nickname',
+ off: 'none',
+ 'one-time-code': 'oneTimeCode',
+ organization: 'organizationName',
+ 'organization-title': 'jobTitle',
+ 'postal-code': 'postalCode',
+ 'street-address': 'fullStreetAddress',
+ tel: 'telephoneNumber',
+ url: 'URL',
+ username: 'username',
+} as const;
+
+const TextInput: component(
+ ref?: React.RefSetter,
+ ...props: React.ElementConfig
+) = function TextInput({
+ ref: forwardedRef,
+ allowFontScaling = true,
+ rejectResponderTermination = true,
+ underlineColorAndroid = 'transparent',
+ autoComplete,
+ textContentType,
+ readOnly,
+ editable,
+ enterKeyHint,
+ returnKeyType,
+ inputMode,
+ showSoftInputOnFocus,
+ keyboardType,
+ ...restProps
+}: {
+ ref?: React.RefSetter,
+ ...React.ElementConfig,
+}) {
+ return (
+
+ );
+};
+
+TextInput.displayName = 'TextInput';
+
+// $FlowFixMe[prop-missing]
+TextInput.State = {
+ blurTextInput: TextInputState.blurTextInput,
+ currentlyFocusedField: TextInputState.currentlyFocusedField,
+ currentlyFocusedInput: TextInputState.currentlyFocusedInput,
+ focusTextInput: TextInputState.focusTextInput,
+};
+
+export type TextInputComponentStatics = Readonly<{
+ State: TextInputStateType,
+}>;
+
+const styles = StyleSheet.create({
+ multilineDefault: {
+ // This default top inset makes RCTMultilineTextInputView seem as close as possible
+ // to single-line RCTSinglelineTextInputView defaults, using the system defaults
+ // of font size 17 and a height of 31 points.
+ paddingTop: 5,
+ },
+});
+
+const verticalAlignToTextAlignVerticalMap = {
+ auto: 'auto',
+ bottom: 'bottom',
+ middle: 'center',
+ top: 'top',
+} as const;
+
+// $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe.
+export default TextInput as any as TextInputType;
diff --git a/native-views/react-native-text-input/src/__tests__/index.test.tsx b/native-views/react-native-text-input/src/__tests__/index.test.tsx
new file mode 100644
index 00000000..fe7de301
--- /dev/null
+++ b/native-views/react-native-text-input/src/__tests__/index.test.tsx
@@ -0,0 +1 @@
+it.todo("write a test");
diff --git a/native-views/react-native-text-input/src/enum.ts b/native-views/react-native-text-input/src/enum.ts
new file mode 100644
index 00000000..d48533ae
--- /dev/null
+++ b/native-views/react-native-text-input/src/enum.ts
@@ -0,0 +1,3 @@
+export enum EPasteEventPayloadItemType {
+ TextPlain = "text/plain",
+}
diff --git a/native-views/react-native-text-input/src/index.tsx b/native-views/react-native-text-input/src/index.tsx
new file mode 100644
index 00000000..6aec26da
--- /dev/null
+++ b/native-views/react-native-text-input/src/index.tsx
@@ -0,0 +1,17 @@
+import type { ComponentType } from "react";
+// @ts-expect-error
+import TextInputView from "./Input";
+import type { ITextInputProps } from "./type";
+
+// export * from './TextInputViewNativeComponent';
+
+export type {
+ IPasteEventPayloadItem,
+ IPasteEventPayload,
+ IPasteEventParams,
+ ITextInputProps,
+} from "./type";
+export * from "./enum";
+
+const TextInput = TextInputView as ComponentType;
+export default TextInput;
diff --git a/native-views/react-native-text-input/src/type.ts b/native-views/react-native-text-input/src/type.ts
new file mode 100644
index 00000000..782b4fea
--- /dev/null
+++ b/native-views/react-native-text-input/src/type.ts
@@ -0,0 +1,13 @@
+import type { TextInputProps } from "react-native";
+import type { EPasteEventPayloadItemType } from "./enum";
+
+export type IPasteEventPayloadItem = {
+ data?: string;
+ type?: EPasteEventPayloadItemType;
+};
+export type IPasteEventPayload = IPasteEventPayloadItem[];
+export type IPasteEventParams = { nativeEvent: { items?: IPasteEventPayload } };
+
+export interface ITextInputProps extends TextInputProps {
+ onPaste?: (event: IPasteEventParams) => void;
+}
diff --git a/native-views/react-native-text-input/tsconfig.build.json b/native-views/react-native-text-input/tsconfig.build.json
new file mode 100644
index 00000000..3c0636ad
--- /dev/null
+++ b/native-views/react-native-text-input/tsconfig.build.json
@@ -0,0 +1,4 @@
+{
+ "extends": "./tsconfig",
+ "exclude": ["example", "lib"]
+}
diff --git a/native-views/react-native-text-input/tsconfig.json b/native-views/react-native-text-input/tsconfig.json
new file mode 100644
index 00000000..90cc8e66
--- /dev/null
+++ b/native-views/react-native-text-input/tsconfig.json
@@ -0,0 +1,29 @@
+{
+ "compilerOptions": {
+ "rootDir": ".",
+ "paths": {
+ "react-native-text-input": ["./src/index"]
+ },
+ "allowUnreachableCode": false,
+ "allowUnusedLabels": false,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "jsx": "react-jsx",
+ "lib": ["ESNext"],
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "noEmit": true,
+ "noFallthroughCasesInSwitch": true,
+ "noImplicitReturns": true,
+ "noImplicitUseStrict": false,
+ "noStrictGenericChecks": false,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "target": "ESNext",
+ "verbatimModuleSyntax": true
+ }
+}
diff --git a/native-views/react-native-text-input/turbo.json b/native-views/react-native-text-input/turbo.json
new file mode 100644
index 00000000..405897ee
--- /dev/null
+++ b/native-views/react-native-text-input/turbo.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "https://turbo.build/schema.json",
+ "pipeline": {
+ "build:android": {
+ "env": ["ORG_GRADLE_PROJECT_newArchEnabled"],
+ "inputs": [
+ "package.json",
+ "android",
+ "!android/build",
+ "src/*.ts",
+ "src/*.tsx",
+ "example/package.json",
+ "example/android",
+ "!example/android/.gradle",
+ "!example/android/build",
+ "!example/android/app/build"
+ ],
+ "outputs": []
+ },
+ "build:ios": {
+ "env": ["RCT_NEW_ARCH_ENABLED"],
+ "inputs": [
+ "package.json",
+ "*.podspec",
+ "ios",
+ "src/*.ts",
+ "src/*.tsx",
+ "example/package.json",
+ "example/ios",
+ "!example/ios/build",
+ "!example/ios/Pods"
+ ],
+ "outputs": []
+ }
+ }
+}
diff --git a/package.json b/package.json
index c2296ee6..8630e382 100644
--- a/package.json
+++ b/package.json
@@ -25,8 +25,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -39,8 +39,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
+ "react": "19.2.3",
+ "react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/scripts/nitro-view/template/package.json b/scripts/nitro-view/template/package.json
index 72cc8c9f..88a6df26 100644
--- a/scripts/nitro-view/template/package.json
+++ b/scripts/nitro-view/template/package.json
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "0.83.0",
+ "react": "19.2.3",
+ "react-native": "0.86.2",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/scripts/nitro/template/package.json b/scripts/nitro/template/package.json
index f86b7c76..ac39c78d 100644
--- a/scripts/nitro/template/package.json
+++ b/scripts/nitro/template/package.json
@@ -65,8 +65,8 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.35.0",
- "@react-native/babel-preset": "0.83.0",
- "@react-native/eslint-config": "0.83.0",
+ "@react-native/babel-preset": "0.86.2",
+ "@react-native/eslint-config": "0.86.2",
"@release-it/conventional-changelog": "^10.0.1",
"@types/jest": "^29.5.14",
"@types/react": "^19.2.0",
@@ -79,8 +79,8 @@
"lefthook": "^2.0.3",
"nitrogen": "0.36.5",
"prettier": "^2.8.8",
- "react": "19.2.0",
- "react-native": "0.83.0",
+ "react": "19.2.3",
+ "react-native": "0.86.2",
"react-native-builder-bob": "^0.40.13",
"react-native-nitro-modules": "0.36.5",
"release-it": "^19.0.4",
diff --git a/scripts/setup-nitro-module.js b/scripts/setup-nitro-module.js
index 8260ac26..b90d2946 100755
--- a/scripts/setup-nitro-module.js
+++ b/scripts/setup-nitro-module.js
@@ -229,7 +229,7 @@ if (fs.existsSync(androidBuildFile)) {
// Add configuration to react { block
const reactBlockRegex = /(react\s*\{)/;
const additionalConfig = ` reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
- hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
+ hermesCommand = new File(["node", "--print", "require.resolve('hermes-compiler/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/hermesc/%OS-BIN%/hermesc"
codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
`;
diff --git a/yarn.lock b/yarn.lock
index 51710b4a..a2b5481b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -21,7 +21,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1":
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/code-frame@npm:7.27.1"
dependencies:
@@ -32,6 +32,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/code-frame@npm:^7.29.0, @babel/code-frame@npm:^7.29.7":
+ version: 7.29.7
+ resolution: "@babel/code-frame@npm:7.29.7"
+ dependencies:
+ "@babel/helper-validator-identifier": "npm:^7.29.7"
+ js-tokens: "npm:^4.0.0"
+ picocolors: "npm:^1.1.1"
+ checksum: 10/84da552e51a55795a50b3589116edb2f9e368a647d266380683775f18effd9acd4521b0246bebd0b049a7f32af1f87b1e8475d3bcb665f876bd04ade8da99697
+ languageName: node
+ linkType: hard
+
"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/compat-data@npm:7.28.5"
@@ -76,7 +87,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2":
+"@babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2":
version: 7.28.5
resolution: "@babel/generator@npm:7.28.5"
dependencies:
@@ -89,6 +100,19 @@ __metadata:
languageName: node
linkType: hard
+"@babel/generator@npm:^7.29.1, @babel/generator@npm:^7.29.8":
+ version: 7.29.8
+ resolution: "@babel/generator@npm:7.29.8"
+ dependencies:
+ "@babel/parser": "npm:^7.29.8"
+ "@babel/types": "npm:^7.29.8"
+ "@jridgewell/gen-mapping": "npm:^0.3.12"
+ "@jridgewell/trace-mapping": "npm:^0.3.28"
+ jsesc: "npm:^3.0.2"
+ checksum: 10/679c3d1302936f391260acee4059e0c3cd5bff6341772f0b85bb142feab1a253d0e155aad0e9c8531e024d6239a2cc5169d1e294c6890901e7d4ab0f7c9eaaaa
+ languageName: node
+ linkType: hard
+
"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3":
version: 7.27.3
resolution: "@babel/helper-annotate-as-pure@npm:7.27.3"
@@ -163,6 +187,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-globals@npm:^7.29.7":
+ version: 7.29.7
+ resolution: "@babel/helper-globals@npm:7.29.7"
+ checksum: 10/e53203e87ae24a45f59639edea0c429bc3c63c6d74f1862fe60a35032d89478e7511d2f34855da0fcb65782668d72e59e93d1de5bc00121ba9bc1aa38f1f0ad3
+ languageName: node
+ linkType: hard
+
"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5"
@@ -255,6 +286,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-string-parser@npm:^7.29.7":
+ version: 7.29.7
+ resolution: "@babel/helper-string-parser@npm:7.29.7"
+ checksum: 10/4d8ef0ef7105f3d9fe4361137c8f42e5b4c7a52b5380b962762f2a528a1ba89064e2c6236090716ce34b63707b886ae0ebf36b2c2fcc2851f27e652febfc3648
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/helper-validator-identifier@npm:7.28.5"
@@ -262,6 +300,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-identifier@npm:^7.29.7":
+ version: 7.29.7
+ resolution: "@babel/helper-validator-identifier@npm:7.29.7"
+ checksum: 10/2efa42701eb05babf26dff3332109c9e5e1a3400a71fb9e68ee27af28235036a2a72c2494c04bdab3f909075f42a58b2e8271074372bc7f8e79ec02bd364d7a7
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-option@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-validator-option@npm:7.27.1"
@@ -290,7 +335,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5":
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/parser@npm:7.28.5"
dependencies:
@@ -301,6 +346,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/parser@npm:^7.29.0, @babel/parser@npm:^7.29.7, @babel/parser@npm:^7.29.8":
+ version: 7.29.8
+ resolution: "@babel/parser@npm:7.29.8"
+ dependencies:
+ "@babel/types": "npm:^7.29.8"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: 10/dbd14ebbba0fa3019acd2712b0db3ffd594d0850d4fc487667287b5702893f54a7911570ea842f0cff4dc492a2412e3287dfabfe00c6b78efa7becb1255f3f86
+ languageName: node
+ linkType: hard
+
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.28.5"
@@ -623,7 +679,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-arrow-functions@npm:^7.24.7, @babel/plugin-transform-arrow-functions@npm:^7.27.1":
+"@babel/plugin-transform-arrow-functions@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1"
dependencies:
@@ -722,7 +778,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.27.1":
+"@babel/plugin-transform-computed-properties@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1"
dependencies:
@@ -850,7 +906,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-function-name@npm:^7.25.1, @babel/plugin-transform-function-name@npm:^7.27.1":
+"@babel/plugin-transform-function-name@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-function-name@npm:7.27.1"
dependencies:
@@ -874,7 +930,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-literals@npm:^7.25.2, @babel/plugin-transform-literals@npm:^7.27.1":
+"@babel/plugin-transform-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-literals@npm:7.27.1"
dependencies:
@@ -885,7 +941,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.5":
+"@babel/plugin-transform-logical-assignment-operators@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5"
dependencies:
@@ -991,7 +1047,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.27.1":
+"@babel/plugin-transform-numeric-separator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1"
dependencies:
@@ -1002,7 +1058,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.4":
+"@babel/plugin-transform-object-rest-spread@npm:^7.28.4":
version: 7.28.4
resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4"
dependencies:
@@ -1052,7 +1108,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-parameters@npm:^7.24.7, @babel/plugin-transform-parameters@npm:^7.27.7":
+"@babel/plugin-transform-parameters@npm:^7.27.7":
version: 7.27.7
resolution: "@babel/plugin-transform-parameters@npm:7.27.7"
dependencies:
@@ -1220,7 +1276,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-shorthand-properties@npm:^7.24.7, @babel/plugin-transform-shorthand-properties@npm:^7.27.1":
+"@babel/plugin-transform-shorthand-properties@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1"
dependencies:
@@ -1231,7 +1287,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.27.1":
+"@babel/plugin-transform-spread@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-spread@npm:7.27.1"
dependencies:
@@ -1243,7 +1299,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-sticky-regex@npm:^7.24.7, @babel/plugin-transform-sticky-regex@npm:^7.27.1":
+"@babel/plugin-transform-sticky-regex@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1"
dependencies:
@@ -1480,7 +1536,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3":
+"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3":
version: 7.27.2
resolution: "@babel/template@npm:7.27.2"
dependencies:
@@ -1491,7 +1547,18 @@ __metadata:
languageName: node
linkType: hard
-"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5":
+"@babel/template@npm:^7.28.6, @babel/template@npm:^7.29.7":
+ version: 7.29.7
+ resolution: "@babel/template@npm:7.29.7"
+ dependencies:
+ "@babel/code-frame": "npm:^7.29.7"
+ "@babel/parser": "npm:^7.29.7"
+ "@babel/types": "npm:^7.29.7"
+ checksum: 10/da92f7a5b61e05d2fb3934a44f18cec6006ee3c595116c17a3b44cb9756ecd43205c7360dbfa326fa8f4d00aaeb9e777342a881070d11c2305e9c694bc3ca6ff
+ languageName: node
+ linkType: hard
+
+"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5":
version: 7.28.5
resolution: "@babel/traverse@npm:7.28.5"
dependencies:
@@ -1506,7 +1573,22 @@ __metadata:
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
+"@babel/traverse@npm:^7.29.0":
+ version: 7.29.8
+ resolution: "@babel/traverse@npm:7.29.8"
+ dependencies:
+ "@babel/code-frame": "npm:^7.29.7"
+ "@babel/generator": "npm:^7.29.8"
+ "@babel/helper-globals": "npm:^7.29.7"
+ "@babel/parser": "npm:^7.29.8"
+ "@babel/template": "npm:^7.29.7"
+ "@babel/types": "npm:^7.29.8"
+ debug: "npm:^4.3.1"
+ checksum: 10/91f0b4799d27b50ffd5c2ab4ba537065221196858e0899275d8474489c57dd0b53150508b2c0d9b308520e5985bde63049a401d32aa1ac4f1e10e466e2a3f447
+ languageName: node
+ linkType: hard
+
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
version: 7.28.5
resolution: "@babel/types@npm:7.28.5"
dependencies:
@@ -1516,6 +1598,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/types@npm:^7.29.0, @babel/types@npm:^7.29.7, @babel/types@npm:^7.29.8":
+ version: 7.29.8
+ resolution: "@babel/types@npm:7.29.8"
+ dependencies:
+ "@babel/helper-string-parser": "npm:^7.29.7"
+ "@babel/helper-validator-identifier": "npm:^7.29.7"
+ checksum: 10/ff2becf0f8b432f0820f286fb9319d7f3819b2d0eb95bc26957fbc6250a3ca0ae3656feb98ecb5f171f9e04b34a4c08f5036447f17459ed7bfc32ff649d9b71e
+ languageName: node
+ linkType: hard
+
"@bcoe/v8-coverage@npm:^0.2.3":
version: 0.2.3
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -2777,15 +2869,17 @@ __metadata:
"@onekeyfe/react-native-split-bundle-loader": "workspace:*"
"@onekeyfe/react-native-tab-view": "workspace:*"
"@onekeyfe/react-native-tcp-socket": "workspace:*"
+ "@onekeyfe/react-native-text-input": "workspace:*"
"@onekeyfe/react-native-zip-archive": "workspace:*"
- "@react-native-community/cli": "npm:20.0.0"
- "@react-native-community/cli-platform-android": "npm:20.0.0"
- "@react-native-community/cli-platform-ios": "npm:20.0.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
- "@react-native/metro-config": "npm:0.83.0"
- "@react-native/new-app-screen": "npm:0.83.0"
- "@react-native/typescript-config": "npm:0.83.0"
+ "@react-native-community/cli": "npm:20.1.0"
+ "@react-native-community/cli-platform-android": "npm:20.1.0"
+ "@react-native-community/cli-platform-ios": "npm:20.1.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
+ "@react-native/jest-preset": "npm:0.86.2"
+ "@react-native/metro-config": "npm:0.86.2"
+ "@react-native/new-app-screen": "npm:0.86.2"
+ "@react-native/typescript-config": "npm:0.86.2"
"@react-navigation/native": "npm:^7.1.33"
"@react-navigation/native-stack": "npm:^7.14.4"
"@types/jest": "npm:^29.5.13"
@@ -2795,13 +2889,13 @@ __metadata:
fast-base64-decode: "npm:*"
jest: "npm:^29.6.3"
prettier: "npm:2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-mmkv: "npm:4.3.2"
react-native-nitro-modules: "npm:0.36.5"
react-native-safe-area-context: "npm:^5.5.2"
react-native-screens: "npm:^4.24.0"
- react-test-renderer: "npm:19.2.0"
+ react-test-renderer: "npm:19.2.3"
typescript: "npm:^5.8.3"
languageName: unknown
linkType: soft
@@ -2815,8 +2909,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -2829,8 +2923,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -2851,8 +2945,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -2864,8 +2958,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -2884,8 +2978,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -2898,8 +2992,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -2920,8 +3014,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -2934,8 +3028,8 @@ __metadata:
lefthook: "npm:^2.0.3"
merge-options: "npm:^3.0.4"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -2954,8 +3048,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -2968,8 +3062,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -2990,8 +3084,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3003,8 +3097,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3024,8 +3118,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3038,8 +3132,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3060,8 +3154,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3074,8 +3168,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3096,8 +3190,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3110,8 +3204,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3132,8 +3226,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3146,8 +3240,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3164,9 +3258,9 @@ __metadata:
version: 0.0.0-use.local
resolution: "@onekeyfe/react-native-cloud-fs@workspace:native-modules/react-native-cloud-fs"
dependencies:
- "@react-native/babel-preset": "npm:0.83.0"
- react: "npm:19.2.0"
- react-native: "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
typescript: "npm:^5.9.2"
peerDependencies:
@@ -3183,8 +3277,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3197,8 +3291,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3219,8 +3313,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3233,8 +3327,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3255,8 +3349,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3268,8 +3362,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3288,8 +3382,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3302,8 +3396,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3324,8 +3418,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3338,8 +3432,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3360,8 +3454,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3373,8 +3467,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3393,8 +3487,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3407,8 +3501,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3429,8 +3523,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3442,8 +3536,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3462,8 +3556,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3475,8 +3569,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3492,8 +3586,8 @@ __metadata:
resolution: "@onekeyfe/react-native-pager-view@workspace:native-views/react-native-pager-view"
dependencies:
"@types/react": "npm:^19.2.0"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
typescript: "npm:^5.9.2"
peerDependencies:
@@ -3510,8 +3604,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3523,8 +3617,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3543,8 +3637,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3557,8 +3651,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3579,8 +3673,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3593,8 +3687,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "npm:0.83.0"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3615,8 +3709,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3629,8 +3723,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3647,9 +3741,9 @@ __metadata:
version: 0.0.0-use.local
resolution: "@onekeyfe/react-native-ping@workspace:native-modules/react-native-ping"
dependencies:
- "@react-native/babel-preset": "npm:0.83.0"
- react: "npm:19.2.0"
- react-native: "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
typescript: "npm:^5.9.2"
peerDependencies:
@@ -3666,8 +3760,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3680,8 +3774,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3698,11 +3792,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "@onekeyfe/react-native-scroll-guard@workspace:native-views/react-native-scroll-guard"
dependencies:
- "@react-native/babel-preset": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
del-cli: "npm:^6.0.0"
nitrogen: "npm:0.36.5"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
typescript: "npm:^5.9.2"
@@ -3721,8 +3815,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3735,8 +3829,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3757,8 +3851,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3771,8 +3865,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3793,8 +3887,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3806,8 +3900,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3826,8 +3920,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3840,8 +3934,8 @@ __metadata:
lefthook: "npm:^2.0.3"
nitrogen: "npm:0.36.5"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
react-native-nitro-modules: "npm:0.36.5"
release-it: "npm:^19.0.4"
@@ -3862,8 +3956,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3875,8 +3969,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3893,9 +3987,9 @@ __metadata:
resolution: "@onekeyfe/react-native-tab-view@workspace:native-views/react-native-tab-view"
dependencies:
"@types/react": "npm:^19.2.0"
- react: "npm:19.2.0"
+ react: "npm:19.2.3"
react-freeze: "npm:^1.0.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.13"
sf-symbols-typescript: "npm:^2.0.0"
typescript: "npm:^5.9.2"
@@ -3914,8 +4008,8 @@ __metadata:
"@eslint/compat": "npm:^1.3.2"
"@eslint/eslintrc": "npm:^3.3.1"
"@eslint/js": "npm:^9.35.0"
- "@react-native/babel-preset": "npm:0.83.0"
- "@react-native/eslint-config": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@react-native/eslint-config": "npm:0.86.2"
"@release-it/conventional-changelog": "npm:^10.0.1"
"@types/jest": "npm:^29.5.14"
"@types/react": "npm:^19.2.0"
@@ -3927,8 +4021,8 @@ __metadata:
jest: "npm:^29.7.0"
lefthook: "npm:^2.0.3"
prettier: "npm:^2.8.8"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
release-it: "npm:^19.0.4"
turbo: "npm:^2.5.6"
@@ -3939,14 +4033,31 @@ __metadata:
languageName: unknown
linkType: soft
+"@onekeyfe/react-native-text-input@workspace:*, @onekeyfe/react-native-text-input@workspace:native-views/react-native-text-input":
+ version: 0.0.0-use.local
+ resolution: "@onekeyfe/react-native-text-input@workspace:native-views/react-native-text-input"
+ dependencies:
+ "@react-native/babel-preset": "npm:0.86.2"
+ "@types/react": "npm:^19.2.0"
+ del-cli: "npm:^6.0.0"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
+ react-native-builder-bob: "npm:^0.40.13"
+ typescript: "npm:^5.9.2"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ languageName: unknown
+ linkType: soft
+
"@onekeyfe/react-native-zip-archive@workspace:*, @onekeyfe/react-native-zip-archive@workspace:native-modules/react-native-zip-archive":
version: 0.0.0-use.local
resolution: "@onekeyfe/react-native-zip-archive@workspace:native-modules/react-native-zip-archive"
dependencies:
- "@react-native/babel-preset": "npm:0.83.0"
+ "@react-native/babel-preset": "npm:0.86.2"
nitrogen: "npm:0.36.5"
- react: "npm:19.2.0"
- react-native: "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch"
+ react: "npm:19.2.3"
+ react-native: "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch"
react-native-builder-bob: "npm:^0.40.17"
react-native-nitro-modules: "npm:0.36.5"
typescript: "npm:^5.9.2"
@@ -3978,119 +4089,119 @@ __metadata:
languageName: node
linkType: hard
-"@react-native-community/cli-clean@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-clean@npm:20.0.0"
+"@react-native-community/cli-clean@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-clean@npm:20.1.0"
dependencies:
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-tools": "npm:20.1.0"
execa: "npm:^5.0.0"
fast-glob: "npm:^3.3.2"
- checksum: 10/56a261a83eb4fc60e81778659ace53997cc5d045fc09c7e7a3a991eaae60347a7349868bcc5b45db73d3234fc714fe6adbaf641669eddd94cfcfe1037dd616c1
+ picocolors: "npm:^1.1.1"
+ checksum: 10/d929c541e07e8d703c5633bce1a7f2c4ff249f5a5e508b8c11f2fcbf97d5bc27eff706cb36b56973f0405e3592e67bc04f4a7d736956427f129a8c88f9c2cfa5
languageName: node
linkType: hard
-"@react-native-community/cli-config-android@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-config-android@npm:20.0.0"
+"@react-native-community/cli-config-android@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-config-android@npm:20.1.0"
dependencies:
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-tools": "npm:20.1.0"
fast-glob: "npm:^3.3.2"
fast-xml-parser: "npm:^4.4.1"
- checksum: 10/fbd897df48793b050429e77114b8fcf42364b8847a199873818977cb8102ce303bb3e4fbf1842fd66608d96409e27835111e19e80c670dc6067066e53d4c500f
+ picocolors: "npm:^1.1.1"
+ checksum: 10/d14b6c5d172c54a9a4ff7fda8feb91d2f644ca50f2bd1d5109b77d0cfd51c808aca4e6fd957500bb6aaf01bdb7b916ea6028a4658b46b2f8f72ee54bea3dfdd2
languageName: node
linkType: hard
-"@react-native-community/cli-config-apple@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-config-apple@npm:20.0.0"
+"@react-native-community/cli-config-apple@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-config-apple@npm:20.1.0"
dependencies:
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-tools": "npm:20.1.0"
execa: "npm:^5.0.0"
fast-glob: "npm:^3.3.2"
- checksum: 10/7c4e01c894199db48c15265d6d336ece4e103bf23e282e09f08eaa9e03b2237e8dae659e41a2f5fe7f091c9b31f22b3756bdd0f92b8eb6483d279c71b7fc6c99
+ picocolors: "npm:^1.1.1"
+ checksum: 10/5097011bb1831b9eff8d7e1f2964fe265bab3bb7e97ad681985368dc41a853811c474d235ea793edf5e31ad49810744f16bbfff3623e7629ef757eb80858a832
languageName: node
linkType: hard
-"@react-native-community/cli-config@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-config@npm:20.0.0"
+"@react-native-community/cli-config@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-config@npm:20.1.0"
dependencies:
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-tools": "npm:20.1.0"
cosmiconfig: "npm:^9.0.0"
deepmerge: "npm:^4.3.0"
fast-glob: "npm:^3.3.2"
joi: "npm:^17.2.1"
- checksum: 10/aaf5e5cb07105abe0eb179b2ed230f24546068780cee02986b5d71447f928f5bff0e2fbc84e02302cf60f2795da8fa919eb204da41f9421f2cfaec9dc53c98c7
+ picocolors: "npm:^1.1.1"
+ checksum: 10/8d53c31641527a245be566992c6a13dc6711d8cfee4f65293ba169e0466c45c71af08a36e00dd550edfa74c1207f702293a8f07acd9a09a36320440e5922bb51
languageName: node
linkType: hard
-"@react-native-community/cli-doctor@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-doctor@npm:20.0.0"
+"@react-native-community/cli-doctor@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-doctor@npm:20.1.0"
dependencies:
- "@react-native-community/cli-config": "npm:20.0.0"
- "@react-native-community/cli-platform-android": "npm:20.0.0"
- "@react-native-community/cli-platform-apple": "npm:20.0.0"
- "@react-native-community/cli-platform-ios": "npm:20.0.0"
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-config": "npm:20.1.0"
+ "@react-native-community/cli-platform-android": "npm:20.1.0"
+ "@react-native-community/cli-platform-apple": "npm:20.1.0"
+ "@react-native-community/cli-platform-ios": "npm:20.1.0"
+ "@react-native-community/cli-tools": "npm:20.1.0"
command-exists: "npm:^1.2.8"
deepmerge: "npm:^4.3.0"
envinfo: "npm:^7.13.0"
execa: "npm:^5.0.0"
node-stream-zip: "npm:^1.9.1"
ora: "npm:^5.4.1"
+ picocolors: "npm:^1.1.1"
semver: "npm:^7.5.2"
wcwidth: "npm:^1.0.1"
yaml: "npm:^2.2.1"
- checksum: 10/c78de0b83287c1db03e780123a83c3f26a8883dc54b5b3a1c34e2d3ed1050e39fbf597b95d8899f878b5ef61a89e05493c62d644e84293008eb4da73a4feb2a8
+ checksum: 10/65101ca2da9d970245bcb09c4ce19ec9b75d9d8fac3dd3dfd857ed09a4e5336e4d4f10815b1a0e6211dfbfb66ef601a3df614aa20f2a57a869a09b71cd9850d8
languageName: node
linkType: hard
-"@react-native-community/cli-platform-android@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-platform-android@npm:20.0.0"
+"@react-native-community/cli-platform-android@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-platform-android@npm:20.1.0"
dependencies:
- "@react-native-community/cli-config-android": "npm:20.0.0"
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-config-android": "npm:20.1.0"
+ "@react-native-community/cli-tools": "npm:20.1.0"
execa: "npm:^5.0.0"
logkitty: "npm:^0.7.1"
- checksum: 10/a5b4da7a329e3723d4285f60b18068e78a18451cc948ef79088f1dfbfffc22413a7e94a3c3cc91aee27cf9438bb6b57212b5275e7e5d7af7db41011c4c628f12
+ picocolors: "npm:^1.1.1"
+ checksum: 10/a98faac2a41272041d4643e81cd9950002b555a50bfb53567f72b4ea3e64295a0e5cb79c66fd06f1162a3c367d07114067a446a8849b71c8c4a1f8f0bdf7b199
languageName: node
linkType: hard
-"@react-native-community/cli-platform-apple@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-platform-apple@npm:20.0.0"
+"@react-native-community/cli-platform-apple@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-platform-apple@npm:20.1.0"
dependencies:
- "@react-native-community/cli-config-apple": "npm:20.0.0"
- "@react-native-community/cli-tools": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-config-apple": "npm:20.1.0"
+ "@react-native-community/cli-tools": "npm:20.1.0"
execa: "npm:^5.0.0"
fast-xml-parser: "npm:^4.4.1"
- checksum: 10/a1a4c0fcdf9e3c819e0804de2447aed230d1f16c36107728374121deda60acd644550c0f5aeb98f6cd25846da9e6358617c67aaf895eab6e9a81cff1030cf8dd
+ picocolors: "npm:^1.1.1"
+ checksum: 10/8785ffa90d7c5398c1fa00dad37ad8e11b008bec56d6910b1d7d845e90a5b850da9fa51fd8296e7a604771d2e8623654e898f12c4c473ec027d02fc35e682f3b
languageName: node
linkType: hard
-"@react-native-community/cli-platform-ios@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-platform-ios@npm:20.0.0"
+"@react-native-community/cli-platform-ios@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-platform-ios@npm:20.1.0"
dependencies:
- "@react-native-community/cli-platform-apple": "npm:20.0.0"
- checksum: 10/c7fc89332a7cb9fa71c1c5d4fe928d39b0514c74fdcc85251a7a35344f1f5e9e3b4cd23a85a70ce447dded6e6552a5edfa848cf07d8b26127a0c3b05ce3e1768
+ "@react-native-community/cli-platform-apple": "npm:20.1.0"
+ checksum: 10/da425c68bb20ade47f6283eba247d210206ddd651c9f80191c1b6e92ee5978a35b69df7a96c323dad9a0cf4dce7236ab84f34d9a6c51aa1d776d61de48f657eb
languageName: node
linkType: hard
-"@react-native-community/cli-server-api@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-server-api@npm:20.0.0"
+"@react-native-community/cli-server-api@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-server-api@npm:20.1.0"
dependencies:
- "@react-native-community/cli-tools": "npm:20.0.0"
+ "@react-native-community/cli-tools": "npm:20.1.0"
body-parser: "npm:^1.20.3"
compression: "npm:^1.7.1"
connect: "npm:^3.6.5"
@@ -4100,82 +4211,82 @@ __metadata:
pretty-format: "npm:^29.7.0"
serve-static: "npm:^1.13.1"
ws: "npm:^6.2.3"
- checksum: 10/1d58c5a4a451c861db13065898f6c825b8c811fb37fa588fc76edede10d4899fd786055137339eda4033335db97630419017b4f843f4f36a1b00b37296710f47
+ checksum: 10/cfa0fe00cb459459f254b94a770c85693b544e26f708a0ccf0b13bda76cfe8102a038ad9c81e2cf752b7abd4356c383180bdbb140ac2f9b063fdf53e48c411bf
languageName: node
linkType: hard
-"@react-native-community/cli-tools@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-tools@npm:20.0.0"
+"@react-native-community/cli-tools@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-tools@npm:20.1.0"
dependencies:
"@vscode/sudo-prompt": "npm:^9.0.0"
appdirsjs: "npm:^1.2.4"
- chalk: "npm:^4.1.2"
execa: "npm:^5.0.0"
find-up: "npm:^5.0.0"
launch-editor: "npm:^2.9.1"
mime: "npm:^2.4.1"
ora: "npm:^5.4.1"
+ picocolors: "npm:^1.1.1"
prompts: "npm:^2.4.2"
semver: "npm:^7.5.2"
- checksum: 10/5418844eb46e159d05d6ca4af38e054ffd157ae016576eed4d10bb3bdc345bdb8ca30e3cc5a27aff4a7a49727fd4b1da88f7855469ebbfbbdd042ad58951b764
+ checksum: 10/f773a183a078fe2077a14405370840fb16a96b77ce2f0b3789b3383840d425657979f64793f8b38e6e9051106a9fa0cca7d062919479e24b1bd3df1692435578
languageName: node
linkType: hard
-"@react-native-community/cli-types@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli-types@npm:20.0.0"
+"@react-native-community/cli-types@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli-types@npm:20.1.0"
dependencies:
joi: "npm:^17.2.1"
- checksum: 10/b64b03ff09eb3952c37ba96544156f0b6ffa76e616361a48254e645f914beaa844943ff77ee1fba46445ef8b45f726109fc9ad249afb9d360602cb03db846368
+ checksum: 10/1ae86701a98ac21d0e67f2fcce3859e44c2315c55076aaf82cf80ebf19e91fe95f177208803fddd562f6578549f6ee816356406b5ce106fa0a4e7d30f5aafcdc
languageName: node
linkType: hard
-"@react-native-community/cli@npm:20.0.0":
- version: 20.0.0
- resolution: "@react-native-community/cli@npm:20.0.0"
+"@react-native-community/cli@npm:20.1.0":
+ version: 20.1.0
+ resolution: "@react-native-community/cli@npm:20.1.0"
dependencies:
- "@react-native-community/cli-clean": "npm:20.0.0"
- "@react-native-community/cli-config": "npm:20.0.0"
- "@react-native-community/cli-doctor": "npm:20.0.0"
- "@react-native-community/cli-server-api": "npm:20.0.0"
- "@react-native-community/cli-tools": "npm:20.0.0"
- "@react-native-community/cli-types": "npm:20.0.0"
- chalk: "npm:^4.1.2"
+ "@react-native-community/cli-clean": "npm:20.1.0"
+ "@react-native-community/cli-config": "npm:20.1.0"
+ "@react-native-community/cli-doctor": "npm:20.1.0"
+ "@react-native-community/cli-server-api": "npm:20.1.0"
+ "@react-native-community/cli-tools": "npm:20.1.0"
+ "@react-native-community/cli-types": "npm:20.1.0"
commander: "npm:^9.4.1"
deepmerge: "npm:^4.3.0"
execa: "npm:^5.0.0"
find-up: "npm:^5.0.0"
fs-extra: "npm:^8.1.0"
graceful-fs: "npm:^4.1.3"
+ picocolors: "npm:^1.1.1"
prompts: "npm:^2.4.2"
semver: "npm:^7.5.2"
bin:
rnc-cli: build/bin.js
- checksum: 10/9f52dce4f6c25d414ba4549153b70daef7708f5603f88f90147c9ec4dd29118f62995294eb20cb3f7c4018367bda66dac344d25ed0e9ffaad6b62a94b29ba75b
+ checksum: 10/edd3e93b45b68c3a1f3cd623d350293505a256bdac39e4dc5760c27ca9bc0cc7330e31f95688a8a068fd32edff91a9bf620b2ed8fdb2ee8b53b362c18a022d59
languageName: node
linkType: hard
-"@react-native/assets-registry@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/assets-registry@npm:0.83.0"
- checksum: 10/9c314a311739e5ea555155df54821f888f3c61de6bcd71db60a253b27aefb42116892d487efb57a5ba99998c9835e1b123019bfe4397c087d0bcef38bad43c8c
+"@react-native/assets-registry@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/assets-registry@npm:0.86.2"
+ checksum: 10/e2883510bc5fd655ea1caaea12dbd12e574a101e20b944a6d0a7ab1d0f80123bc2a41120618f35221901bad7d7a0dabb57b7f2b0847e5b39c16cba41b713aeec
languageName: node
linkType: hard
-"@react-native/babel-plugin-codegen@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/babel-plugin-codegen@npm:0.83.0"
+"@react-native/babel-plugin-codegen@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/babel-plugin-codegen@npm:0.86.2"
dependencies:
- "@babel/traverse": "npm:^7.25.3"
- "@react-native/codegen": "npm:0.83.0"
- checksum: 10/e43452305c2fcbfbc1647f1818241366a0924a6869ffae871cd86bffa7d6cd4d789edd1542f919a2f2906ebb2a425f4ad78766a4f3df8d5bc5317994d0a026f6
+ "@babel/traverse": "npm:^7.29.0"
+ "@react-native/codegen": "npm:0.86.2"
+ checksum: 10/7e290dccb3c37d326fb078cf8725ed7cba4b85f0fe1fa538e9f56e4a425af13bd5776926be0890f5420ff706b0522e7582daa8a9c2647e510acc2bada99fd427
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/babel-preset@npm:0.83.0"
+"@react-native/babel-preset@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/babel-preset@npm:0.86.2"
dependencies:
"@babel/core": "npm:^7.25.2"
"@babel/plugin-proposal-export-default-from": "npm:^7.24.7"
@@ -4183,27 +4294,19 @@ __metadata:
"@babel/plugin-syntax-export-default-from": "npm:^7.24.7"
"@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
- "@babel/plugin-transform-arrow-functions": "npm:^7.24.7"
"@babel/plugin-transform-async-generator-functions": "npm:^7.25.4"
"@babel/plugin-transform-async-to-generator": "npm:^7.24.7"
"@babel/plugin-transform-block-scoping": "npm:^7.25.0"
"@babel/plugin-transform-class-properties": "npm:^7.25.4"
"@babel/plugin-transform-classes": "npm:^7.25.4"
- "@babel/plugin-transform-computed-properties": "npm:^7.24.7"
"@babel/plugin-transform-destructuring": "npm:^7.24.8"
"@babel/plugin-transform-flow-strip-types": "npm:^7.25.2"
"@babel/plugin-transform-for-of": "npm:^7.24.7"
- "@babel/plugin-transform-function-name": "npm:^7.25.1"
- "@babel/plugin-transform-literals": "npm:^7.25.2"
- "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7"
"@babel/plugin-transform-modules-commonjs": "npm:^7.24.8"
"@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7"
"@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7"
- "@babel/plugin-transform-numeric-separator": "npm:^7.24.7"
- "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7"
"@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7"
"@babel/plugin-transform-optional-chaining": "npm:^7.24.8"
- "@babel/plugin-transform-parameters": "npm:^7.24.7"
"@babel/plugin-transform-private-methods": "npm:^7.24.7"
"@babel/plugin-transform-private-property-in-object": "npm:^7.24.7"
"@babel/plugin-transform-react-display-name": "npm:^7.24.7"
@@ -4212,88 +4315,85 @@ __metadata:
"@babel/plugin-transform-react-jsx-source": "npm:^7.24.7"
"@babel/plugin-transform-regenerator": "npm:^7.24.7"
"@babel/plugin-transform-runtime": "npm:^7.24.7"
- "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7"
- "@babel/plugin-transform-spread": "npm:^7.24.7"
- "@babel/plugin-transform-sticky-regex": "npm:^7.24.7"
"@babel/plugin-transform-typescript": "npm:^7.25.2"
"@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
- "@babel/template": "npm:^7.25.0"
- "@react-native/babel-plugin-codegen": "npm:0.83.0"
- babel-plugin-syntax-hermes-parser: "npm:0.32.0"
+ "@react-native/babel-plugin-codegen": "npm:0.86.2"
+ babel-plugin-syntax-hermes-parser: "npm:0.36.0"
babel-plugin-transform-flow-enums: "npm:^0.0.2"
react-refresh: "npm:^0.14.0"
peerDependencies:
"@babel/core": "*"
- checksum: 10/c68fcec86eabdce17c83b2f500d6bf09d5f25755dccb10d1c0117522152331474d605ccfc7f53e4b9e3df63482616e1143d554897b76fcd7154a1f2079192f32
+ checksum: 10/4d12187a4ee0c82784b6fddecef460ffd8166a5aaa73a309729ca00311d98f5f9c017fe9bb4c99d4cf8c65f0072a76460f97713df3e133acc6e2d1f806d88bb0
languageName: node
linkType: hard
-"@react-native/codegen@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/codegen@npm:0.83.0"
+"@react-native/codegen@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/codegen@npm:0.86.2"
dependencies:
"@babel/core": "npm:^7.25.2"
- "@babel/parser": "npm:^7.25.3"
- glob: "npm:^7.1.1"
- hermes-parser: "npm:0.32.0"
+ "@babel/parser": "npm:^7.29.0"
+ hermes-parser: "npm:0.36.0"
invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
+ tinyglobby: "npm:^0.2.15"
yargs: "npm:^17.6.2"
peerDependencies:
"@babel/core": "*"
- checksum: 10/6a201c7760aa7404e869eca97ebbeb233eec318d4881c218b899a8c1534793bd1d17c6ff334c3ef827ccf5e43d90fbab6ca9d932af8f4bf19a8d5c8e9dc8f021
+ checksum: 10/1e53ef322b099048fc21186bc2d21e1c4fc8437d19187ebabbad165bd033d88fc3f871f3a43c1fc788482f763205ea3df28e8a20b2c800aa84906f0135a536f0
languageName: node
linkType: hard
-"@react-native/community-cli-plugin@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/community-cli-plugin@npm:0.83.0"
+"@react-native/community-cli-plugin@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/community-cli-plugin@npm:0.86.2"
dependencies:
- "@react-native/dev-middleware": "npm:0.83.0"
+ "@react-native/dev-middleware": "npm:0.86.2"
debug: "npm:^4.4.0"
invariant: "npm:^2.2.4"
- metro: "npm:^0.83.3"
- metro-config: "npm:^0.83.3"
- metro-core: "npm:^0.83.3"
+ metro: "npm:^0.84.3"
+ metro-config: "npm:^0.84.3"
+ metro-core: "npm:^0.84.3"
semver: "npm:^7.1.3"
peerDependencies:
"@react-native-community/cli": "*"
- "@react-native/metro-config": "*"
+ "@react-native/metro-config": 0.86.2
peerDependenciesMeta:
"@react-native-community/cli":
optional: true
"@react-native/metro-config":
optional: true
- checksum: 10/b0a664d828270c7be320c84b6f6f37dc08682d899157865cd8655f5bac99d2b990c9cc4dcaf57f4c284c698af41dd97bc4acd34fec5fc052f535c83a74cf0cb9
+ checksum: 10/0fcce65bed24a7eac1ff59fbd8fa8dd92002cc54f1e96aceac524a01960c9ba730ca3dab8128a94ce80d7ab90169b935a248a3507d573cbdc30cc1eddeb7d322
languageName: node
linkType: hard
-"@react-native/debugger-frontend@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/debugger-frontend@npm:0.83.0"
- checksum: 10/3f52e5400c24173f7619d35be95b6899f15e087e218d8ad580a5a931e908c2d0ef0e752619a73752bc5ed18f35a96fd38723c1967fa65f68e9f8cc6bd43972dc
+"@react-native/debugger-frontend@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/debugger-frontend@npm:0.86.2"
+ checksum: 10/7636614ba8be9eaff9083708b979b0549d969ca8c6bd71386d6d931b5450c6e817af618b3ef30a916dd18ff00d57d97e6a6330fe85dc53aea3378c31784416fd
languageName: node
linkType: hard
-"@react-native/debugger-shell@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/debugger-shell@npm:0.83.0"
+"@react-native/debugger-shell@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/debugger-shell@npm:0.86.2"
dependencies:
cross-spawn: "npm:^7.0.6"
+ debug: "npm:^4.4.0"
fb-dotslash: "npm:0.5.8"
- checksum: 10/51b61131b90a9e09f259a5999759b77d9384cf9b0f38e4c4da1b63a1a729126349f9d20f51d599e527ebe5430945e2e1ddde17d933aa30c0775e2437694db50f
+ checksum: 10/5e6ca82ffdd2c64a611a23e67ecdc060b24c7d2e17149d2ddc159d6eb55da1d431956f729b8ce75c2cbc66eab1d9eb7a9a654f26dbf2dd57629c68d759a60a56
languageName: node
linkType: hard
-"@react-native/dev-middleware@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/dev-middleware@npm:0.83.0"
+"@react-native/dev-middleware@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/dev-middleware@npm:0.86.2"
dependencies:
"@isaacs/ttlcache": "npm:^1.4.1"
- "@react-native/debugger-frontend": "npm:0.83.0"
- "@react-native/debugger-shell": "npm:0.83.0"
+ "@react-native/debugger-frontend": "npm:0.86.2"
+ "@react-native/debugger-shell": "npm:0.86.2"
chrome-launcher: "npm:^0.15.2"
- chromium-edge-launcher: "npm:^0.2.0"
+ chromium-edge-launcher: "npm:^0.3.0"
connect: "npm:^3.6.5"
debug: "npm:^4.4.0"
invariant: "npm:^2.2.4"
@@ -4301,122 +4401,137 @@ __metadata:
open: "npm:^7.0.3"
serve-static: "npm:^1.16.2"
ws: "npm:^7.5.10"
- checksum: 10/524df13d559e4593887b6183cedafb43ea0d6b07e4b04b527549efcce03e2809044937c7fc0c6483fc14fb237d74b0c706c2fd01825e3abb5a3cc009a27aba8b
+ checksum: 10/8db216e5ef1a74c27f31bf7b2a2f2c9ec8ee445d3bb5d7cbb482fa6ead21d5e2d6381a6fbcd398723c4fd73a2391dceb80602157f322b32f6c0c3d4909318e48
languageName: node
linkType: hard
-"@react-native/eslint-config@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/eslint-config@npm:0.83.0"
+"@react-native/eslint-config@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/eslint-config@npm:0.86.2"
dependencies:
"@babel/core": "npm:^7.25.2"
"@babel/eslint-parser": "npm:^7.25.1"
- "@react-native/eslint-plugin": "npm:0.83.0"
+ "@react-native/eslint-plugin": "npm:0.86.2"
"@typescript-eslint/eslint-plugin": "npm:^8.36.0"
"@typescript-eslint/parser": "npm:^8.36.0"
eslint-config-prettier: "npm:^8.5.0"
eslint-plugin-eslint-comments: "npm:^3.2.0"
eslint-plugin-ft-flow: "npm:^2.0.1"
eslint-plugin-jest: "npm:^29.0.1"
- eslint-plugin-react: "npm:^7.30.1"
+ eslint-plugin-react: "npm:^7.37.5"
eslint-plugin-react-hooks: "npm:^7.0.1"
- eslint-plugin-react-native: "npm:^4.0.0"
+ eslint-plugin-react-native: "npm:^5.0.0"
peerDependencies:
- eslint: ">=8"
+ eslint: ^8.0.0 || ^9.0.0
prettier: ">=2"
- checksum: 10/57499395d2438257830aa745da0b5ce520a8c5bded4b300c6b86fbc5695a56ffe2d684559071066ec04686b2c7a1bfb688913ade7f0754ac9dff03871964a63b
+ checksum: 10/01ca8f576ced813986e05fe917b9531336f2db66fb988841ae8b92038b8119016c83d46796cf032936ed215e8d2980e6d06c44b8a2e4ca9d2d359f6a25c38d2a
+ languageName: node
+ linkType: hard
+
+"@react-native/eslint-plugin@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/eslint-plugin@npm:0.86.2"
+ checksum: 10/c1371776c8157eee36f6e3dbfa9412487f67548ed88d907439fe827308be513785a43dc736787e9d5581dcb8597392984ed5673765d1463b0ad67951903e2362
languageName: node
linkType: hard
-"@react-native/eslint-plugin@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/eslint-plugin@npm:0.83.0"
- checksum: 10/aa62a1157094926b1cc616ad73887045a189b63e8d3d9b021633019ff92f1bbe5188b5f3c9cd110ea4c33cd3f696ab6b578ed3c1b347f6dc48adef2cf1cb3ecc
+"@react-native/gradle-plugin@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/gradle-plugin@npm:0.86.2"
+ checksum: 10/48569f53908b2b3cf6075f298d19e2a1c171240c6b46ff3ffd21014af872bfda716c7df98dbb927b7a5c7849d16f2d3349a7bc3959f86e81c3057ac5c9c90e8d
languageName: node
linkType: hard
-"@react-native/gradle-plugin@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/gradle-plugin@npm:0.83.0"
- checksum: 10/dcd7a47b21629a78a6f079a16a87d85ed78214dd19efafb054e7718624774b07e8c10572d054b9e31ac80c96148127a40da164b44e04e8aa434cfb93ead258fc
+"@react-native/jest-preset@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/jest-preset@npm:0.86.2"
+ dependencies:
+ "@jest/create-cache-key-function": "npm:^29.7.0"
+ "@react-native/js-polyfills": "npm:0.86.2"
+ babel-jest: "npm:^29.7.0"
+ jest-environment-node: "npm:^29.7.0"
+ regenerator-runtime: "npm:^0.13.2"
+ peerDependencies:
+ react: ^19.2.3
+ checksum: 10/5b8b434fedee7982ae891145dad6b8a0f34b5d0fa0e6398196ea7df6f98b805a392da13253dde701a751534ecd20ea9a56b9b58d51641acc25d3fcc1ebca7429
languageName: node
linkType: hard
-"@react-native/js-polyfills@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/js-polyfills@npm:0.83.0"
- checksum: 10/ce6b4d7586cb3abf866437f1590b496ab288bf19e4e4b9e58e5f6ccddb57926825cecad244ed80004f6624ad8a2b624c77becb3107c59cc27101791bf1807556
+"@react-native/js-polyfills@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/js-polyfills@npm:0.86.2"
+ checksum: 10/3c076d314c4e220e7722ceb6e03020433607e0ff330ed43d22b8013da134926a9a267d4dd82776256e780c3bf4452b5fded9b1c05ac8604669813c4bc70a7889
languageName: node
linkType: hard
-"@react-native/metro-babel-transformer@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/metro-babel-transformer@npm:0.83.0"
+"@react-native/metro-babel-transformer@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/metro-babel-transformer@npm:0.86.2"
dependencies:
"@babel/core": "npm:^7.25.2"
- "@react-native/babel-preset": "npm:0.83.0"
- hermes-parser: "npm:0.32.0"
+ "@react-native/babel-preset": "npm:0.86.2"
+ hermes-parser: "npm:0.36.0"
nullthrows: "npm:^1.1.1"
peerDependencies:
"@babel/core": "*"
- checksum: 10/b87885155d6809ae5171a793a036e17b2c0489d1d5326f4852b07abedd6d8ee316c93466db451818d85f9f783dfd5652ece349a7bea9a9762e3eb829cc5598f8
+ checksum: 10/3eee44b6bcf183ed3e18a7db9cf7ca751f62f6d594753f03f53a4ec3c2b0a939f9c1c5cca170480caa7ed62977b06481e4b2eaac2f3a3d27fd9930497f95bfdf
languageName: node
linkType: hard
-"@react-native/metro-config@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/metro-config@npm:0.83.0"
+"@react-native/metro-config@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/metro-config@npm:0.86.2"
dependencies:
- "@react-native/js-polyfills": "npm:0.83.0"
- "@react-native/metro-babel-transformer": "npm:0.83.0"
- metro-config: "npm:^0.83.3"
- metro-runtime: "npm:^0.83.3"
- checksum: 10/7316d21730443a38195ec1222c1de27a09b219c310d1bc057e0b9a9af503213d71ec9df387c65bbc3cadbb0b4dd1d5ee9958ab3b6b499d1f71a281c13e522614
+ "@react-native/js-polyfills": "npm:0.86.2"
+ "@react-native/metro-babel-transformer": "npm:0.86.2"
+ metro-config: "npm:^0.84.3"
+ metro-runtime: "npm:^0.84.3"
+ checksum: 10/df2f2dad3bce2f72a019c1e829d946b3abe9e714b77519b44ea02e57a46fda205267ff8019e3598ed65ae431109f59c2322e8cc5bd5e1c6d5ea58203b5c2abad
languageName: node
linkType: hard
-"@react-native/new-app-screen@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/new-app-screen@npm:0.83.0"
+"@react-native/new-app-screen@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/new-app-screen@npm:0.86.2"
peerDependencies:
"@types/react": ^19.1.0
react: "*"
- react-native: "*"
+ react-native: 0.86.2
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10/52b1641e2293a67da999f65d4122bbd0a7604175085a458f6fc27e1e66277da9e750cdaf9e1eb0b89da99b01773aa927c998f7bc689e5e3c30a8f43da87eb2dd
+ checksum: 10/ce6f7bb23308f2a73e0720352a5b3421c3e13bc80fc589a99ed990c26c5248bc4f95214d2eb6da9e07421ebd9e7dcd738a989a5555d5d67d0c7cf3543cb849d2
languageName: node
linkType: hard
-"@react-native/normalize-colors@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/normalize-colors@npm:0.83.0"
- checksum: 10/84e3122bd0292ae9ee61a6d2997119196a5dc128ede7770a2a70e3b9de1b78f5f2a10b44dc683ce2652ad8f45767f249a74d1a86f7657a5dae7a377790512f68
+"@react-native/normalize-colors@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/normalize-colors@npm:0.86.2"
+ checksum: 10/876478b3010ab47e6a3335aeb9e1dc84a34fa9ce7c48cdf904a3ba9d289764f70b8306680522b0c8dd5db5b8358da525438fd22847577a47fe1a59e59bf7226e
languageName: node
linkType: hard
-"@react-native/typescript-config@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/typescript-config@npm:0.83.0"
- checksum: 10/ad256ffa3602a34539b5f94886c1ce7960537d6992a28d7bbc833996139394081dfbe2ae9f2e40cb505050e8d6c1c9d841330928218281637e34c1b9c5aa0366
+"@react-native/typescript-config@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/typescript-config@npm:0.86.2"
+ checksum: 10/9dce152daee53997017e3c27d69fa8b79f3898c15c2dd070e934eb0b13289c8cf2d099d3a3a17e50a14310d5a226bca99c2010c1ea6ac74c0991333501b411e6
languageName: node
linkType: hard
-"@react-native/virtualized-lists@npm:0.83.0":
- version: 0.83.0
- resolution: "@react-native/virtualized-lists@npm:0.83.0"
+"@react-native/virtualized-lists@npm:0.86.2":
+ version: 0.86.2
+ resolution: "@react-native/virtualized-lists@npm:0.86.2"
dependencies:
invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
peerDependencies:
"@types/react": ^19.2.0
react: "*"
- react-native: "*"
+ react-native: 0.86.2
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10/b51a3c0c110b6d259b6cf25fa4d143b03cbd6b637e5b33ea07453c0aa12a061e2f861a67c1b4089f96817ef46a1bd3709ecae3133026e92b77979b96a08bff06
+ checksum: 10/a894716f737d797829afa8dda0324e7ff48d12918bef7b3e23c7351a34fa87e41d202a4618db7888e963ea107e758f68f6905307c5093a9fe2f24d38205ba0b3
languageName: node
linkType: hard
@@ -4970,7 +5085,17 @@ __metadata:
languageName: node
linkType: hard
-"accepts@npm:^1.3.7, accepts@npm:~1.3.8":
+"accepts@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "accepts@npm:2.0.0"
+ dependencies:
+ mime-types: "npm:^3.0.0"
+ negotiator: "npm:^1.0.0"
+ checksum: 10/ea1343992b40b2bfb3a3113fa9c3c2f918ba0f9197ae565c48d3f84d44b174f6b1d5cd9989decd7655963eb03a272abc36968cc439c2907f999bd5ef8653d5a7
+ languageName: node
+ linkType: hard
+
+"accepts@npm:~1.3.8":
version: 1.3.8
resolution: "accepts@npm:1.3.8"
dependencies:
@@ -5411,12 +5536,12 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-syntax-hermes-parser@npm:0.32.0":
- version: 0.32.0
- resolution: "babel-plugin-syntax-hermes-parser@npm:0.32.0"
+"babel-plugin-syntax-hermes-parser@npm:0.36.0":
+ version: 0.36.0
+ resolution: "babel-plugin-syntax-hermes-parser@npm:0.36.0"
dependencies:
- hermes-parser: "npm:0.32.0"
- checksum: 10/ec76abeefabf940e2d571db3b47d022a9be7602286133291e8e047d4855af6a8afc079e4631bc9a56209d751fad54b5199932a55753b1e2b56a719d20e2d5065
+ hermes-parser: "npm:0.36.0"
+ checksum: 10/22489c19d416f1e071c046ab42d5dd475ed5b76514621f755f55b4e8019ecd665dce8da40be2a5436bbd5d4f2d258ebceda30601e078104ce11fe4371b7a36a0
languageName: node
linkType: hard
@@ -5732,7 +5857,7 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2":
+"chalk@npm:^4.0.0, chalk@npm:^4.1.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@@ -5793,17 +5918,16 @@ __metadata:
languageName: node
linkType: hard
-"chromium-edge-launcher@npm:^0.2.0":
- version: 0.2.0
- resolution: "chromium-edge-launcher@npm:0.2.0"
+"chromium-edge-launcher@npm:^0.3.0":
+ version: 0.3.0
+ resolution: "chromium-edge-launcher@npm:0.3.0"
dependencies:
"@types/node": "npm:*"
escape-string-regexp: "npm:^4.0.0"
is-wsl: "npm:^2.2.0"
lighthouse-logger: "npm:^1.0.0"
mkdirp: "npm:^1.0.4"
- rimraf: "npm:^3.0.2"
- checksum: 10/9c58094cb6f149f8b9aae6937c5e60fee3cdf7e43a6902d8d70d2bc18878a0479f1637a5b44f6fbec5c84aa52972fc3ccba61b9984a584f3d98700e247d4ad94
+ checksum: 10/1df5a42cb8bbcc01486b8ab4739341d493075e09715c2039fb2646056d6a6e533048a4274e53b7c4dcd477f205133e3dd4d8d095e0caaf08cefc2dc2627af9dc
languageName: node
linkType: hard
@@ -7107,18 +7231,18 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-react-native@npm:^4.0.0":
- version: 4.1.0
- resolution: "eslint-plugin-react-native@npm:4.1.0"
+"eslint-plugin-react-native@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "eslint-plugin-react-native@npm:5.0.0"
dependencies:
eslint-plugin-react-native-globals: "npm:^0.1.1"
peerDependencies:
- eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8
- checksum: 10/fb2d65a3faca9bf775a0fa430eb7e86b7c27d0b256916d4f79a94def9ad353c8a10605f1f0dc9a5fb10e446b003341d53af9d8cbca4dd7ba394350355efa30c6
+ eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+ checksum: 10/41e84d806b74e3b4906c5541cad0caf1c79e30031130a1f3e92f9c030fb12e9ee4b193ea7b6ed5c425f2d83795e7f3ca51ab357e7e8f1f3d89c12fd4613343be
languageName: node
linkType: hard
-"eslint-plugin-react@npm:^7.30.1":
+"eslint-plugin-react@npm:^7.37.5":
version: 7.37.5
resolution: "eslint-plugin-react@npm:7.37.5"
dependencies:
@@ -8019,7 +8143,7 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4":
+"glob@npm:^7.1.3, glob@npm:^7.1.4":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
@@ -8192,10 +8316,10 @@ __metadata:
languageName: node
linkType: hard
-"hermes-compiler@npm:0.14.0":
- version: 0.14.0
- resolution: "hermes-compiler@npm:0.14.0"
- checksum: 10/880a5570770a977731f98fe2bedf5b7079e2e851a16e08ec89aeaa1de552e885734de3be513bc5633e5415fd1ac497b7b630aab75a46c359a5d30a243a1dcf11
+"hermes-compiler@npm:250829098.0.16":
+ version: 250829098.0.16
+ resolution: "hermes-compiler@npm:250829098.0.16"
+ checksum: 10/49cd9558ed26ad2f11c897058f995fab113cf95b1ece9fda512045cebf60b75387aa0d2e7fdf3201b4d0102ea0d63963f7e7e4c3500c9dad2daa95e0c9f57146
languageName: node
linkType: hard
@@ -8213,10 +8337,17 @@ __metadata:
languageName: node
linkType: hard
-"hermes-estree@npm:0.32.0":
- version: 0.32.0
- resolution: "hermes-estree@npm:0.32.0"
- checksum: 10/65a30a86a5a560152a2de1842c7bc7ecdadebd62e9cdd7d1809a824de7bc19e8d6a42907d3caff91d9f823862405d4b200447aa0bc25ba16072937e93d0acbd5
+"hermes-estree@npm:0.35.0":
+ version: 0.35.0
+ resolution: "hermes-estree@npm:0.35.0"
+ checksum: 10/d10283d0189ab2270ecae08632ed4f15eb79f206add4960d198aa6efd5686e1c92ed37c17a020c730281e46ff2f56661f3d787bdfb1692218c1495b329049747
+ languageName: node
+ linkType: hard
+
+"hermes-estree@npm:0.36.0":
+ version: 0.36.0
+ resolution: "hermes-estree@npm:0.36.0"
+ checksum: 10/76f3fec9700a8ccb299cf53be22cd9038caf3bfba711370dd24f276444c1ed3c38c27fedd3097f6d9cccaa4dfaa4d02de0f8f02e208ab3fb00c97f8845b8aac5
languageName: node
linkType: hard
@@ -8229,12 +8360,21 @@ __metadata:
languageName: node
linkType: hard
-"hermes-parser@npm:0.32.0":
- version: 0.32.0
- resolution: "hermes-parser@npm:0.32.0"
+"hermes-parser@npm:0.35.0":
+ version: 0.35.0
+ resolution: "hermes-parser@npm:0.35.0"
+ dependencies:
+ hermes-estree: "npm:0.35.0"
+ checksum: 10/62be25fa41b708db21c4db9153b0d60cfbf9bd4645f1712eb559b3be8c191266b5b381df60fbbc45416799f73c2361eb69a81eead21dc5159fe2ea72f946d5f7
+ languageName: node
+ linkType: hard
+
+"hermes-parser@npm:0.36.0":
+ version: 0.36.0
+ resolution: "hermes-parser@npm:0.36.0"
dependencies:
- hermes-estree: "npm:0.32.0"
- checksum: 10/496210490cb45e97df14796d94aec6c817c4cefa20f1dbe3ba1df323cc58c930033cfec93f3ecfad6b90e09166fc9ffc4f665843d25b4862523aa70dacbae81f
+ hermes-estree: "npm:0.36.0"
+ checksum: 10/81150c00bd8da17187f421a75e6e427187465386681427024f3dc51de996c44cee18fb062d95254028aa1f4ffcdbe7cbdeda50e6edece5c378c9f909067f5bae
languageName: node
linkType: hard
@@ -8372,17 +8512,6 @@ __metadata:
languageName: node
linkType: hard
-"image-size@npm:^1.0.2":
- version: 1.2.1
- resolution: "image-size@npm:1.2.1"
- dependencies:
- queue: "npm:6.0.2"
- bin:
- image-size: bin/image-size.js
- checksum: 10/b290c6cc5635565b1da51991472eb6522808430dbe3415823649723dc5f5fd8263f0f98f9bdec46184274ea24fe4f3f7a297c84b647b412e14d2208703dd8a19
- languageName: node
- linkType: hard
-
"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.1
resolution: "import-fresh@npm:3.3.1"
@@ -8436,7 +8565,7 @@ __metadata:
languageName: node
linkType: hard
-"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4":
+"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.4":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
@@ -10197,69 +10326,70 @@ __metadata:
languageName: node
linkType: hard
-"metro-babel-transformer@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-babel-transformer@npm:0.83.3"
+"metro-babel-transformer@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-babel-transformer@npm:0.84.5"
dependencies:
"@babel/core": "npm:^7.25.2"
flow-enums-runtime: "npm:^0.0.6"
- hermes-parser: "npm:0.32.0"
+ hermes-parser: "npm:0.35.0"
+ metro-cache-key: "npm:0.84.5"
nullthrows: "npm:^1.1.1"
- checksum: 10/dd178409d1718dae12dfffb6572ebc5bb78f1e0d7e93dce829c945957f8a686cb1b4c466c69585d7b982b3937fbea28d5c53a80691f2fc66717a0bcc800bc5b8
+ checksum: 10/73694b1c2707fa69abad039327031e5e73e69e98fa2a438065246ca6fcf189bce68844f69b93f30ac174e31c19df26fed2c5f46381c5bd690e2a091dacdaaba3
languageName: node
linkType: hard
-"metro-cache-key@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-cache-key@npm:0.83.3"
+"metro-cache-key@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-cache-key@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/a6f9d2bf8b810f57d330d6f8f1ebf029e1224f426c5895f73d9bc1007482684048bfc7513a855626ee7f3ae72ca46e1b08cf983aefbfa84321bb7c0cef4ba4ae
+ checksum: 10/ad6d7980687391281b5ee498b2485fe7f65a0d74b43bb6d336bae892983d54722024a119c2ae71de8670ed7f2e6db840075e18b326e1fca6397043ad1a7d0114
languageName: node
linkType: hard
-"metro-cache@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-cache@npm:0.83.3"
+"metro-cache@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-cache@npm:0.84.5"
dependencies:
exponential-backoff: "npm:^3.1.1"
flow-enums-runtime: "npm:^0.0.6"
https-proxy-agent: "npm:^7.0.5"
- metro-core: "npm:0.83.3"
- checksum: 10/4bc263ac92f176451710ebd330d156675e40f028be02eb9659a9b024db9897f3ad8510809d699969cb6f06dc0f06d85c38ca7162fb9a70be44510fa03270e089
+ metro-core: "npm:0.84.5"
+ checksum: 10/5bfaf78412d044a861cc42455d008edb8f8ea4e11db39e4328fe9137ed0f68a74a22d1db46cf3232e59892f7a1c4d58d83d3ea88730bca0d51ed19f2939f9507
languageName: node
linkType: hard
-"metro-config@npm:0.83.3, metro-config@npm:^0.83.3":
- version: 0.83.3
- resolution: "metro-config@npm:0.83.3"
+"metro-config@npm:0.84.5, metro-config@npm:^0.84.3":
+ version: 0.84.5
+ resolution: "metro-config@npm:0.84.5"
dependencies:
connect: "npm:^3.6.5"
flow-enums-runtime: "npm:^0.0.6"
jest-validate: "npm:^29.7.0"
- metro: "npm:0.83.3"
- metro-cache: "npm:0.83.3"
- metro-core: "npm:0.83.3"
- metro-runtime: "npm:0.83.3"
+ metro: "npm:0.84.5"
+ metro-cache: "npm:0.84.5"
+ metro-core: "npm:0.84.5"
+ metro-runtime: "npm:0.84.5"
yaml: "npm:^2.6.1"
- checksum: 10/e377c375a48afc85a4d742f80a17fc178f9af7f5b007375e65bb49472ad78bc8e1f0ba4399411310ee8b856fb767bd81bd6dae19bec6ef6a44f0ece4d8457b30
+ checksum: 10/e4c4a98c34abf8b6fe7a3f31c02e7987bf89f1a0ac7e7297280b3e94a6aac1d38c8aeaccbb3abfe2f742a8ba3e9e6a90cc236ab5c2dabdc898e06f47ab465195
languageName: node
linkType: hard
-"metro-core@npm:0.83.3, metro-core@npm:^0.83.3":
- version: 0.83.3
- resolution: "metro-core@npm:0.83.3"
+"metro-core@npm:0.84.5, metro-core@npm:^0.84.3":
+ version: 0.84.5
+ resolution: "metro-core@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
lodash.throttle: "npm:^4.1.1"
- metro-resolver: "npm:0.83.3"
- checksum: 10/6ef06214faa1d727396d986f989a8150f699d73c5764c66e06e61b08017e462141a7b4c9ca63f67becee58ea1394b41aabfff441e644fc1e945c715e07c60612
+ metro-resolver: "npm:0.84.5"
+ checksum: 10/e3b90d3f11421a73e070992c22e73d1f6f6d58694fee36383a233d75bfde284bdf01f8db66bb9acd51050875615b31cc72c4879176f66861d5d8adec674aa204
languageName: node
linkType: hard
-"metro-file-map@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-file-map@npm:0.83.3"
+"metro-file-map@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-file-map@npm:0.84.5"
dependencies:
debug: "npm:^4.4.0"
fb-watchman: "npm:^2.0.0"
@@ -10270,146 +10400,143 @@ __metadata:
micromatch: "npm:^4.0.4"
nullthrows: "npm:^1.1.1"
walker: "npm:^1.0.7"
- checksum: 10/be621b144168b6a35567d4313557596df68ee61c1b9a067fbf8272ec3db7c2d9d76849c9b8d2331716d6839c3f8e243e2b715ca2551d7ffebbd206a34c19591a
+ checksum: 10/8ded0ed6d5d1ead1df88957ef875b1d6108bff61bd869e56a55ae46e682e1467b81bd1fcb5f7783f4beb7cf078334ebbc592827e903dbd76ed58ed9923038bc4
languageName: node
linkType: hard
-"metro-minify-terser@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-minify-terser@npm:0.83.3"
+"metro-minify-terser@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-minify-terser@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
terser: "npm:^5.15.0"
- checksum: 10/1de88b70b7c903147807baa46497491a87600594fd0868b6538bbb9d7785242cabfbe8bccf36cc2285d0e17be72445b512d00c496952a159572545f3e6bcb199
+ checksum: 10/85e884edadbbc4862ddd4bdb8a562de1b6d05338bbd40871ced8bc267bd4d40417776d32a786cfc6cafe2fce13ba9115c8d72b042fdb2ab7a7b5ab500643b5fb
languageName: node
linkType: hard
-"metro-resolver@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-resolver@npm:0.83.3"
+"metro-resolver@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-resolver@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/a425376447505a088a365fc1fbe2753d452c0353a189f2c74833f2b30d6401de7ed90e36a927d355fa454d6c439a156eb66bcfcedfbbe8a78d313cf49acfbb4c
+ checksum: 10/601a26c5b143f857a7be6a03aceb9783f60e9526172017808479fae3c06e18bc3c16ffd0e0cbdc33ba0343a878a99545aee5923da8b4a5bd5672ef80584d9424
languageName: node
linkType: hard
-"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.3":
- version: 0.83.3
- resolution: "metro-runtime@npm:0.83.3"
+"metro-runtime@npm:0.84.5, metro-runtime@npm:^0.84.3":
+ version: 0.84.5
+ resolution: "metro-runtime@npm:0.84.5"
dependencies:
"@babel/runtime": "npm:^7.25.0"
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/bf916759a7178e1d12e131c64ac67d6015ba35ead7a178e6efedd23f12ec65de99f450fe7da0ffb6c6edbfeb3cd186d2006b979a1c1c588377ae54f5f5d7921d
+ checksum: 10/ea5977797c1c7908ce4612e8ed18b582158e7874368470f46e0cee1e19abbeff6dc233e52154d7821260087134882c96274dfeddd7586fdc023931d287cee471
languageName: node
linkType: hard
-"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.3":
- version: 0.83.3
- resolution: "metro-source-map@npm:0.83.3"
+"metro-source-map@npm:0.84.5, metro-source-map@npm:^0.84.3":
+ version: 0.84.5
+ resolution: "metro-source-map@npm:0.84.5"
dependencies:
- "@babel/traverse": "npm:^7.25.3"
- "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3"
- "@babel/types": "npm:^7.25.2"
+ "@babel/traverse": "npm:^7.29.0"
+ "@babel/types": "npm:^7.29.0"
flow-enums-runtime: "npm:^0.0.6"
invariant: "npm:^2.2.4"
- metro-symbolicate: "npm:0.83.3"
+ metro-symbolicate: "npm:0.84.5"
nullthrows: "npm:^1.1.1"
- ob1: "npm:0.83.3"
+ ob1: "npm:0.84.5"
source-map: "npm:^0.5.6"
vlq: "npm:^1.0.0"
- checksum: 10/1dcfce503628275f97dd85945ca575c71e5654fd8872b7d86449f3352cfc84ea7a59889b2aad012361245b5497e1e097db73390245952dcfb63258ba32fa90bf
+ checksum: 10/df78c1c6e31a800976a848eaa6aa1dc9736f18d7bc67a18196a73f923178ab3136c18b580263adca471004d9421b381ec6814bf5bf49ba515919f628e9a919af
languageName: node
linkType: hard
-"metro-symbolicate@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-symbolicate@npm:0.83.3"
+"metro-symbolicate@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-symbolicate@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
invariant: "npm:^2.2.4"
- metro-source-map: "npm:0.83.3"
+ metro-source-map: "npm:0.84.5"
nullthrows: "npm:^1.1.1"
source-map: "npm:^0.5.6"
vlq: "npm:^1.0.0"
bin:
metro-symbolicate: src/index.js
- checksum: 10/f3be0740655732044e92728a3bccd5f4a73ab2f9e4423ca05faee02446e9b2efd9400cc7bcd761fad9bc2a1b92855ce5b03bf13e0421a203fe179be40dcc9381
+ checksum: 10/9725953c3df5e9b59bca7bf310b42fef48cbdf7134891307271e7ecf594d3d500d2a9ec2e98f3c1d71eade4bf036c275ec1f4d2b1943b22755d948d6b5023fc0
languageName: node
linkType: hard
-"metro-transform-plugins@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-transform-plugins@npm:0.83.3"
+"metro-transform-plugins@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-transform-plugins@npm:0.84.5"
dependencies:
"@babel/core": "npm:^7.25.2"
- "@babel/generator": "npm:^7.25.0"
- "@babel/template": "npm:^7.25.0"
- "@babel/traverse": "npm:^7.25.3"
+ "@babel/generator": "npm:^7.29.1"
+ "@babel/template": "npm:^7.28.6"
+ "@babel/traverse": "npm:^7.29.0"
flow-enums-runtime: "npm:^0.0.6"
nullthrows: "npm:^1.1.1"
- checksum: 10/fa7efe6ab4f2ce5f66e1cb302f71341cf7fd55319cf360a269b187d2f507cecce8db8069f92585cf43517aee63e18cf6e66dd124db95c293902ab27c68ac43b1
+ checksum: 10/929d5ea4a796d335c730ee9721a75eaf30e6068930f968a78b2e82f3bbb7edfa820910e8cd178127868872af1386044cfebf251c60a7f560f48b8fe105477f58
languageName: node
linkType: hard
-"metro-transform-worker@npm:0.83.3":
- version: 0.83.3
- resolution: "metro-transform-worker@npm:0.83.3"
+"metro-transform-worker@npm:0.84.5":
+ version: 0.84.5
+ resolution: "metro-transform-worker@npm:0.84.5"
dependencies:
"@babel/core": "npm:^7.25.2"
- "@babel/generator": "npm:^7.25.0"
- "@babel/parser": "npm:^7.25.3"
- "@babel/types": "npm:^7.25.2"
+ "@babel/generator": "npm:^7.29.1"
+ "@babel/parser": "npm:^7.29.0"
+ "@babel/types": "npm:^7.29.0"
flow-enums-runtime: "npm:^0.0.6"
- metro: "npm:0.83.3"
- metro-babel-transformer: "npm:0.83.3"
- metro-cache: "npm:0.83.3"
- metro-cache-key: "npm:0.83.3"
- metro-minify-terser: "npm:0.83.3"
- metro-source-map: "npm:0.83.3"
- metro-transform-plugins: "npm:0.83.3"
+ metro: "npm:0.84.5"
+ metro-babel-transformer: "npm:0.84.5"
+ metro-cache: "npm:0.84.5"
+ metro-cache-key: "npm:0.84.5"
+ metro-minify-terser: "npm:0.84.5"
+ metro-source-map: "npm:0.84.5"
+ metro-transform-plugins: "npm:0.84.5"
nullthrows: "npm:^1.1.1"
- checksum: 10/e6db9b54a9b21f4b06fc665321a7aebc6206dbac3976bda74bdf4d101dbd50f91b2e49163581ca1c27b684a4eecc2db988f0fc7aaeb200d2d947cb05d3e89f18
+ checksum: 10/5facb1071dd73cf1e5e44eb4247c29478a967631a8b54683f0953aa68d361a2f8a667cb1f15f926718e6c1af9dd0a1e6e78e34a88401ec93e2c0966b3502c47e
languageName: node
linkType: hard
-"metro@npm:0.83.3, metro@npm:^0.83.3":
- version: 0.83.3
- resolution: "metro@npm:0.83.3"
+"metro@npm:0.84.5, metro@npm:^0.84.3":
+ version: 0.84.5
+ resolution: "metro@npm:0.84.5"
dependencies:
- "@babel/code-frame": "npm:^7.24.7"
+ "@babel/code-frame": "npm:^7.29.0"
"@babel/core": "npm:^7.25.2"
- "@babel/generator": "npm:^7.25.0"
- "@babel/parser": "npm:^7.25.3"
- "@babel/template": "npm:^7.25.0"
- "@babel/traverse": "npm:^7.25.3"
- "@babel/types": "npm:^7.25.2"
- accepts: "npm:^1.3.7"
- chalk: "npm:^4.0.0"
+ "@babel/generator": "npm:^7.29.1"
+ "@babel/parser": "npm:^7.29.0"
+ "@babel/template": "npm:^7.28.6"
+ "@babel/traverse": "npm:^7.29.0"
+ "@babel/types": "npm:^7.29.0"
+ accepts: "npm:^2.0.0"
ci-info: "npm:^2.0.0"
connect: "npm:^3.6.5"
debug: "npm:^4.4.0"
error-stack-parser: "npm:^2.0.6"
flow-enums-runtime: "npm:^0.0.6"
graceful-fs: "npm:^4.2.4"
- hermes-parser: "npm:0.32.0"
- image-size: "npm:^1.0.2"
+ hermes-parser: "npm:0.35.0"
invariant: "npm:^2.2.4"
jest-worker: "npm:^29.7.0"
jsc-safe-url: "npm:^0.2.2"
lodash.throttle: "npm:^4.1.1"
- metro-babel-transformer: "npm:0.83.3"
- metro-cache: "npm:0.83.3"
- metro-cache-key: "npm:0.83.3"
- metro-config: "npm:0.83.3"
- metro-core: "npm:0.83.3"
- metro-file-map: "npm:0.83.3"
- metro-resolver: "npm:0.83.3"
- metro-runtime: "npm:0.83.3"
- metro-source-map: "npm:0.83.3"
- metro-symbolicate: "npm:0.83.3"
- metro-transform-plugins: "npm:0.83.3"
- metro-transform-worker: "npm:0.83.3"
- mime-types: "npm:^2.1.27"
+ metro-babel-transformer: "npm:0.84.5"
+ metro-cache: "npm:0.84.5"
+ metro-cache-key: "npm:0.84.5"
+ metro-config: "npm:0.84.5"
+ metro-core: "npm:0.84.5"
+ metro-file-map: "npm:0.84.5"
+ metro-resolver: "npm:0.84.5"
+ metro-runtime: "npm:0.84.5"
+ metro-source-map: "npm:0.84.5"
+ metro-symbolicate: "npm:0.84.5"
+ metro-transform-plugins: "npm:0.84.5"
+ metro-transform-worker: "npm:0.84.5"
+ mime-types: "npm:^3.0.1"
nullthrows: "npm:^1.1.1"
serialize-error: "npm:^2.1.0"
source-map: "npm:^0.5.6"
@@ -10418,7 +10545,7 @@ __metadata:
yargs: "npm:^17.6.2"
bin:
metro: src/cli.js
- checksum: 10/c989031710f02e51d3030660f1913870885647c5a216068333f7b4c43363f9ede03a9efb3b068b6750c6decab40f541376c3d81b32389d24932a46e10d19ebe1
+ checksum: 10/d6c97cdbce2933db3ad2ee56b83a36c5b2673537899d116f301cca58bb70c3eb72c45fca63836565733834c1fec2c898822cb73001f3b193bff31c242a106545
languageName: node
linkType: hard
@@ -10455,7 +10582,16 @@ __metadata:
languageName: node
linkType: hard
-"mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
+"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1":
+ version: 3.0.2
+ resolution: "mime-types@npm:3.0.2"
+ dependencies:
+ mime-db: "npm:^1.54.0"
+ checksum: 10/9db0ad31f5eff10ee8f848130779b7f2d056ddfdb6bda696cb69be68d486d33a3457b4f3f9bdeb60d0736edb471bd5a7c0a384375c011c51c889fd0d5c3b893e
+ languageName: node
+ linkType: hard
+
+"mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -10842,12 +10978,12 @@ __metadata:
languageName: node
linkType: hard
-"ob1@npm:0.83.3":
- version: 0.83.3
- resolution: "ob1@npm:0.83.3"
+"ob1@npm:0.84.5":
+ version: 0.84.5
+ resolution: "ob1@npm:0.84.5"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/20dfe91d48d0cadd97159cfd53f5abdca435b55d58b1f562e0687485e8f44f8a95e8ab3c835badd13d0d8c01e3d7b14d639a316aa4bf82841ac78b49611d4e5c
+ checksum: 10/7a0389c584b1068486d945e0300deef5f5732207aaec3666c1381aaa3ae1845210bb7eeb6aef61aae8c1eaa4231a7e393563d114a2cb6185d54bbaf619b65b2c
languageName: node
linkType: hard
@@ -11571,15 +11707,6 @@ __metadata:
languageName: node
linkType: hard
-"queue@npm:6.0.2":
- version: 6.0.2
- resolution: "queue@npm:6.0.2"
- dependencies:
- inherits: "npm:~2.0.3"
- checksum: 10/3437954ef1442c86ff01a0fbe3dc6222838823b1ca97f37eff651bc20b868c0c2904424ef2c0d44cba46055f54b578f92866e573125dc9a5e8823d751e4d1585
- languageName: node
- linkType: hard
-
"range-parser@npm:~1.2.1":
version: 1.2.1
resolution: "range-parser@npm:1.2.1"
@@ -11649,10 +11776,10 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^19.2.0":
- version: 19.2.3
- resolution: "react-is@npm:19.2.3"
- checksum: 10/547ac397308204742447b5e4cf556cf09aa97f4cc1c95c4a28e4b2e73a7efab03e59d7b89b4a01f67bf9bf0ca87348a7f0e88bc87c0af6be458aaac1dec5e132
+"react-is@npm:^19.2.3":
+ version: 19.2.8
+ resolution: "react-is@npm:19.2.8"
+ checksum: 10/09d053ff36e0ba4d47164baf9eab1c7772791f0371aa92281f0e547e0f6a5a5c8a1eb939aadd1a08b3c565958dd63ee59c746b6ac0d5ccb14ad742ac0314ab15
languageName: node
linkType: hard
@@ -11742,33 +11869,29 @@ __metadata:
languageName: node
linkType: hard
-"react-native@npm:0.83.0":
- version: 0.83.0
- resolution: "react-native@npm:0.83.0"
+"react-native@npm:0.86.2":
+ version: 0.86.2
+ resolution: "react-native@npm:0.86.2"
dependencies:
- "@jest/create-cache-key-function": "npm:^29.7.0"
- "@react-native/assets-registry": "npm:0.83.0"
- "@react-native/codegen": "npm:0.83.0"
- "@react-native/community-cli-plugin": "npm:0.83.0"
- "@react-native/gradle-plugin": "npm:0.83.0"
- "@react-native/js-polyfills": "npm:0.83.0"
- "@react-native/normalize-colors": "npm:0.83.0"
- "@react-native/virtualized-lists": "npm:0.83.0"
+ "@react-native/assets-registry": "npm:0.86.2"
+ "@react-native/codegen": "npm:0.86.2"
+ "@react-native/community-cli-plugin": "npm:0.86.2"
+ "@react-native/gradle-plugin": "npm:0.86.2"
+ "@react-native/js-polyfills": "npm:0.86.2"
+ "@react-native/normalize-colors": "npm:0.86.2"
+ "@react-native/virtualized-lists": "npm:0.86.2"
abort-controller: "npm:^3.0.0"
anser: "npm:^1.4.9"
ansi-regex: "npm:^5.0.0"
- babel-jest: "npm:^29.7.0"
- babel-plugin-syntax-hermes-parser: "npm:0.32.0"
+ babel-plugin-syntax-hermes-parser: "npm:0.36.0"
base64-js: "npm:^1.5.1"
commander: "npm:^12.0.0"
flow-enums-runtime: "npm:^0.0.6"
- glob: "npm:^7.1.1"
- hermes-compiler: "npm:0.14.0"
+ hermes-compiler: "npm:250829098.0.16"
invariant: "npm:^2.2.4"
- jest-environment-node: "npm:^29.7.0"
memoize-one: "npm:^5.0.0"
- metro-runtime: "npm:^0.83.3"
- metro-source-map: "npm:^0.83.3"
+ metro-runtime: "npm:^0.84.3"
+ metro-source-map: "npm:^0.84.3"
nullthrows: "npm:^1.1.1"
pretty-format: "npm:^29.7.0"
promise: "npm:^8.3.0"
@@ -11778,48 +11901,48 @@ __metadata:
scheduler: "npm:0.27.0"
semver: "npm:^7.1.3"
stacktrace-parser: "npm:^0.1.10"
+ tinyglobby: "npm:^0.2.15"
whatwg-fetch: "npm:^3.0.0"
ws: "npm:^7.5.10"
yargs: "npm:^17.6.2"
peerDependencies:
+ "@react-native/jest-preset": 0.86.2
"@types/react": ^19.1.1
- react: ^19.2.0
+ react: ^19.2.3
peerDependenciesMeta:
+ "@react-native/jest-preset":
+ optional: true
"@types/react":
optional: true
bin:
react-native: cli.js
- checksum: 10/78454fa89c2f5c8794d8d04c099c6d5f43f569696b6e04afb927181bcdcc73646921e428bd29b32a79c94678d572ec00c5d3355e7a43fa94d58065eed4ba78f2
+ checksum: 10/d0a666a94572d208f46c406c5feac1d976af3033712d09fd31f2a4db51f52c8bc1ec67f3b405cf942315cd1b5eb730e9adfac5741083213f9438f4024023056a
languageName: node
linkType: hard
-"react-native@patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch":
- version: 0.83.0
- resolution: "react-native@patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch::version=0.83.0&hash=f8560f"
+"react-native@patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch":
+ version: 0.86.2
+ resolution: "react-native@patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch::version=0.86.2&hash=2a0c27"
dependencies:
- "@jest/create-cache-key-function": "npm:^29.7.0"
- "@react-native/assets-registry": "npm:0.83.0"
- "@react-native/codegen": "npm:0.83.0"
- "@react-native/community-cli-plugin": "npm:0.83.0"
- "@react-native/gradle-plugin": "npm:0.83.0"
- "@react-native/js-polyfills": "npm:0.83.0"
- "@react-native/normalize-colors": "npm:0.83.0"
- "@react-native/virtualized-lists": "npm:0.83.0"
+ "@react-native/assets-registry": "npm:0.86.2"
+ "@react-native/codegen": "npm:0.86.2"
+ "@react-native/community-cli-plugin": "npm:0.86.2"
+ "@react-native/gradle-plugin": "npm:0.86.2"
+ "@react-native/js-polyfills": "npm:0.86.2"
+ "@react-native/normalize-colors": "npm:0.86.2"
+ "@react-native/virtualized-lists": "npm:0.86.2"
abort-controller: "npm:^3.0.0"
anser: "npm:^1.4.9"
ansi-regex: "npm:^5.0.0"
- babel-jest: "npm:^29.7.0"
- babel-plugin-syntax-hermes-parser: "npm:0.32.0"
+ babel-plugin-syntax-hermes-parser: "npm:0.36.0"
base64-js: "npm:^1.5.1"
commander: "npm:^12.0.0"
flow-enums-runtime: "npm:^0.0.6"
- glob: "npm:^7.1.1"
- hermes-compiler: "npm:0.14.0"
+ hermes-compiler: "npm:250829098.0.16"
invariant: "npm:^2.2.4"
- jest-environment-node: "npm:^29.7.0"
memoize-one: "npm:^5.0.0"
- metro-runtime: "npm:^0.83.3"
- metro-source-map: "npm:^0.83.3"
+ metro-runtime: "npm:^0.84.3"
+ metro-source-map: "npm:^0.84.3"
nullthrows: "npm:^1.1.1"
pretty-format: "npm:^29.7.0"
promise: "npm:^8.3.0"
@@ -11829,18 +11952,22 @@ __metadata:
scheduler: "npm:0.27.0"
semver: "npm:^7.1.3"
stacktrace-parser: "npm:^0.1.10"
+ tinyglobby: "npm:^0.2.15"
whatwg-fetch: "npm:^3.0.0"
ws: "npm:^7.5.10"
yargs: "npm:^17.6.2"
peerDependencies:
+ "@react-native/jest-preset": 0.86.2
"@types/react": ^19.1.1
- react: ^19.2.0
+ react: ^19.2.3
peerDependenciesMeta:
+ "@react-native/jest-preset":
+ optional: true
"@types/react":
optional: true
bin:
react-native: cli.js
- checksum: 10/7cbda17babe8957971b509c9ef33af857c8f051d11f03c2636259752355ad64691b52f9af86efa854cf99dd19bf9bdb409ed239a91ed72b6909583ec996cb0d5
+ checksum: 10/85d1e2bec23d640f076d64eb670a9fb47f04cf6c0b5aae935ae1f8bd8a0b6d92d70355c57ebf09f49a5661836c1b25fb888e701ce978e4cb9a34dc14f58fb184
languageName: node
linkType: hard
@@ -11851,22 +11978,22 @@ __metadata:
languageName: node
linkType: hard
-"react-test-renderer@npm:19.2.0":
- version: 19.2.0
- resolution: "react-test-renderer@npm:19.2.0"
+"react-test-renderer@npm:19.2.3":
+ version: 19.2.3
+ resolution: "react-test-renderer@npm:19.2.3"
dependencies:
- react-is: "npm:^19.2.0"
+ react-is: "npm:^19.2.3"
scheduler: "npm:^0.27.0"
peerDependencies:
- react: ^19.2.0
- checksum: 10/1a072bf5c383ee9cec1eed5872114a25d8029e8fabe17a9154cbb7b5d6e5570711efc3e80e336d170bb1f60e29d395087147891fa198743d17c29ff86782cde3
+ react: ^19.2.3
+ checksum: 10/a9de4d869b1555a54c02e8701be262dfa669eb366ff5cdb43ba49fa516beae439cbec2c3e5606c909e773c232328993e231b393af5eef25e87a845d4c7fb00dc
languageName: node
linkType: hard
-"react@npm:19.2.0":
- version: 19.2.0
- resolution: "react@npm:19.2.0"
- checksum: 10/e13bcdb8e994c3cfa922743cb75ca8deb60531bf02f584d2d8dab940a8132ce8a2e6ef16f8ed7f372b4072e7a7eeff589b2812dabbedfa73e6e46201dac8a9d0
+"react@npm:19.2.3":
+ version: 19.2.3
+ resolution: "react@npm:19.2.3"
+ checksum: 10/d16b7f35c0d35a56f63d9d1693819762e4abc479c57dd6310298920bed3820fcec7e17a99d44983416d8f5049143ea45b8005d3ab8324bae8973224400502b08
languageName: node
linkType: hard