diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 918c560c60b5e7..967081f6fb71fd 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -162,11 +162,6 @@ jobs:
restore-keys: |
${{ runner.os }}-yarn-
- - name: ๐ช Pin hermes-compiler for Windows
- # hermes-compiler v1+ doesn't ship Windows binaries, pin to 0.14.1 which does
- shell: bash
- run: node -e "const p=require('./package.json'); p.resolutions['hermes-compiler']='0.14.1'; require('fs').writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n')"
-
- name: ๐งถ Install node modules in root dir
# NOTE(cedric): yarn v1 on Windows has networking issues, we need to set `--network-timeout` to a higher value
# NOTE(@kitten): --ignore-engines is needed due to Node 18 being required (see above)
diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock
index d74041cc893b4b..f5e702eba1eb52 100644
--- a/apps/bare-expo/ios/Podfile.lock
+++ b/apps/bare-expo/ios/Podfile.lock
@@ -532,6 +532,9 @@ PODS:
- ExpoRouter (55.0.2):
- ExpoModulesCore
- RNScreens
+ - ExpoRouter/Tests (55.0.2):
+ - ExpoModulesCore
+ - RNScreens
- ExpoScreenCapture (55.0.8):
- ExpoModulesCore
- ExpoScreenOrientation (55.0.8):
@@ -652,10 +655,10 @@ PODS:
- Yoga
- EXUpdatesInterface (55.1.3):
- ExpoModulesCore
- - FBLazyVector (0.84.0)
- - hermes-engine (250829098.0.7):
- - hermes-engine/Pre-built (= 250829098.0.7)
- - hermes-engine/Pre-built (250829098.0.7)
+ - FBLazyVector (0.84.1)
+ - hermes-engine (250829098.0.9):
+ - hermes-engine/Pre-built (= 250829098.0.9)
+ - hermes-engine/Pre-built (250829098.0.9)
- libavif/core (0.11.1)
- libavif/libdav1d (0.11.1):
- libavif/core
@@ -712,35 +715,35 @@ PODS:
- OHHTTPStubs/Core
- OHHTTPStubs/OHPathHelpers (9.1.0)
- Quick (7.3.1)
- - RCTDeprecation (0.84.0)
- - RCTRequired (0.84.0)
- - RCTSwiftUI (0.84.0)
- - RCTSwiftUIWrapper (0.84.0):
+ - RCTDeprecation (0.84.1)
+ - RCTRequired (0.84.1)
+ - RCTSwiftUI (0.84.1)
+ - RCTSwiftUIWrapper (0.84.1):
- RCTSwiftUI
- - RCTTypeSafety (0.84.0):
- - FBLazyVector (= 0.84.0)
- - RCTRequired (= 0.84.0)
- - React-Core (= 0.84.0)
+ - RCTTypeSafety (0.84.1):
+ - FBLazyVector (= 0.84.1)
+ - RCTRequired (= 0.84.1)
+ - React-Core (= 0.84.1)
- ReachabilitySwift (5.2.4)
- - React (0.84.0):
- - React-Core (= 0.84.0)
- - React-Core/DevSupport (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
- - React-RCTActionSheet (= 0.84.0)
- - React-RCTAnimation (= 0.84.0)
- - React-RCTBlob (= 0.84.0)
- - React-RCTImage (= 0.84.0)
- - React-RCTLinking (= 0.84.0)
- - React-RCTNetwork (= 0.84.0)
- - React-RCTSettings (= 0.84.0)
- - React-RCTText (= 0.84.0)
- - React-RCTVibration (= 0.84.0)
- - React-callinvoker (0.84.0)
- - React-Core (0.84.0):
+ - React (0.84.1):
+ - React-Core (= 0.84.1)
+ - React-Core/DevSupport (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
+ - React-RCTActionSheet (= 0.84.1)
+ - React-RCTAnimation (= 0.84.1)
+ - React-RCTBlob (= 0.84.1)
+ - React-RCTImage (= 0.84.1)
+ - React-RCTLinking (= 0.84.1)
+ - React-RCTNetwork (= 0.84.1)
+ - React-RCTSettings (= 0.84.1)
+ - React-RCTText (= 0.84.1)
+ - React-RCTVibration (= 0.84.1)
+ - React-callinvoker (0.84.1)
+ - React-Core (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -757,7 +760,7 @@ PODS:
- Yoga
- React-Core-prebuilt (0.84.0):
- ReactNativeDependencies
- - React-Core/CoreModulesHeaders (0.84.0):
+ - React-Core/CoreModulesHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -776,7 +779,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/Default (0.84.0):
+ - React-Core/Default (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -794,12 +797,12 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/DevSupport (0.84.0):
+ - React-Core/DevSupport (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -814,7 +817,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTActionSheetHeaders (0.84.0):
+ - React-Core/RCTActionSheetHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -833,7 +836,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTAnimationHeaders (0.84.0):
+ - React-Core/RCTAnimationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -852,7 +855,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTBlobHeaders (0.84.0):
+ - React-Core/RCTBlobHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -871,7 +874,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTImageHeaders (0.84.0):
+ - React-Core/RCTImageHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -890,7 +893,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTLinkingHeaders (0.84.0):
+ - React-Core/RCTLinkingHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -909,7 +912,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTNetworkHeaders (0.84.0):
+ - React-Core/RCTNetworkHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -928,7 +931,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTSettingsHeaders (0.84.0):
+ - React-Core/RCTSettingsHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -947,7 +950,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTTextHeaders (0.84.0):
+ - React-Core/RCTTextHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -966,7 +969,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTVibrationHeaders (0.84.0):
+ - React-Core/RCTVibrationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -985,11 +988,11 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTWebSocket (0.84.0):
+ - React-Core/RCTWebSocket (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -1004,40 +1007,40 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-CoreModules (0.84.0):
- - RCTTypeSafety (= 0.84.0)
+ - React-CoreModules (0.84.1):
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- - React-Core/CoreModulesHeaders (= 0.84.0)
+ - React-Core/CoreModulesHeaders (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.84.0)
+ - React-RCTImage (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-cxxreact (0.84.0):
+ - React-cxxreact (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-debug (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-debug (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- - React-timing (= 0.84.0)
+ - React-timing (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-debug (0.84.0)
- - React-defaultsnativemodule (0.84.0):
+ - React-debug (0.84.1)
+ - React-defaultsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-domnativemodule
@@ -1052,7 +1055,7 @@ PODS:
- React-webperformancenativemodule
- ReactNativeDependencies
- Yoga
- - React-domnativemodule (0.84.0):
+ - React-domnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Fabric
@@ -1066,7 +1069,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric (0.84.0):
+ - React-Fabric (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1074,25 +1077,25 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/animated (= 0.84.0)
- - React-Fabric/animationbackend (= 0.84.0)
- - React-Fabric/animations (= 0.84.0)
- - React-Fabric/attributedstring (= 0.84.0)
- - React-Fabric/bridging (= 0.84.0)
- - React-Fabric/componentregistry (= 0.84.0)
- - React-Fabric/componentregistrynative (= 0.84.0)
- - React-Fabric/components (= 0.84.0)
- - React-Fabric/consistency (= 0.84.0)
- - React-Fabric/core (= 0.84.0)
- - React-Fabric/dom (= 0.84.0)
- - React-Fabric/imagemanager (= 0.84.0)
- - React-Fabric/leakchecker (= 0.84.0)
- - React-Fabric/mounting (= 0.84.0)
- - React-Fabric/observers (= 0.84.0)
- - React-Fabric/scheduler (= 0.84.0)
- - React-Fabric/telemetry (= 0.84.0)
- - React-Fabric/templateprocessor (= 0.84.0)
- - React-Fabric/uimanager (= 0.84.0)
+ - React-Fabric/animated (= 0.84.1)
+ - React-Fabric/animationbackend (= 0.84.1)
+ - React-Fabric/animations (= 0.84.1)
+ - React-Fabric/attributedstring (= 0.84.1)
+ - React-Fabric/bridging (= 0.84.1)
+ - React-Fabric/componentregistry (= 0.84.1)
+ - React-Fabric/componentregistrynative (= 0.84.1)
+ - React-Fabric/components (= 0.84.1)
+ - React-Fabric/consistency (= 0.84.1)
+ - React-Fabric/core (= 0.84.1)
+ - React-Fabric/dom (= 0.84.1)
+ - React-Fabric/imagemanager (= 0.84.1)
+ - React-Fabric/leakchecker (= 0.84.1)
+ - React-Fabric/mounting (= 0.84.1)
+ - React-Fabric/observers (= 0.84.1)
+ - React-Fabric/scheduler (= 0.84.1)
+ - React-Fabric/telemetry (= 0.84.1)
+ - React-Fabric/templateprocessor (= 0.84.1)
+ - React-Fabric/uimanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1104,7 +1107,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animated (0.84.0):
+ - React-Fabric/animated (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1123,7 +1126,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animationbackend (0.84.0):
+ - React-Fabric/animationbackend (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1142,7 +1145,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animations (0.84.0):
+ - React-Fabric/animations (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1161,7 +1164,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/attributedstring (0.84.0):
+ - React-Fabric/attributedstring (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1180,7 +1183,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/bridging (0.84.0):
+ - React-Fabric/bridging (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1199,7 +1202,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistry (0.84.0):
+ - React-Fabric/componentregistry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1218,7 +1221,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistrynative (0.84.0):
+ - React-Fabric/componentregistrynative (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1237,7 +1240,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components (0.84.0):
+ - React-Fabric/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1245,10 +1248,10 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.84.0)
- - React-Fabric/components/root (= 0.84.0)
- - React-Fabric/components/scrollview (= 0.84.0)
- - React-Fabric/components/view (= 0.84.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.84.1)
+ - React-Fabric/components/root (= 0.84.1)
+ - React-Fabric/components/scrollview (= 0.84.1)
+ - React-Fabric/components/view (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1260,7 +1263,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/legacyviewmanagerinterop (0.84.0):
+ - React-Fabric/components/legacyviewmanagerinterop (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1279,7 +1282,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/root (0.84.0):
+ - React-Fabric/components/root (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1298,7 +1301,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/scrollview (0.84.0):
+ - React-Fabric/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1317,7 +1320,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/view (0.84.0):
+ - React-Fabric/components/view (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1338,7 +1341,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric/consistency (0.84.0):
+ - React-Fabric/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1357,7 +1360,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/core (0.84.0):
+ - React-Fabric/core (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1376,7 +1379,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/dom (0.84.0):
+ - React-Fabric/dom (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1395,7 +1398,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/imagemanager (0.84.0):
+ - React-Fabric/imagemanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1414,7 +1417,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/leakchecker (0.84.0):
+ - React-Fabric/leakchecker (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1433,7 +1436,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/mounting (0.84.0):
+ - React-Fabric/mounting (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1452,7 +1455,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers (0.84.0):
+ - React-Fabric/observers (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1460,8 +1463,8 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.84.0)
- - React-Fabric/observers/intersection (= 0.84.0)
+ - React-Fabric/observers/events (= 0.84.1)
+ - React-Fabric/observers/intersection (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1473,7 +1476,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/events (0.84.0):
+ - React-Fabric/observers/events (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1492,7 +1495,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/intersection (0.84.0):
+ - React-Fabric/observers/intersection (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1511,7 +1514,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/scheduler (0.84.0):
+ - React-Fabric/scheduler (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1533,7 +1536,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/telemetry (0.84.0):
+ - React-Fabric/telemetry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1552,7 +1555,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/templateprocessor (0.84.0):
+ - React-Fabric/templateprocessor (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1571,7 +1574,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager (0.84.0):
+ - React-Fabric/uimanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1579,7 +1582,7 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.84.0)
+ - React-Fabric/uimanager/consistency (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1592,7 +1595,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager/consistency (0.84.0):
+ - React-Fabric/uimanager/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1612,7 +1615,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-FabricComponents (0.84.0):
+ - React-FabricComponents (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1621,8 +1624,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.84.0)
- - React-FabricComponents/textlayoutmanager (= 0.84.0)
+ - React-FabricComponents/components (= 0.84.1)
+ - React-FabricComponents/textlayoutmanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1635,7 +1638,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components (0.84.0):
+ - React-FabricComponents/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1644,18 +1647,18 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.84.0)
- - React-FabricComponents/components/iostextinput (= 0.84.0)
- - React-FabricComponents/components/modal (= 0.84.0)
- - React-FabricComponents/components/rncore (= 0.84.0)
- - React-FabricComponents/components/safeareaview (= 0.84.0)
- - React-FabricComponents/components/scrollview (= 0.84.0)
- - React-FabricComponents/components/switch (= 0.84.0)
- - React-FabricComponents/components/text (= 0.84.0)
- - React-FabricComponents/components/textinput (= 0.84.0)
- - React-FabricComponents/components/unimplementedview (= 0.84.0)
- - React-FabricComponents/components/virtualview (= 0.84.0)
- - React-FabricComponents/components/virtualviewexperimental (= 0.84.0)
+ - React-FabricComponents/components/inputaccessory (= 0.84.1)
+ - React-FabricComponents/components/iostextinput (= 0.84.1)
+ - React-FabricComponents/components/modal (= 0.84.1)
+ - React-FabricComponents/components/rncore (= 0.84.1)
+ - React-FabricComponents/components/safeareaview (= 0.84.1)
+ - React-FabricComponents/components/scrollview (= 0.84.1)
+ - React-FabricComponents/components/switch (= 0.84.1)
+ - React-FabricComponents/components/text (= 0.84.1)
+ - React-FabricComponents/components/textinput (= 0.84.1)
+ - React-FabricComponents/components/unimplementedview (= 0.84.1)
+ - React-FabricComponents/components/virtualview (= 0.84.1)
+ - React-FabricComponents/components/virtualviewexperimental (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1668,7 +1671,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/inputaccessory (0.84.0):
+ - React-FabricComponents/components/inputaccessory (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1689,7 +1692,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/iostextinput (0.84.0):
+ - React-FabricComponents/components/iostextinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1710,7 +1713,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/modal (0.84.0):
+ - React-FabricComponents/components/modal (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1731,7 +1734,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/rncore (0.84.0):
+ - React-FabricComponents/components/rncore (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1752,7 +1755,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/safeareaview (0.84.0):
+ - React-FabricComponents/components/safeareaview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1773,7 +1776,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/scrollview (0.84.0):
+ - React-FabricComponents/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1794,7 +1797,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/switch (0.84.0):
+ - React-FabricComponents/components/switch (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1815,7 +1818,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/text (0.84.0):
+ - React-FabricComponents/components/text (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1836,7 +1839,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/textinput (0.84.0):
+ - React-FabricComponents/components/textinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1857,7 +1860,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/unimplementedview (0.84.0):
+ - React-FabricComponents/components/unimplementedview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1878,7 +1881,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualview (0.84.0):
+ - React-FabricComponents/components/virtualview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1899,7 +1902,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualviewexperimental (0.84.0):
+ - React-FabricComponents/components/virtualviewexperimental (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1920,7 +1923,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/textlayoutmanager (0.84.0):
+ - React-FabricComponents/textlayoutmanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1941,27 +1944,27 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricImage (0.84.0):
+ - React-FabricImage (0.84.1):
- hermes-engine
- - RCTRequired (= 0.84.0)
- - RCTTypeSafety (= 0.84.0)
+ - RCTRequired (= 0.84.1)
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-featureflags (0.84.0):
+ - React-featureflags (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-featureflagsnativemodule (0.84.0):
+ - React-featureflagsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1970,28 +1973,28 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-graphics (0.84.0):
+ - React-graphics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
- React-jsiexecutor
- React-utils
- ReactNativeDependencies
- - React-hermes (0.84.0):
+ - React-hermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-jsitooling
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- ReactNativeDependencies
- - React-idlecallbacksnativemodule (0.84.0):
+ - React-idlecallbacksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -2001,7 +2004,7 @@ PODS:
- React-runtimescheduler
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-ImageManager (0.84.0):
+ - React-ImageManager (0.84.1):
- React-Core-prebuilt
- React-Core/Default
- React-debug
@@ -2010,7 +2013,7 @@ PODS:
- React-rendererdebug
- React-utils
- ReactNativeDependencies
- - React-intersectionobservernativemodule (0.84.0):
+ - React-intersectionobservernativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2025,7 +2028,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-jserrorhandler (0.84.0):
+ - React-jserrorhandler (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2034,11 +2037,11 @@ PODS:
- React-jsi
- ReactCommon/turbomodule/bridging
- ReactNativeDependencies
- - React-jsi (0.84.0):
+ - React-jsi (0.84.1):
- hermes-engine
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsiexecutor (0.84.0):
+ - React-jsiexecutor (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2053,7 +2056,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspector (0.84.0):
+ - React-jsinspector (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -2062,18 +2065,18 @@ PODS:
- React-jsinspectornetwork
- React-jsinspectortracing
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspectorcdp (0.84.0):
+ - React-jsinspectorcdp (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsinspectornetwork (0.84.0):
+ - React-jsinspectornetwork (0.84.1):
- React-Core-prebuilt
- React-jsinspectorcdp
- ReactNativeDependencies
- - React-jsinspectortracing (0.84.0):
+ - React-jsinspectortracing (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -2081,28 +2084,28 @@ PODS:
- React-oscompat
- React-timing
- ReactNativeDependencies
- - React-jsitooling (0.84.0):
+ - React-jsitooling (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsitracing (0.84.0):
+ - React-jsitracing (0.84.1):
- React-jsi
- - React-logger (0.84.0):
+ - React-logger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-Mapbuffer (0.84.0):
+ - React-Mapbuffer (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-microtasksnativemodule (0.84.0):
+ - React-microtasksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -2383,7 +2386,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-NativeModulesApple (0.84.0):
+ - React-NativeModulesApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core
@@ -2398,18 +2401,18 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-networking (0.84.0):
+ - React-networking (0.84.1):
- React-Core-prebuilt
- React-jsinspectornetwork
- React-jsinspectortracing
- React-performancetimeline
- React-timing
- ReactNativeDependencies
- - React-oscompat (0.84.0)
- - React-perflogger (0.84.0):
+ - React-oscompat (0.84.1)
+ - React-perflogger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-performancecdpmetrics (0.84.0):
+ - React-performancecdpmetrics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -2417,7 +2420,7 @@ PODS:
- React-runtimeexecutor
- React-timing
- ReactNativeDependencies
- - React-performancetimeline (0.84.0):
+ - React-performancetimeline (0.84.1):
- React-Core-prebuilt
- React-featureflags
- React-jsinspector
@@ -2425,9 +2428,9 @@ PODS:
- React-perflogger
- React-timing
- ReactNativeDependencies
- - React-RCTActionSheet (0.84.0):
- - React-Core/RCTActionSheetHeaders (= 0.84.0)
- - React-RCTAnimation (0.84.0):
+ - React-RCTActionSheet (0.84.1):
+ - React-Core/RCTActionSheetHeaders (= 0.84.1)
+ - React-RCTAnimation (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTAnimationHeaders
@@ -2438,7 +2441,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTAppDelegate (0.84.0):
+ - React-RCTAppDelegate (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2466,7 +2469,7 @@ PODS:
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-RCTBlob (0.84.0):
+ - React-RCTBlob (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Core/RCTBlobHeaders
@@ -2479,7 +2482,7 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTFabric (0.84.0):
+ - React-RCTFabric (0.84.1):
- hermes-engine
- RCTSwiftUIWrapper
- React-Core
@@ -2510,7 +2513,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-RCTFBReactNativeSpec (0.84.0):
+ - React-RCTFBReactNativeSpec (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2518,10 +2521,10 @@ PODS:
- React-Core-prebuilt
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.84.0)
+ - React-RCTFBReactNativeSpec/components (= 0.84.1)
- ReactCommon
- ReactNativeDependencies
- - React-RCTFBReactNativeSpec/components (0.84.0):
+ - React-RCTFBReactNativeSpec/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2538,7 +2541,7 @@ PODS:
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-RCTImage (0.84.0):
+ - React-RCTImage (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTImageHeaders
@@ -2548,14 +2551,14 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTLinking (0.84.0):
- - React-Core/RCTLinkingHeaders (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-RCTLinking (0.84.1):
+ - React-Core/RCTLinkingHeaders (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.84.0)
- - React-RCTNetwork (0.84.0):
+ - ReactCommon/turbomodule/core (= 0.84.1)
+ - React-RCTNetwork (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTNetworkHeaders
@@ -2569,7 +2572,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTRuntime (0.84.0):
+ - React-RCTRuntime (0.84.1):
- hermes-engine
- React-Core
- React-Core-prebuilt
@@ -2585,7 +2588,7 @@ PODS:
- React-RuntimeHermes
- React-utils
- ReactNativeDependencies
- - React-RCTSettings (0.84.0):
+ - React-RCTSettings (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTSettingsHeaders
@@ -2594,10 +2597,10 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTText (0.84.0):
- - React-Core/RCTTextHeaders (= 0.84.0)
+ - React-RCTText (0.84.1):
+ - React-Core/RCTTextHeaders (= 0.84.1)
- Yoga
- - React-RCTVibration (0.84.0):
+ - React-RCTVibration (0.84.1):
- React-Core-prebuilt
- React-Core/RCTVibrationHeaders
- React-jsi
@@ -2605,15 +2608,15 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-rendererconsistency (0.84.0)
- - React-renderercss (0.84.0):
+ - React-rendererconsistency (0.84.1)
+ - React-renderercss (0.84.1):
- React-debug
- React-utils
- - React-rendererdebug (0.84.0):
+ - React-rendererdebug (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-RuntimeApple (0.84.0):
+ - React-RuntimeApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -2636,7 +2639,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-RuntimeCore (0.84.0):
+ - React-RuntimeCore (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2652,14 +2655,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-runtimeexecutor (0.84.0):
+ - React-runtimeexecutor (0.84.1):
- React-Core-prebuilt
- React-debug
- React-featureflags
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-RuntimeHermes (0.84.0):
+ - React-RuntimeHermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -2674,7 +2677,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-runtimescheduler (0.84.0):
+ - React-runtimescheduler (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -2690,15 +2693,15 @@ PODS:
- React-timing
- React-utils
- ReactNativeDependencies
- - React-timing (0.84.0):
+ - React-timing (0.84.1):
- React-debug
- - React-utils (0.84.0):
+ - React-utils (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- ReactNativeDependencies
- - React-webperformancenativemodule (0.84.0):
+ - React-webperformancenativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2709,9 +2712,9 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactAppDependencyProvider (0.84.0):
+ - ReactAppDependencyProvider (0.84.1):
- ReactCodegen
- - ReactCodegen (0.84.0):
+ - ReactCodegen (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2731,43 +2734,43 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactCommon (0.84.0):
+ - ReactCommon (0.84.1):
- React-Core-prebuilt
- - ReactCommon/turbomodule (= 0.84.0)
+ - ReactCommon/turbomodule (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule (0.84.0):
+ - ReactCommon/turbomodule (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - ReactCommon/turbomodule/bridging (= 0.84.0)
- - ReactCommon/turbomodule/core (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - ReactCommon/turbomodule/bridging (= 0.84.1)
+ - ReactCommon/turbomodule/core (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/bridging (0.84.0):
+ - ReactCommon/turbomodule/bridging (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/core (0.84.0):
+ - ReactCommon/turbomodule/core (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-debug (= 0.84.0)
- - React-featureflags (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - React-utils (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-debug (= 0.84.1)
+ - React-featureflags (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - React-utils (= 0.84.1)
- ReactNativeDependencies
- - ReactNativeDependencies (0.84.0)
+ - ReactNativeDependencies (0.84.1)
- RNCAsyncStorage (2.2.0):
- hermes-engine
- RCTRequired
@@ -3240,6 +3243,7 @@ DEPENDENCIES:
- ExpoNotifications/Tests (from `../../../packages/expo-notifications/ios`)
- ExpoPrint (from `../../../packages/expo-print/ios`)
- ExpoRouter (from `../../../packages/expo-router/ios`)
+ - ExpoRouter/Tests (from `../../../packages/expo-router/ios`)
- ExpoScreenCapture (from `../../../packages/expo-screen-capture/ios`)
- ExpoScreenOrientation (from `../../../packages/expo-screen-orientation/ios`)
- ExpoSecureStore (from `../../../packages/expo-secure-store/ios`)
@@ -3622,7 +3626,7 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
hermes-engine:
:podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-v250829098.0.8
+ :tag: hermes-v250829098.0.9
lottie-react-native:
:path: "../../../node_modules/lottie-react-native"
RCTDeprecation:
@@ -3873,7 +3877,7 @@ SPEC CHECKSUMS:
ExpoNetwork: 018e4e16afdaff30c5002fadf64daab55bc20de0
ExpoNotifications: 0293112699b35aa26f6e9e1fcecee0323f3187dc
ExpoPrint: 744a2ca8033698b749389290d96f4ec836027aed
- ExpoRouter: 98f1ec6dfbde5edb827aa411681c1fcbee07786f
+ ExpoRouter: d770a57784f2cf06d0d5496913857ab79727dc99
ExpoScreenCapture: a4b2159b48fd2514a99f426778da31d1f0a9736f
ExpoScreenOrientation: e042b7f121c3b3463f9486189785d568ff57739e
ExpoSecureStore: 7837b892a89ad8d28b64d9302b657e8b6ebae250
@@ -3895,8 +3899,8 @@ SPEC CHECKSUMS:
EXStructuredHeaders: aa49a5557fa24aa61dda4ac665f3987bf3e9e35d
EXUpdates: c5a64985f393cf4f8beb4463f86a885c90b4fccc
EXUpdatesInterface: 26412751a0f7a7130614655929e316f684552aab
- FBLazyVector: c12d2108050e27952983d565a232f6f7b1ad5e69
- hermes-engine: 2b78fb97886eeaa083923c5978d5e2db640fa856
+ FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da
+ hermes-engine: f17b9ba9fc7fc0b2418d3f51964ef51edd76cb49
libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
@@ -3905,43 +3909,43 @@ SPEC CHECKSUMS:
Nimble: 97d90931cca412a23224ff29e258809f75c258f7
OHHTTPStubs: 90eac6d8f2c18317baeca36698523dc67c513831
Quick: 83e25bf349dd84f894b024f48033274512d6129b
- RCTDeprecation: 3280799c14232a56e5a44f92981a8ee33bc69fd9
- RCTRequired: 9854a51b0f65ccf43ea0b744df4d70fce339db32
- RCTSwiftUI: 96986e49a4fdc2c2103929dee2641e1b57edf33d
- RCTSwiftUIWrapper: e3eed9f50cad9f171e4487e2ff18a9caa4d46bfb
- RCTTypeSafety: e9ba155357c236764934054ee2d393fd76e7b36b
+ RCTDeprecation: af44b104091a34482596cd9bd7e8d90c4e9b4bd7
+ RCTRequired: bb77b070f75f53398ce43c0aaaa58337cebe2bf6
+ RCTSwiftUI: afc0a0a635860da1040a0b894bfd529da06d7810
+ RCTSwiftUIWrapper: cbb32eb90f09bd42ea9ed1eecd51fef3294da673
+ RCTTypeSafety: d13e192a37f151ce354641184bf4239844a3be17
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
- React: 7ef36630d07638043a134a7dd2ec17e0be10fc3c
- React-callinvoker: af4e8fe1d60ab63dd8d74c2a68988064c2848954
- React-Core: c0fb1df65eb0ed7a8633841831f05f93c3eb3aff
+ React: 1ba7d364ade7d883a1ec055bfc3606f35fdee17b
+ React-callinvoker: bc2a26f8d84fb01f003fc6de6c9337b64715f95b
+ React-Core: bdaa87b276ca31877632a982ecf7c36f8c826414
React-Core-prebuilt: 8d3b8ca928d5ec4acbd02a85ad31693483710ca8
- React-CoreModules: 7dfe7962360355f1547c85ab52e1fc4b57f17127
- React-cxxreact: 9e9c7f1710bc58abebf924813b5e825b99adb8e5
- React-debug: 38389b86e3570558ec73dd4cbc0cd2f2eec47a51
- React-defaultsnativemodule: a326ccbb71369762888a6be09a23fa5bce2bdb6a
- React-domnativemodule: 8394c7b535d1b484b1eab677e00b086507cd906a
- React-Fabric: 682dafd75455062590cd1f63c79199cf72ff27d9
- React-FabricComponents: 11b13a53213cd1aaca3bf7f4c61c669617b26b5f
- React-FabricImage: 706c27e82f77b77db96ab3a19009ddb5e777967f
- React-featureflags: c2898fb2f93ab92cfd9f294b4531d2884e7cfc7e
- React-featureflagsnativemodule: 1edf93adfa12ba4f15d07079c1675b55ff579477
- React-graphics: 57d042385bfef5104aafeab189f43b8d6145013b
- React-hermes: 96d2d439f0477a93fe8e801664088eccc07a16ff
- React-idlecallbacksnativemodule: ab4dc6c3657f434f82c568ca83c963791e783f6a
- React-ImageManager: f39057f375cf3f98255fb751df3865a91f2755c1
- React-intersectionobservernativemodule: 54ce679b183149fd9566a79211f2f54dc0a6fd1f
- React-jserrorhandler: 2e92acff04ac815c6066c7cc08ea302610045db1
- React-jsi: dc97891e1ee7fa17cad01cd150c50f21e04bd51b
- React-jsiexecutor: e1543ba5a8be761331c8158d91211079cc5b73a2
- React-jsinspector: 7a1d86673986db6666cacc8b95e92125397ab6ea
- React-jsinspectorcdp: 38a0c116fd4965abf29261721db9b903923cb723
- React-jsinspectornetwork: cfeace6b40f13ba82980ba7cb730847a35675c7f
- React-jsinspectortracing: 5507411117e51751dba0543cdee7916eb0388693
- React-jsitooling: e3a2df9043ab7b9ad11bbbfe4b33eb6762514f05
- React-jsitracing: ad179fab1c1e08a57fcdb840b7021b453f7a2b6d
- React-logger: e40cc24a61d3a54c09bf4e83d5556b3b9d4c90aa
- React-Mapbuffer: 53f28c81b84767a0b2fb4c0109dd7e4571226f76
- React-microtasksnativemodule: ddaf25a8d69f694bc880fb6055e34d79f1d50138
+ React-CoreModules: b24989f62d56390ae08ca4f65e6f38fe6802de42
+ React-cxxreact: 1a2dfcbc18a6b610664dba152adf327f063a0d12
+ React-debug: 755200a6e7f5e6e0a40ff8d215493d43cce285fc
+ React-defaultsnativemodule: 027cad46a2847719b5d3d20dd915463b06a5d4d1
+ React-domnativemodule: 5ddfc6b3b73b48a31dfa12f52d6b62527f6f260c
+ React-Fabric: 6ffcc768e2378e84ed428069c7e2d270ee78f2bf
+ React-FabricComponents: ee6614287222dd4f04fdb1263d1ae6eb7fe952c6
+ React-FabricImage: ab05740a08ad9e23e4e1701e9c354e9a9b048063
+ React-featureflags: a8b0c8d9a93b5903f7620408659de160d95e4efe
+ React-featureflagsnativemodule: 0f0fe1a044829f31d7565a4bdfded376fbcfdfc1
+ React-graphics: c497dd295c88729525a4752d524d2d783aa205d4
+ React-hermes: c2bde95033e6df1599b5c1b6d7e45736a8aa5cba
+ React-idlecallbacksnativemodule: 6ceacabe93be052bbe822fb018602f63a8e280e2
+ React-ImageManager: 820fe1d55add59ec053099a0c5abe830ecd6c699
+ React-intersectionobservernativemodule: f84958aaf662f95f837dc4d26cbb5e7dcc4b8f09
+ React-jserrorhandler: 390c6c46e2f639b5ba104385d7fba848396347e8
+ React-jsi: 382de7964299bbf878458006a14f52cb66a36cfc
+ React-jsiexecutor: b781400a9becfb24e36ac063dccb42a52dcb44ca
+ React-jsinspector: 0644f32cc9b09eae2bc845ceb58d03420ae70821
+ React-jsinspectorcdp: 96677569865afe25c737889e02d635db26131d9f
+ React-jsinspectornetwork: 28c7cac2e92b1739561dcffd07f5554e54050a85
+ React-jsinspectortracing: 58ee96f9580a143011f8b914ad6927b5116461a7
+ React-jsitooling: bc79639489d610c35731dd26e8e54c37e078996d
+ React-jsitracing: 1bb9fae4f2ccf891255a419cdfc13372d07ef4a5
+ React-logger: 517377b1d2ba7ac722d47fb2183b98de86632063
+ React-Mapbuffer: 45e088dfb58dc326ae20cca1814d3726553c4cad
+ React-microtasksnativemodule: ab9d1a05fe1f58ea44a97d307ef1b53463f45a3f
react-native-keyboard-controller: 171c71f104a40568afcde57f5426b67b5252e71d
react-native-netinfo: 789d8e48d938a77af984e9d6b7a08242d59f8e15
react-native-pager-view: e37989fc447aa4b5de6d0d2ffb0229e817329246
@@ -3951,40 +3955,40 @@ SPEC CHECKSUMS:
react-native-slider: a4bbed2fba298dbcd09225b5f4a1e9baf2d04268
react-native-view-shot: 26174e54ec6b4b7c5d70b86964b747919759adc1
react-native-webview: a0107c12442bf2ac454d509f615daef00f34df47
- React-NativeModulesApple: 14a8919451154ede904f2bca84b27703a09028ba
- React-networking: 46c0037f9202c1919493b78662a47cbe13022fdd
- React-oscompat: b924b8609d06899f00ab1aa813b0cde9c5e12771
- React-perflogger: c3bb13800f795287e73a8c1991a2b8e5008ea3d0
- React-performancecdpmetrics: 851d2b18ba3d3d8cfb309bf468e5e93e46601122
- React-performancetimeline: 0a960aee139987151d2976813c47bef17dea3d3a
- React-RCTActionSheet: 21fbcd85f552d5d6575453d2e8c149535d9c6f46
- React-RCTAnimation: 2c8cb9508864bb15e9f8fe86242d8918f05278e9
- React-RCTAppDelegate: 1d52e34d25f5f1bed5c07e0717c40dc572a80010
- React-RCTBlob: bc487ebb909c23920af75c842b1405edba61b8ea
- React-RCTFabric: 7de87d2635b95171a06d9fffd907c4ac17823ef2
- React-RCTFBReactNativeSpec: b3936c48bf5262dc57ba28f8c8208cd1b570964c
- React-RCTImage: a591fc9f08dc6c7b63b9fb34f51a7c1f32bd9595
- React-RCTLinking: cb9553b27de77a63beb4e3ce95f82aa8f3bed602
- React-RCTNetwork: 576ba853aef49628238b4840e969217b826af156
- React-RCTRuntime: e0aa5ea63ba4e06c9028da5ae8b05cf72bc8a1ea
- React-RCTSettings: 8caa15edae452a5c4cd064569d5357a2bee8de15
- React-RCTText: af9a1c8d7c135c4d3ffa2de253ca95544234a521
- React-RCTVibration: c1dd36479ca1c1a59d16db81e5a994e9be06a68b
- React-rendererconsistency: 32e7b98c05a3f237ecb524add21190036962e868
- React-renderercss: d65e9232e5033cd9c07b13fa429ce925b8143bd7
- React-rendererdebug: 25c6151116b7ea1f78af72afc64f2066ad29a61d
- React-RuntimeApple: e036929884cc0d8088fe8a5a2d210e068d35e608
- React-RuntimeCore: 0c8a252051fe6b627f5147ac5b6a5298951472a8
- React-runtimeexecutor: 0765dddf1842e23e87ad13b2cb1bb72bb9005aeb
- React-RuntimeHermes: 44cd4fdc4afa44fa782ddce8600e3cc90215fbc5
- React-runtimescheduler: 1966ff307933cdbafd480cb3aa1fdc90d9a6d539
- React-timing: 94c4a44dd2d10e4fc51fd42654fd5f67d68247ad
- React-utils: 172d467a9c037d5ed51ee6eeaa6ad30ca1ebe1b1
- React-webperformancenativemodule: 9e3c5032dd30bf6418b741ab54ad26187b1c94c3
- ReactAppDependencyProvider: 625d2f6d9d5ef01acc9dfe2b5385504bbffd2ad0
- ReactCodegen: 2fc92fdb458b8a4c1f7dbe3811c0ae155d7fceb3
- ReactCommon: cc0e38600f82487c5fe5d29150abb6fa9d981986
- ReactNativeDependencies: 6c69ad634d6f0dbc2c265c8e6134b4c99c2fd850
+ React-NativeModulesApple: b94faa2dce6d8c0a9d722ed7ee27b996d28b62d1
+ React-networking: e409d8fb062162da6293e98b77f8d80cf4430e07
+ React-oscompat: ff26abf0ae3e3fdbe47b44224571e3fc7226a573
+ React-perflogger: 757c8c725cc20e94eba406885047f03cf83044fb
+ React-performancecdpmetrics: fec7e28b711c95ccb6fc7e3bb16572d88bcf27ae
+ React-performancetimeline: 4c6102f19df01db35c37a3e63a058cfbf1a056d9
+ React-RCTActionSheet: fc1d5d419856868e7f8c13c14591ed63dadef43a
+ React-RCTAnimation: 1ce166ec15ab1f8eca8ebaae7f8f709d9be6958c
+ React-RCTAppDelegate: c752d93f597168a9a4d5678e9354bbb8d84df6d1
+ React-RCTBlob: 147d41ee9f80cf27fe9b2f7adc1d6d24f68ec3fc
+ React-RCTFabric: 712c4ad749a43712609011d178234c90a17cde12
+ React-RCTFBReactNativeSpec: 032ea8783dc27290ec6b9af9d8df5351847539a2
+ React-RCTImage: fd39f1c478f1e43357bc72c2dbdc2454aafe4035
+ React-RCTLinking: 02ca1c83536dab08130f5db4852f293c53885dd6
+ React-RCTNetwork: 85dc64c530e4b0be7436f9a15b03caba24e9a3a1
+ React-RCTRuntime: c75950caa80e6884cbf0417d8738992256890508
+ React-RCTSettings: df5da31865cc1bab7ef5314e65ca18f6b538d71d
+ React-RCTText: 41587e426883c9a83fd8eb0c57fe328aad4ed57a
+ React-RCTVibration: 8ca2f9839c53416dffb584adb94501431ba7f96e
+ React-rendererconsistency: e91aba4bb482dac127ad955dba6333a8af629c5b
+ React-renderercss: 1f15a79f3cc3c9416902b8f70266408116d93bd0
+ React-rendererdebug: 77dcf1490ee5c0ce141d2b1eaceed02aa0996826
+ React-RuntimeApple: 1074835708500a69770b713f718400137f30ce7a
+ React-RuntimeCore: 148db945742d7ce2985cc35b8ddc61edfdb46e6d
+ React-runtimeexecutor: 5742146dac0f8de9c21f5f703993df249c046d0d
+ React-RuntimeHermes: a5bb378bea92d526341a65afa945a38c9bc787b2
+ React-runtimescheduler: 91838dd32460920ed1b4da68590a2684b784aacc
+ React-timing: 9c0e2b1532317148fa0487bbc3833c1f348981a0
+ React-utils: 2f8dd43fed5c6d881ac5971666bbb34cc4a03fa1
+ React-webperformancenativemodule: afbee7a9fd0b5bf92f6765eb41767f865b293bcc
+ ReactAppDependencyProvider: 26bbf1e26768d08dd965a2b5e372e53f67b21fee
+ ReactCodegen: 3737b2746b303ce8636a461f8ee4cb2525078267
+ ReactCommon: 309419492d417c4cbb87af06f67735afa40ecb9d
+ ReactNativeDependencies: 73db4772e50c35a1670768d3694ce715638d3b5f
RNCAsyncStorage: e85a99325df9eb0191a6ee2b2a842644c7eb29f4
RNCMaskedView: 3c9d7586e2b9bbab573591dcb823918bc4668005
RNCPicker: e0149590451d5eae242cf686014a6f6d808f93c7
@@ -4001,7 +4005,7 @@ SPEC CHECKSUMS:
TestExpoUi: 3c8a53d43492d7db3f4c94cf4a48cba7a82da424
UMAppLoader: 71b50bcc31d86495e52c0b4cd17e2708bf297be3
WorkletsTester: f76956000cdf163c71f8eb20fe09f1bfa21acbaf
- Yoga: 772166513f9cd2d61a6251d0dacbbfaa5b537479
+ Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
PODFILE CHECKSUM: f4254d30b3ed97b1dae30893bb660d699a1f7485
diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json
index 25d1973772f402..d21b66cb5be811 100644
--- a/apps/bare-expo/package.json
+++ b/apps/bare-expo/package.json
@@ -68,7 +68,7 @@
"native-component-list": "*",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-edge-to-edge": "~1.6.1",
"react-native-gesture-handler": "~2.30.0",
"react-native-keyboard-controller": "^1.20.7",
diff --git a/apps/brownfield-tester/expo-app/app.json b/apps/brownfield-tester/expo-app/app.json
index 21367bac72939a..ad8592e7a6e9a3 100644
--- a/apps/brownfield-tester/expo-app/app.json
+++ b/apps/brownfield-tester/expo-app/app.json
@@ -41,7 +41,7 @@
"expo-brownfield",
{
"ios": {
- "usePrebuiltReactNative": true
+ "buildReactNativeFromSource": false
}
}
]
diff --git a/apps/brownfield-tester/expo-app/package.json b/apps/brownfield-tester/expo-app/package.json
index 802f2e899d372b..12c7a2189e8147 100644
--- a/apps/brownfield-tester/expo-app/package.json
+++ b/apps/brownfield-tester/expo-app/package.json
@@ -30,7 +30,7 @@
"expo-web-browser": "~55.0.9",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-gesture-handler": "~2.30.0",
"react-native-worklets": "0.7.4",
"react-native-reanimated": "~4.2.2",
diff --git a/apps/brownfield-tester/ios/Podfile.lock b/apps/brownfield-tester/ios/Podfile.lock
index 5160554bf2d956..cecea8dea00a03 100644
--- a/apps/brownfield-tester/ios/Podfile.lock
+++ b/apps/brownfield-tester/ios/Podfile.lock
@@ -145,10 +145,10 @@ PODS:
- ExpoModulesCore
- ExpoWebBrowser (55.0.9):
- ExpoModulesCore
- - FBLazyVector (0.84.0)
- - hermes-engine (250829098.0.7):
- - hermes-engine/Pre-built (= 250829098.0.7)
- - hermes-engine/Pre-built (250829098.0.7)
+ - FBLazyVector (0.84.1)
+ - hermes-engine (250829098.0.9):
+ - hermes-engine/Pre-built (= 250829098.0.9)
+ - hermes-engine/Pre-built (250829098.0.9)
- libavif/core (0.11.1)
- libavif/libdav1d (0.11.1):
- libavif/core
@@ -166,34 +166,34 @@ PODS:
- libwebp/sharpyuv (1.5.0)
- libwebp/webp (1.5.0):
- libwebp/sharpyuv
- - RCTDeprecation (0.84.0)
- - RCTRequired (0.84.0)
- - RCTSwiftUI (0.84.0)
- - RCTSwiftUIWrapper (0.84.0):
+ - RCTDeprecation (0.84.1)
+ - RCTRequired (0.84.1)
+ - RCTSwiftUI (0.84.1)
+ - RCTSwiftUIWrapper (0.84.1):
- RCTSwiftUI
- - RCTTypeSafety (0.84.0):
- - FBLazyVector (= 0.84.0)
- - RCTRequired (= 0.84.0)
- - React-Core (= 0.84.0)
- - React (0.84.0):
- - React-Core (= 0.84.0)
- - React-Core/DevSupport (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
- - React-RCTActionSheet (= 0.84.0)
- - React-RCTAnimation (= 0.84.0)
- - React-RCTBlob (= 0.84.0)
- - React-RCTImage (= 0.84.0)
- - React-RCTLinking (= 0.84.0)
- - React-RCTNetwork (= 0.84.0)
- - React-RCTSettings (= 0.84.0)
- - React-RCTText (= 0.84.0)
- - React-RCTVibration (= 0.84.0)
- - React-callinvoker (0.84.0)
- - React-Core (0.84.0):
+ - RCTTypeSafety (0.84.1):
+ - FBLazyVector (= 0.84.1)
+ - RCTRequired (= 0.84.1)
+ - React-Core (= 0.84.1)
+ - React (0.84.1):
+ - React-Core (= 0.84.1)
+ - React-Core/DevSupport (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
+ - React-RCTActionSheet (= 0.84.1)
+ - React-RCTAnimation (= 0.84.1)
+ - React-RCTBlob (= 0.84.1)
+ - React-RCTImage (= 0.84.1)
+ - React-RCTLinking (= 0.84.1)
+ - React-RCTNetwork (= 0.84.1)
+ - React-RCTSettings (= 0.84.1)
+ - React-RCTText (= 0.84.1)
+ - React-RCTVibration (= 0.84.1)
+ - React-callinvoker (0.84.1)
+ - React-Core (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -210,7 +210,7 @@ PODS:
- Yoga
- React-Core-prebuilt (0.84.0):
- ReactNativeDependencies
- - React-Core/CoreModulesHeaders (0.84.0):
+ - React-Core/CoreModulesHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -229,7 +229,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/Default (0.84.0):
+ - React-Core/Default (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -247,12 +247,12 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/DevSupport (0.84.0):
+ - React-Core/DevSupport (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -267,7 +267,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTActionSheetHeaders (0.84.0):
+ - React-Core/RCTActionSheetHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -286,7 +286,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTAnimationHeaders (0.84.0):
+ - React-Core/RCTAnimationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -305,7 +305,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTBlobHeaders (0.84.0):
+ - React-Core/RCTBlobHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -324,7 +324,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTImageHeaders (0.84.0):
+ - React-Core/RCTImageHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -343,7 +343,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTLinkingHeaders (0.84.0):
+ - React-Core/RCTLinkingHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -362,7 +362,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTNetworkHeaders (0.84.0):
+ - React-Core/RCTNetworkHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -381,7 +381,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTSettingsHeaders (0.84.0):
+ - React-Core/RCTSettingsHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -400,7 +400,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTTextHeaders (0.84.0):
+ - React-Core/RCTTextHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -419,7 +419,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTVibrationHeaders (0.84.0):
+ - React-Core/RCTVibrationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -438,11 +438,11 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTWebSocket (0.84.0):
+ - React-Core/RCTWebSocket (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -457,40 +457,40 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-CoreModules (0.84.0):
- - RCTTypeSafety (= 0.84.0)
+ - React-CoreModules (0.84.1):
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- - React-Core/CoreModulesHeaders (= 0.84.0)
+ - React-Core/CoreModulesHeaders (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.84.0)
+ - React-RCTImage (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-cxxreact (0.84.0):
+ - React-cxxreact (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-debug (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-debug (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- - React-timing (= 0.84.0)
+ - React-timing (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-debug (0.84.0)
- - React-defaultsnativemodule (0.84.0):
+ - React-debug (0.84.1)
+ - React-defaultsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-domnativemodule
@@ -505,7 +505,7 @@ PODS:
- React-webperformancenativemodule
- ReactNativeDependencies
- Yoga
- - React-domnativemodule (0.84.0):
+ - React-domnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Fabric
@@ -519,7 +519,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric (0.84.0):
+ - React-Fabric (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -527,25 +527,25 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/animated (= 0.84.0)
- - React-Fabric/animationbackend (= 0.84.0)
- - React-Fabric/animations (= 0.84.0)
- - React-Fabric/attributedstring (= 0.84.0)
- - React-Fabric/bridging (= 0.84.0)
- - React-Fabric/componentregistry (= 0.84.0)
- - React-Fabric/componentregistrynative (= 0.84.0)
- - React-Fabric/components (= 0.84.0)
- - React-Fabric/consistency (= 0.84.0)
- - React-Fabric/core (= 0.84.0)
- - React-Fabric/dom (= 0.84.0)
- - React-Fabric/imagemanager (= 0.84.0)
- - React-Fabric/leakchecker (= 0.84.0)
- - React-Fabric/mounting (= 0.84.0)
- - React-Fabric/observers (= 0.84.0)
- - React-Fabric/scheduler (= 0.84.0)
- - React-Fabric/telemetry (= 0.84.0)
- - React-Fabric/templateprocessor (= 0.84.0)
- - React-Fabric/uimanager (= 0.84.0)
+ - React-Fabric/animated (= 0.84.1)
+ - React-Fabric/animationbackend (= 0.84.1)
+ - React-Fabric/animations (= 0.84.1)
+ - React-Fabric/attributedstring (= 0.84.1)
+ - React-Fabric/bridging (= 0.84.1)
+ - React-Fabric/componentregistry (= 0.84.1)
+ - React-Fabric/componentregistrynative (= 0.84.1)
+ - React-Fabric/components (= 0.84.1)
+ - React-Fabric/consistency (= 0.84.1)
+ - React-Fabric/core (= 0.84.1)
+ - React-Fabric/dom (= 0.84.1)
+ - React-Fabric/imagemanager (= 0.84.1)
+ - React-Fabric/leakchecker (= 0.84.1)
+ - React-Fabric/mounting (= 0.84.1)
+ - React-Fabric/observers (= 0.84.1)
+ - React-Fabric/scheduler (= 0.84.1)
+ - React-Fabric/telemetry (= 0.84.1)
+ - React-Fabric/templateprocessor (= 0.84.1)
+ - React-Fabric/uimanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -557,7 +557,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animated (0.84.0):
+ - React-Fabric/animated (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -576,7 +576,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animationbackend (0.84.0):
+ - React-Fabric/animationbackend (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -595,7 +595,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animations (0.84.0):
+ - React-Fabric/animations (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -614,7 +614,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/attributedstring (0.84.0):
+ - React-Fabric/attributedstring (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -633,7 +633,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/bridging (0.84.0):
+ - React-Fabric/bridging (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -652,7 +652,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistry (0.84.0):
+ - React-Fabric/componentregistry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -671,7 +671,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistrynative (0.84.0):
+ - React-Fabric/componentregistrynative (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -690,7 +690,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components (0.84.0):
+ - React-Fabric/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -698,10 +698,10 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.84.0)
- - React-Fabric/components/root (= 0.84.0)
- - React-Fabric/components/scrollview (= 0.84.0)
- - React-Fabric/components/view (= 0.84.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.84.1)
+ - React-Fabric/components/root (= 0.84.1)
+ - React-Fabric/components/scrollview (= 0.84.1)
+ - React-Fabric/components/view (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -713,7 +713,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/legacyviewmanagerinterop (0.84.0):
+ - React-Fabric/components/legacyviewmanagerinterop (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -732,7 +732,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/root (0.84.0):
+ - React-Fabric/components/root (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -751,7 +751,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/scrollview (0.84.0):
+ - React-Fabric/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -770,7 +770,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/view (0.84.0):
+ - React-Fabric/components/view (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -791,7 +791,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric/consistency (0.84.0):
+ - React-Fabric/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -810,7 +810,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/core (0.84.0):
+ - React-Fabric/core (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -829,7 +829,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/dom (0.84.0):
+ - React-Fabric/dom (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -848,7 +848,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/imagemanager (0.84.0):
+ - React-Fabric/imagemanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -867,7 +867,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/leakchecker (0.84.0):
+ - React-Fabric/leakchecker (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -886,7 +886,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/mounting (0.84.0):
+ - React-Fabric/mounting (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -905,7 +905,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers (0.84.0):
+ - React-Fabric/observers (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -913,8 +913,8 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.84.0)
- - React-Fabric/observers/intersection (= 0.84.0)
+ - React-Fabric/observers/events (= 0.84.1)
+ - React-Fabric/observers/intersection (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -926,7 +926,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/events (0.84.0):
+ - React-Fabric/observers/events (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -945,7 +945,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/intersection (0.84.0):
+ - React-Fabric/observers/intersection (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -964,7 +964,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/scheduler (0.84.0):
+ - React-Fabric/scheduler (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -986,7 +986,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/telemetry (0.84.0):
+ - React-Fabric/telemetry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1005,7 +1005,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/templateprocessor (0.84.0):
+ - React-Fabric/templateprocessor (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1024,7 +1024,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager (0.84.0):
+ - React-Fabric/uimanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1032,7 +1032,7 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.84.0)
+ - React-Fabric/uimanager/consistency (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1045,7 +1045,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager/consistency (0.84.0):
+ - React-Fabric/uimanager/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1065,7 +1065,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-FabricComponents (0.84.0):
+ - React-FabricComponents (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1074,8 +1074,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.84.0)
- - React-FabricComponents/textlayoutmanager (= 0.84.0)
+ - React-FabricComponents/components (= 0.84.1)
+ - React-FabricComponents/textlayoutmanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1088,7 +1088,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components (0.84.0):
+ - React-FabricComponents/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1097,18 +1097,18 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.84.0)
- - React-FabricComponents/components/iostextinput (= 0.84.0)
- - React-FabricComponents/components/modal (= 0.84.0)
- - React-FabricComponents/components/rncore (= 0.84.0)
- - React-FabricComponents/components/safeareaview (= 0.84.0)
- - React-FabricComponents/components/scrollview (= 0.84.0)
- - React-FabricComponents/components/switch (= 0.84.0)
- - React-FabricComponents/components/text (= 0.84.0)
- - React-FabricComponents/components/textinput (= 0.84.0)
- - React-FabricComponents/components/unimplementedview (= 0.84.0)
- - React-FabricComponents/components/virtualview (= 0.84.0)
- - React-FabricComponents/components/virtualviewexperimental (= 0.84.0)
+ - React-FabricComponents/components/inputaccessory (= 0.84.1)
+ - React-FabricComponents/components/iostextinput (= 0.84.1)
+ - React-FabricComponents/components/modal (= 0.84.1)
+ - React-FabricComponents/components/rncore (= 0.84.1)
+ - React-FabricComponents/components/safeareaview (= 0.84.1)
+ - React-FabricComponents/components/scrollview (= 0.84.1)
+ - React-FabricComponents/components/switch (= 0.84.1)
+ - React-FabricComponents/components/text (= 0.84.1)
+ - React-FabricComponents/components/textinput (= 0.84.1)
+ - React-FabricComponents/components/unimplementedview (= 0.84.1)
+ - React-FabricComponents/components/virtualview (= 0.84.1)
+ - React-FabricComponents/components/virtualviewexperimental (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1121,7 +1121,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/inputaccessory (0.84.0):
+ - React-FabricComponents/components/inputaccessory (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1142,7 +1142,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/iostextinput (0.84.0):
+ - React-FabricComponents/components/iostextinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1163,7 +1163,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/modal (0.84.0):
+ - React-FabricComponents/components/modal (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1184,7 +1184,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/rncore (0.84.0):
+ - React-FabricComponents/components/rncore (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1205,7 +1205,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/safeareaview (0.84.0):
+ - React-FabricComponents/components/safeareaview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1226,7 +1226,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/scrollview (0.84.0):
+ - React-FabricComponents/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1247,7 +1247,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/switch (0.84.0):
+ - React-FabricComponents/components/switch (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1268,7 +1268,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/text (0.84.0):
+ - React-FabricComponents/components/text (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1289,7 +1289,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/textinput (0.84.0):
+ - React-FabricComponents/components/textinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1310,7 +1310,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/unimplementedview (0.84.0):
+ - React-FabricComponents/components/unimplementedview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1331,7 +1331,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualview (0.84.0):
+ - React-FabricComponents/components/virtualview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1352,7 +1352,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualviewexperimental (0.84.0):
+ - React-FabricComponents/components/virtualviewexperimental (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1373,7 +1373,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/textlayoutmanager (0.84.0):
+ - React-FabricComponents/textlayoutmanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1394,27 +1394,27 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricImage (0.84.0):
+ - React-FabricImage (0.84.1):
- hermes-engine
- - RCTRequired (= 0.84.0)
- - RCTTypeSafety (= 0.84.0)
+ - RCTRequired (= 0.84.1)
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-featureflags (0.84.0):
+ - React-featureflags (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-featureflagsnativemodule (0.84.0):
+ - React-featureflagsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1423,28 +1423,28 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-graphics (0.84.0):
+ - React-graphics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
- React-jsiexecutor
- React-utils
- ReactNativeDependencies
- - React-hermes (0.84.0):
+ - React-hermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-jsitooling
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- ReactNativeDependencies
- - React-idlecallbacksnativemodule (0.84.0):
+ - React-idlecallbacksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1454,7 +1454,7 @@ PODS:
- React-runtimescheduler
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-ImageManager (0.84.0):
+ - React-ImageManager (0.84.1):
- React-Core-prebuilt
- React-Core/Default
- React-debug
@@ -1463,7 +1463,7 @@ PODS:
- React-rendererdebug
- React-utils
- ReactNativeDependencies
- - React-intersectionobservernativemodule (0.84.0):
+ - React-intersectionobservernativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1478,7 +1478,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-jserrorhandler (0.84.0):
+ - React-jserrorhandler (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1487,11 +1487,11 @@ PODS:
- React-jsi
- ReactCommon/turbomodule/bridging
- ReactNativeDependencies
- - React-jsi (0.84.0):
+ - React-jsi (0.84.1):
- hermes-engine
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsiexecutor (0.84.0):
+ - React-jsiexecutor (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1506,7 +1506,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspector (0.84.0):
+ - React-jsinspector (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1515,18 +1515,18 @@ PODS:
- React-jsinspectornetwork
- React-jsinspectortracing
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspectorcdp (0.84.0):
+ - React-jsinspectorcdp (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsinspectornetwork (0.84.0):
+ - React-jsinspectornetwork (0.84.1):
- React-Core-prebuilt
- React-jsinspectorcdp
- ReactNativeDependencies
- - React-jsinspectortracing (0.84.0):
+ - React-jsinspectortracing (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1534,28 +1534,28 @@ PODS:
- React-oscompat
- React-timing
- ReactNativeDependencies
- - React-jsitooling (0.84.0):
+ - React-jsitooling (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsitracing (0.84.0):
+ - React-jsitracing (0.84.1):
- React-jsi
- - React-logger (0.84.0):
+ - React-logger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-Mapbuffer (0.84.0):
+ - React-Mapbuffer (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-microtasksnativemodule (0.84.0):
+ - React-microtasksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1632,7 +1632,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-NativeModulesApple (0.84.0):
+ - React-NativeModulesApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core
@@ -1647,18 +1647,18 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-networking (0.84.0):
+ - React-networking (0.84.1):
- React-Core-prebuilt
- React-jsinspectornetwork
- React-jsinspectortracing
- React-performancetimeline
- React-timing
- ReactNativeDependencies
- - React-oscompat (0.84.0)
- - React-perflogger (0.84.0):
+ - React-oscompat (0.84.1)
+ - React-perflogger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-performancecdpmetrics (0.84.0):
+ - React-performancecdpmetrics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1666,7 +1666,7 @@ PODS:
- React-runtimeexecutor
- React-timing
- ReactNativeDependencies
- - React-performancetimeline (0.84.0):
+ - React-performancetimeline (0.84.1):
- React-Core-prebuilt
- React-featureflags
- React-jsinspector
@@ -1674,9 +1674,9 @@ PODS:
- React-perflogger
- React-timing
- ReactNativeDependencies
- - React-RCTActionSheet (0.84.0):
- - React-Core/RCTActionSheetHeaders (= 0.84.0)
- - React-RCTAnimation (0.84.0):
+ - React-RCTActionSheet (0.84.1):
+ - React-Core/RCTActionSheetHeaders (= 0.84.1)
+ - React-RCTAnimation (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTAnimationHeaders
@@ -1687,7 +1687,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTAppDelegate (0.84.0):
+ - React-RCTAppDelegate (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1715,7 +1715,7 @@ PODS:
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-RCTBlob (0.84.0):
+ - React-RCTBlob (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Core/RCTBlobHeaders
@@ -1728,7 +1728,7 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTFabric (0.84.0):
+ - React-RCTFabric (0.84.1):
- hermes-engine
- RCTSwiftUIWrapper
- React-Core
@@ -1759,7 +1759,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-RCTFBReactNativeSpec (0.84.0):
+ - React-RCTFBReactNativeSpec (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1767,10 +1767,10 @@ PODS:
- React-Core-prebuilt
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.84.0)
+ - React-RCTFBReactNativeSpec/components (= 0.84.1)
- ReactCommon
- ReactNativeDependencies
- - React-RCTFBReactNativeSpec/components (0.84.0):
+ - React-RCTFBReactNativeSpec/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1787,7 +1787,7 @@ PODS:
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-RCTImage (0.84.0):
+ - React-RCTImage (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTImageHeaders
@@ -1797,14 +1797,14 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTLinking (0.84.0):
- - React-Core/RCTLinkingHeaders (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-RCTLinking (0.84.1):
+ - React-Core/RCTLinkingHeaders (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.84.0)
- - React-RCTNetwork (0.84.0):
+ - ReactCommon/turbomodule/core (= 0.84.1)
+ - React-RCTNetwork (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTNetworkHeaders
@@ -1818,7 +1818,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTRuntime (0.84.0):
+ - React-RCTRuntime (0.84.1):
- hermes-engine
- React-Core
- React-Core-prebuilt
@@ -1834,7 +1834,7 @@ PODS:
- React-RuntimeHermes
- React-utils
- ReactNativeDependencies
- - React-RCTSettings (0.84.0):
+ - React-RCTSettings (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTSettingsHeaders
@@ -1843,10 +1843,10 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTText (0.84.0):
- - React-Core/RCTTextHeaders (= 0.84.0)
+ - React-RCTText (0.84.1):
+ - React-Core/RCTTextHeaders (= 0.84.1)
- Yoga
- - React-RCTVibration (0.84.0):
+ - React-RCTVibration (0.84.1):
- React-Core-prebuilt
- React-Core/RCTVibrationHeaders
- React-jsi
@@ -1854,15 +1854,15 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-rendererconsistency (0.84.0)
- - React-renderercss (0.84.0):
+ - React-rendererconsistency (0.84.1)
+ - React-renderercss (0.84.1):
- React-debug
- React-utils
- - React-rendererdebug (0.84.0):
+ - React-rendererdebug (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-RuntimeApple (0.84.0):
+ - React-RuntimeApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -1885,7 +1885,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-RuntimeCore (0.84.0):
+ - React-RuntimeCore (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1901,14 +1901,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-runtimeexecutor (0.84.0):
+ - React-runtimeexecutor (0.84.1):
- React-Core-prebuilt
- React-debug
- React-featureflags
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-RuntimeHermes (0.84.0):
+ - React-RuntimeHermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1923,7 +1923,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-runtimescheduler (0.84.0):
+ - React-runtimescheduler (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -1939,15 +1939,15 @@ PODS:
- React-timing
- React-utils
- ReactNativeDependencies
- - React-timing (0.84.0):
+ - React-timing (0.84.1):
- React-debug
- - React-utils (0.84.0):
+ - React-utils (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- ReactNativeDependencies
- - React-webperformancenativemodule (0.84.0):
+ - React-webperformancenativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1958,9 +1958,9 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactAppDependencyProvider (0.84.0):
+ - ReactAppDependencyProvider (0.84.1):
- ReactCodegen
- - ReactCodegen (0.84.0):
+ - ReactCodegen (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1980,43 +1980,43 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactCommon (0.84.0):
+ - ReactCommon (0.84.1):
- React-Core-prebuilt
- - ReactCommon/turbomodule (= 0.84.0)
+ - ReactCommon/turbomodule (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule (0.84.0):
+ - ReactCommon/turbomodule (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - ReactCommon/turbomodule/bridging (= 0.84.0)
- - ReactCommon/turbomodule/core (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - ReactCommon/turbomodule/bridging (= 0.84.1)
+ - ReactCommon/turbomodule/core (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/bridging (0.84.0):
+ - ReactCommon/turbomodule/bridging (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/core (0.84.0):
+ - ReactCommon/turbomodule/core (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-debug (= 0.84.0)
- - React-featureflags (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - React-utils (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-debug (= 0.84.1)
+ - React-featureflags (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - React-utils (= 0.84.1)
- ReactNativeDependencies
- - ReactNativeDependencies (0.84.0)
+ - ReactNativeDependencies (0.84.1)
- RNGestureHandler (2.30.0):
- hermes-engine
- RCTRequired
@@ -2415,7 +2415,7 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
hermes-engine:
:podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-v250829098.0.8
+ :tag: hermes-v250829098.0.9
RCTDeprecation:
:path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
RCTRequired:
@@ -2593,82 +2593,82 @@ SPEC CHECKSUMS:
ExpoSymbols: 237882b097b55437cf37b36b21d8a4892f07e782
ExpoSystemUI: c4c5b9ba9a5a4713c70f3d68c3bcf3221f2198f2
ExpoWebBrowser: 19c5d250e0c101027677970a5f2fc635d9df2e73
- FBLazyVector: c12d2108050e27952983d565a232f6f7b1ad5e69
- hermes-engine: 2b78fb97886eeaa083923c5978d5e2db640fa856
+ FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da
+ hermes-engine: f17b9ba9fc7fc0b2418d3f51964ef51edd76cb49
libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
- RCTDeprecation: 3280799c14232a56e5a44f92981a8ee33bc69fd9
- RCTRequired: 9854a51b0f65ccf43ea0b744df4d70fce339db32
- RCTSwiftUI: 96986e49a4fdc2c2103929dee2641e1b57edf33d
- RCTSwiftUIWrapper: e3eed9f50cad9f171e4487e2ff18a9caa4d46bfb
- RCTTypeSafety: e9ba155357c236764934054ee2d393fd76e7b36b
- React: 7ef36630d07638043a134a7dd2ec17e0be10fc3c
- React-callinvoker: af4e8fe1d60ab63dd8d74c2a68988064c2848954
- React-Core: c0fb1df65eb0ed7a8633841831f05f93c3eb3aff
+ RCTDeprecation: af44b104091a34482596cd9bd7e8d90c4e9b4bd7
+ RCTRequired: bb77b070f75f53398ce43c0aaaa58337cebe2bf6
+ RCTSwiftUI: afc0a0a635860da1040a0b894bfd529da06d7810
+ RCTSwiftUIWrapper: cbb32eb90f09bd42ea9ed1eecd51fef3294da673
+ RCTTypeSafety: d13e192a37f151ce354641184bf4239844a3be17
+ React: 1ba7d364ade7d883a1ec055bfc3606f35fdee17b
+ React-callinvoker: bc2a26f8d84fb01f003fc6de6c9337b64715f95b
+ React-Core: bdaa87b276ca31877632a982ecf7c36f8c826414
React-Core-prebuilt: c9039fa994e21fa18ff6b06b795ea3d6067e0690
- React-CoreModules: 7dfe7962360355f1547c85ab52e1fc4b57f17127
- React-cxxreact: 9e9c7f1710bc58abebf924813b5e825b99adb8e5
- React-debug: 38389b86e3570558ec73dd4cbc0cd2f2eec47a51
- React-defaultsnativemodule: a326ccbb71369762888a6be09a23fa5bce2bdb6a
- React-domnativemodule: 8394c7b535d1b484b1eab677e00b086507cd906a
- React-Fabric: 682dafd75455062590cd1f63c79199cf72ff27d9
- React-FabricComponents: 11b13a53213cd1aaca3bf7f4c61c669617b26b5f
- React-FabricImage: 706c27e82f77b77db96ab3a19009ddb5e777967f
- React-featureflags: c2898fb2f93ab92cfd9f294b4531d2884e7cfc7e
- React-featureflagsnativemodule: 1edf93adfa12ba4f15d07079c1675b55ff579477
- React-graphics: 57d042385bfef5104aafeab189f43b8d6145013b
- React-hermes: 96d2d439f0477a93fe8e801664088eccc07a16ff
- React-idlecallbacksnativemodule: ab4dc6c3657f434f82c568ca83c963791e783f6a
- React-ImageManager: f39057f375cf3f98255fb751df3865a91f2755c1
- React-intersectionobservernativemodule: 54ce679b183149fd9566a79211f2f54dc0a6fd1f
- React-jserrorhandler: 2e92acff04ac815c6066c7cc08ea302610045db1
- React-jsi: dc97891e1ee7fa17cad01cd150c50f21e04bd51b
- React-jsiexecutor: e1543ba5a8be761331c8158d91211079cc5b73a2
- React-jsinspector: 7a1d86673986db6666cacc8b95e92125397ab6ea
- React-jsinspectorcdp: 38a0c116fd4965abf29261721db9b903923cb723
- React-jsinspectornetwork: cfeace6b40f13ba82980ba7cb730847a35675c7f
- React-jsinspectortracing: 5507411117e51751dba0543cdee7916eb0388693
- React-jsitooling: e3a2df9043ab7b9ad11bbbfe4b33eb6762514f05
- React-jsitracing: ad179fab1c1e08a57fcdb840b7021b453f7a2b6d
- React-logger: e40cc24a61d3a54c09bf4e83d5556b3b9d4c90aa
- React-Mapbuffer: 53f28c81b84767a0b2fb4c0109dd7e4571226f76
- React-microtasksnativemodule: ddaf25a8d69f694bc880fb6055e34d79f1d50138
+ React-CoreModules: b24989f62d56390ae08ca4f65e6f38fe6802de42
+ React-cxxreact: 1a2dfcbc18a6b610664dba152adf327f063a0d12
+ React-debug: 755200a6e7f5e6e0a40ff8d215493d43cce285fc
+ React-defaultsnativemodule: 027cad46a2847719b5d3d20dd915463b06a5d4d1
+ React-domnativemodule: 5ddfc6b3b73b48a31dfa12f52d6b62527f6f260c
+ React-Fabric: 6ffcc768e2378e84ed428069c7e2d270ee78f2bf
+ React-FabricComponents: ee6614287222dd4f04fdb1263d1ae6eb7fe952c6
+ React-FabricImage: ab05740a08ad9e23e4e1701e9c354e9a9b048063
+ React-featureflags: a8b0c8d9a93b5903f7620408659de160d95e4efe
+ React-featureflagsnativemodule: 0f0fe1a044829f31d7565a4bdfded376fbcfdfc1
+ React-graphics: c497dd295c88729525a4752d524d2d783aa205d4
+ React-hermes: c2bde95033e6df1599b5c1b6d7e45736a8aa5cba
+ React-idlecallbacksnativemodule: 6ceacabe93be052bbe822fb018602f63a8e280e2
+ React-ImageManager: 820fe1d55add59ec053099a0c5abe830ecd6c699
+ React-intersectionobservernativemodule: f84958aaf662f95f837dc4d26cbb5e7dcc4b8f09
+ React-jserrorhandler: 390c6c46e2f639b5ba104385d7fba848396347e8
+ React-jsi: 382de7964299bbf878458006a14f52cb66a36cfc
+ React-jsiexecutor: b781400a9becfb24e36ac063dccb42a52dcb44ca
+ React-jsinspector: 0644f32cc9b09eae2bc845ceb58d03420ae70821
+ React-jsinspectorcdp: 96677569865afe25c737889e02d635db26131d9f
+ React-jsinspectornetwork: 28c7cac2e92b1739561dcffd07f5554e54050a85
+ React-jsinspectortracing: 58ee96f9580a143011f8b914ad6927b5116461a7
+ React-jsitooling: bc79639489d610c35731dd26e8e54c37e078996d
+ React-jsitracing: 1bb9fae4f2ccf891255a419cdfc13372d07ef4a5
+ React-logger: 517377b1d2ba7ac722d47fb2183b98de86632063
+ React-Mapbuffer: 45e088dfb58dc326ae20cca1814d3726553c4cad
+ React-microtasksnativemodule: ab9d1a05fe1f58ea44a97d307ef1b53463f45a3f
react-native-safe-area-context: 53f796cb6c814661bbe99fbdfd0585d07b996cdd
- React-NativeModulesApple: 14a8919451154ede904f2bca84b27703a09028ba
- React-networking: 46c0037f9202c1919493b78662a47cbe13022fdd
- React-oscompat: b924b8609d06899f00ab1aa813b0cde9c5e12771
- React-perflogger: c3bb13800f795287e73a8c1991a2b8e5008ea3d0
- React-performancecdpmetrics: 851d2b18ba3d3d8cfb309bf468e5e93e46601122
- React-performancetimeline: 0a960aee139987151d2976813c47bef17dea3d3a
- React-RCTActionSheet: 21fbcd85f552d5d6575453d2e8c149535d9c6f46
- React-RCTAnimation: 2c8cb9508864bb15e9f8fe86242d8918f05278e9
- React-RCTAppDelegate: 1d52e34d25f5f1bed5c07e0717c40dc572a80010
- React-RCTBlob: bc487ebb909c23920af75c842b1405edba61b8ea
- React-RCTFabric: 7de87d2635b95171a06d9fffd907c4ac17823ef2
- React-RCTFBReactNativeSpec: b3936c48bf5262dc57ba28f8c8208cd1b570964c
- React-RCTImage: a591fc9f08dc6c7b63b9fb34f51a7c1f32bd9595
- React-RCTLinking: cb9553b27de77a63beb4e3ce95f82aa8f3bed602
- React-RCTNetwork: 576ba853aef49628238b4840e969217b826af156
- React-RCTRuntime: e0aa5ea63ba4e06c9028da5ae8b05cf72bc8a1ea
- React-RCTSettings: 8caa15edae452a5c4cd064569d5357a2bee8de15
- React-RCTText: af9a1c8d7c135c4d3ffa2de253ca95544234a521
- React-RCTVibration: c1dd36479ca1c1a59d16db81e5a994e9be06a68b
- React-rendererconsistency: 32e7b98c05a3f237ecb524add21190036962e868
- React-renderercss: d65e9232e5033cd9c07b13fa429ce925b8143bd7
- React-rendererdebug: 25c6151116b7ea1f78af72afc64f2066ad29a61d
- React-RuntimeApple: e036929884cc0d8088fe8a5a2d210e068d35e608
- React-RuntimeCore: 0c8a252051fe6b627f5147ac5b6a5298951472a8
- React-runtimeexecutor: 0765dddf1842e23e87ad13b2cb1bb72bb9005aeb
- React-RuntimeHermes: 44cd4fdc4afa44fa782ddce8600e3cc90215fbc5
- React-runtimescheduler: 1966ff307933cdbafd480cb3aa1fdc90d9a6d539
- React-timing: 94c4a44dd2d10e4fc51fd42654fd5f67d68247ad
- React-utils: 172d467a9c037d5ed51ee6eeaa6ad30ca1ebe1b1
- React-webperformancenativemodule: 9e3c5032dd30bf6418b741ab54ad26187b1c94c3
- ReactAppDependencyProvider: 625d2f6d9d5ef01acc9dfe2b5385504bbffd2ad0
- ReactCodegen: 494f77e14050854994f9a3c7f2e1589c0c2eb24f
- ReactCommon: cc0e38600f82487c5fe5d29150abb6fa9d981986
- ReactNativeDependencies: 3157d3d31bddcce5959451bccf9856e4f26c5571
+ React-NativeModulesApple: b94faa2dce6d8c0a9d722ed7ee27b996d28b62d1
+ React-networking: e409d8fb062162da6293e98b77f8d80cf4430e07
+ React-oscompat: ff26abf0ae3e3fdbe47b44224571e3fc7226a573
+ React-perflogger: 757c8c725cc20e94eba406885047f03cf83044fb
+ React-performancecdpmetrics: fec7e28b711c95ccb6fc7e3bb16572d88bcf27ae
+ React-performancetimeline: 4c6102f19df01db35c37a3e63a058cfbf1a056d9
+ React-RCTActionSheet: fc1d5d419856868e7f8c13c14591ed63dadef43a
+ React-RCTAnimation: 1ce166ec15ab1f8eca8ebaae7f8f709d9be6958c
+ React-RCTAppDelegate: c752d93f597168a9a4d5678e9354bbb8d84df6d1
+ React-RCTBlob: 147d41ee9f80cf27fe9b2f7adc1d6d24f68ec3fc
+ React-RCTFabric: 712c4ad749a43712609011d178234c90a17cde12
+ React-RCTFBReactNativeSpec: 032ea8783dc27290ec6b9af9d8df5351847539a2
+ React-RCTImage: fd39f1c478f1e43357bc72c2dbdc2454aafe4035
+ React-RCTLinking: 02ca1c83536dab08130f5db4852f293c53885dd6
+ React-RCTNetwork: 85dc64c530e4b0be7436f9a15b03caba24e9a3a1
+ React-RCTRuntime: c75950caa80e6884cbf0417d8738992256890508
+ React-RCTSettings: df5da31865cc1bab7ef5314e65ca18f6b538d71d
+ React-RCTText: 41587e426883c9a83fd8eb0c57fe328aad4ed57a
+ React-RCTVibration: 8ca2f9839c53416dffb584adb94501431ba7f96e
+ React-rendererconsistency: e91aba4bb482dac127ad955dba6333a8af629c5b
+ React-renderercss: 1f15a79f3cc3c9416902b8f70266408116d93bd0
+ React-rendererdebug: 77dcf1490ee5c0ce141d2b1eaceed02aa0996826
+ React-RuntimeApple: 1074835708500a69770b713f718400137f30ce7a
+ React-RuntimeCore: 148db945742d7ce2985cc35b8ddc61edfdb46e6d
+ React-runtimeexecutor: 5742146dac0f8de9c21f5f703993df249c046d0d
+ React-RuntimeHermes: a5bb378bea92d526341a65afa945a38c9bc787b2
+ React-runtimescheduler: 91838dd32460920ed1b4da68590a2684b784aacc
+ React-timing: 9c0e2b1532317148fa0487bbc3833c1f348981a0
+ React-utils: 2f8dd43fed5c6d881ac5971666bbb34cc4a03fa1
+ React-webperformancenativemodule: afbee7a9fd0b5bf92f6765eb41767f865b293bcc
+ ReactAppDependencyProvider: 26bbf1e26768d08dd965a2b5e372e53f67b21fee
+ ReactCodegen: 97efb6c3fd33e9ce32af51309673fbd6e22c63fa
+ ReactCommon: 309419492d417c4cbb87af06f67735afa40ecb9d
+ ReactNativeDependencies: 86774f2344703a3e3199a2d42a993a1d9076828b
RNGestureHandler: 6d378fd1aa991c7ab62a4215ee6cc417895a6954
RNReanimated: 752b27ede7d3f8970d5adba71f10258cb7848150
RNScreens: fb11b7412bcbdc0ffafcaf9174938d998d4e2bc4
@@ -2677,7 +2677,7 @@ SPEC CHECKSUMS:
SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
- Yoga: 772166513f9cd2d61a6251d0dacbbfaa5b537479
+ Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2
PODFILE CHECKSUM: 1ca978f73a30f65633c68b87b4dcd2037d2b9a00
diff --git a/apps/expo-go/ios/Podfile.lock b/apps/expo-go/ios/Podfile.lock
index 49438b670ace33..40b438a0831874 100644
--- a/apps/expo-go/ios/Podfile.lock
+++ b/apps/expo-go/ios/Podfile.lock
@@ -336,6 +336,9 @@ PODS:
- ExpoRouter (55.0.2):
- ExpoModulesCore
- RNScreens
+ - ExpoRouter/Tests (55.0.2):
+ - ExpoModulesCore
+ - RNScreens
- ExpoScreenCapture (55.0.8):
- ExpoModulesCore
- ExpoScreenOrientation (55.0.8):
@@ -4157,6 +4160,7 @@ DEPENDENCIES:
- ExpoNotifications/Tests (from `../../../packages/expo-notifications/ios`)
- ExpoPrint (from `../../../packages/expo-print/ios`)
- ExpoRouter (from `../../../packages/expo-router/ios`)
+ - ExpoRouter/Tests (from `../../../packages/expo-router/ios`)
- ExpoScreenCapture (from `../../../packages/expo-screen-capture/ios`)
- ExpoScreenOrientation (from `../../../packages/expo-screen-orientation/ios`)
- ExpoSecureStore (from `../../../packages/expo-secure-store/ios`)
@@ -4731,7 +4735,7 @@ SPEC CHECKSUMS:
ExpoNetwork: 018e4e16afdaff30c5002fadf64daab55bc20de0
ExpoNotifications: 0293112699b35aa26f6e9e1fcecee0323f3187dc
ExpoPrint: 744a2ca8033698b749389290d96f4ec836027aed
- ExpoRouter: 98f1ec6dfbde5edb827aa411681c1fcbee07786f
+ ExpoRouter: d770a57784f2cf06d0d5496913857ab79727dc99
ExpoScreenCapture: a4b2159b48fd2514a99f426778da31d1f0a9736f
ExpoScreenOrientation: ba181744c7ac781952da30c3c2b8d7661df21446
ExpoSecureStore: 7837b892a89ad8d28b64d9302b657e8b6ebae250
diff --git a/apps/expo-go/package.json b/apps/expo-go/package.json
index 5d986b4718f328..edbb9c61d5cec5 100644
--- a/apps/expo-go/package.json
+++ b/apps/expo-go/package.json
@@ -65,7 +65,7 @@
"immutable": "^4.0.0",
"lottie-react-native": "^7.3.4",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-edge-to-edge": "1.6.0",
"react-native-fade-in-image": "^1.6.1",
"react-native-gesture-handler": "~2.30.0",
diff --git a/apps/expo-workflow-testing/.eas/workflows/test-suite-brownfield.yml b/apps/expo-workflow-testing/.eas/workflows/test-suite-brownfield.yml
index ac8a48d83d6d87..87e5b7bea719fd 100644
--- a/apps/expo-workflow-testing/.eas/workflows/test-suite-brownfield.yml
+++ b/apps/expo-workflow-testing/.eas/workflows/test-suite-brownfield.yml
@@ -120,7 +120,7 @@ jobs:
- uses: eas/install_node_modules
- name: Install CocoaPods
working_directory: ../brownfield-tester
- run: pod install --project-directory=ios
+ run: bunx pod-install
- name: Build iOS (Debug)
working_directory: ../brownfield-tester
env:
diff --git a/apps/jest-expo-mock-generator/package.json b/apps/jest-expo-mock-generator/package.json
index c8f176e4e65e01..9f00a1ec900882 100644
--- a/apps/jest-expo-mock-generator/package.json
+++ b/apps/jest-expo-mock-generator/package.json
@@ -9,6 +9,6 @@
"expo": "~55.0.2",
"expo-clipboard": "~55.0.8",
"react": "19.2.3",
- "react-native": "0.84.0"
+ "react-native": "0.84.1"
}
}
diff --git a/apps/minimal-tester/ios/Podfile.lock b/apps/minimal-tester/ios/Podfile.lock
index f31cd141a4bfbd..fe092c423683b1 100644
--- a/apps/minimal-tester/ios/Podfile.lock
+++ b/apps/minimal-tester/ios/Podfile.lock
@@ -1,12 +1,12 @@
PODS:
- EASClient (55.0.2):
- ExpoModulesCore
- - EXConstants (55.0.4):
+ - EXConstants (55.0.7):
- ExpoModulesCore
- EXJSONUtils (55.0.0)
- - EXManifests (55.0.5):
+ - EXManifests (55.0.9):
- ExpoModulesCore
- - Expo (55.0.0):
+ - Expo (55.0.2):
- ExpoModulesCore
- hermes-engine
- RCTRequired
@@ -31,15 +31,15 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-client (55.0.5):
+ - expo-dev-client (55.0.9):
- EXManifests
- expo-dev-launcher
- expo-dev-menu
- expo-dev-menu-interface
- EXUpdatesInterface
- - expo-dev-launcher (55.0.6):
+ - expo-dev-launcher (55.0.10):
- EXManifests
- - expo-dev-launcher/Main (= 55.0.6)
+ - expo-dev-launcher/Main (= 55.0.10)
- expo-dev-menu
- expo-dev-menu-interface
- ExpoModulesCore
@@ -68,7 +68,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher/Main (55.0.6):
+ - expo-dev-launcher/Main (55.0.10):
- EXManifests
- expo-dev-launcher/Unsafe
- expo-dev-menu
@@ -99,7 +99,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher/Unsafe (55.0.6):
+ - expo-dev-launcher/Unsafe (55.0.10):
- EXManifests
- expo-dev-menu
- expo-dev-menu-interface
@@ -129,8 +129,8 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-menu (55.0.5):
- - expo-dev-menu/Main (= 55.0.5)
+ - expo-dev-menu (55.0.9):
+ - expo-dev-menu/Main (= 55.0.9)
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -153,7 +153,7 @@ PODS:
- ReactNativeDependencies
- Yoga
- expo-dev-menu-interface (55.0.1)
- - expo-dev-menu/Main (55.0.5):
+ - expo-dev-menu/Main (55.0.9):
- EXManifests
- expo-dev-menu-interface
- ExpoModulesCore
@@ -180,38 +180,38 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - ExpoAppleAuthentication (55.0.5):
+ - ExpoAppleAuthentication (55.0.8):
- ExpoModulesCore
- - ExpoAsset (55.0.4):
+ - ExpoAsset (55.0.7):
- ExpoModulesCore
- - ExpoBlur (55.0.5):
+ - ExpoBlur (55.0.8):
- ExpoModulesCore
- - ExpoBrownfield (55.0.7):
+ - ExpoBrownfield (55.0.11):
- ExpoModulesCore
- - ExpoCamera (55.0.5):
+ - ExpoCamera (55.0.9):
- ExpoModulesCore
- ZXingObjC/OneD
- ZXingObjC/PDF417
- ExpoDomWebView (55.0.3):
- ExpoModulesCore
- - ExpoFileSystem (55.0.5):
+ - ExpoFileSystem (55.0.9):
- ExpoModulesCore
- - ExpoFont (55.0.3):
+ - ExpoFont (55.0.4):
- ExpoModulesCore
- - ExpoImage (55.0.3):
+ - ExpoImage (55.0.5):
- ExpoModulesCore
- libavif/libdav1d
- SDWebImage (~> 5.21.0)
- SDWebImageAVIFCoder (~> 0.11.0)
- SDWebImageSVGCoder (~> 1.7.0)
- SDWebImageWebPCoder (~> 0.14.6)
- - ExpoKeepAwake (55.0.2):
+ - ExpoKeepAwake (55.0.4):
- ExpoModulesCore
- - ExpoLinearGradient (55.0.5):
+ - ExpoLinearGradient (55.0.8):
- ExpoModulesCore
- - ExpoLogBox (55.0.6):
+ - ExpoLogBox (55.0.7):
- React-Core
- - ExpoModulesCore (55.0.8):
+ - ExpoModulesCore (55.0.12):
- ExpoModulesJSI
- hermes-engine
- RCTRequired
@@ -235,17 +235,17 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - ExpoModulesJSI (55.0.8):
+ - ExpoModulesJSI (55.0.12):
- hermes-engine
- React-Core
- React-runtimescheduler
- ReactCommon
- - ExpoSplashScreen (55.0.5):
+ - ExpoSplashScreen (55.0.9):
- ExpoModulesCore
- - ExpoVideo (55.0.5):
+ - ExpoVideo (55.0.9):
- ExpoModulesCore
- EXStructuredHeaders (55.0.0)
- - EXUpdates (55.0.7):
+ - EXUpdates (55.0.11):
- EASClient
- EXManifests
- ExpoModulesCore
@@ -273,12 +273,12 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - EXUpdatesInterface (55.1.1):
+ - EXUpdatesInterface (55.1.3):
- ExpoModulesCore
- - FBLazyVector (0.84.0)
- - hermes-engine (250829098.0.7):
- - hermes-engine/Pre-built (= 250829098.0.7)
- - hermes-engine/Pre-built (250829098.0.7)
+ - FBLazyVector (0.84.1)
+ - hermes-engine (250829098.0.9):
+ - hermes-engine/Pre-built (= 250829098.0.9)
+ - hermes-engine/Pre-built (250829098.0.9)
- libavif/core (0.11.1)
- libavif/libdav1d (0.11.1):
- libavif/core
@@ -296,35 +296,35 @@ PODS:
- libwebp/sharpyuv (1.5.0)
- libwebp/webp (1.5.0):
- libwebp/sharpyuv
- - RCTDeprecation (0.84.0)
- - RCTRequired (0.84.0)
- - RCTSwiftUI (0.84.0)
- - RCTSwiftUIWrapper (0.84.0):
+ - RCTDeprecation (0.84.1)
+ - RCTRequired (0.84.1)
+ - RCTSwiftUI (0.84.1)
+ - RCTSwiftUIWrapper (0.84.1):
- RCTSwiftUI
- - RCTTypeSafety (0.84.0):
- - FBLazyVector (= 0.84.0)
- - RCTRequired (= 0.84.0)
- - React-Core (= 0.84.0)
+ - RCTTypeSafety (0.84.1):
+ - FBLazyVector (= 0.84.1)
+ - RCTRequired (= 0.84.1)
+ - React-Core (= 0.84.1)
- ReachabilitySwift (5.2.4)
- - React (0.84.0):
- - React-Core (= 0.84.0)
- - React-Core/DevSupport (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
- - React-RCTActionSheet (= 0.84.0)
- - React-RCTAnimation (= 0.84.0)
- - React-RCTBlob (= 0.84.0)
- - React-RCTImage (= 0.84.0)
- - React-RCTLinking (= 0.84.0)
- - React-RCTNetwork (= 0.84.0)
- - React-RCTSettings (= 0.84.0)
- - React-RCTText (= 0.84.0)
- - React-RCTVibration (= 0.84.0)
- - React-callinvoker (0.84.0)
- - React-Core (0.84.0):
+ - React (0.84.1):
+ - React-Core (= 0.84.1)
+ - React-Core/DevSupport (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
+ - React-RCTActionSheet (= 0.84.1)
+ - React-RCTAnimation (= 0.84.1)
+ - React-RCTBlob (= 0.84.1)
+ - React-RCTImage (= 0.84.1)
+ - React-RCTLinking (= 0.84.1)
+ - React-RCTNetwork (= 0.84.1)
+ - React-RCTSettings (= 0.84.1)
+ - React-RCTText (= 0.84.1)
+ - React-RCTVibration (= 0.84.1)
+ - React-callinvoker (0.84.1)
+ - React-Core (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -341,7 +341,7 @@ PODS:
- Yoga
- React-Core-prebuilt (0.84.0-rc.5):
- ReactNativeDependencies
- - React-Core/CoreModulesHeaders (0.84.0):
+ - React-Core/CoreModulesHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -360,7 +360,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/Default (0.84.0):
+ - React-Core/Default (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -378,12 +378,12 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/DevSupport (0.84.0):
+ - React-Core/DevSupport (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -398,7 +398,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTActionSheetHeaders (0.84.0):
+ - React-Core/RCTActionSheetHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -417,7 +417,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTAnimationHeaders (0.84.0):
+ - React-Core/RCTAnimationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -436,7 +436,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTBlobHeaders (0.84.0):
+ - React-Core/RCTBlobHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -455,7 +455,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTImageHeaders (0.84.0):
+ - React-Core/RCTImageHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -474,7 +474,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTLinkingHeaders (0.84.0):
+ - React-Core/RCTLinkingHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -493,7 +493,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTNetworkHeaders (0.84.0):
+ - React-Core/RCTNetworkHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -512,7 +512,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTSettingsHeaders (0.84.0):
+ - React-Core/RCTSettingsHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -531,7 +531,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTTextHeaders (0.84.0):
+ - React-Core/RCTTextHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -550,7 +550,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTVibrationHeaders (0.84.0):
+ - React-Core/RCTVibrationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -569,11 +569,11 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTWebSocket (0.84.0):
+ - React-Core/RCTWebSocket (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -588,40 +588,40 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-CoreModules (0.84.0):
- - RCTTypeSafety (= 0.84.0)
+ - React-CoreModules (0.84.1):
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- - React-Core/CoreModulesHeaders (= 0.84.0)
+ - React-Core/CoreModulesHeaders (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.84.0)
+ - React-RCTImage (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-cxxreact (0.84.0):
+ - React-cxxreact (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-debug (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-debug (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- - React-timing (= 0.84.0)
+ - React-timing (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-debug (0.84.0)
- - React-defaultsnativemodule (0.84.0):
+ - React-debug (0.84.1)
+ - React-defaultsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-domnativemodule
@@ -636,7 +636,7 @@ PODS:
- React-webperformancenativemodule
- ReactNativeDependencies
- Yoga
- - React-domnativemodule (0.84.0):
+ - React-domnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Fabric
@@ -650,7 +650,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric (0.84.0):
+ - React-Fabric (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -658,25 +658,25 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/animated (= 0.84.0)
- - React-Fabric/animationbackend (= 0.84.0)
- - React-Fabric/animations (= 0.84.0)
- - React-Fabric/attributedstring (= 0.84.0)
- - React-Fabric/bridging (= 0.84.0)
- - React-Fabric/componentregistry (= 0.84.0)
- - React-Fabric/componentregistrynative (= 0.84.0)
- - React-Fabric/components (= 0.84.0)
- - React-Fabric/consistency (= 0.84.0)
- - React-Fabric/core (= 0.84.0)
- - React-Fabric/dom (= 0.84.0)
- - React-Fabric/imagemanager (= 0.84.0)
- - React-Fabric/leakchecker (= 0.84.0)
- - React-Fabric/mounting (= 0.84.0)
- - React-Fabric/observers (= 0.84.0)
- - React-Fabric/scheduler (= 0.84.0)
- - React-Fabric/telemetry (= 0.84.0)
- - React-Fabric/templateprocessor (= 0.84.0)
- - React-Fabric/uimanager (= 0.84.0)
+ - React-Fabric/animated (= 0.84.1)
+ - React-Fabric/animationbackend (= 0.84.1)
+ - React-Fabric/animations (= 0.84.1)
+ - React-Fabric/attributedstring (= 0.84.1)
+ - React-Fabric/bridging (= 0.84.1)
+ - React-Fabric/componentregistry (= 0.84.1)
+ - React-Fabric/componentregistrynative (= 0.84.1)
+ - React-Fabric/components (= 0.84.1)
+ - React-Fabric/consistency (= 0.84.1)
+ - React-Fabric/core (= 0.84.1)
+ - React-Fabric/dom (= 0.84.1)
+ - React-Fabric/imagemanager (= 0.84.1)
+ - React-Fabric/leakchecker (= 0.84.1)
+ - React-Fabric/mounting (= 0.84.1)
+ - React-Fabric/observers (= 0.84.1)
+ - React-Fabric/scheduler (= 0.84.1)
+ - React-Fabric/telemetry (= 0.84.1)
+ - React-Fabric/templateprocessor (= 0.84.1)
+ - React-Fabric/uimanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -688,7 +688,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animated (0.84.0):
+ - React-Fabric/animated (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -707,7 +707,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animationbackend (0.84.0):
+ - React-Fabric/animationbackend (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -726,7 +726,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animations (0.84.0):
+ - React-Fabric/animations (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -745,7 +745,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/attributedstring (0.84.0):
+ - React-Fabric/attributedstring (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -764,7 +764,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/bridging (0.84.0):
+ - React-Fabric/bridging (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -783,7 +783,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistry (0.84.0):
+ - React-Fabric/componentregistry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -802,7 +802,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistrynative (0.84.0):
+ - React-Fabric/componentregistrynative (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -821,7 +821,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components (0.84.0):
+ - React-Fabric/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -829,10 +829,10 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.84.0)
- - React-Fabric/components/root (= 0.84.0)
- - React-Fabric/components/scrollview (= 0.84.0)
- - React-Fabric/components/view (= 0.84.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.84.1)
+ - React-Fabric/components/root (= 0.84.1)
+ - React-Fabric/components/scrollview (= 0.84.1)
+ - React-Fabric/components/view (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -844,7 +844,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/legacyviewmanagerinterop (0.84.0):
+ - React-Fabric/components/legacyviewmanagerinterop (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -863,7 +863,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/root (0.84.0):
+ - React-Fabric/components/root (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -882,7 +882,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/scrollview (0.84.0):
+ - React-Fabric/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -901,7 +901,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/view (0.84.0):
+ - React-Fabric/components/view (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -922,7 +922,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric/consistency (0.84.0):
+ - React-Fabric/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -941,7 +941,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/core (0.84.0):
+ - React-Fabric/core (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -960,7 +960,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/dom (0.84.0):
+ - React-Fabric/dom (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -979,7 +979,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/imagemanager (0.84.0):
+ - React-Fabric/imagemanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -998,7 +998,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/leakchecker (0.84.0):
+ - React-Fabric/leakchecker (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1017,7 +1017,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/mounting (0.84.0):
+ - React-Fabric/mounting (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1036,7 +1036,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers (0.84.0):
+ - React-Fabric/observers (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1044,8 +1044,8 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.84.0)
- - React-Fabric/observers/intersection (= 0.84.0)
+ - React-Fabric/observers/events (= 0.84.1)
+ - React-Fabric/observers/intersection (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1057,7 +1057,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/events (0.84.0):
+ - React-Fabric/observers/events (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1076,7 +1076,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/intersection (0.84.0):
+ - React-Fabric/observers/intersection (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1095,7 +1095,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/scheduler (0.84.0):
+ - React-Fabric/scheduler (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1117,7 +1117,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/telemetry (0.84.0):
+ - React-Fabric/telemetry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1136,7 +1136,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/templateprocessor (0.84.0):
+ - React-Fabric/templateprocessor (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1155,7 +1155,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager (0.84.0):
+ - React-Fabric/uimanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1163,7 +1163,7 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.84.0)
+ - React-Fabric/uimanager/consistency (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1176,7 +1176,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager/consistency (0.84.0):
+ - React-Fabric/uimanager/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1196,7 +1196,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-FabricComponents (0.84.0):
+ - React-FabricComponents (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1205,8 +1205,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.84.0)
- - React-FabricComponents/textlayoutmanager (= 0.84.0)
+ - React-FabricComponents/components (= 0.84.1)
+ - React-FabricComponents/textlayoutmanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1219,7 +1219,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components (0.84.0):
+ - React-FabricComponents/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1228,18 +1228,18 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.84.0)
- - React-FabricComponents/components/iostextinput (= 0.84.0)
- - React-FabricComponents/components/modal (= 0.84.0)
- - React-FabricComponents/components/rncore (= 0.84.0)
- - React-FabricComponents/components/safeareaview (= 0.84.0)
- - React-FabricComponents/components/scrollview (= 0.84.0)
- - React-FabricComponents/components/switch (= 0.84.0)
- - React-FabricComponents/components/text (= 0.84.0)
- - React-FabricComponents/components/textinput (= 0.84.0)
- - React-FabricComponents/components/unimplementedview (= 0.84.0)
- - React-FabricComponents/components/virtualview (= 0.84.0)
- - React-FabricComponents/components/virtualviewexperimental (= 0.84.0)
+ - React-FabricComponents/components/inputaccessory (= 0.84.1)
+ - React-FabricComponents/components/iostextinput (= 0.84.1)
+ - React-FabricComponents/components/modal (= 0.84.1)
+ - React-FabricComponents/components/rncore (= 0.84.1)
+ - React-FabricComponents/components/safeareaview (= 0.84.1)
+ - React-FabricComponents/components/scrollview (= 0.84.1)
+ - React-FabricComponents/components/switch (= 0.84.1)
+ - React-FabricComponents/components/text (= 0.84.1)
+ - React-FabricComponents/components/textinput (= 0.84.1)
+ - React-FabricComponents/components/unimplementedview (= 0.84.1)
+ - React-FabricComponents/components/virtualview (= 0.84.1)
+ - React-FabricComponents/components/virtualviewexperimental (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1252,7 +1252,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/inputaccessory (0.84.0):
+ - React-FabricComponents/components/inputaccessory (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1273,7 +1273,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/iostextinput (0.84.0):
+ - React-FabricComponents/components/iostextinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1294,7 +1294,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/modal (0.84.0):
+ - React-FabricComponents/components/modal (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1315,7 +1315,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/rncore (0.84.0):
+ - React-FabricComponents/components/rncore (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1336,7 +1336,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/safeareaview (0.84.0):
+ - React-FabricComponents/components/safeareaview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1357,7 +1357,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/scrollview (0.84.0):
+ - React-FabricComponents/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1378,7 +1378,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/switch (0.84.0):
+ - React-FabricComponents/components/switch (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1399,7 +1399,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/text (0.84.0):
+ - React-FabricComponents/components/text (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1420,7 +1420,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/textinput (0.84.0):
+ - React-FabricComponents/components/textinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1441,7 +1441,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/unimplementedview (0.84.0):
+ - React-FabricComponents/components/unimplementedview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1462,7 +1462,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualview (0.84.0):
+ - React-FabricComponents/components/virtualview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1483,7 +1483,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualviewexperimental (0.84.0):
+ - React-FabricComponents/components/virtualviewexperimental (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1504,7 +1504,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/textlayoutmanager (0.84.0):
+ - React-FabricComponents/textlayoutmanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1525,27 +1525,27 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricImage (0.84.0):
+ - React-FabricImage (0.84.1):
- hermes-engine
- - RCTRequired (= 0.84.0)
- - RCTTypeSafety (= 0.84.0)
+ - RCTRequired (= 0.84.1)
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-featureflags (0.84.0):
+ - React-featureflags (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-featureflagsnativemodule (0.84.0):
+ - React-featureflagsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1554,28 +1554,28 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-graphics (0.84.0):
+ - React-graphics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
- React-jsiexecutor
- React-utils
- ReactNativeDependencies
- - React-hermes (0.84.0):
+ - React-hermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-jsitooling
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- ReactNativeDependencies
- - React-idlecallbacksnativemodule (0.84.0):
+ - React-idlecallbacksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1585,7 +1585,7 @@ PODS:
- React-runtimescheduler
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-ImageManager (0.84.0):
+ - React-ImageManager (0.84.1):
- React-Core-prebuilt
- React-Core/Default
- React-debug
@@ -1594,7 +1594,7 @@ PODS:
- React-rendererdebug
- React-utils
- ReactNativeDependencies
- - React-intersectionobservernativemodule (0.84.0):
+ - React-intersectionobservernativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1609,7 +1609,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-jserrorhandler (0.84.0):
+ - React-jserrorhandler (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1618,11 +1618,11 @@ PODS:
- React-jsi
- ReactCommon/turbomodule/bridging
- ReactNativeDependencies
- - React-jsi (0.84.0):
+ - React-jsi (0.84.1):
- hermes-engine
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsiexecutor (0.84.0):
+ - React-jsiexecutor (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1637,7 +1637,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspector (0.84.0):
+ - React-jsinspector (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1646,18 +1646,18 @@ PODS:
- React-jsinspectornetwork
- React-jsinspectortracing
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspectorcdp (0.84.0):
+ - React-jsinspectorcdp (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsinspectornetwork (0.84.0):
+ - React-jsinspectornetwork (0.84.1):
- React-Core-prebuilt
- React-jsinspectorcdp
- ReactNativeDependencies
- - React-jsinspectortracing (0.84.0):
+ - React-jsinspectortracing (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1665,28 +1665,28 @@ PODS:
- React-oscompat
- React-timing
- ReactNativeDependencies
- - React-jsitooling (0.84.0):
+ - React-jsitooling (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsitracing (0.84.0):
+ - React-jsitracing (0.84.1):
- React-jsi
- - React-logger (0.84.0):
+ - React-logger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-Mapbuffer (0.84.0):
+ - React-Mapbuffer (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-microtasksnativemodule (0.84.0):
+ - React-microtasksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1694,7 +1694,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-NativeModulesApple (0.84.0):
+ - React-NativeModulesApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core
@@ -1709,18 +1709,18 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-networking (0.84.0):
+ - React-networking (0.84.1):
- React-Core-prebuilt
- React-jsinspectornetwork
- React-jsinspectortracing
- React-performancetimeline
- React-timing
- ReactNativeDependencies
- - React-oscompat (0.84.0)
- - React-perflogger (0.84.0):
+ - React-oscompat (0.84.1)
+ - React-perflogger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-performancecdpmetrics (0.84.0):
+ - React-performancecdpmetrics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1728,7 +1728,7 @@ PODS:
- React-runtimeexecutor
- React-timing
- ReactNativeDependencies
- - React-performancetimeline (0.84.0):
+ - React-performancetimeline (0.84.1):
- React-Core-prebuilt
- React-featureflags
- React-jsinspector
@@ -1736,9 +1736,9 @@ PODS:
- React-perflogger
- React-timing
- ReactNativeDependencies
- - React-RCTActionSheet (0.84.0):
- - React-Core/RCTActionSheetHeaders (= 0.84.0)
- - React-RCTAnimation (0.84.0):
+ - React-RCTActionSheet (0.84.1):
+ - React-Core/RCTActionSheetHeaders (= 0.84.1)
+ - React-RCTAnimation (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTAnimationHeaders
@@ -1749,7 +1749,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTAppDelegate (0.84.0):
+ - React-RCTAppDelegate (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1777,7 +1777,7 @@ PODS:
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-RCTBlob (0.84.0):
+ - React-RCTBlob (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Core/RCTBlobHeaders
@@ -1790,7 +1790,7 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTFabric (0.84.0):
+ - React-RCTFabric (0.84.1):
- hermes-engine
- RCTSwiftUIWrapper
- React-Core
@@ -1821,7 +1821,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-RCTFBReactNativeSpec (0.84.0):
+ - React-RCTFBReactNativeSpec (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1829,10 +1829,10 @@ PODS:
- React-Core-prebuilt
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.84.0)
+ - React-RCTFBReactNativeSpec/components (= 0.84.1)
- ReactCommon
- ReactNativeDependencies
- - React-RCTFBReactNativeSpec/components (0.84.0):
+ - React-RCTFBReactNativeSpec/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1849,7 +1849,7 @@ PODS:
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-RCTImage (0.84.0):
+ - React-RCTImage (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTImageHeaders
@@ -1859,14 +1859,14 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTLinking (0.84.0):
- - React-Core/RCTLinkingHeaders (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-RCTLinking (0.84.1):
+ - React-Core/RCTLinkingHeaders (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.84.0)
- - React-RCTNetwork (0.84.0):
+ - ReactCommon/turbomodule/core (= 0.84.1)
+ - React-RCTNetwork (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTNetworkHeaders
@@ -1880,7 +1880,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTRuntime (0.84.0):
+ - React-RCTRuntime (0.84.1):
- hermes-engine
- React-Core
- React-Core-prebuilt
@@ -1896,7 +1896,7 @@ PODS:
- React-RuntimeHermes
- React-utils
- ReactNativeDependencies
- - React-RCTSettings (0.84.0):
+ - React-RCTSettings (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTSettingsHeaders
@@ -1905,10 +1905,10 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTText (0.84.0):
- - React-Core/RCTTextHeaders (= 0.84.0)
+ - React-RCTText (0.84.1):
+ - React-Core/RCTTextHeaders (= 0.84.1)
- Yoga
- - React-RCTVibration (0.84.0):
+ - React-RCTVibration (0.84.1):
- React-Core-prebuilt
- React-Core/RCTVibrationHeaders
- React-jsi
@@ -1916,15 +1916,15 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-rendererconsistency (0.84.0)
- - React-renderercss (0.84.0):
+ - React-rendererconsistency (0.84.1)
+ - React-renderercss (0.84.1):
- React-debug
- React-utils
- - React-rendererdebug (0.84.0):
+ - React-rendererdebug (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-RuntimeApple (0.84.0):
+ - React-RuntimeApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -1947,7 +1947,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-RuntimeCore (0.84.0):
+ - React-RuntimeCore (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1963,14 +1963,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-runtimeexecutor (0.84.0):
+ - React-runtimeexecutor (0.84.1):
- React-Core-prebuilt
- React-debug
- React-featureflags
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-RuntimeHermes (0.84.0):
+ - React-RuntimeHermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1985,7 +1985,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-runtimescheduler (0.84.0):
+ - React-runtimescheduler (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -2001,15 +2001,15 @@ PODS:
- React-timing
- React-utils
- ReactNativeDependencies
- - React-timing (0.84.0):
+ - React-timing (0.84.1):
- React-debug
- - React-utils (0.84.0):
+ - React-utils (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- ReactNativeDependencies
- - React-webperformancenativemodule (0.84.0):
+ - React-webperformancenativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2020,9 +2020,9 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactAppDependencyProvider (0.84.0):
+ - ReactAppDependencyProvider (0.84.1):
- ReactCodegen
- - ReactCodegen (0.84.0):
+ - ReactCodegen (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2042,43 +2042,43 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactCommon (0.84.0):
+ - ReactCommon (0.84.1):
- React-Core-prebuilt
- - ReactCommon/turbomodule (= 0.84.0)
+ - ReactCommon/turbomodule (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule (0.84.0):
+ - ReactCommon/turbomodule (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - ReactCommon/turbomodule/bridging (= 0.84.0)
- - ReactCommon/turbomodule/core (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - ReactCommon/turbomodule/bridging (= 0.84.1)
+ - ReactCommon/turbomodule/core (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/bridging (0.84.0):
+ - ReactCommon/turbomodule/bridging (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/core (0.84.0):
+ - ReactCommon/turbomodule/core (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-debug (= 0.84.0)
- - React-featureflags (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - React-utils (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-debug (= 0.84.1)
+ - React-featureflags (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - React-utils (= 0.84.1)
- ReactNativeDependencies
- - ReactNativeDependencies (0.84.0)
+ - ReactNativeDependencies (0.84.1)
- SDWebImage (5.21.5):
- SDWebImage/Core (= 5.21.5)
- SDWebImage/Core (5.21.5)
@@ -2274,7 +2274,7 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
hermes-engine:
:podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-v250829098.0.8
+ :tag: hermes-v250829098.0.9
RCTDeprecation:
:path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
RCTRequired:
@@ -2420,114 +2420,114 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
EASClient: a4b8ae18e8de52019ec94d14795faac4800905f0
- EXConstants: 6ce3496ae2e409056541aeab407629fe0e4767f8
+ EXConstants: a16ad8db13865e97aaecf64bb92e8ad8e8ce1ae8
EXJSONUtils: 0080c14b673cfa9a6be5e3fe429768ffe3d42dfb
- EXManifests: f030f5063de017f10ef92558af59a705ef2dc914
- Expo: 47394402f1d61779cfb91987c57e1a8a48a00abe
- expo-dev-client: a1aff30da2913070b220adf0f306d8705a94f743
- expo-dev-launcher: 3eb31d44fb931637eeb8f5767d3bf1267ec136f8
- expo-dev-menu: b6491e07cad000d842d96877c0587b73f4770d72
+ EXManifests: 22ec6b0abf4e9b54ea22624aa955cf68d6c90590
+ Expo: b4e493f4a6940e56ebeb9be2de98676e8f4d7573
+ expo-dev-client: de1af4570c4d213e52b700f701914521270ad93d
+ expo-dev-launcher: 7a35c2c66a4cead0442a79537fb7724c47e492eb
+ expo-dev-menu: 4611a6a3899978bc560253e41ae707d8a0709e41
expo-dev-menu-interface: bf6f816d29b45bec038080790963c635e8d588c2
- ExpoAppleAuthentication: 742f1152de233ec232be124f131e745a9d873b2d
- ExpoAsset: 54852d8f872134c3f5a2946af259539787946bf3
- ExpoBlur: 91a934c24a142448355e9e57c6c6f17c2e591656
- ExpoBrownfield: 7dcfb3e16dd1899ddd252969c1517293701b3507
- ExpoCamera: 95b714257766c4fcd3494b4f2abb4271ef907d4b
+ ExpoAppleAuthentication: b1ca252ee1d79888720df7af6bbb559b3ca57a77
+ ExpoAsset: 7c5ca25ca94db0d34d8d3148b9cb18a1a66a2277
+ ExpoBlur: 7a5722ca5c8d9e8a2fe2d3be7cb61071b585ca11
+ ExpoBrownfield: 03cd102d392fbb31df1e344c012fc4370470ac6d
+ ExpoCamera: af28a6cb21de33372fc5b41fd7db101d3d692f74
ExpoDomWebView: d4f2ed3c3fa31d0ce89e79501a0c041c2f233189
- ExpoFileSystem: 050d33121c37a336e655db7ca6bede9112b03dd3
- ExpoFont: 4e2967170d6ee7316c5efd62dd06aabd7b4593d2
- ExpoImage: eb2443489a4e380def23857653e170054ecec49c
- ExpoKeepAwake: fa30695ff813ea45747d5ef78b75d6c9b4b73faa
- ExpoLinearGradient: cca2657f1598963fea5778eaf4e88be6586a8475
- ExpoLogBox: 9b847a8b4ef7013d187c0ad7d1eb77b731b09364
- ExpoModulesCore: d762915d952bce3cc49bc2de2bc068bcfd8b9f92
- ExpoModulesJSI: de7ae5b701704e269493d97442cb39e88bc1f6fc
- ExpoSplashScreen: e55bf5a96431eb0d3c148ee41f441d0965412faa
- ExpoVideo: 04002decf451f6d07ec72a8d872ddaa2880a316e
+ ExpoFileSystem: 7bc4dd246598030591c391c735d5493741c41eee
+ ExpoFont: 4d2a6dedce012c4793532cb38d561d3da95eaafd
+ ExpoImage: 37c1d7411df45995ffcd8fb6a9e20f5e1d5aab8e
+ ExpoKeepAwake: 55711a70fe88a41e793bbe28543c93cb47ff265d
+ ExpoLinearGradient: 311546b2af6dadb591035cbe41b59884ea492377
+ ExpoLogBox: 35febda08748ff213ea133f51acf976ba8c44b2c
+ ExpoModulesCore: 5af62b6916a2b0d10aea74f6daebe4a88fc25157
+ ExpoModulesJSI: 38b730fb75fea7c17fdb4bd965ae6c18d0141dab
+ ExpoSplashScreen: 1ad4b0ceabf66f739f34d92ef767283ba8d42f9c
+ ExpoVideo: 570228bc29b15071627f295afa1407ea3d196934
EXStructuredHeaders: aa49a5557fa24aa61dda4ac665f3987bf3e9e35d
- EXUpdates: e1fd76387b4ab5a13d7e0206bcb0c2b88a6edafd
- EXUpdatesInterface: 48272cb8995e613f0843fe531347e2f783e1df5f
- FBLazyVector: c12d2108050e27952983d565a232f6f7b1ad5e69
- hermes-engine: 2b78fb97886eeaa083923c5978d5e2db640fa856
+ EXUpdates: c5a64985f393cf4f8beb4463f86a885c90b4fccc
+ EXUpdatesInterface: 26412751a0f7a7130614655929e316f684552aab
+ FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da
+ hermes-engine: f17b9ba9fc7fc0b2418d3f51964ef51edd76cb49
libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
- RCTDeprecation: 3280799c14232a56e5a44f92981a8ee33bc69fd9
- RCTRequired: 9854a51b0f65ccf43ea0b744df4d70fce339db32
- RCTSwiftUI: 96986e49a4fdc2c2103929dee2641e1b57edf33d
- RCTSwiftUIWrapper: e3eed9f50cad9f171e4487e2ff18a9caa4d46bfb
- RCTTypeSafety: e9ba155357c236764934054ee2d393fd76e7b36b
+ RCTDeprecation: af44b104091a34482596cd9bd7e8d90c4e9b4bd7
+ RCTRequired: bb77b070f75f53398ce43c0aaaa58337cebe2bf6
+ RCTSwiftUI: afc0a0a635860da1040a0b894bfd529da06d7810
+ RCTSwiftUIWrapper: cbb32eb90f09bd42ea9ed1eecd51fef3294da673
+ RCTTypeSafety: d13e192a37f151ce354641184bf4239844a3be17
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
- React: 7ef36630d07638043a134a7dd2ec17e0be10fc3c
- React-callinvoker: af4e8fe1d60ab63dd8d74c2a68988064c2848954
- React-Core: c0fb1df65eb0ed7a8633841831f05f93c3eb3aff
+ React: 1ba7d364ade7d883a1ec055bfc3606f35fdee17b
+ React-callinvoker: bc2a26f8d84fb01f003fc6de6c9337b64715f95b
+ React-Core: bdaa87b276ca31877632a982ecf7c36f8c826414
React-Core-prebuilt: bb96988d4790f37a9e5459f01159045609c5b689
- React-CoreModules: 7dfe7962360355f1547c85ab52e1fc4b57f17127
- React-cxxreact: 9e9c7f1710bc58abebf924813b5e825b99adb8e5
- React-debug: ba9ea24187953cc1894739639e173b0e1e7a05c1
- React-defaultsnativemodule: b9ef3abb2b3e397896c886616be48fefaf0511f2
- React-domnativemodule: e5b18034528f23b7c5173576d48eb0ede46aa201
- React-Fabric: c4e64a459ed9bfeaae2ada542b378907e5a8519e
- React-FabricComponents: e7309dbcfce6b8854ca36647e797a6eaca9ea83b
- React-FabricImage: 320af835cf90e98c19e0157d6ca3284f48b2f04d
- React-featureflags: 03eac8e4f957a87eea08c4374cf1cc7cdf6caafc
- React-featureflagsnativemodule: dd034f22fc1d385ebb6a77d6f74aa19d5fb59ae2
- React-graphics: b231e7ec73220531d76afcc907e2ebd89b63e2d1
- React-hermes: 96d2d439f0477a93fe8e801664088eccc07a16ff
- React-idlecallbacksnativemodule: f5443275f7b118d6db0733fc6de6be484e2a1c13
- React-ImageManager: f023dac756eb335f9c854fba417d4c8be2ba0f17
- React-intersectionobservernativemodule: b38326454e9c6335f30d7ba66bdd84837ab9f9db
- React-jserrorhandler: be9d3db4c6860472b6ad9f8b2f2029e5ef45137e
- React-jsi: dc97891e1ee7fa17cad01cd150c50f21e04bd51b
- React-jsiexecutor: e1543ba5a8be761331c8158d91211079cc5b73a2
- React-jsinspector: 38751364f11a347c3a22be01bd4b68d52e6f7884
- React-jsinspectorcdp: 65ffff4320fb61d23e42643343d0bd45eb65f722
- React-jsinspectornetwork: ca8b2ea92ac4d138e9a9c0511c11f9dcaf675413
- React-jsinspectortracing: eacda07b994c21cebd02c6ca7b664aa2b3dea8d0
- React-jsitooling: 1d6dbd7e70351d0804188890f097379d4ab1a9fd
- React-jsitracing: e75f614117228aadd7005e0deee71c31d1729e4e
- React-logger: e40cc24a61d3a54c09bf4e83d5556b3b9d4c90aa
- React-Mapbuffer: 5c56a9618237b437db90eff99db56e67eb38b014
- React-microtasksnativemodule: b4e54f9d865dc5ac8a658fb8dfe1eb476451cf69
- React-NativeModulesApple: 14a8919451154ede904f2bca84b27703a09028ba
- React-networking: adaceac1e3f28171a2f0cac2419599e8edc9e2d8
- React-oscompat: b924b8609d06899f00ab1aa813b0cde9c5e12771
- React-perflogger: c3bb13800f795287e73a8c1991a2b8e5008ea3d0
- React-performancecdpmetrics: 313cafec5472a1f1885be86463868dd1037de8e0
- React-performancetimeline: b365d45f5f25948b30cfe9df35102c564a65bc8d
- React-RCTActionSheet: 21fbcd85f552d5d6575453d2e8c149535d9c6f46
- React-RCTAnimation: 2c8cb9508864bb15e9f8fe86242d8918f05278e9
- React-RCTAppDelegate: 1d52e34d25f5f1bed5c07e0717c40dc572a80010
- React-RCTBlob: bc487ebb909c23920af75c842b1405edba61b8ea
- React-RCTFabric: 571c72fe0f0e783802f47af4cc1c7723ba6af967
- React-RCTFBReactNativeSpec: 30c4714ede8575b6197f0c04a8928287848dde65
- React-RCTImage: a591fc9f08dc6c7b63b9fb34f51a7c1f32bd9595
- React-RCTLinking: cb9553b27de77a63beb4e3ce95f82aa8f3bed602
- React-RCTNetwork: 576ba853aef49628238b4840e969217b826af156
- React-RCTRuntime: cf41dd8d5f586c0f50137ff2c591a4a82a5cf99b
- React-RCTSettings: 8caa15edae452a5c4cd064569d5357a2bee8de15
- React-RCTText: af9a1c8d7c135c4d3ffa2de253ca95544234a521
- React-RCTVibration: c1dd36479ca1c1a59d16db81e5a994e9be06a68b
- React-rendererconsistency: 285fa4c74ebc0146bb57f376a5f2e54038f7f0a0
- React-renderercss: 66cf686e76177355c9d500bdf391847f2d7eba01
- React-rendererdebug: 5f59196717bebf7c9d471fb2b86afdd133c8cd02
- React-RuntimeApple: a269e6baa3f5a155df2c0f59a2f4f46c5b09334f
- React-RuntimeCore: f49f78091b16f080a154070ef1fb3ac31e122099
- React-runtimeexecutor: 731620074392a9c6f0bb8225d4f9dcd5c04ea4c9
- React-RuntimeHermes: baba14b60429a40c558be08a24e542222bc2d020
- React-runtimescheduler: 2c6ec79a801d8a717ff5a98e4e1c972b9121c988
- React-timing: 7f0ae62081a57fd7da69da0d0138cd324f6e108a
- React-utils: 04a728b5e14a6ab28abfe8b8e335ba2da847e63d
- React-webperformancenativemodule: dc940aeb5b5dc0523be8de66427ce5e0f41c3bee
- ReactAppDependencyProvider: 625d2f6d9d5ef01acc9dfe2b5385504bbffd2ad0
- ReactCodegen: 96a927c988334f6f9d9e3a39c1b3936d77661fda
- ReactCommon: cc0e38600f82487c5fe5d29150abb6fa9d981986
- ReactNativeDependencies: 0f48806ae99d60c67f0c3182795d77141018bf17
+ React-CoreModules: b24989f62d56390ae08ca4f65e6f38fe6802de42
+ React-cxxreact: 1a2dfcbc18a6b610664dba152adf327f063a0d12
+ React-debug: d196e6df0599d78360b3211367e28c5583054133
+ React-defaultsnativemodule: 373d46623421362fb7bd90137a1406e2818105a6
+ React-domnativemodule: 20cf626bfb83a413b84c4e488c097d3f004885ee
+ React-Fabric: 50dba3b9a73243ccd9228cca556d7d92b15ef00b
+ React-FabricComponents: 1a54e44e157244ceed980050324b9a13605b5d15
+ React-FabricImage: 3a691e5f66e7c5dcc5d8a6e5fc37c5351f75e9a3
+ React-featureflags: 86fb29088c6451cc8a633ecaf3e9f0b9c9411134
+ React-featureflagsnativemodule: 2b735d3d035a23ec571a8678ace7e7b9c2c8deff
+ React-graphics: 32f0b3d81256f38959d6564ec9a69b75b4fc937a
+ React-hermes: c2bde95033e6df1599b5c1b6d7e45736a8aa5cba
+ React-idlecallbacksnativemodule: 2c5f68fad7eec1b39c49b2c6967a98a9c1c47edd
+ React-ImageManager: b5a66937ab9034acaf22c599ed0b203fb36985c2
+ React-intersectionobservernativemodule: fba8173758f6017ec602cf346e8d01cd2dfa4080
+ React-jserrorhandler: 3fa5c4e304863432b2c6e2ac98a57ef5f1fb217f
+ React-jsi: 382de7964299bbf878458006a14f52cb66a36cfc
+ React-jsiexecutor: b781400a9becfb24e36ac063dccb42a52dcb44ca
+ React-jsinspector: 5263c3977d2a81aee6740dd733c8e705f8aeed7f
+ React-jsinspectorcdp: 9fee8119af7e14811db89b2107ef76c5412a053a
+ React-jsinspectornetwork: b4107cf233a8d9036e00557d6acf20a7f29a093e
+ React-jsinspectortracing: 2ba89f6790ce54f1ad3ea8de3b525abb1a952368
+ React-jsitooling: 95cb7e233d090eb4f28abc53c5ae98a85397ef7e
+ React-jsitracing: ce5760997e21716cad27ea631140976d573dc585
+ React-logger: 517377b1d2ba7ac722d47fb2183b98de86632063
+ React-Mapbuffer: 7d792cb0f9deffefa85c1c366025a694e3f0bafa
+ React-microtasksnativemodule: ed07f2f9ff4a848db25eb608306afffc45a7f5e4
+ React-NativeModulesApple: b94faa2dce6d8c0a9d722ed7ee27b996d28b62d1
+ React-networking: 82a21cd4ab792254f6bde0090fb2e086c0b3e5ad
+ React-oscompat: ff26abf0ae3e3fdbe47b44224571e3fc7226a573
+ React-perflogger: 757c8c725cc20e94eba406885047f03cf83044fb
+ React-performancecdpmetrics: 0b6cacda843c6e193eacb7acda2358eb095cd502
+ React-performancetimeline: 452e9104e9095c63a59ece194641a30cb361b6b7
+ React-RCTActionSheet: fc1d5d419856868e7f8c13c14591ed63dadef43a
+ React-RCTAnimation: 1ce166ec15ab1f8eca8ebaae7f8f709d9be6958c
+ React-RCTAppDelegate: c752d93f597168a9a4d5678e9354bbb8d84df6d1
+ React-RCTBlob: 147d41ee9f80cf27fe9b2f7adc1d6d24f68ec3fc
+ React-RCTFabric: 6cdc832f1a8cf77b15da5f45b21f915408cec160
+ React-RCTFBReactNativeSpec: 077bf3d69dde2d06513aa927ae252126acf18388
+ React-RCTImage: fd39f1c478f1e43357bc72c2dbdc2454aafe4035
+ React-RCTLinking: 02ca1c83536dab08130f5db4852f293c53885dd6
+ React-RCTNetwork: 85dc64c530e4b0be7436f9a15b03caba24e9a3a1
+ React-RCTRuntime: c9cadb3d552eca49d5011ee4e9b1b2988d00accd
+ React-RCTSettings: df5da31865cc1bab7ef5314e65ca18f6b538d71d
+ React-RCTText: 41587e426883c9a83fd8eb0c57fe328aad4ed57a
+ React-RCTVibration: 8ca2f9839c53416dffb584adb94501431ba7f96e
+ React-rendererconsistency: fba8b761416e5321021366efce596d530e0c558b
+ React-renderercss: b34fe0b46d8f9130bf048407ec6d5f08ee64d4ca
+ React-rendererdebug: d671c61d6bdd080210768ab344d368ff21860fb1
+ React-RuntimeApple: 7a4b89178d0fa3e3856bf260dd7631aaa6d027f1
+ React-RuntimeCore: 9df30a5e6c2b610560510becae93ada730217636
+ React-runtimeexecutor: c42d96d0193a9b54dfad829284bea0ae2d8c3877
+ React-RuntimeHermes: a715852b1a87e0bcb30c12de7045340fb966f041
+ React-runtimescheduler: d23494fabab085958cc264cb8fc5aed3568fa6e3
+ React-timing: 9166d213454bbfe595b327d7e6137d7a2967a4fe
+ React-utils: 53fa76153a7fee030db7104923b59e8658b68ee3
+ React-webperformancenativemodule: 6fa0ca4dc4616e130317c81dc81a275ba9a26d7d
+ ReactAppDependencyProvider: 26bbf1e26768d08dd965a2b5e372e53f67b21fee
+ ReactCodegen: 8aa8f5122aeeac7a1a54addb6332679bae688144
+ ReactCommon: 309419492d417c4cbb87af06f67735afa40ecb9d
+ ReactNativeDependencies: 209c650656e1483a29b59faa0d730281e50dc936
SDWebImage: e9c98383c7572d713c1a0d7dd2783b10599b9838
SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
- Yoga: 8f4ecfe9609f26267e75aa961f031fbb525d8e52
+ Yoga: 846fbe6f595136be802ad81d05688ff748839764
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
PODFILE CHECKSUM: a9d29f7b5baf8726cbdac583913c0db1205461f6
diff --git a/apps/minimal-tester/package.json b/apps/minimal-tester/package.json
index e2d3bd8c583a1f..70398d869142c3 100644
--- a/apps/minimal-tester/package.json
+++ b/apps/minimal-tester/package.json
@@ -24,7 +24,7 @@
"expo-video": "~55.0.9",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0"
},
"devDependencies": {
diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json
index 5389fde2d31bce..1b96e3f4a7db11 100644
--- a/apps/native-component-list/package.json
+++ b/apps/native-component-list/package.json
@@ -142,7 +142,7 @@
"processing-js": "^1.6.6",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-dropdown-picker": "^5.3.0",
"react-native-gesture-handler": "~2.30.0",
"react-native-keyboard-controller": "^1.20.7",
diff --git a/apps/native-component-list/src/screens/Camera/GalleryScreen.tsx b/apps/native-component-list/src/screens/Camera/GalleryScreen.tsx
index c602262c8bd1e8..744b85ab735180 100644
--- a/apps/native-component-list/src/screens/Camera/GalleryScreen.tsx
+++ b/apps/native-component-list/src/screens/Camera/GalleryScreen.tsx
@@ -33,18 +33,38 @@ function useLoadedPhotos() {
isMounted = false;
};
}, []);
- return photos;
+ return [photos, setPhotos] as const;
}
export default function GalleryScreen(
props: TouchableOpacityProps & { photos?: CameraCapturedPicture[] }
) {
- const photos = useLoadedPhotos();
+ const [photos, setPhotos] = useLoadedPhotos();
const uris = props.photos?.map((photo) => photo.uri) ?? [];
- return ;
+ return (
+ {
+ setPhotos((prev) => prev.filter((p) => !deleted.has(`${PHOTOS_DIR}/${p}`)));
+ if (props.photos) {
+ props.photos.splice(
+ 0,
+ props.photos.length,
+ ...props.photos.filter((p) => !deleted.has(p.uri))
+ );
+ }
+ }}
+ />
+ );
}
-function LoadedGalleryScreen(props: TouchableOpacityProps & { photos: string[] }) {
+function LoadedGalleryScreen(
+ props: TouchableOpacityProps & {
+ photos: string[];
+ onPhotosDeleted: (deleted: Set) => void;
+ }
+) {
const [selectedPhotos, setSelectedPhotos] = React.useState([]);
const toggleSelection = (uri: string, isSelected: boolean) => {
@@ -91,6 +111,7 @@ function LoadedGalleryScreen(props: TouchableOpacityProps & { photos: string[] }
});
await Promise.all(promises);
+ props.onPhotosDeleted(new Set(selectedPhotos));
setSelectedPhotos([]);
} else {
alert('No photos to delete!');
diff --git a/apps/native-tests/ios/Podfile.lock b/apps/native-tests/ios/Podfile.lock
index 7af734d6e4cf1b..dd180782128ea5 100644
--- a/apps/native-tests/ios/Podfile.lock
+++ b/apps/native-tests/ios/Podfile.lock
@@ -6,12 +6,12 @@ PODS:
- ExpoModulesTestCore
- EXJSONUtils (55.0.0)
- EXJSONUtils/Tests (55.0.0)
- - EXManifests (55.0.5):
+ - EXManifests (55.0.9):
- ExpoModulesCore
- - EXManifests/Tests (55.0.5):
+ - EXManifests/Tests (55.0.9):
- ExpoModulesCore
- ExpoModulesTestCore
- - Expo (55.0.0):
+ - Expo (55.0.2):
- ExpoModulesCore
- hermes-engine
- RCTRequired
@@ -36,9 +36,9 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher (55.0.6):
+ - expo-dev-launcher (55.0.10):
- EXManifests
- - expo-dev-launcher/Main (= 55.0.6)
+ - expo-dev-launcher/Main (= 55.0.10)
- expo-dev-menu
- expo-dev-menu-interface
- ExpoModulesCore
@@ -67,7 +67,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher/Main (55.0.6):
+ - expo-dev-launcher/Main (55.0.10):
- EXManifests
- expo-dev-launcher/Unsafe
- expo-dev-menu
@@ -98,7 +98,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher/Tests (55.0.6):
+ - expo-dev-launcher/Tests (55.0.10):
- EXManifests
- expo-dev-menu
- expo-dev-menu-interface
@@ -133,7 +133,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-launcher/Unsafe (55.0.6):
+ - expo-dev-launcher/Unsafe (55.0.10):
- EXManifests
- expo-dev-menu
- expo-dev-menu-interface
@@ -163,8 +163,8 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-menu (55.0.5):
- - expo-dev-menu/Main (= 55.0.5)
+ - expo-dev-menu (55.0.9):
+ - expo-dev-menu/Main (= 55.0.9)
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -187,7 +187,7 @@ PODS:
- ReactNativeDependencies
- Yoga
- expo-dev-menu-interface (55.0.1)
- - expo-dev-menu/Main (55.0.5):
+ - expo-dev-menu/Main (55.0.9):
- EXManifests
- expo-dev-menu-interface
- ExpoModulesCore
@@ -213,7 +213,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-menu/Tests (55.0.5):
+ - expo-dev-menu/Tests (55.0.9):
- ExpoModulesTestCore
- hermes-engine
- Nimble
@@ -239,7 +239,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - expo-dev-menu/UITests (55.0.5):
+ - expo-dev-menu/UITests (55.0.9):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -264,7 +264,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - Expo/Tests (55.0.0):
+ - Expo/Tests (55.0.2):
- ExpoModulesCore
- hermes-engine
- RCTRequired
@@ -289,19 +289,19 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - ExpoClipboard (55.0.5):
+ - ExpoClipboard (55.0.8):
- ExpoModulesCore
- - ExpoClipboard/Tests (55.0.5):
+ - ExpoClipboard/Tests (55.0.8):
- ExpoModulesCore
- ExpoModulesTestCore
- - ExpoImage (55.0.3):
+ - ExpoImage (55.0.5):
- ExpoModulesCore
- libavif/libdav1d
- SDWebImage (~> 5.21.0)
- SDWebImageAVIFCoder (~> 0.11.0)
- SDWebImageSVGCoder (~> 1.7.0)
- SDWebImageWebPCoder (~> 0.14.6)
- - ExpoImage/Tests (55.0.3):
+ - ExpoImage/Tests (55.0.5):
- ExpoModulesCore
- ExpoModulesTestCore
- libavif/libdav1d
@@ -309,14 +309,14 @@ PODS:
- SDWebImageAVIFCoder (~> 0.11.0)
- SDWebImageSVGCoder (~> 1.7.0)
- SDWebImageWebPCoder (~> 0.14.6)
- - ExpoMediaLibrary (55.0.5):
+ - ExpoMediaLibrary (55.0.9):
- ExpoModulesCore
- React-Core
- - ExpoMediaLibrary/Tests (55.0.5):
+ - ExpoMediaLibrary/Tests (55.0.9):
- ExpoModulesCore
- ExpoModulesTestCore
- React-Core
- - ExpoModulesCore (55.0.8):
+ - ExpoModulesCore (55.0.12):
- ExpoModulesJSI
- hermes-engine
- RCTRequired
@@ -340,7 +340,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - ExpoModulesCore/Tests (55.0.8):
+ - ExpoModulesCore/Tests (55.0.12):
- ExpoModulesJSI
- ExpoModulesTestCore
- hermes-engine
@@ -365,12 +365,12 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - ExpoModulesJSI (55.0.8):
+ - ExpoModulesJSI (55.0.12):
- hermes-engine
- React-Core
- React-runtimescheduler
- ReactCommon
- - ExpoModulesJSI/Tests (55.0.8):
+ - ExpoModulesJSI/Tests (55.0.12):
- hermes-engine
- React-Core
- React-runtimescheduler
@@ -380,14 +380,20 @@ PODS:
- Nimble (~> 13.0.0)
- Quick (~> 7.3.0)
- React-hermes
- - ExpoNotifications (55.0.6):
+ - ExpoNotifications (55.0.10):
- ExpoModulesCore
- - ExpoNotifications/Tests (55.0.6):
+ - ExpoNotifications/Tests (55.0.10):
- ExpoModulesCore
- ExpoModulesTestCore
+ - ExpoRouter (55.0.2):
+ - ExpoModulesCore
+ - RNScreens
+ - ExpoRouter/Tests (55.0.2):
+ - ExpoModulesCore
+ - RNScreens
- EXStructuredHeaders (55.0.0)
- EXStructuredHeaders/Tests (55.0.0)
- - EXUpdates (55.0.7):
+ - EXUpdates (55.0.11):
- EASClient
- EXManifests
- ExpoModulesCore
@@ -415,7 +421,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - EXUpdates/Tests (55.0.7):
+ - EXUpdates/Tests (55.0.11):
- EASClient
- EXManifests
- ExpoModulesCore
@@ -444,12 +450,12 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - EXUpdatesInterface (55.1.1):
+ - EXUpdatesInterface (55.1.3):
- ExpoModulesCore
- - FBLazyVector (0.84.0)
- - hermes-engine (250829098.0.7):
- - hermes-engine/Pre-built (= 250829098.0.7)
- - hermes-engine/Pre-built (250829098.0.7)
+ - FBLazyVector (0.84.1)
+ - hermes-engine (250829098.0.9):
+ - hermes-engine/Pre-built (= 250829098.0.9)
+ - hermes-engine/Pre-built (250829098.0.9)
- libavif/core (0.11.1)
- libavif/libdav1d (0.11.1):
- libavif/core
@@ -482,35 +488,35 @@ PODS:
- OHHTTPStubs/Core
- OHHTTPStubs/OHPathHelpers (9.1.0)
- Quick (7.3.0)
- - RCTDeprecation (0.84.0)
- - RCTRequired (0.84.0)
- - RCTSwiftUI (0.84.0)
- - RCTSwiftUIWrapper (0.84.0):
+ - RCTDeprecation (0.84.1)
+ - RCTRequired (0.84.1)
+ - RCTSwiftUI (0.84.1)
+ - RCTSwiftUIWrapper (0.84.1):
- RCTSwiftUI
- - RCTTypeSafety (0.84.0):
- - FBLazyVector (= 0.84.0)
- - RCTRequired (= 0.84.0)
- - React-Core (= 0.84.0)
+ - RCTTypeSafety (0.84.1):
+ - FBLazyVector (= 0.84.1)
+ - RCTRequired (= 0.84.1)
+ - React-Core (= 0.84.1)
- ReachabilitySwift (5.2.4)
- - React (0.84.0):
- - React-Core (= 0.84.0)
- - React-Core/DevSupport (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
- - React-RCTActionSheet (= 0.84.0)
- - React-RCTAnimation (= 0.84.0)
- - React-RCTBlob (= 0.84.0)
- - React-RCTImage (= 0.84.0)
- - React-RCTLinking (= 0.84.0)
- - React-RCTNetwork (= 0.84.0)
- - React-RCTSettings (= 0.84.0)
- - React-RCTText (= 0.84.0)
- - React-RCTVibration (= 0.84.0)
- - React-callinvoker (0.84.0)
- - React-Core (0.84.0):
+ - React (0.84.1):
+ - React-Core (= 0.84.1)
+ - React-Core/DevSupport (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
+ - React-RCTActionSheet (= 0.84.1)
+ - React-RCTAnimation (= 0.84.1)
+ - React-RCTBlob (= 0.84.1)
+ - React-RCTImage (= 0.84.1)
+ - React-RCTLinking (= 0.84.1)
+ - React-RCTNetwork (= 0.84.1)
+ - React-RCTSettings (= 0.84.1)
+ - React-RCTText (= 0.84.1)
+ - React-RCTVibration (= 0.84.1)
+ - React-callinvoker (0.84.1)
+ - React-Core (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -527,7 +533,7 @@ PODS:
- Yoga
- React-Core-prebuilt (0.84.0):
- ReactNativeDependencies
- - React-Core/CoreModulesHeaders (0.84.0):
+ - React-Core/CoreModulesHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -546,7 +552,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/Default (0.84.0):
+ - React-Core/Default (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -564,12 +570,12 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/DevSupport (0.84.0):
+ - React-Core/DevSupport (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
- - React-Core/RCTWebSocket (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
+ - React-Core/RCTWebSocket (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -584,7 +590,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTActionSheetHeaders (0.84.0):
+ - React-Core/RCTActionSheetHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -603,7 +609,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTAnimationHeaders (0.84.0):
+ - React-Core/RCTAnimationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -622,7 +628,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTBlobHeaders (0.84.0):
+ - React-Core/RCTBlobHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -641,7 +647,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTImageHeaders (0.84.0):
+ - React-Core/RCTImageHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -660,7 +666,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTLinkingHeaders (0.84.0):
+ - React-Core/RCTLinkingHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -679,7 +685,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTNetworkHeaders (0.84.0):
+ - React-Core/RCTNetworkHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -698,7 +704,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTSettingsHeaders (0.84.0):
+ - React-Core/RCTSettingsHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -717,7 +723,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTTextHeaders (0.84.0):
+ - React-Core/RCTTextHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -736,7 +742,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTVibrationHeaders (0.84.0):
+ - React-Core/RCTVibrationHeaders (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
@@ -755,11 +761,11 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-Core/RCTWebSocket (0.84.0):
+ - React-Core/RCTWebSocket (0.84.1):
- hermes-engine
- RCTDeprecation
- React-Core-prebuilt
- - React-Core/Default (= 0.84.0)
+ - React-Core/Default (= 0.84.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -774,40 +780,40 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-CoreModules (0.84.0):
- - RCTTypeSafety (= 0.84.0)
+ - React-CoreModules (0.84.1):
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- - React-Core/CoreModulesHeaders (= 0.84.0)
+ - React-Core/CoreModulesHeaders (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.84.0)
+ - React-RCTImage (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-cxxreact (0.84.0):
+ - React-cxxreact (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-debug (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-debug (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- - React-timing (= 0.84.0)
+ - React-timing (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-debug (0.84.0)
- - React-defaultsnativemodule (0.84.0):
+ - React-debug (0.84.1)
+ - React-defaultsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-domnativemodule
@@ -822,7 +828,7 @@ PODS:
- React-webperformancenativemodule
- ReactNativeDependencies
- Yoga
- - React-domnativemodule (0.84.0):
+ - React-domnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Fabric
@@ -836,7 +842,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric (0.84.0):
+ - React-Fabric (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -844,25 +850,25 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/animated (= 0.84.0)
- - React-Fabric/animationbackend (= 0.84.0)
- - React-Fabric/animations (= 0.84.0)
- - React-Fabric/attributedstring (= 0.84.0)
- - React-Fabric/bridging (= 0.84.0)
- - React-Fabric/componentregistry (= 0.84.0)
- - React-Fabric/componentregistrynative (= 0.84.0)
- - React-Fabric/components (= 0.84.0)
- - React-Fabric/consistency (= 0.84.0)
- - React-Fabric/core (= 0.84.0)
- - React-Fabric/dom (= 0.84.0)
- - React-Fabric/imagemanager (= 0.84.0)
- - React-Fabric/leakchecker (= 0.84.0)
- - React-Fabric/mounting (= 0.84.0)
- - React-Fabric/observers (= 0.84.0)
- - React-Fabric/scheduler (= 0.84.0)
- - React-Fabric/telemetry (= 0.84.0)
- - React-Fabric/templateprocessor (= 0.84.0)
- - React-Fabric/uimanager (= 0.84.0)
+ - React-Fabric/animated (= 0.84.1)
+ - React-Fabric/animationbackend (= 0.84.1)
+ - React-Fabric/animations (= 0.84.1)
+ - React-Fabric/attributedstring (= 0.84.1)
+ - React-Fabric/bridging (= 0.84.1)
+ - React-Fabric/componentregistry (= 0.84.1)
+ - React-Fabric/componentregistrynative (= 0.84.1)
+ - React-Fabric/components (= 0.84.1)
+ - React-Fabric/consistency (= 0.84.1)
+ - React-Fabric/core (= 0.84.1)
+ - React-Fabric/dom (= 0.84.1)
+ - React-Fabric/imagemanager (= 0.84.1)
+ - React-Fabric/leakchecker (= 0.84.1)
+ - React-Fabric/mounting (= 0.84.1)
+ - React-Fabric/observers (= 0.84.1)
+ - React-Fabric/scheduler (= 0.84.1)
+ - React-Fabric/telemetry (= 0.84.1)
+ - React-Fabric/templateprocessor (= 0.84.1)
+ - React-Fabric/uimanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -874,7 +880,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animated (0.84.0):
+ - React-Fabric/animated (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -893,7 +899,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animationbackend (0.84.0):
+ - React-Fabric/animationbackend (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -912,7 +918,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/animations (0.84.0):
+ - React-Fabric/animations (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -931,7 +937,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/attributedstring (0.84.0):
+ - React-Fabric/attributedstring (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -950,7 +956,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/bridging (0.84.0):
+ - React-Fabric/bridging (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -969,7 +975,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistry (0.84.0):
+ - React-Fabric/componentregistry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -988,7 +994,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/componentregistrynative (0.84.0):
+ - React-Fabric/componentregistrynative (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1007,7 +1013,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components (0.84.0):
+ - React-Fabric/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1015,10 +1021,10 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.84.0)
- - React-Fabric/components/root (= 0.84.0)
- - React-Fabric/components/scrollview (= 0.84.0)
- - React-Fabric/components/view (= 0.84.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.84.1)
+ - React-Fabric/components/root (= 0.84.1)
+ - React-Fabric/components/scrollview (= 0.84.1)
+ - React-Fabric/components/view (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1030,7 +1036,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/legacyviewmanagerinterop (0.84.0):
+ - React-Fabric/components/legacyviewmanagerinterop (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1049,7 +1055,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/root (0.84.0):
+ - React-Fabric/components/root (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1068,7 +1074,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/scrollview (0.84.0):
+ - React-Fabric/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1087,7 +1093,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/components/view (0.84.0):
+ - React-Fabric/components/view (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1108,7 +1114,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-Fabric/consistency (0.84.0):
+ - React-Fabric/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1127,7 +1133,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/core (0.84.0):
+ - React-Fabric/core (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1146,7 +1152,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/dom (0.84.0):
+ - React-Fabric/dom (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1165,7 +1171,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/imagemanager (0.84.0):
+ - React-Fabric/imagemanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1184,7 +1190,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/leakchecker (0.84.0):
+ - React-Fabric/leakchecker (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1203,7 +1209,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/mounting (0.84.0):
+ - React-Fabric/mounting (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1222,7 +1228,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers (0.84.0):
+ - React-Fabric/observers (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1230,8 +1236,8 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.84.0)
- - React-Fabric/observers/intersection (= 0.84.0)
+ - React-Fabric/observers/events (= 0.84.1)
+ - React-Fabric/observers/intersection (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1243,7 +1249,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/events (0.84.0):
+ - React-Fabric/observers/events (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1262,7 +1268,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/observers/intersection (0.84.0):
+ - React-Fabric/observers/intersection (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1281,7 +1287,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/scheduler (0.84.0):
+ - React-Fabric/scheduler (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1303,7 +1309,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/telemetry (0.84.0):
+ - React-Fabric/telemetry (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1322,7 +1328,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/templateprocessor (0.84.0):
+ - React-Fabric/templateprocessor (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1341,7 +1347,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager (0.84.0):
+ - React-Fabric/uimanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1349,7 +1355,7 @@ PODS:
- React-Core-prebuilt
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.84.0)
+ - React-Fabric/uimanager/consistency (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1362,7 +1368,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-Fabric/uimanager/consistency (0.84.0):
+ - React-Fabric/uimanager/consistency (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1382,7 +1388,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-FabricComponents (0.84.0):
+ - React-FabricComponents (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1391,8 +1397,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.84.0)
- - React-FabricComponents/textlayoutmanager (= 0.84.0)
+ - React-FabricComponents/components (= 0.84.1)
+ - React-FabricComponents/textlayoutmanager (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1405,7 +1411,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components (0.84.0):
+ - React-FabricComponents/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1414,18 +1420,18 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.84.0)
- - React-FabricComponents/components/iostextinput (= 0.84.0)
- - React-FabricComponents/components/modal (= 0.84.0)
- - React-FabricComponents/components/rncore (= 0.84.0)
- - React-FabricComponents/components/safeareaview (= 0.84.0)
- - React-FabricComponents/components/scrollview (= 0.84.0)
- - React-FabricComponents/components/switch (= 0.84.0)
- - React-FabricComponents/components/text (= 0.84.0)
- - React-FabricComponents/components/textinput (= 0.84.0)
- - React-FabricComponents/components/unimplementedview (= 0.84.0)
- - React-FabricComponents/components/virtualview (= 0.84.0)
- - React-FabricComponents/components/virtualviewexperimental (= 0.84.0)
+ - React-FabricComponents/components/inputaccessory (= 0.84.1)
+ - React-FabricComponents/components/iostextinput (= 0.84.1)
+ - React-FabricComponents/components/modal (= 0.84.1)
+ - React-FabricComponents/components/rncore (= 0.84.1)
+ - React-FabricComponents/components/safeareaview (= 0.84.1)
+ - React-FabricComponents/components/scrollview (= 0.84.1)
+ - React-FabricComponents/components/switch (= 0.84.1)
+ - React-FabricComponents/components/text (= 0.84.1)
+ - React-FabricComponents/components/textinput (= 0.84.1)
+ - React-FabricComponents/components/unimplementedview (= 0.84.1)
+ - React-FabricComponents/components/virtualview (= 0.84.1)
+ - React-FabricComponents/components/virtualviewexperimental (= 0.84.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1438,7 +1444,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/inputaccessory (0.84.0):
+ - React-FabricComponents/components/inputaccessory (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1459,7 +1465,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/iostextinput (0.84.0):
+ - React-FabricComponents/components/iostextinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1480,7 +1486,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/modal (0.84.0):
+ - React-FabricComponents/components/modal (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1501,7 +1507,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/rncore (0.84.0):
+ - React-FabricComponents/components/rncore (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1522,7 +1528,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/safeareaview (0.84.0):
+ - React-FabricComponents/components/safeareaview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1543,7 +1549,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/scrollview (0.84.0):
+ - React-FabricComponents/components/scrollview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1564,7 +1570,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/switch (0.84.0):
+ - React-FabricComponents/components/switch (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1585,7 +1591,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/text (0.84.0):
+ - React-FabricComponents/components/text (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1606,7 +1612,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/textinput (0.84.0):
+ - React-FabricComponents/components/textinput (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1627,7 +1633,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/unimplementedview (0.84.0):
+ - React-FabricComponents/components/unimplementedview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1648,7 +1654,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualview (0.84.0):
+ - React-FabricComponents/components/virtualview (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1669,7 +1675,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/components/virtualviewexperimental (0.84.0):
+ - React-FabricComponents/components/virtualviewexperimental (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1690,7 +1696,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricComponents/textlayoutmanager (0.84.0):
+ - React-FabricComponents/textlayoutmanager (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1711,27 +1717,27 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-FabricImage (0.84.0):
+ - React-FabricImage (0.84.1):
- hermes-engine
- - RCTRequired (= 0.84.0)
- - RCTTypeSafety (= 0.84.0)
+ - RCTRequired (= 0.84.1)
+ - RCTTypeSafety (= 0.84.1)
- React-Core-prebuilt
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-featureflags (0.84.0):
+ - React-featureflags (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-featureflagsnativemodule (0.84.0):
+ - React-featureflagsnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1740,28 +1746,28 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-graphics (0.84.0):
+ - React-graphics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
- React-jsiexecutor
- React-utils
- ReactNativeDependencies
- - React-hermes (0.84.0):
+ - React-hermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-jsi
- - React-jsiexecutor (= 0.84.0)
+ - React-jsiexecutor (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-jsitooling
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- ReactNativeDependencies
- - React-idlecallbacksnativemodule (0.84.0):
+ - React-idlecallbacksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1771,7 +1777,7 @@ PODS:
- React-runtimescheduler
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-ImageManager (0.84.0):
+ - React-ImageManager (0.84.1):
- React-Core-prebuilt
- React-Core/Default
- React-debug
@@ -1780,7 +1786,7 @@ PODS:
- React-rendererdebug
- React-utils
- ReactNativeDependencies
- - React-intersectionobservernativemodule (0.84.0):
+ - React-intersectionobservernativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1795,7 +1801,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- - React-jserrorhandler (0.84.0):
+ - React-jserrorhandler (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1804,11 +1810,11 @@ PODS:
- React-jsi
- ReactCommon/turbomodule/bridging
- ReactNativeDependencies
- - React-jsi (0.84.0):
+ - React-jsi (0.84.1):
- hermes-engine
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsiexecutor (0.84.0):
+ - React-jsiexecutor (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -1823,7 +1829,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspector (0.84.0):
+ - React-jsinspector (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -1832,18 +1838,18 @@ PODS:
- React-jsinspectornetwork
- React-jsinspectortracing
- React-oscompat
- - React-perflogger (= 0.84.0)
+ - React-perflogger (= 0.84.1)
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsinspectorcdp (0.84.0):
+ - React-jsinspectorcdp (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-jsinspectornetwork (0.84.0):
+ - React-jsinspectornetwork (0.84.1):
- React-Core-prebuilt
- React-jsinspectorcdp
- ReactNativeDependencies
- - React-jsinspectortracing (0.84.0):
+ - React-jsinspectortracing (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1851,28 +1857,28 @@ PODS:
- React-oscompat
- React-timing
- ReactNativeDependencies
- - React-jsitooling (0.84.0):
+ - React-jsitooling (0.84.1):
- hermes-engine
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-jsitracing (0.84.0):
+ - React-jsitracing (0.84.1):
- React-jsi
- - React-logger (0.84.0):
+ - React-logger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-Mapbuffer (0.84.0):
+ - React-Mapbuffer (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-microtasksnativemodule (0.84.0):
+ - React-microtasksnativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1880,7 +1886,76 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-NativeModulesApple (0.84.0):
+ - react-native-safe-area-context (5.6.2):
+ - hermes-engine
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-Core-prebuilt
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - react-native-safe-area-context/common (= 5.6.2)
+ - react-native-safe-area-context/fabric (= 5.6.2)
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-renderercss
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - Yoga
+ - react-native-safe-area-context/common (5.6.2):
+ - hermes-engine
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-Core-prebuilt
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-renderercss
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - Yoga
+ - react-native-safe-area-context/fabric (5.6.2):
+ - hermes-engine
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-Core-prebuilt
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - react-native-safe-area-context/common
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-renderercss
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - Yoga
+ - React-NativeModulesApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core
@@ -1895,18 +1970,18 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - React-networking (0.84.0):
+ - React-networking (0.84.1):
- React-Core-prebuilt
- React-jsinspectornetwork
- React-jsinspectortracing
- React-performancetimeline
- React-timing
- ReactNativeDependencies
- - React-oscompat (0.84.0)
- - React-perflogger (0.84.0):
+ - React-oscompat (0.84.1)
+ - React-perflogger (0.84.1):
- React-Core-prebuilt
- ReactNativeDependencies
- - React-performancecdpmetrics (0.84.0):
+ - React-performancecdpmetrics (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-jsi
@@ -1914,7 +1989,7 @@ PODS:
- React-runtimeexecutor
- React-timing
- ReactNativeDependencies
- - React-performancetimeline (0.84.0):
+ - React-performancetimeline (0.84.1):
- React-Core-prebuilt
- React-featureflags
- React-jsinspector
@@ -1922,9 +1997,9 @@ PODS:
- React-perflogger
- React-timing
- ReactNativeDependencies
- - React-RCTActionSheet (0.84.0):
- - React-Core/RCTActionSheetHeaders (= 0.84.0)
- - React-RCTAnimation (0.84.0):
+ - React-RCTActionSheet (0.84.1):
+ - React-Core/RCTActionSheetHeaders (= 0.84.1)
+ - React-RCTAnimation (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTAnimationHeaders
@@ -1935,7 +2010,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTAppDelegate (0.84.0):
+ - React-RCTAppDelegate (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -1963,7 +2038,7 @@ PODS:
- React-utils
- ReactCommon
- ReactNativeDependencies
- - React-RCTBlob (0.84.0):
+ - React-RCTBlob (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-Core/RCTBlobHeaders
@@ -1976,7 +2051,7 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTFabric (0.84.0):
+ - React-RCTFabric (0.84.1):
- hermes-engine
- RCTSwiftUIWrapper
- React-Core
@@ -2007,7 +2082,7 @@ PODS:
- React-utils
- ReactNativeDependencies
- Yoga
- - React-RCTFBReactNativeSpec (0.84.0):
+ - React-RCTFBReactNativeSpec (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2015,10 +2090,10 @@ PODS:
- React-Core-prebuilt
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.84.0)
+ - React-RCTFBReactNativeSpec/components (= 0.84.1)
- ReactCommon
- ReactNativeDependencies
- - React-RCTFBReactNativeSpec/components (0.84.0):
+ - React-RCTFBReactNativeSpec/components (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2035,7 +2110,7 @@ PODS:
- ReactCommon
- ReactNativeDependencies
- Yoga
- - React-RCTImage (0.84.0):
+ - React-RCTImage (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTImageHeaders
@@ -2045,14 +2120,14 @@ PODS:
- React-RCTNetwork
- ReactCommon
- ReactNativeDependencies
- - React-RCTLinking (0.84.0):
- - React-Core/RCTLinkingHeaders (= 0.84.0)
- - React-jsi (= 0.84.0)
+ - React-RCTLinking (0.84.1):
+ - React-Core/RCTLinkingHeaders (= 0.84.1)
+ - React-jsi (= 0.84.1)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.84.0)
- - React-RCTNetwork (0.84.0):
+ - ReactCommon/turbomodule/core (= 0.84.1)
+ - React-RCTNetwork (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTNetworkHeaders
@@ -2066,7 +2141,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTRuntime (0.84.0):
+ - React-RCTRuntime (0.84.1):
- hermes-engine
- React-Core
- React-Core-prebuilt
@@ -2082,7 +2157,7 @@ PODS:
- React-RuntimeHermes
- React-utils
- ReactNativeDependencies
- - React-RCTSettings (0.84.0):
+ - React-RCTSettings (0.84.1):
- RCTTypeSafety
- React-Core-prebuilt
- React-Core/RCTSettingsHeaders
@@ -2091,10 +2166,10 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-RCTText (0.84.0):
- - React-Core/RCTTextHeaders (= 0.84.0)
+ - React-RCTText (0.84.1):
+ - React-Core/RCTTextHeaders (= 0.84.1)
- Yoga
- - React-RCTVibration (0.84.0):
+ - React-RCTVibration (0.84.1):
- React-Core-prebuilt
- React-Core/RCTVibrationHeaders
- React-jsi
@@ -2102,15 +2177,15 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- ReactNativeDependencies
- - React-rendererconsistency (0.84.0)
- - React-renderercss (0.84.0):
+ - React-rendererconsistency (0.84.1)
+ - React-renderercss (0.84.1):
- React-debug
- React-utils
- - React-rendererdebug (0.84.0):
+ - React-rendererdebug (0.84.1):
- React-Core-prebuilt
- React-debug
- ReactNativeDependencies
- - React-RuntimeApple (0.84.0):
+ - React-RuntimeApple (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -2133,7 +2208,7 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-RuntimeCore (0.84.0):
+ - React-RuntimeCore (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2149,14 +2224,14 @@ PODS:
- React-runtimescheduler
- React-utils
- ReactNativeDependencies
- - React-runtimeexecutor (0.84.0):
+ - React-runtimeexecutor (0.84.1):
- React-Core-prebuilt
- React-debug
- React-featureflags
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- React-utils
- ReactNativeDependencies
- - React-RuntimeHermes (0.84.0):
+ - React-RuntimeHermes (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-featureflags
@@ -2171,7 +2246,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- ReactNativeDependencies
- - React-runtimescheduler (0.84.0):
+ - React-runtimescheduler (0.84.1):
- hermes-engine
- React-callinvoker
- React-Core-prebuilt
@@ -2187,15 +2262,15 @@ PODS:
- React-timing
- React-utils
- ReactNativeDependencies
- - React-timing (0.84.0):
+ - React-timing (0.84.1):
- React-debug
- - React-utils (0.84.0):
+ - React-utils (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-debug
- - React-jsi (= 0.84.0)
+ - React-jsi (= 0.84.1)
- ReactNativeDependencies
- - React-webperformancenativemodule (0.84.0):
+ - React-webperformancenativemodule (0.84.1):
- hermes-engine
- React-Core-prebuilt
- React-cxxreact
@@ -2206,9 +2281,9 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactAppDependencyProvider (0.84.0):
+ - ReactAppDependencyProvider (0.84.1):
- ReactCodegen
- - ReactCodegen (0.84.0):
+ - ReactCodegen (0.84.1):
- hermes-engine
- RCTRequired
- RCTTypeSafety
@@ -2228,43 +2303,90 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- - ReactCommon (0.84.0):
+ - ReactCommon (0.84.1):
- React-Core-prebuilt
- - ReactCommon/turbomodule (= 0.84.0)
+ - ReactCommon/turbomodule (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule (0.84.0):
+ - ReactCommon/turbomodule (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - ReactCommon/turbomodule/bridging (= 0.84.0)
- - ReactCommon/turbomodule/core (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - ReactCommon/turbomodule/bridging (= 0.84.1)
+ - ReactCommon/turbomodule/core (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/bridging (0.84.0):
+ - ReactCommon/turbomodule/bridging (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
- ReactNativeDependencies
- - ReactCommon/turbomodule/core (0.84.0):
+ - ReactCommon/turbomodule/core (0.84.1):
- hermes-engine
- - React-callinvoker (= 0.84.0)
+ - React-callinvoker (= 0.84.1)
- React-Core-prebuilt
- - React-cxxreact (= 0.84.0)
- - React-debug (= 0.84.0)
- - React-featureflags (= 0.84.0)
- - React-jsi (= 0.84.0)
- - React-logger (= 0.84.0)
- - React-perflogger (= 0.84.0)
- - React-utils (= 0.84.0)
+ - React-cxxreact (= 0.84.1)
+ - React-debug (= 0.84.1)
+ - React-featureflags (= 0.84.1)
+ - React-jsi (= 0.84.1)
+ - React-logger (= 0.84.1)
+ - React-perflogger (= 0.84.1)
+ - React-utils (= 0.84.1)
- ReactNativeDependencies
- - ReactNativeDependencies (0.84.0)
+ - ReactNativeDependencies (0.84.1)
+ - RNScreens (4.23.0):
+ - hermes-engine
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-Core-prebuilt
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-renderercss
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - RNScreens/common (= 4.23.0)
+ - Yoga
+ - RNScreens/common (4.23.0):
+ - hermes-engine
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-Core-prebuilt
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-renderercss
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactNativeDependencies
+ - Yoga
- SDWebImage (5.21.0):
- SDWebImage/Core (= 5.21.0)
- SDWebImage/Core (5.21.0)
@@ -2306,6 +2428,8 @@ DEPENDENCIES:
- ExpoModulesTestCore (from `../../../packages/expo-modules-test-core/ios`)
- ExpoNotifications (from `../../../packages/expo-notifications/ios`)
- ExpoNotifications/Tests (from `../../../packages/expo-notifications/ios`)
+ - ExpoRouter (from `../../../packages/expo-router/ios`)
+ - ExpoRouter/Tests (from `../../../packages/expo-router/ios`)
- EXStructuredHeaders (from `../../../packages/expo-structured-headers/ios`)
- EXStructuredHeaders/Tests (from `../../../packages/expo-structured-headers/ios`)
- EXUpdates (from `../../../packages/expo-updates/ios`)
@@ -2350,6 +2474,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-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`)
- React-NativeModulesApple (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-networking (from `../../../node_modules/react-native/ReactCommon/react/networking`)
- React-oscompat (from `../../../node_modules/react-native/ReactCommon/oscompat`)
@@ -2384,6 +2509,7 @@ DEPENDENCIES:
- ReactCodegen (from `build/generated/ios/ReactCodegen`)
- ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`)
- ReactNativeDependencies (from `../../../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`)
+ - RNScreens (from `../../../node_modules/react-native-screens`)
- Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
@@ -2440,6 +2566,9 @@ EXTERNAL SOURCES:
ExpoNotifications:
inhibit_warnings: false
:path: "../../../packages/expo-notifications/ios"
+ ExpoRouter:
+ inhibit_warnings: false
+ :path: "../../../packages/expo-router/ios"
EXStructuredHeaders:
inhibit_warnings: false
:path: "../../../packages/expo-structured-headers/ios"
@@ -2453,7 +2582,7 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
hermes-engine:
:podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-v250829098.0.8
+ :tag: hermes-v250829098.0.9
RCTDeprecation:
:path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
RCTRequired:
@@ -2526,6 +2655,8 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon"
React-microtasksnativemodule:
:path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ react-native-safe-area-context:
+ :path: "../../../node_modules/react-native-safe-area-context"
React-NativeModulesApple:
:path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-networking:
@@ -2594,112 +2725,117 @@ EXTERNAL SOURCES:
:path: "../../../node_modules/react-native/ReactCommon"
ReactNativeDependencies:
:podspec: "../../../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec"
+ RNScreens:
+ :path: "../../../node_modules/react-native-screens"
Yoga:
:path: "../../../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
EASClient: a4b8ae18e8de52019ec94d14795faac4800905f0
EXJSONUtils: 0080c14b673cfa9a6be5e3fe429768ffe3d42dfb
- EXManifests: f030f5063de017f10ef92558af59a705ef2dc914
- Expo: f9523a607da84c34e453f22bde9b744d9ee0bbae
- expo-dev-launcher: b6859c7f4b3f3744684e7bb53074e483cfc5d83f
- expo-dev-menu: 2f4e50f0fc0e42dfc3fc5178bda709c521ab220d
+ EXManifests: 22ec6b0abf4e9b54ea22624aa955cf68d6c90590
+ Expo: 2ad467b934a08a990484d7265fd37fd50b8d4b54
+ expo-dev-launcher: 0a33329ef2ae32eb67871a69c0373df9281af197
+ expo-dev-menu: 14e49fccc83f350a078137132565a370009cd377
expo-dev-menu-interface: bf6f816d29b45bec038080790963c635e8d588c2
- ExpoClipboard: ec8d68b74b5b70dbb4d4a6ad85bb2cdff85ac7e5
- ExpoImage: eb2443489a4e380def23857653e170054ecec49c
- ExpoMediaLibrary: 8c413e8228199c8cc30525bd775e2526c59dd920
- ExpoModulesCore: 5f6eec9c900eede33fb4c1b3e546f9a640ec7ee6
- ExpoModulesJSI: 1416a6a3f0511a7a354f9e47cc45e353b50d5fda
+ ExpoClipboard: ea1c19f29543c3f84abcbc500c6f1a62d954fd5c
+ ExpoImage: 37c1d7411df45995ffcd8fb6a9e20f5e1d5aab8e
+ ExpoMediaLibrary: 68ca21908d9063c823a89b05ec8354b819e6302c
+ ExpoModulesCore: 508ed85e09365da55806d07ac706a4dec3009152
+ ExpoModulesJSI: 1733437df661254d42bc5b1f030e6ba30b758b63
ExpoModulesTestCore: 382d7b11f61dd661215fbe33d8ce6c95d6c09e99
- ExpoNotifications: ae80bb85a37cc15f3c671a14978854e405c33a26
+ ExpoNotifications: 0293112699b35aa26f6e9e1fcecee0323f3187dc
+ ExpoRouter: d770a57784f2cf06d0d5496913857ab79727dc99
EXStructuredHeaders: aa49a5557fa24aa61dda4ac665f3987bf3e9e35d
- EXUpdates: e1fd76387b4ab5a13d7e0206bcb0c2b88a6edafd
- EXUpdatesInterface: 48272cb8995e613f0843fe531347e2f783e1df5f
- FBLazyVector: c12d2108050e27952983d565a232f6f7b1ad5e69
- hermes-engine: 2b78fb97886eeaa083923c5978d5e2db640fa856
+ EXUpdates: c5a64985f393cf4f8beb4463f86a885c90b4fccc
+ EXUpdatesInterface: 26412751a0f7a7130614655929e316f684552aab
+ FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da
+ hermes-engine: f17b9ba9fc7fc0b2418d3f51964ef51edd76cb49
libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7
libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
Nimble: 97d90931cca412a23224ff29e258809f75c258f7
OHHTTPStubs: 90eac6d8f2c18317baeca36698523dc67c513831
Quick: d32871931c05547cb4e0bc9009d66a18b50d8558
- RCTDeprecation: 3280799c14232a56e5a44f92981a8ee33bc69fd9
- RCTRequired: 9854a51b0f65ccf43ea0b744df4d70fce339db32
- RCTSwiftUI: 96986e49a4fdc2c2103929dee2641e1b57edf33d
- RCTSwiftUIWrapper: e3eed9f50cad9f171e4487e2ff18a9caa4d46bfb
- RCTTypeSafety: e9ba155357c236764934054ee2d393fd76e7b36b
+ RCTDeprecation: af44b104091a34482596cd9bd7e8d90c4e9b4bd7
+ RCTRequired: bb77b070f75f53398ce43c0aaaa58337cebe2bf6
+ RCTSwiftUI: afc0a0a635860da1040a0b894bfd529da06d7810
+ RCTSwiftUIWrapper: cbb32eb90f09bd42ea9ed1eecd51fef3294da673
+ RCTTypeSafety: d13e192a37f151ce354641184bf4239844a3be17
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
- React: 7ef36630d07638043a134a7dd2ec17e0be10fc3c
- React-callinvoker: af4e8fe1d60ab63dd8d74c2a68988064c2848954
- React-Core: c0fb1df65eb0ed7a8633841831f05f93c3eb3aff
+ React: 1ba7d364ade7d883a1ec055bfc3606f35fdee17b
+ React-callinvoker: bc2a26f8d84fb01f003fc6de6c9337b64715f95b
+ React-Core: bdaa87b276ca31877632a982ecf7c36f8c826414
React-Core-prebuilt: e3a634711013f0dcb9995443a62f869b728f542f
- React-CoreModules: 7dfe7962360355f1547c85ab52e1fc4b57f17127
- React-cxxreact: 9e9c7f1710bc58abebf924813b5e825b99adb8e5
- React-debug: 38389b86e3570558ec73dd4cbc0cd2f2eec47a51
- React-defaultsnativemodule: a326ccbb71369762888a6be09a23fa5bce2bdb6a
- React-domnativemodule: 8394c7b535d1b484b1eab677e00b086507cd906a
- React-Fabric: 682dafd75455062590cd1f63c79199cf72ff27d9
- React-FabricComponents: 11b13a53213cd1aaca3bf7f4c61c669617b26b5f
- React-FabricImage: 706c27e82f77b77db96ab3a19009ddb5e777967f
- React-featureflags: c2898fb2f93ab92cfd9f294b4531d2884e7cfc7e
- React-featureflagsnativemodule: 1edf93adfa12ba4f15d07079c1675b55ff579477
- React-graphics: 57d042385bfef5104aafeab189f43b8d6145013b
- React-hermes: 96d2d439f0477a93fe8e801664088eccc07a16ff
- React-idlecallbacksnativemodule: ab4dc6c3657f434f82c568ca83c963791e783f6a
- React-ImageManager: f39057f375cf3f98255fb751df3865a91f2755c1
- React-intersectionobservernativemodule: 54ce679b183149fd9566a79211f2f54dc0a6fd1f
- React-jserrorhandler: 2e92acff04ac815c6066c7cc08ea302610045db1
- React-jsi: dc97891e1ee7fa17cad01cd150c50f21e04bd51b
- React-jsiexecutor: e1543ba5a8be761331c8158d91211079cc5b73a2
- React-jsinspector: 7a1d86673986db6666cacc8b95e92125397ab6ea
- React-jsinspectorcdp: 38a0c116fd4965abf29261721db9b903923cb723
- React-jsinspectornetwork: cfeace6b40f13ba82980ba7cb730847a35675c7f
- React-jsinspectortracing: 5507411117e51751dba0543cdee7916eb0388693
- React-jsitooling: e3a2df9043ab7b9ad11bbbfe4b33eb6762514f05
- React-jsitracing: ad179fab1c1e08a57fcdb840b7021b453f7a2b6d
- React-logger: e40cc24a61d3a54c09bf4e83d5556b3b9d4c90aa
- React-Mapbuffer: 53f28c81b84767a0b2fb4c0109dd7e4571226f76
- React-microtasksnativemodule: ddaf25a8d69f694bc880fb6055e34d79f1d50138
- React-NativeModulesApple: 14a8919451154ede904f2bca84b27703a09028ba
- React-networking: 46c0037f9202c1919493b78662a47cbe13022fdd
- React-oscompat: b924b8609d06899f00ab1aa813b0cde9c5e12771
- React-perflogger: c3bb13800f795287e73a8c1991a2b8e5008ea3d0
- React-performancecdpmetrics: 851d2b18ba3d3d8cfb309bf468e5e93e46601122
- React-performancetimeline: 0a960aee139987151d2976813c47bef17dea3d3a
- React-RCTActionSheet: 21fbcd85f552d5d6575453d2e8c149535d9c6f46
- React-RCTAnimation: 2c8cb9508864bb15e9f8fe86242d8918f05278e9
- React-RCTAppDelegate: 1d52e34d25f5f1bed5c07e0717c40dc572a80010
- React-RCTBlob: bc487ebb909c23920af75c842b1405edba61b8ea
- React-RCTFabric: 7de87d2635b95171a06d9fffd907c4ac17823ef2
- React-RCTFBReactNativeSpec: b3936c48bf5262dc57ba28f8c8208cd1b570964c
- React-RCTImage: a591fc9f08dc6c7b63b9fb34f51a7c1f32bd9595
- React-RCTLinking: cb9553b27de77a63beb4e3ce95f82aa8f3bed602
- React-RCTNetwork: 576ba853aef49628238b4840e969217b826af156
- React-RCTRuntime: e0aa5ea63ba4e06c9028da5ae8b05cf72bc8a1ea
- React-RCTSettings: 8caa15edae452a5c4cd064569d5357a2bee8de15
- React-RCTText: af9a1c8d7c135c4d3ffa2de253ca95544234a521
- React-RCTVibration: c1dd36479ca1c1a59d16db81e5a994e9be06a68b
- React-rendererconsistency: 32e7b98c05a3f237ecb524add21190036962e868
- React-renderercss: d65e9232e5033cd9c07b13fa429ce925b8143bd7
- React-rendererdebug: 25c6151116b7ea1f78af72afc64f2066ad29a61d
- React-RuntimeApple: e036929884cc0d8088fe8a5a2d210e068d35e608
- React-RuntimeCore: 0c8a252051fe6b627f5147ac5b6a5298951472a8
- React-runtimeexecutor: 0765dddf1842e23e87ad13b2cb1bb72bb9005aeb
- React-RuntimeHermes: 44cd4fdc4afa44fa782ddce8600e3cc90215fbc5
- React-runtimescheduler: 1966ff307933cdbafd480cb3aa1fdc90d9a6d539
- React-timing: 94c4a44dd2d10e4fc51fd42654fd5f67d68247ad
- React-utils: 172d467a9c037d5ed51ee6eeaa6ad30ca1ebe1b1
- React-webperformancenativemodule: 9e3c5032dd30bf6418b741ab54ad26187b1c94c3
- ReactAppDependencyProvider: 625d2f6d9d5ef01acc9dfe2b5385504bbffd2ad0
- ReactCodegen: e6f176b40e56d6fa6d441baf3bc2e351172a41a6
- ReactCommon: cc0e38600f82487c5fe5d29150abb6fa9d981986
- ReactNativeDependencies: e4649f4c1481999f5bcaca9c43343eb6f0017028
+ React-CoreModules: b24989f62d56390ae08ca4f65e6f38fe6802de42
+ React-cxxreact: 1a2dfcbc18a6b610664dba152adf327f063a0d12
+ React-debug: 755200a6e7f5e6e0a40ff8d215493d43cce285fc
+ React-defaultsnativemodule: 027cad46a2847719b5d3d20dd915463b06a5d4d1
+ React-domnativemodule: 5ddfc6b3b73b48a31dfa12f52d6b62527f6f260c
+ React-Fabric: 6ffcc768e2378e84ed428069c7e2d270ee78f2bf
+ React-FabricComponents: ee6614287222dd4f04fdb1263d1ae6eb7fe952c6
+ React-FabricImage: ab05740a08ad9e23e4e1701e9c354e9a9b048063
+ React-featureflags: a8b0c8d9a93b5903f7620408659de160d95e4efe
+ React-featureflagsnativemodule: 0f0fe1a044829f31d7565a4bdfded376fbcfdfc1
+ React-graphics: c497dd295c88729525a4752d524d2d783aa205d4
+ React-hermes: c2bde95033e6df1599b5c1b6d7e45736a8aa5cba
+ React-idlecallbacksnativemodule: 6ceacabe93be052bbe822fb018602f63a8e280e2
+ React-ImageManager: 820fe1d55add59ec053099a0c5abe830ecd6c699
+ React-intersectionobservernativemodule: f84958aaf662f95f837dc4d26cbb5e7dcc4b8f09
+ React-jserrorhandler: 390c6c46e2f639b5ba104385d7fba848396347e8
+ React-jsi: 382de7964299bbf878458006a14f52cb66a36cfc
+ React-jsiexecutor: b781400a9becfb24e36ac063dccb42a52dcb44ca
+ React-jsinspector: 0644f32cc9b09eae2bc845ceb58d03420ae70821
+ React-jsinspectorcdp: 96677569865afe25c737889e02d635db26131d9f
+ React-jsinspectornetwork: 28c7cac2e92b1739561dcffd07f5554e54050a85
+ React-jsinspectortracing: 58ee96f9580a143011f8b914ad6927b5116461a7
+ React-jsitooling: bc79639489d610c35731dd26e8e54c37e078996d
+ React-jsitracing: 1bb9fae4f2ccf891255a419cdfc13372d07ef4a5
+ React-logger: 517377b1d2ba7ac722d47fb2183b98de86632063
+ React-Mapbuffer: 45e088dfb58dc326ae20cca1814d3726553c4cad
+ React-microtasksnativemodule: ab9d1a05fe1f58ea44a97d307ef1b53463f45a3f
+ react-native-safe-area-context: 53f796cb6c814661bbe99fbdfd0585d07b996cdd
+ React-NativeModulesApple: b94faa2dce6d8c0a9d722ed7ee27b996d28b62d1
+ React-networking: e409d8fb062162da6293e98b77f8d80cf4430e07
+ React-oscompat: ff26abf0ae3e3fdbe47b44224571e3fc7226a573
+ React-perflogger: 757c8c725cc20e94eba406885047f03cf83044fb
+ React-performancecdpmetrics: fec7e28b711c95ccb6fc7e3bb16572d88bcf27ae
+ React-performancetimeline: 4c6102f19df01db35c37a3e63a058cfbf1a056d9
+ React-RCTActionSheet: fc1d5d419856868e7f8c13c14591ed63dadef43a
+ React-RCTAnimation: 1ce166ec15ab1f8eca8ebaae7f8f709d9be6958c
+ React-RCTAppDelegate: c752d93f597168a9a4d5678e9354bbb8d84df6d1
+ React-RCTBlob: 147d41ee9f80cf27fe9b2f7adc1d6d24f68ec3fc
+ React-RCTFabric: 712c4ad749a43712609011d178234c90a17cde12
+ React-RCTFBReactNativeSpec: 032ea8783dc27290ec6b9af9d8df5351847539a2
+ React-RCTImage: fd39f1c478f1e43357bc72c2dbdc2454aafe4035
+ React-RCTLinking: 02ca1c83536dab08130f5db4852f293c53885dd6
+ React-RCTNetwork: 85dc64c530e4b0be7436f9a15b03caba24e9a3a1
+ React-RCTRuntime: c75950caa80e6884cbf0417d8738992256890508
+ React-RCTSettings: df5da31865cc1bab7ef5314e65ca18f6b538d71d
+ React-RCTText: 41587e426883c9a83fd8eb0c57fe328aad4ed57a
+ React-RCTVibration: 8ca2f9839c53416dffb584adb94501431ba7f96e
+ React-rendererconsistency: e91aba4bb482dac127ad955dba6333a8af629c5b
+ React-renderercss: 1f15a79f3cc3c9416902b8f70266408116d93bd0
+ React-rendererdebug: 77dcf1490ee5c0ce141d2b1eaceed02aa0996826
+ React-RuntimeApple: 1074835708500a69770b713f718400137f30ce7a
+ React-RuntimeCore: 148db945742d7ce2985cc35b8ddc61edfdb46e6d
+ React-runtimeexecutor: 5742146dac0f8de9c21f5f703993df249c046d0d
+ React-RuntimeHermes: a5bb378bea92d526341a65afa945a38c9bc787b2
+ React-runtimescheduler: 91838dd32460920ed1b4da68590a2684b784aacc
+ React-timing: 9c0e2b1532317148fa0487bbc3833c1f348981a0
+ React-utils: 2f8dd43fed5c6d881ac5971666bbb34cc4a03fa1
+ React-webperformancenativemodule: afbee7a9fd0b5bf92f6765eb41767f865b293bcc
+ ReactAppDependencyProvider: 26bbf1e26768d08dd965a2b5e372e53f67b21fee
+ ReactCodegen: 439eae7164a2e4d8ad6ee5c9ea31ac8f407b750d
+ ReactCommon: 309419492d417c4cbb87af06f67735afa40ecb9d
+ ReactNativeDependencies: 93d9dfd8d94d83cd1aadc34b61c7579dc744f3f4
+ RNScreens: fb11b7412bcbdc0ffafcaf9174938d998d4e2bc4
SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
- Yoga: 772166513f9cd2d61a6251d0dacbbfaa5b537479
+ Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2
-PODFILE CHECKSUM: 529f4f814d5854f9650d1358752caf314ca5bfaa
+PODFILE CHECKSUM: 7fcb0902ffcd5dbd728829c6d879db849269c08f
COCOAPODS: 1.16.2
diff --git a/apps/native-tests/package.json b/apps/native-tests/package.json
index 528bf8270a7870..f3b310a01dd506 100644
--- a/apps/native-tests/package.json
+++ b/apps/native-tests/package.json
@@ -12,6 +12,7 @@
"expo": "~55.0.2",
"expo-clipboard": "55.0.8",
"expo-dev-client": "~55.0.9",
+ "expo-router": "~55.0.2",
"expo-image": "~55.0.5",
"expo-media-library": "55.0.9",
"expo-notifications": "~55.0.10",
@@ -19,7 +20,7 @@
"expo-updates": "55.0.11",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0"
+ "react-native": "0.84.1"
},
"devDependencies": {
"@babel/core": "^7.12.9"
diff --git a/apps/notification-tester/package.json b/apps/notification-tester/package.json
index 39cf474da8cde1..41ecf691a187d3 100644
--- a/apps/notification-tester/package.json
+++ b/apps/notification-tester/package.json
@@ -34,7 +34,7 @@
"expo-task-manager": "55.0.9",
"react-native-gesture-handler": "~2.30.0",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.23.0"
},
diff --git a/apps/router-e2e/package.json b/apps/router-e2e/package.json
index f3c285e08ad5cc..d9626822cfe500 100644
--- a/apps/router-e2e/package.json
+++ b/apps/router-e2e/package.json
@@ -71,7 +71,7 @@
"expo-symbols": "~55.0.4",
"jose": "^5",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.23.0",
"react-native-webview": "13.16.0"
diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json
index d836b303c09476..8416efb091ca03 100644
--- a/apps/test-suite/package.json
+++ b/apps/test-suite/package.json
@@ -51,7 +51,7 @@
"jasmine-core": "^2.4.1",
"lodash": "^4.17.19",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-gesture-handler": "~2.30.0",
"sinon": "^7.1.1"
},
diff --git a/docs/common/headingManager.ts b/docs/common/headingManager.ts
index 12dfd208ce8613..de5b11ce4b0710 100644
--- a/docs/common/headingManager.ts
+++ b/docs/common/headingManager.ts
@@ -137,7 +137,21 @@ export function createHeadingManager(slugger: GithubSlugger, meta: Metadata): He
metadata: metaEntry,
};
- if (!hideInSidebar && level >= BASE_HEADING_LEVEL && level <= maxNestingLevel) {
+ // When a page opts into deeper TOC nesting (maxHeadingDepth >= 2), only show
+ // API reference headings (INLINE_CODE from APIBox/PaddedAPIBox) at the deepest level.
+ // This prevents markdown sub-headings like "#### Arguments" or "#### Properties"
+ // inside API entries from cluttering the TOC sidebar.
+ const isDeepestTextHeading =
+ maxHeadingDepth > DEFAULT_NESTING_LIMIT &&
+ level === maxNestingLevel &&
+ type === HeadingType.TEXT;
+
+ if (
+ !hideInSidebar &&
+ level >= BASE_HEADING_LEVEL &&
+ level <= maxNestingLevel &&
+ !isDeepestTextHeading
+ ) {
headings.push(heading);
}
diff --git a/docs/components/plugins/api/APIMethod.tsx b/docs/components/plugins/api/APIMethod.tsx
index 2bdc68c5d11452..35bf3fbaa960f3 100644
--- a/docs/components/plugins/api/APIMethod.tsx
+++ b/docs/components/plugins/api/APIMethod.tsx
@@ -3,6 +3,7 @@ import { renderMethod } from './APISectionMethods';
type Props = {
exposeInSidebar?: boolean;
+ baseNestingLevel?: number;
name: string;
sdkVersion: string;
comment: string;
@@ -26,6 +27,7 @@ export function APIMethod({
isProperty = false,
isReturnTypeReference = false,
exposeInSidebar = false,
+ baseNestingLevel,
parameters = [],
platforms = [],
}: Props) {
@@ -59,6 +61,6 @@ export function APIMethod({
],
kind: isProperty ? TypeDocKind.Property : TypeDocKind.Function,
},
- { sdkVersion, exposeInSidebar }
+ { sdkVersion, exposeInSidebar, baseNestingLevel }
);
}
diff --git a/docs/components/plugins/api/APISectionInterfaces.tsx b/docs/components/plugins/api/APISectionInterfaces.tsx
index 2ebf6dcaef7768..4d5c393b61af23 100644
--- a/docs/components/plugins/api/APISectionInterfaces.tsx
+++ b/docs/components/plugins/api/APISectionInterfaces.tsx
@@ -148,7 +148,12 @@ const renderInterface = (
<>
{interfaceMethods.map(method =>
- renderMethod(method, { exposeInSidebar: false, sdkVersion, nested: true })
+ renderMethod(method, {
+ exposeInSidebar: true,
+ baseNestingLevel: 4,
+ sdkVersion,
+ nested: true,
+ })
)}
>
)}
diff --git a/docs/components/plugins/api/APISectionMethods.tsx b/docs/components/plugins/api/APISectionMethods.tsx
index 48fecf353fe3c5..f4ccc870ebf614 100644
--- a/docs/components/plugins/api/APISectionMethods.tsx
+++ b/docs/components/plugins/api/APISectionMethods.tsx
@@ -156,7 +156,7 @@ export const renderMethod = (
platforms={platforms.length > 0 ? platforms : parentPlatforms}
baseNestingLevel={baseNestingLevel}
// only show first overload in sidebar to avoid duplicates
- hideInSidebar={overloadIndex > 0}
+ hideInSidebar={!exposeInSidebar || overloadIndex > 0}
tags={hasOverloads ? ['overload'] : undefined}
/>
{hasOverloads && (
diff --git a/docs/pages/modules/module-api.mdx b/docs/pages/modules/module-api.mdx
index a4221b2892d10b..f810424a3bd045 100644
--- a/docs/pages/modules/module-api.mdx
+++ b/docs/pages/modules/module-api.mdx
@@ -2,6 +2,7 @@
title: Module API Reference
description: An API reference of Expo modules API.
sidebar_title: Module API
+maxHeadingDepth: 2
---
import { CodeBlocksTable } from '~/components/plugins/CodeBlocksTable';
@@ -46,6 +47,44 @@ Constant("PI") {
}
```
+
+
+
+
+> **warning** **Deprecated:** Use [`Constant`](#constant) instead.
+
+Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
+
+
+
+```swift
+// Created from the dictionary
+Constants([
+ "PI": Double.pi
+])
+
+// or returned by the closure
+Constants {
+ return [
+ "PI": Double.pi
+ ]
+}
+```
+
+```kotlin
+// Passed as arguments
+Constants(
+ "PI" to kotlin.math.PI
+)
+
+// or returned by the closure
+Constants {
+ return@Constants mapOf(
+ "PI" to kotlin.math.PI
+ )
+}
+```
+
@@ -190,27 +229,6 @@ AsyncFunction("suspendFunction") Coroutine { message: String ->
}
```
-
-
-
-Defines event names that the module can send to JavaScript.
-
-> **Note:** This component can be used inside of the [`View`](#view) block to define callback names. See [`View callbacks`](#view-callbacks)
-
-
-
-```swift
-Events("onCameraReady", "onPictureSaved", "onBarCodeScanned")
-```
-
-```kotlin
-Events("onCameraReady", "onPictureSaved", "onBarCodeScanned")
-```
-
-
-
-See [Sending events](#sending-events) to learn how to send events from the native code to JavaScript/TypeScript.
-
@@ -316,67 +334,133 @@ View(TextView::class) {
> **Info** Support for rendering SwiftUI views is planned. For now, you can use [`UIHostingController`](https://developer.apple.com/documentation/swiftui/uihostingcontroller) and add its content view to your UIKit view.
-
-Defines module's lifecycle listener that is called right after module initialization. If you need to set up something when the module gets initialized, use this instead of module's class initializer.
+### Event observing
-
-
+
-Defines module's lifecycle listener that is called when the module is about to be deallocated. Use it instead of module's class destructor.
+Defines event names that the module can send to JavaScript.
+
+> **Note:** This component can be used inside of the [`View`](#view) block to define callback names. See [`View callbacks`](#view-callbacks)
+
+
+
+```swift
+Events("onCameraReady", "onPictureSaved", "onBarCodeScanned")
+```
+
+```kotlin
+Events("onCameraReady", "onPictureSaved", "onBarCodeScanned")
+```
+
+
+
+See [Sending events](#sending-events) to learn how to send events from the native code to JavaScript/TypeScript.
-
+
Defines the function that is invoked when the first event listener is added.
+You need to pass an event name to scope the listener to a specific event. This is useful when you need to set up or tear down resources per-event rather than globally.
+
+
+
+```swift
+// Called when a listener for "onURLReceived" is added
+OnStartObserving("onURLReceived") {
+ /* @hide ... */ /* @end */
+}
+```
+
+```kotlin
+// Called when a listener for "onURLReceived" is added
+OnStartObserving("onURLReceived") {
+ /* @hide ... */ /* @end */
+}
+```
+
+
-
+
+
+Defines the function that is invoked when all event listeners for a given event are removed.
-Defines the function that is invoked when all event listeners are removed.
+Like `OnStartObserving`, you need to pass an event name to scope the listener to a specific event.
+
+
+
+```swift
+// Called when listeners for "onURLReceived" are removed
+OnStopObserving("onURLReceived") {
+ /* @hide ... */ /* @end */
+}
+```
+
+```kotlin
+// Called when listeners for "onURLReceived" are removed
+OnStopObserving("onURLReceived") {
+ /* @hide ... */ /* @end */
+}
+```
+
+
+
+
+
+### Lifecycle listeners
+
+
+
+Defines module's lifecycle listener that is called right after module initialization. If you need to set up something when the module gets initialized, use this instead of module's class initializer.
-
+
+
+Defines module's lifecycle listener that is called when the module is about to be deallocated. Use it instead of module's class destructor.
+
+
+
Defines module's lifecycle listener that is called when the app context owning the module is about to be deallocated.
-
+
Defines the listener that is called when the app is about to enter the foreground mode.
> **Note:** This function is not available on Android โ you may want to use [`OnActivityEntersForeground`](#onactivityentersforeground) instead.
-
+
Defines the listener that is called when the app enters the background mode.
> **Note:** This function is not available on Android โ you may want to use [`OnActivityEntersBackground`](#onactivityentersbackground) instead.
-
+
Defines the listener that is called when the app becomes active again (after `OnAppEntersForeground`).
> **Note:** This function is not available on Android โ you may want to use [`OnActivityEntersForeground`](#onactivityentersforeground) instead.
-
+
Defines the activity lifecycle listener that is called right after the activity is resumed.
> **Note:** This function is not available on iOS โ you may want to use [`OnAppEntersForeground`](#onappentersforeground) instead.
-
+
Defines the activity lifecycle listener that is called right after the activity is paused.
> **Note:** This function is not available on iOS โ you may want to use [`OnAppEntersBackground`](#onappentersbackground) instead.
-
+
Defines the activity lifecycle listener that is called when the activity owning the JavaScript context is about to be destroyed.
@@ -384,7 +468,7 @@ Defines the activity lifecycle listener that is called when the activity owning
-
+
Defines the activity lifecycle listener that is called when the activity launched with `startActivityForResult` returns a result.
@@ -408,43 +492,68 @@ OnActivityResult { activity, payload ->
```
-
+
-> **warning** **Deprecated:** Use [`Constant`](#constant) instead.
+Defines the activity lifecycle listener that is called when the activity receives a new intent (for example, from a deep link).
-Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
+#### Arguments
-
+- **intent**: `Intent` โ The new intent was delivered to the activity. For more information about the `Intent` type, visit: [https://developer.android.com/reference/android/content/Intent](https://developer.android.com/reference/android/content/Intent).
-```swift
-// Created from the dictionary
-Constants([
- "PI": Double.pi
-])
+```kotlin Kotlin
+OnNewIntent { intent ->
+ val data = intent.data
+ // Handle the incoming intent
+}
+```
-// or returned by the closure
-Constants {
- return [
- "PI": Double.pi
- ]
+
+
+
+Defines the activity lifecycle listener called during the activity lifecycle when an activity is about to go into the background as a result of user choice. For example, when the user presses the Home key, `OnUserLeavesActivity` will be called, but when an incoming phone call causes the in-call Activity to be automatically brought to the foreground, `OnUserLeavesActivity` will not be called on the activity being interrupted.
+
+```kotlin Kotlin
+OnUserLeavesActivity {
+ // Your implementation
}
```
-```kotlin
-// Passed as arguments
-Constants(
- "PI" to kotlin.math.PI
-)
+
+
-// or returned by the closure
-Constants {
- return@Constants mapOf(
- "PI" to kotlin.math.PI
- )
+Registers Android [activity result contracts](https://developer.android.com/training/basics/intents/result) that let you launch activities and handle their results in a type-safe way. This is the modern replacement for `startActivityForResult`.
+
+Inside the `RegisterActivityContracts` block, use `registerForActivityResult` to register each contract. The registered launchers can then be used in async functions to launch activities.
+
+```kotlin Kotlin
+class ImagePickerModule : Module() {
+ private lateinit var cameraLauncher: ActivityResultLauncher
+ private lateinit var imageLibraryLauncher: ActivityResultLauncher
+
+ override fun definition() = ModuleDefinition {
+ Name("ImagePicker")
+
+ RegisterActivityContracts {
+ cameraLauncher = registerForActivityResult(
+ CameraContract(this@ImagePickerModule)
+ ) { input, result ->
+ handleResult(result, input.options)
+ }
+
+ imageLibraryLauncher = registerForActivityResult(
+ ImageLibraryContract(this@ImagePickerModule)
+ ) { input, result ->
+ handleResult(result, input.options)
+ }
+ }
+
+ AsyncFunction("launchCameraAsync") { options: PickerOptions ->
+ cameraLauncher.launch(CameraContractOptions(options))
+ }
+ }
}
```
-
## View definition components
@@ -460,7 +569,6 @@ Name("MyViewName")
```
-
Defines a setter for the view prop of given name.
@@ -510,30 +618,61 @@ Prop("background", Color.BLACK) { view: View, @ColorInt color: Int ->
> **Note:** Props of function type (callbacks) are not supported yet.
+
+
+Batch-registers multiple props that share a common setter pattern. Instead of defining each prop individually, you can register them all at once with a single handler.
+
+Two overloads are available:
-
+- **Pair-based**: Each prop is a `Pair`. The handler receives the view, the mapped custom value, and the prop value.
+- **String-based**: Each prop is a name string. The handler receives the view, the positional index, and the prop value.
+
+```kotlin Kotlin
+// Pair-based: map each prop name to a custom value
+PropGroup(
+ "borderTopColor" to LogicalEdge.TOP,
+ "borderBottomColor" to LogicalEdge.BOTTOM,
+ "borderLeftColor" to LogicalEdge.LEFT,
+ "borderRightColor" to LogicalEdge.RIGHT
+) { view: View, edge: LogicalEdge, color: Int? ->
+ BackgroundStyleApplicator.setBorderColor(view, edge, color)
+}
+
+// String-based: use positional index
+PropGroup(
+ "borderWidth", "borderLeftWidth", "borderRightWidth",
+ "borderTopWidth", "borderBottomWidth"
+) { view: View, index: Int, width: Float? ->
+ val edge = LogicalEdge.entries[index]
+ BackgroundStyleApplicator.setBorderWidth(view, edge, width ?: Float.NaN)
+}
+```
+
+> **Note:** `PropGroup` is used internally by the CSS prop decorators. Most modules should use individual `Prop` definitions unless they have many props with a shared setter pattern.
+
+
+
+### Lifecycle
+
+
Defines the view lifecycle method that is called when the view finished updating all props.
```swift
-View(MyView.self) {
- OnViewDidUpdateProps { view: MyView in
- /* @hide ... */ /* @end */
- }
+OnViewDidUpdateProps { view: MyView in
+ /* @hide ... */ /* @end */
}
```
```kotlin
-View(MyView::class) {
- OnViewDidUpdateProps { view: MyView ->
- /* @hide ... */ /* @end */
- }
+OnViewDidUpdateProps { view: MyView ->
+ /* @hide ... */ /* @end */
}
```
-
+
Creates a view's lifecycle listener that is called right after the view is no longer used by React Native.
@@ -548,8 +687,7 @@ View(MyView::class) {
> **Note:** This function is not available on iOS. You may want to use the destructor of the native view to achieve similar results.
-
-
+
Similarly to the [`AsyncFunction`](#asyncfunction) inside the module definition, you can define functions attached to the view ref to allow direct modification of the native view.
@@ -591,7 +729,9 @@ function MyComponent() {
-
+### View groups
+
+
Enables the view to be used as a view group. Definition components that are accepted as part of the group view definition: [`AddChildView`](#addchildview), [`GetChildCount`](#getchildcount), [`GetChildViewAt`](#getchildviewat), [`RemoveChildView`](#removechildview), [`RemoveChildViewAt`](#removechildviewat).
@@ -610,7 +750,7 @@ GroupView {
-
+
Defines action that adds a child view to the view group.
@@ -628,7 +768,7 @@ AddChildView { parent, child: View, index ->
-
+
Defines action the retrieves the number of child views in the view group.
@@ -646,7 +786,7 @@ GetChildCount { parent ->
-
+
Defines action that retrieves a child view at a specific index from the view group.
@@ -664,7 +804,7 @@ GetChildViewAt { parent, index ->
-
+
Defines action that removes a specific child view from the view group.
@@ -682,7 +822,7 @@ RemoveChildView { parent, child: View ->
-
+
Defines action that removes a child view at a specific index from the view group.
@@ -718,9 +858,11 @@ All functions and view prop setters accept all common primitive types in Swift a
_Convertibles_ are native types that can be initialized from certain specific kinds of data received from JavaScript. Such types are allowed to be used as an argument type in `Function`'s body. For example, when the `CGPoint` type is used as a function argument type, its instance can be created from an array of two numbers `(x, y)` or a JavaScript object with numeric `x` and `y` properties.
-The built-in Convertibles are documented [further below](#built-in-convertibles). You can define additional Convertibles by making native Swift types conform to the `Convertible` protocol:
+The built-in Convertibles are documented [further below](#built-in-convertibles).
-
+You can define additional Convertibles by making native Swift types conform to the `Convertible` protocol:
+
+
`Convertible` is a Swift protocol with one static method:
@@ -728,6 +870,7 @@ The built-in Convertibles are documented [further below](#built-in-convertibles)
name="convert"
comment="A static method that converts a dynamically typed value from JavaScript to an instance of the Swift type conforming to `Convertible`. Implementers should throw an exception when the given value is invalid or of an unsupported type."
returnTypeName="Self"
+ exposeInSidebar={false}
parameters={[
{
name: 'value',
@@ -742,7 +885,7 @@ The built-in Convertibles are documented [further below](#built-in-convertibles)
]}
/>
-### Example
+#### Example
```swift Swift
import ExpoModulesCore
@@ -759,11 +902,44 @@ extension CMTime: @retroactive Convertible {
-> **Info** Support for defining Convertibles with Kotlin is planned to be available by SDK 53.
+In Kotlin, extending an existing type with a protocol isn't possible. To extend available types, you can use the `ModuleConverters` builder:
----
+
-## Built-in Convertibles
+On Android, modules can define custom type converters that allow non-standard types to be used as function arguments. Override the `converters()` method in your `Module` class and use the `ModuleConverters` builder to register converters with `.from { }` chains.
+
+```kotlin Kotlin
+class MyModule : Module() {
+ override fun converters() = ModuleConverters {
+ TypeConverter(CustomType::class)
+ .from { number: Int ->
+ CustomType.fromInt(number)
+ }
+ .from { string: String ->
+ CustomType.parse(string)
+ }
+ }
+
+ override fun definition() = ModuleDefinition {
+ Name("MyModule")
+
+ // CustomType can now be used as an argument type
+ Function("process") { value: CustomType ->
+ value.doSomething()
+ }
+ }
+}
+```
+
+Each `.from { }` call registers a converter from type `T` to your custom type. At runtime, the framework tries each registered converter until one matches the incoming JavaScript value.
+
+> **Note:** On iOS, use the `Convertible` protocol instead (documented above).
+
+
+
+
+
+### Built-in Convertibles
Some common iOS types from the `CoreGraphics` and `UIKit` system frameworks are already made convertible.
@@ -796,7 +972,6 @@ Similarly, some common Android types from packages like `java.io`, `java.net`, o
| `kotlin.IntArray`
`kotlin.FloatArray`
`kotlin.LongArray`
`kotlin.DoubleArray` | `number[]` |
| `kotlin.time.Duration` | `number` represents a duration in seconds |
-
_Record_ is a convertible type and an equivalent of the dictionary (Swift) or map (Kotlin), but represented as a struct where each field can have its type and provide a default value.
@@ -1265,6 +1440,8 @@ A base class for a native module.
name="appContext"
comment="Provides access to the [`AppContext`](#appcontext)."
returnTypeName="AppContext"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
isReturnTypeReference
/>
@@ -1275,6 +1452,8 @@ A base class for a native module.
name="sendEvent"
comment="Sends an event with a given name and a payload to JavaScript. See [`Sending events`](#sending-events)"
returnTypeName="void"
+ exposeInSidebar
+ baseNestingLevel={4}
parameters={[
{
name: 'eventName',
@@ -1301,6 +1480,8 @@ The app context is an interface to a single Expo app.
name="constants"
comment="Provides access to app's constants from legacy module registry."
returnTypeName="Android: ConstantsInterface? iOS: EXConstantsInterface?"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
/>
@@ -1308,60 +1489,17 @@ The app context is an interface to a single Expo app.
name="permissions"
comment="Provides access to the permissions manager from legacy module registry."
returnTypeName="Android: Permissions? iOS: EXPermissionsInterface?"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
/>
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1370,6 +1508,8 @@ The app context is an interface to a single Expo app.
name="reactContext"
comment="Provides access to the react application context."
returnTypeName="Context?"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
platforms={['Android']}
/>
@@ -1378,6 +1518,8 @@ The app context is an interface to a single Expo app.
name="hasActiveReactInstance"
comment="Checks if there is an not-null, alive react native instance."
returnTypeName="Boolean"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
platforms={['Android']}
/>
@@ -1386,6 +1528,8 @@ The app context is an interface to a single Expo app.
name="utilities"
comment="Provides access to the utilities from legacy module registry."
returnTypeName="EXUtilitiesInterface?"
+ exposeInSidebar
+ baseNestingLevel={4}
isProperty
platforms={['iOS']}
/>
diff --git a/docs/pages/versions/unversioned/sdk/imagepicker.mdx b/docs/pages/versions/unversioned/sdk/imagepicker.mdx
index eda9291d538147..da88508b24c21b 100644
--- a/docs/pages/versions/unversioned/sdk/imagepicker.mdx
+++ b/docs/pages/versions/unversioned/sdk/imagepicker.mdx
@@ -107,19 +107,19 @@ By default `expo-image-picker` will add `RECORD_AUDIO` permission on Android. Yo
name: 'colors.cropToolbarIconColor',
platform: 'android',
description: 'A hex color string for the crop toolbar icon color.',
- default: '#ffffff',
+ default: '#000000',
},
{
name: 'colors.cropToolbarActionTextColor',
platform: 'android',
description: 'A hex color string for the crop toolbar action text color.',
- default: '#ffffff',
+ default: '#000000',
},
{
name: 'colors.cropBackButtonIconColor',
platform: 'android',
description: 'A hex color string for the crop toolbar back button icon color.',
- default: '#ffffff',
+ default: '#000000',
},
{
name: 'colors.cropBackgroundColor',
diff --git a/packages/@expo/cli/CHANGELOG.md b/packages/@expo/cli/CHANGELOG.md
index 2280c757cbb11c..26287d1a32510b 100644
--- a/packages/@expo/cli/CHANGELOG.md
+++ b/packages/@expo/cli/CHANGELOG.md
@@ -8,13 +8,15 @@
### ๐ Bug fixes
-- Correctly handle JavaScript assets when `asyncRoutes: true` in SSR ([#43446](https://github.com/expo/expo/pull/43446) by [@hassankhan](https://github.com/hassankhan))`
+- Correctly handle JavaScript assets when `asyncRoutes: true` in SSR ([#43446](https://github.com/expo/expo/pull/43446) by [@hassankhan](https://github.com/hassankhan))
+- Fix server being started before Metro is ready, or, if it's started, status middleware responding too soon ([#43557](https://github.com/expo/expo/pull/43557) by [@kitten](https://github.com/kitten))
### ๐ก Others
- Add `@react-navigation/core` and `@react-navigation/native` to autolinking resolution ([#43456](https://github.com/expo/expo/pull/43456) by [@kitten](https://github.com/kitten))
- Drop `expo-router/doctor` install check ([#43461](https://github.com/expo/expo/pull/43461) by [@kitten](https://github.com/kitten))
- Pass on `tls` options from Metro config to Metro `runServer` fork ([#43186](https://github.com/expo/expo/pull/43186) by [@cortinico](https://github.com/cortinico))
+- Add internal `--skip-server` flag to skip server bundling in `export:embed` ([#43602](https://github.com/expo/expo/pull/43602) by [@kitten](https://github.com/kitten))
## 55.0.12 โ 2026-02-25
diff --git a/packages/@expo/cli/e2e/fixtures/with-assets/package.json b/packages/@expo/cli/e2e/fixtures/with-assets/package.json
index 22826fac67712d..e4dcbce8731887 100644
--- a/packages/@expo/cli/e2e/fixtures/with-assets/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-assets/package.json
@@ -6,7 +6,7 @@
"expo": "^55 || ^55.0.0-0",
"react-dom": "19.2.3",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0"
}
}
diff --git a/packages/@expo/cli/e2e/fixtures/with-blank/package.json b/packages/@expo/cli/e2e/fixtures/with-blank/package.json
index b9ccaf67ec4910..3c3e1d0c912265 100644
--- a/packages/@expo/cli/e2e/fixtures/with-blank/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-blank/package.json
@@ -4,6 +4,6 @@
"dependencies": {
"expo": "^55 || ^55.0.0-0",
"react": "19.2.3",
- "react-native": "0.84.0"
+ "react-native": "0.84.1"
}
}
diff --git a/packages/@expo/cli/e2e/fixtures/with-circular-async-imports/package.json b/packages/@expo/cli/e2e/fixtures/with-circular-async-imports/package.json
index 22826fac67712d..e4dcbce8731887 100644
--- a/packages/@expo/cli/e2e/fixtures/with-circular-async-imports/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-circular-async-imports/package.json
@@ -6,7 +6,7 @@
"expo": "^55 || ^55.0.0-0",
"react-dom": "19.2.3",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0"
}
}
diff --git a/packages/@expo/cli/e2e/fixtures/with-dom/package.json b/packages/@expo/cli/e2e/fixtures/with-dom/package.json
index 3c7d38f731f9fe..f536d8fd35d325 100644
--- a/packages/@expo/cli/e2e/fixtures/with-dom/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-dom/package.json
@@ -6,7 +6,7 @@
"expo": "^55 || ^55.0.0-0",
"react-dom": "19.2.3",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0",
"react-native-webview": "13.16.0"
}
diff --git a/packages/@expo/cli/e2e/fixtures/with-hmr-env-vars/package.json b/packages/@expo/cli/e2e/fixtures/with-hmr-env-vars/package.json
index a01d3a0e789f8b..48d02bfec5dbc0 100644
--- a/packages/@expo/cli/e2e/fixtures/with-hmr-env-vars/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-hmr-env-vars/package.json
@@ -5,7 +5,7 @@
"expo": "^55 || ^55.0.0-0",
"react-dom": "19.2.3",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0",
"react-native-webview": "13.16.0"
},
diff --git a/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-a/package.json b/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-a/package.json
index fe5ffabe908bdd..b969269fb6521f 100644
--- a/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-a/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-a/package.json
@@ -11,7 +11,7 @@
"expo-status-bar": "^55",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.23.0",
"react-native-web": "~0.21.0"
diff --git a/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-b/package.json b/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-b/package.json
index 6b663b562ec6b0..ec586431f277a9 100644
--- a/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-b/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-monorepo/apps/app-b/package.json
@@ -11,7 +11,7 @@
"expo-status-bar": "^55",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.23.0",
"react-native-web": "~0.21.0"
diff --git a/packages/@expo/cli/e2e/fixtures/with-router-typed-routes/package.json b/packages/@expo/cli/e2e/fixtures/with-router-typed-routes/package.json
index ee803fb1d003b9..f8590b1467b2af 100644
--- a/packages/@expo/cli/e2e/fixtures/with-router-typed-routes/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-router-typed-routes/package.json
@@ -11,7 +11,7 @@
"expo-status-bar": "^55",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.23.0",
"react-native-web": "~0.21.0"
diff --git a/packages/@expo/cli/e2e/fixtures/with-router/package.json b/packages/@expo/cli/e2e/fixtures/with-router/package.json
index 18c2f3678ff58c..bc0cf4791c888a 100644
--- a/packages/@expo/cli/e2e/fixtures/with-router/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-router/package.json
@@ -10,7 +10,7 @@
"expo-status-bar": "^55",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.23.0",
"react-native-web": "~0.21.0"
diff --git a/packages/@expo/cli/e2e/fixtures/with-web/package.json b/packages/@expo/cli/e2e/fixtures/with-web/package.json
index f170c7558b23f3..56dff3d548f72c 100644
--- a/packages/@expo/cli/e2e/fixtures/with-web/package.json
+++ b/packages/@expo/cli/e2e/fixtures/with-web/package.json
@@ -5,7 +5,7 @@
"expo": "^55 || ^55.0.0-0",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"react-native-web": "~0.21.0"
},
"devDependencies": {
diff --git a/packages/@expo/cli/package.json b/packages/@expo/cli/package.json
index 7e92998fbb8672..0f6279b931ee2e 100644
--- a/packages/@expo/cli/package.json
+++ b/packages/@expo/cli/package.json
@@ -60,7 +60,7 @@
"@expo/spawn-async": "^1.7.2",
"@expo/ws-tunnel": "^1.0.1",
"@expo/xcpretty": "^4.4.0",
- "@react-native/dev-middleware": "0.84.0",
+ "@react-native/dev-middleware": "0.84.1",
"accepts": "^1.3.8",
"arg": "^5.0.2",
"better-opn": "~3.0.2",
diff --git a/packages/@expo/cli/src/export/embed/exportEmbedAsync.ts b/packages/@expo/cli/src/export/embed/exportEmbedAsync.ts
index 7872b4d6b8c1d8..b276df5f1c8393 100644
--- a/packages/@expo/cli/src/export/embed/exportEmbedAsync.ts
+++ b/packages/@expo/cli/src/export/embed/exportEmbedAsync.ts
@@ -215,10 +215,12 @@ export async function exportEmbedBundleAndAssetsAsync(
}
);
+ // We optimistically build the server-side API routes code here, to ensure they're
+ // valid or to enable parallel deployment in the future (TBD). This is disabled using
+ // the explicit `--skip-server` flag.
const apiRoutesEnabled =
devServer.isReactServerComponentsEnabled || exp.web?.output === 'server';
-
- if (apiRoutesEnabled) {
+ if (!options.skipServer && apiRoutesEnabled) {
await exportStandaloneServerAsync(projectRoot, devServer, {
exp,
pkg,
diff --git a/packages/@expo/cli/src/export/embed/index.ts b/packages/@expo/cli/src/export/embed/index.ts
index e32bf5be230243..79666e314c7485 100644
--- a/packages/@expo/cli/src/export/embed/index.ts
+++ b/packages/@expo/cli/src/export/embed/index.ts
@@ -22,6 +22,12 @@ export const expoExportEmbed: Command = async (argv) => {
'--unstable-transform-profile': String,
'--config': String,
+ // By default we also export a standalone server, which is mostly done
+ // during the `export:embed` native build to ensure that the server is
+ // valid, or to deploy it later (TBD). This can be skipped using this
+ // flag explicitly
+ '--skip-server': Boolean,
+
// Hack: This is added because react-native-xcode.sh script always includes this value.
// If supplied, we'll do nothing with the value, but at least the process won't crash.
// Note that we also don't show this value in the `--help` prompt since we don't want people to use it.
diff --git a/packages/@expo/cli/src/export/embed/resolveOptions.ts b/packages/@expo/cli/src/export/embed/resolveOptions.ts
index 8b241c74cfdb4a..4e7ab9041a80e7 100644
--- a/packages/@expo/cli/src/export/embed/resolveOptions.ts
+++ b/packages/@expo/cli/src/export/embed/resolveOptions.ts
@@ -30,6 +30,7 @@ export interface Options {
unstableTransformProfile?: string;
eager?: boolean;
bytecode?: boolean;
+ skipServer?: boolean;
}
function assertIsBoolean(val: any): asserts val is boolean {
@@ -81,6 +82,7 @@ export function resolveOptions(
minify: parsed.args['--minify'] as boolean | undefined,
eager: !!parsed.args['--eager'],
bytecode: parsed.args['--bytecode'] as boolean | undefined,
+ skipServer: !!parsed.args['--skip-server'],
};
if (commonOptions.eager) {
diff --git a/packages/@expo/cli/src/start/server/metro/dev-server/__tests__/utils.ts b/packages/@expo/cli/src/start/server/metro/dev-server/__tests__/utils.ts
index 0f9744df61e218..ec65ef7a42f9f1 100644
--- a/packages/@expo/cli/src/start/server/metro/dev-server/__tests__/utils.ts
+++ b/packages/@expo/cli/src/start/server/metro/dev-server/__tests__/utils.ts
@@ -14,7 +14,16 @@ export function withMetroServer(projectRoot = '/project'): {
connect: (url: string) => WebSocket;
};
} {
- const metro = createMetroMiddleware({ projectRoot });
+ const metro = createMetroMiddleware(
+ { projectRoot },
+ {
+ getMetroBundler: () =>
+ ({
+ ready: () => Promise.resolve(),
+ }) as any,
+ }
+ );
+
const server = createServer(metro.middleware);
const closeServer = promisify(server.close.bind(server));
diff --git a/packages/@expo/cli/src/start/server/metro/dev-server/createMetroMiddleware.ts b/packages/@expo/cli/src/start/server/metro/dev-server/createMetroMiddleware.ts
index ccc4ccf1fff90b..85a86c56d2f8ef 100644
--- a/packages/@expo/cli/src/start/server/metro/dev-server/createMetroMiddleware.ts
+++ b/packages/@expo/cli/src/start/server/metro/dev-server/createMetroMiddleware.ts
@@ -1,4 +1,5 @@
import type { MetroConfig } from '@expo/metro/metro';
+import type MetroBundler from '@expo/metro/metro/Bundler';
import connect from 'connect';
import { Body } from 'fetch-nodeshim';
@@ -8,7 +9,14 @@ import { createMessagesSocket } from './createMessageSocket';
import { Log } from '../../../../log';
import { openInEditorAsync } from '../../../../utils/editor';
-export function createMetroMiddleware(metroConfig: Pick) {
+interface MetroMiddlewareOptions {
+ getMetroBundler(): MetroBundler;
+}
+
+export function createMetroMiddleware(
+ metroConfig: Pick,
+ options: MetroMiddlewareOptions
+) {
const messages = createMessagesSocket({ logger: Log });
const events = createEventsSocket(messages);
@@ -18,7 +26,7 @@ export function createMetroMiddleware(metroConfig: Pick
+ metroConfig: Pick,
+ options: MetroMiddlewareOptions
): connect.NextHandleFunction {
- return (_req, res) => {
+ return async (_req, res) => {
res.setHeader('X-React-Native-Project-Root', encodeURI(metroConfig.projectRoot!));
+ res.flushHeaders();
+ await options.getMetroBundler().ready();
res.end('packager-status:running');
};
}
diff --git a/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts b/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts
index 161f11683a8e2a..b5634bbc20e7b8 100644
--- a/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts
+++ b/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts
@@ -295,6 +295,7 @@ export async function instantiateMetroAsync(
messageSocket: MessageSocket;
}> {
const projectRoot = metroBundler.projectRoot;
+ const getMetroBundler = () => metro.getBundler().getBundler();
const {
config: metroConfig,
@@ -303,14 +304,14 @@ export async function instantiateMetroAsync(
} = await loadMetroConfigAsync(projectRoot, options, {
exp,
isExporting,
- getMetroBundler() {
- return metro.getBundler().getBundler();
- },
+ getMetroBundler,
});
// Create the core middleware stack for Metro, including websocket listeners
- const { middleware, messagesSocket, eventsSocket, websocketEndpoints } =
- createMetroMiddleware(metroConfig);
+ const { middleware, messagesSocket, eventsSocket, websocketEndpoints } = createMetroMiddleware(
+ metroConfig,
+ { getMetroBundler }
+ );
// Get local URL to Metro bundler server (typically configured as 127.0.0.1:8081)
const serverBaseUrl = metroBundler
diff --git a/packages/@expo/cli/src/start/server/metro/runServer-fork.ts b/packages/@expo/cli/src/start/server/metro/runServer-fork.ts
index c890ce06890883..ca3a4c34de2883 100644
--- a/packages/@expo/cli/src/start/server/metro/runServer-fork.ts
+++ b/packages/@expo/cli/src/start/server/metro/runServer-fork.ts
@@ -48,9 +48,9 @@ export const runServer = async (
onError,
onReady,
secureServerOptions,
- waitForBundler = false,
websocketEndpoints = {},
watch,
+ waitForBundler = !!watch,
}: RunServerOptionsFork,
{
mockServer,
diff --git a/packages/@expo/config-plugins/src/ios/__tests__/__snapshots__/Maps-test.ts.snap b/packages/@expo/config-plugins/src/ios/__tests__/__snapshots__/Maps-test.ts.snap
index 692c649d69a442..ae83ee94afd30b 100644
--- a/packages/@expo/config-plugins/src/ios/__tests__/__snapshots__/Maps-test.ts.snap
+++ b/packages/@expo/config-plugins/src/ios/__tests__/__snapshots__/Maps-test.ts.snap
@@ -250,8 +250,8 @@ def ccache_enabled?(podfile_properties)
end
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] ||= podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
-ENV['RCT_USE_RN_DEP'] ||= '1' if podfile_properties['ios.buildReactNativeFromSource'] != 'true'
-ENV['RCT_USE_PREBUILT_RNCORE'] ||= '1' if podfile_properties['ios.buildReactNativeFromSource'] != 'true'
+ENV['RCT_USE_RN_DEP'] ||= '0' if podfile_properties['ios.buildReactNativeFromSource'] == 'true'
+ENV['RCT_USE_PREBUILT_RNCORE'] ||= '0' if podfile_properties['ios.buildReactNativeFromSource'] == 'true'
ENV['RCT_HERMES_V1_ENABLED'] ||= '1' if podfile_properties['expo.useHermesV1'] == 'true'
platform :ios, podfile_properties['ios.deploymentTarget'] || '15.1'
diff --git a/packages/@expo/fingerprint/CHANGELOG.md b/packages/@expo/fingerprint/CHANGELOG.md
index 3e4d5f7f627b30..765a89b86ba660 100644
--- a/packages/@expo/fingerprint/CHANGELOG.md
+++ b/packages/@expo/fingerprint/CHANGELOG.md
@@ -6,6 +6,8 @@
### ๐ New features
+- Include expo-font plugin font files in fingerprint hash calculation ([#43575](https://github.com/expo/expo/pull/43575) by [@vonovak](https://github.com/vonovak))
+
### ๐ Bug fixes
### ๐ก Others
diff --git a/packages/@expo/fingerprint/build/sourcer/Expo.js b/packages/@expo/fingerprint/build/sourcer/Expo.js
index 3c9598805a7d1d..edfddfa3be4bdd 100644
--- a/packages/@expo/fingerprint/build/sourcer/Expo.js
+++ b/packages/@expo/fingerprint/build/sourcer/Expo.js
@@ -33,7 +33,14 @@ async function getExpoConfigSourcesAsync(projectRoot, config, loadedModules, opt
const isAndroid = options.platforms.includes('android');
const isIos = options.platforms.includes('ios');
const splashScreenPluginProps = getConfigPluginProps(expoConfig, 'expo-splash-screen');
+ const fontPluginProps = getConfigPluginProps(expoConfig, 'expo-font');
const externalFiles = [
+ // expo-font files
+ ...(fontPluginProps?.fonts ?? []),
+ ...(isIos ? (fontPluginProps?.ios?.fonts ?? []) : []),
+ ...(isAndroid
+ ? (fontPluginProps?.android?.fonts ?? []).flatMap((f) => typeof f === 'string' ? [f] : (f.fontDefinitions ?? []).map((d) => d.path))
+ : []),
// icons
expoConfig.icon,
isAndroid ? expoConfig.android?.icon : undefined,
diff --git a/packages/@expo/fingerprint/build/sourcer/Expo.js.map b/packages/@expo/fingerprint/build/sourcer/Expo.js.map
index c0da648278185f..0eab25569742a1 100644
--- a/packages/@expo/fingerprint/build/sourcer/Expo.js.map
+++ b/packages/@expo/fingerprint/build/sourcer/Expo.js.map
@@ -1 +1 @@
-{"version":3,"file":"Expo.js","sourceRoot":"","sources":["../../src/sourcer/Expo.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Expo.js","sourceRoot":"","sources":["../../src/sourcer/Expo.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/@expo/fingerprint/src/sourcer/Expo.ts b/packages/@expo/fingerprint/src/sourcer/Expo.ts
index a10fc194d6514e..2bc9bca198ab92 100644
--- a/packages/@expo/fingerprint/src/sourcer/Expo.ts
+++ b/packages/@expo/fingerprint/src/sourcer/Expo.ts
@@ -39,7 +39,23 @@ export async function getExpoConfigSourcesAsync(
android?: NonNullable['splash'];
ios?: NonNullable['splash'];
}>(expoConfig, 'expo-splash-screen');
+ const fontPluginProps = getConfigPluginProps<{
+ // Type mirrors FontProps from expo-font/plugin/src/withFonts.ts
+ fonts?: string[];
+ android?: { fonts?: (string | { fontDefinitions: { path: string }[] })[] };
+ ios?: { fonts?: string[] };
+ }>(expoConfig, 'expo-font');
+
const externalFiles = [
+ // expo-font files
+ ...(fontPluginProps?.fonts ?? []),
+ ...(isIos ? (fontPluginProps?.ios?.fonts ?? []) : []),
+ ...(isAndroid
+ ? (fontPluginProps?.android?.fonts ?? []).flatMap((f) =>
+ typeof f === 'string' ? [f] : (f.fontDefinitions ?? []).map((d) => d.path)
+ )
+ : []),
+
// icons
expoConfig.icon,
isAndroid ? expoConfig.android?.icon : undefined,
diff --git a/packages/@expo/fingerprint/src/sourcer/__tests__/Expo-test.ts b/packages/@expo/fingerprint/src/sourcer/__tests__/Expo-test.ts
index af1da632552c14..4c9e596a02cd93 100644
--- a/packages/@expo/fingerprint/src/sourcer/__tests__/Expo-test.ts
+++ b/packages/@expo/fingerprint/src/sourcer/__tests__/Expo-test.ts
@@ -6,7 +6,7 @@ import path from 'path';
import requireString from 'require-from-string';
import { getExpoConfigAsync } from '../../ExpoConfig';
-import { HashSourceContents } from '../../Fingerprint.types';
+import { HashSource, HashSourceContents } from '../../Fingerprint.types';
import { normalizeOptionsAsync } from '../../Options';
import { SourceSkips } from '../../sourcer/SourceSkips';
import { spawnWithIpcAsync } from '../../utils/SpawnIPC';
@@ -316,6 +316,124 @@ describe(getExpoConfigSourcesAsync, () => {
);
});
+ describe('fingerprint sources from expo-font plugin font files', () => {
+ async function getFontSources(
+ fontFiles: Record,
+ pluginProps: Record,
+ platform?: 'ios' | 'android'
+ ) {
+ vol.fromJSON(require('./fixtures/ExpoManaged47Project.json'));
+ vol.mkdirSync('/app/assets/fonts', { recursive: true });
+ for (const [filePath, content] of Object.entries(fontFiles)) {
+ vol.writeFileSync(`/app/${filePath}`, content);
+ }
+
+ const appJson = JSON.parse(vol.readFileSync('/app/app.json', 'utf8').toString());
+ appJson.expo.plugins = [['expo-font', pluginProps]];
+
+ const configResult = JSON.stringify({
+ config: { exp: appJson.expo },
+ loadedModules: [],
+ });
+ (spawnWithIpcAsync as jest.MockedFunction).mockResolvedValueOnce({
+ output: [],
+ stdout: configResult,
+ message: configResult,
+ stderr: '',
+ signal: null,
+ status: 0,
+ });
+ const options = await normalizeOptionsAsync(
+ '/app',
+ platform ? { platforms: [platform] } : undefined
+ );
+ const { config, loadedModules } = await getExpoConfigAsync('/app', options);
+ return getExpoConfigSourcesAsync('/app', config, loadedModules, options);
+ }
+
+ function expectFontSource(sources: HashSource[], filePath: string, type: string = 'file') {
+ expect(sources).toContainEqual(
+ expect.objectContaining({
+ type,
+ filePath,
+ overrideHashKey: 'expoConfigExternalFile:contentsOnly',
+ })
+ );
+ }
+
+ function expectNoFontSource(sources: HashSource[], filePath: string) {
+ expect(sources).not.toContainEqual(expect.objectContaining({ filePath }));
+ }
+
+ it('includes platform-specific fonts and excludes cross-platform fonts', async () => {
+ const files = {
+ 'assets/fonts/SpaceMono-Regular.ttf': 'font data v1',
+ 'assets/fonts/SF-Pro.ttf': 'sf pro data',
+ 'assets/fonts/Roboto-Regular.ttf': 'roboto regular data',
+ 'assets/fonts/Roboto-Bold.ttf': 'roboto bold data',
+ };
+ const pluginProps = {
+ fonts: ['./assets/fonts/SpaceMono-Regular.ttf'],
+ ios: { fonts: ['./assets/fonts/SF-Pro.ttf'] },
+ android: {
+ fonts: [
+ {
+ fontFamily: 'Roboto',
+ fontDefinitions: [
+ { path: './assets/fonts/Roboto-Regular.ttf', weight: 400 },
+ { path: './assets/fonts/Roboto-Bold.ttf', weight: 700 },
+ ],
+ },
+ ],
+ },
+ };
+
+ const iosSources = await getFontSources(files, pluginProps, 'ios');
+ expectFontSource(iosSources, 'assets/fonts/SpaceMono-Regular.ttf');
+ expectFontSource(iosSources, 'assets/fonts/SF-Pro.ttf');
+ expectNoFontSource(iosSources, 'assets/fonts/Roboto-Regular.ttf');
+ expectNoFontSource(iosSources, 'assets/fonts/Roboto-Bold.ttf');
+
+ const androidSources = await getFontSources(files, pluginProps, 'android');
+ expectFontSource(androidSources, 'assets/fonts/SpaceMono-Regular.ttf');
+ expectFontSource(androidSources, 'assets/fonts/Roboto-Regular.ttf');
+ expectFontSource(androidSources, 'assets/fonts/Roboto-Bold.ttf');
+ expectNoFontSource(androidSources, 'assets/fonts/SF-Pro.ttf');
+ });
+
+ it('includes android string font paths', async () => {
+ const sources = await getFontSources(
+ {
+ 'assets/fonts/SpaceMono-Regular.ttf': 'font data v1',
+ 'assets/fonts/Noto-Sans.ttf': 'noto sans data',
+ },
+ {
+ fonts: ['./assets/fonts/SpaceMono-Regular.ttf'],
+ android: { fonts: ['./assets/fonts/Noto-Sans.ttf'] },
+ },
+ 'android'
+ );
+
+ expectFontSource(sources, 'assets/fonts/Noto-Sans.ttf');
+ expectFontSource(sources, 'assets/fonts/SpaceMono-Regular.ttf');
+ });
+
+ // When a directory path is passed to `fonts`, the config plugin resolves individual
+ // font files from it (filtering by extension). The fingerprint, hashes the
+ // entire directory โ this over-hashes slightly but is safe
+ it('hashes entire font directory when a directory path is specified', async () => {
+ const sources = await getFontSources(
+ {
+ 'assets/fonts/Inter.ttf': 'inter font data',
+ 'assets/fonts/Roboto.otf': 'roboto font data',
+ },
+ { fonts: ['./assets/fonts'] }
+ );
+
+ expectFontSource(sources, 'assets/fonts', 'dir');
+ });
+ });
+
it('should contain external google service files with override hash key', async () => {
vol.fromJSON(require('./fixtures/ExpoManaged47Project.json'));
vol.writeFileSync('/app/google-services.json', 'JSON data');
diff --git a/packages/@expo/log-box/package.json b/packages/@expo/log-box/package.json
index 625353af4f5a1a..700f1fb27d5836 100644
--- a/packages/@expo/log-box/package.json
+++ b/packages/@expo/log-box/package.json
@@ -30,7 +30,7 @@
"glob": "^13.0.0",
"npm-run-all2": "^8.0.4",
"react": "19.2.3",
- "react-native": "0.84.0",
+ "react-native": "0.84.1",
"rimraf": "^6.1.2",
"typescript": "~5.9.2",
"typescript-plugin-css-modules": "^5.2.0"
diff --git a/packages/@expo/prebuild-config/package.json b/packages/@expo/prebuild-config/package.json
index 0dc365114050ce..f1abf904d30966 100644
--- a/packages/@expo/prebuild-config/package.json
+++ b/packages/@expo/prebuild-config/package.json
@@ -45,7 +45,7 @@
"@expo/config-types": "^55.0.5",
"@expo/image-utils": "^0.8.12",
"@expo/json-file": "^10.0.12",
- "@react-native/normalize-colors": "0.84.0",
+ "@react-native/normalize-colors": "0.84.1",
"debug": "^4.3.1",
"resolve-from": "^5.0.0",
"semver": "^7.6.0",
diff --git a/packages/babel-preset-expo/package.json b/packages/babel-preset-expo/package.json
index b713eb9bbd27c3..3b79a4340a5aed 100644
--- a/packages/babel-preset-expo/package.json
+++ b/packages/babel-preset-expo/package.json
@@ -74,7 +74,7 @@
"@babel/plugin-transform-parameters": "^7.24.7",
"@babel/preset-react": "^7.22.15",
"@babel/preset-typescript": "^7.23.0",
- "@react-native/babel-preset": "0.84.0",
+ "@react-native/babel-preset": "0.84.1",
"babel-plugin-react-compiler": "^1.0.0",
"babel-plugin-react-native-web": "~0.21.0",
"babel-plugin-transform-flow-enums": "^0.0.2",
diff --git a/packages/create-expo-nightly/src/Packages.ts b/packages/create-expo-nightly/src/Packages.ts
index 865def663f4da4..62a074999e5704 100644
--- a/packages/create-expo-nightly/src/Packages.ts
+++ b/packages/create-expo-nightly/src/Packages.ts
@@ -10,7 +10,6 @@ const EXCLUDE_PACKAGES = [
'@expo/fingerprint',
'create-expo',
'eslint-config-universe',
- 'expo-dev-client-components',
'expo-doctor',
'expo-env-info',
'expo-module-scripts',
diff --git a/packages/expo-audio/CHANGELOG.md b/packages/expo-audio/CHANGELOG.md
index 742bf3529cc550..1ba4d9467bd9b0 100644
--- a/packages/expo-audio/CHANGELOG.md
+++ b/packages/expo-audio/CHANGELOG.md
@@ -8,6 +8,8 @@
### ๐ Bug fixes
+- [iOS] Fix crash during seek. ([#43564](https://github.com/expo/expo/pull/43564) by [@alanjhughes](https://github.com/alanjhughes))
+
### ๐ก Others
## 55.0.8 โ 2026-02-25
diff --git a/packages/expo-audio/ios/AudioPlayer.swift b/packages/expo-audio/ios/AudioPlayer.swift
index 368504335d3fcc..6d7cc7b3c76785 100644
--- a/packages/expo-audio/ios/AudioPlayer.swift
+++ b/packages/expo-audio/ios/AudioPlayer.swift
@@ -143,10 +143,16 @@ public class AudioPlayer: SharedRef {
CMTime(seconds: $0 / 1000.0, preferredTimescale: CMTimeScale(NSEC_PER_SEC))
} ?? CMTime.positiveInfinity
- await ref.currentItem?.seek(to: time, toleranceBefore: toleranceBefore, toleranceAfter: toleranceAfter )
- updateStatus(with: [
- "currentTime": currentTime
- ])
+ await withCheckedContinuation { (continuation: CheckedContinuation) in
+ ref.seek(to: time, toleranceBefore: toleranceBefore, toleranceAfter: toleranceAfter) { [weak self] _ in
+ if let self {
+ self.updateStatus(with: [
+ "currentTime": self.currentTime
+ ])
+ }
+ continuation.resume()
+ }
+ }
}
private func setupPublisher() {
@@ -402,6 +408,7 @@ public class AudioPlayer: SharedRef {
}
public override func sharedObjectWillRelease() {
+ ref.currentItem?.cancelPendingSeeks()
owningRegistry?.remove(self)
if isActiveForLockScreen {
diff --git a/packages/expo-audio/ios/AudioPlaylist.swift b/packages/expo-audio/ios/AudioPlaylist.swift
index 988a9580c26702..b16c9aebfd4a69 100644
--- a/packages/expo-audio/ios/AudioPlaylist.swift
+++ b/packages/expo-audio/ios/AudioPlaylist.swift
@@ -123,8 +123,14 @@ public class AudioPlaylist: SharedRef {
func seekTo(seconds: Double) async {
let time = CMTime(seconds: seconds, preferredTimescale: CMTimeScale(NSEC_PER_SEC))
- await ref.currentItem?.seek(to: time)
- updateStatus(with: ["currentTime": currentTime])
+ await withCheckedContinuation { (continuation: CheckedContinuation) in
+ ref.seek(to: time) { [weak self] _ in
+ if let self {
+ self.updateStatus(with: ["currentTime": self.currentTime])
+ }
+ continuation.resume()
+ }
+ }
}
func add(source: AudioSource) {
@@ -357,6 +363,7 @@ public class AudioPlaylist: SharedRef {
}
public override func sharedObjectWillRelease() {
+ ref.currentItem?.cancelPendingSeeks()
owningRegistry?.remove(self)
cancellables.removeAll()
diff --git a/packages/expo-brownfield/CHANGELOG.md b/packages/expo-brownfield/CHANGELOG.md
index fe8f588a3c47f8..547550c5543472 100644
--- a/packages/expo-brownfield/CHANGELOG.md
+++ b/packages/expo-brownfield/CHANGELOG.md
@@ -4,6 +4,8 @@
### ๐ Breaking changes
+- [ios] rename option from 'usePrebuiltReactNative' to 'buildReactNativeFromSource' ([#43574](https://github.com/expo/expo/pull/43574) by [@pmleczek](https://github.com/pmleczek))
+
### ๐ New features
- [android] add basic implementation of shared state for android ([#43097](https://github.com/expo/expo/pull/43097) by [@pmleczek](https://github.com/pmleczek))
diff --git a/packages/expo-brownfield/plugin/build/ios/plugins/withBuildPropertiesPlugin.js b/packages/expo-brownfield/plugin/build/ios/plugins/withBuildPropertiesPlugin.js
index 8d9b18d5af5e90..066e4647505226 100644
--- a/packages/expo-brownfield/plugin/build/ios/plugins/withBuildPropertiesPlugin.js
+++ b/packages/expo-brownfield/plugin/build/ios/plugins/withBuildPropertiesPlugin.js
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const expo_build_properties_1 = __importDefault(require("expo-build-properties"));
const withBuildPropertiesPlugin = (config, pluginConfig) => {
return (0, expo_build_properties_1.default)(config, {
- ios: { buildReactNativeFromSource: !pluginConfig.usePrebuiltReactNative },
+ ios: { buildReactNativeFromSource: pluginConfig.buildReactNativeFromSource },
});
};
exports.default = withBuildPropertiesPlugin;
diff --git a/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePlugin.js b/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePlugin.js
index b40c48a727f2bd..0cdf842faffcd9 100644
--- a/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePlugin.js
+++ b/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePlugin.js
@@ -5,7 +5,7 @@ const utils_1 = require("../utils");
const withPodfilePlugin = (config, pluginConfig) => {
return (0, config_plugins_1.withPodfile)(config, (config) => {
config.modResults.contents = (0, utils_1.addNewPodsTarget)(config.modResults.contents, pluginConfig.targetName);
- if (pluginConfig.usePrebuiltReactNative) {
+ if (!pluginConfig.buildReactNativeFromSource) {
config.modResults.contents = (0, utils_1.addPrebuiltSettings)(config.modResults.contents);
}
return config;
diff --git a/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePropertiesPlugin.js b/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePropertiesPlugin.js
index e9270ab0ef38f3..9ba2ccef3b65d8 100644
--- a/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePropertiesPlugin.js
+++ b/packages/expo-brownfield/plugin/build/ios/plugins/withPodfilePropertiesPlugin.js
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("expo/config-plugins");
const withPodfilePropertiesPlugin = (config, pluginConfig) => {
return (0, config_plugins_1.withPodfileProperties)(config, (config) => {
- if (!pluginConfig.usePrebuiltReactNative) {
+ if (pluginConfig.buildReactNativeFromSource) {
config.modResults['ios.useFrameworks'] = 'static';
}
return config;
diff --git a/packages/expo-brownfield/plugin/build/ios/types.d.ts b/packages/expo-brownfield/plugin/build/ios/types.d.ts
index 7e22fe588ef4f6..9144e947a00656 100644
--- a/packages/expo-brownfield/plugin/build/ios/types.d.ts
+++ b/packages/expo-brownfield/plugin/build/ios/types.d.ts
@@ -1,7 +1,7 @@
export interface PluginConfig {
bundleIdentifier: string;
targetName: string;
- usePrebuiltReactNative: boolean;
+ buildReactNativeFromSource: boolean;
}
export type IOSPluginProps = Partial;
export type PluginProps = IOSPluginProps | undefined;
diff --git a/packages/expo-brownfield/plugin/build/ios/utils/props.js b/packages/expo-brownfield/plugin/build/ios/utils/props.js
index 2bb24d81d079b7..1eb440732bbb89 100644
--- a/packages/expo-brownfield/plugin/build/ios/utils/props.js
+++ b/packages/expo-brownfield/plugin/build/ios/utils/props.js
@@ -6,7 +6,7 @@ const getPluginConfig = (props, config) => {
return {
bundleIdentifier: getBundleIdentifier(props, config, targetName),
targetName,
- usePrebuiltReactNative: props?.usePrebuiltReactNative ?? false,
+ buildReactNativeFromSource: props?.buildReactNativeFromSource ?? true,
};
};
exports.getPluginConfig = getPluginConfig;
diff --git a/packages/expo-brownfield/plugin/src/ios/plugins/withBuildPropertiesPlugin.ts b/packages/expo-brownfield/plugin/src/ios/plugins/withBuildPropertiesPlugin.ts
index 8852db8ea290ed..24335a902ac9c4 100644
--- a/packages/expo-brownfield/plugin/src/ios/plugins/withBuildPropertiesPlugin.ts
+++ b/packages/expo-brownfield/plugin/src/ios/plugins/withBuildPropertiesPlugin.ts
@@ -5,7 +5,7 @@ import type { PluginConfig } from '../types';
const withBuildPropertiesPlugin: ConfigPlugin = (config, pluginConfig) => {
return withBuildProperties(config, {
- ios: { buildReactNativeFromSource: !pluginConfig.usePrebuiltReactNative },
+ ios: { buildReactNativeFromSource: pluginConfig.buildReactNativeFromSource },
});
};
diff --git a/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePlugin.ts b/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePlugin.ts
index a06c37a6dccaca..5df4be04bdf9f3 100644
--- a/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePlugin.ts
+++ b/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePlugin.ts
@@ -9,7 +9,7 @@ const withPodfilePlugin: ConfigPlugin = (config, pluginConfig) =>
config.modResults.contents,
pluginConfig.targetName
);
- if (pluginConfig.usePrebuiltReactNative) {
+ if (!pluginConfig.buildReactNativeFromSource) {
config.modResults.contents = addPrebuiltSettings(config.modResults.contents);
}
return config;
diff --git a/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePropertiesPlugin.ts b/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePropertiesPlugin.ts
index a088e8b1b2baf2..09dd547293285a 100644
--- a/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePropertiesPlugin.ts
+++ b/packages/expo-brownfield/plugin/src/ios/plugins/withPodfilePropertiesPlugin.ts
@@ -4,7 +4,7 @@ import type { PluginConfig } from '../types';
const withPodfilePropertiesPlugin: ConfigPlugin = (config, pluginConfig) => {
return withPodfileProperties(config, (config) => {
- if (!pluginConfig.usePrebuiltReactNative) {
+ if (pluginConfig.buildReactNativeFromSource) {
config.modResults['ios.useFrameworks'] = 'static';
}
return config;
diff --git a/packages/expo-brownfield/plugin/src/ios/types.ts b/packages/expo-brownfield/plugin/src/ios/types.ts
index ded6c82de24ecd..c1a0422d3c122e 100644
--- a/packages/expo-brownfield/plugin/src/ios/types.ts
+++ b/packages/expo-brownfield/plugin/src/ios/types.ts
@@ -1,7 +1,7 @@
export interface PluginConfig {
bundleIdentifier: string;
targetName: string;
- usePrebuiltReactNative: boolean;
+ buildReactNativeFromSource: boolean;
}
export type IOSPluginProps = Partial;
diff --git a/packages/expo-brownfield/plugin/src/ios/utils/props.ts b/packages/expo-brownfield/plugin/src/ios/utils/props.ts
index a3456028f1ceea..fe6fe2c32e4d9a 100644
--- a/packages/expo-brownfield/plugin/src/ios/utils/props.ts
+++ b/packages/expo-brownfield/plugin/src/ios/utils/props.ts
@@ -8,7 +8,7 @@ export const getPluginConfig = (props: PluginProps, config: ExpoConfig): PluginC
return {
bundleIdentifier: getBundleIdentifier(props, config, targetName),
targetName,
- usePrebuiltReactNative: props?.usePrebuiltReactNative ?? false,
+ buildReactNativeFromSource: props?.buildReactNativeFromSource ?? true,
};
};
diff --git a/packages/expo-camera/android/build.gradle b/packages/expo-camera/android/build.gradle
index 9b5c7d56dc529f..02f838a8c7cb9b 100644
--- a/packages/expo-camera/android/build.gradle
+++ b/packages/expo-camera/android/build.gradle
@@ -18,9 +18,9 @@ android {
}
dependencies {
- def camerax_version = "1.5.1"
+ def camerax_version = "1.5.3"
- api "androidx.exifinterface:exifinterface:1.4.1"
+ api "androidx.exifinterface:exifinterface:1.4.2"
api "androidx.appcompat:appcompat:1.7.1"
implementation "androidx.camera:camera-core:${camerax_version}"
@@ -30,6 +30,7 @@ dependencies {
implementation "androidx.camera:camera-view:${camerax_version}"
implementation "androidx.camera:camera-extensions:${camerax_version}"
+ implementation "androidx.core:core-ktx:1.17.0"
def barcodeDependencyConfiguration = isBarcodeScannerEnabled ? "implementation" : "compileOnly"
add(barcodeDependencyConfiguration, "com.google.android.gms:play-services-code-scanner:16.1.0")
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewHelper.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewHelper.kt
deleted file mode 100644
index 56e5eec4cd2db1..00000000000000
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewHelper.kt
+++ /dev/null
@@ -1,38 +0,0 @@
-package expo.modules.camera
-
-import android.graphics.Bitmap
-import android.graphics.Canvas
-import android.graphics.Color
-import android.graphics.Paint
-import java.io.ByteArrayOutputStream
-import java.text.SimpleDateFormat
-import java.util.Calendar
-import java.util.Locale
-
-object CameraViewHelper {
- fun generateSimulatorPhoto(width: Int, height: Int): ByteArray {
- val fakePhotoBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
- val canvas = Canvas(fakePhotoBitmap)
- val background = Paint().apply {
- color = Color.BLACK
- }
- canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), background)
- val textPaint = Paint().apply {
- color = Color.YELLOW
- textSize = 35f
- }
- val calendar = Calendar.getInstance()
- val simpleDateFormat = SimpleDateFormat("dd.MM.yy HH:mm:ss", Locale.US)
- canvas.drawText(simpleDateFormat.format(calendar.time), width * 0.1f, height * 0.9f, textPaint)
-
- val stream = ByteArrayOutputStream()
- fakePhotoBitmap.compress(Bitmap.CompressFormat.PNG, 90, stream)
- return stream.toByteArray()
- }
-}
-
-fun Bitmap.toByteArray(): ByteArray {
- val stream = ByteArrayOutputStream()
- this.compress(Bitmap.CompressFormat.PNG, 90, stream)
- return stream.toByteArray()
-}
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewModule.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewModule.kt
index 7e50b98d82e9a1..21382f81b3f428 100644
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewModule.kt
+++ b/packages/expo-camera/android/src/main/java/expo/modules/camera/CameraViewModule.kt
@@ -22,6 +22,7 @@ import expo.modules.camera.records.VideoStabilizationMode
import expo.modules.camera.tasks.ResolveTakenPicture
import expo.modules.camera.tasks.writeStreamToFile
import expo.modules.camera.utils.CameraUtils
+import expo.modules.camera.utils.CameraViewHelper
import expo.modules.core.errors.ModuleDestroyedException
import expo.modules.core.utilities.EmulatorUtilities
import expo.modules.core.utilities.VRUtilities
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/ExpoCameraView.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/ExpoCameraView.kt
index 1ff8116fb7c756..d9690e37ebf047 100644
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/ExpoCameraView.kt
+++ b/packages/expo-camera/android/src/main/java/expo/modules/camera/ExpoCameraView.kt
@@ -394,8 +394,7 @@ class ExpoCameraView(
else -> promise.reject(
CameraExceptions.VideoRecordingFailed(
- event.cause?.message
- ?: "Video recording Failed: ${event.cause?.message ?: "Unknown error"}"
+ event.cause?.message ?: "Unknown error"
)
)
}
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/analyzers/MLKitBarcodeAnalyzer.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/analyzers/MLKitBarcodeAnalyzer.kt
index 3ba4f0a8dcb1a1..681995d2551afa 100644
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/analyzers/MLKitBarcodeAnalyzer.kt
+++ b/packages/expo-camera/android/src/main/java/expo/modules/camera/analyzers/MLKitBarcodeAnalyzer.kt
@@ -56,19 +56,7 @@ class MLKitBarCodeScanner {
}
private fun areNewAndOldBarCodeTypesEqual(newBarCodeTypes: List): Boolean {
- barCodeTypes?.run {
- // create distinct-values sets
- val prevTypesSet = toHashSet()
- val nextTypesSet = newBarCodeTypes.toHashSet()
-
- // sets sizes are equal -> possible content equality
- if (prevTypesSet.size == nextTypesSet.size) {
- prevTypesSet.removeAll(nextTypesSet)
- // every element from new set was in previous one -> sets are equal
- return prevTypesSet.isEmpty()
- }
- }
- return false
+ return barCodeTypes?.toSet() == newBarCodeTypes.toSet()
}
companion object {
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/CameraViewHelper.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/CameraViewHelper.kt
index 8813f69449af7c..3bab0e93aa410a 100644
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/CameraViewHelper.kt
+++ b/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/CameraViewHelper.kt
@@ -14,9 +14,6 @@ import java.util.Locale
import kotlin.math.roundToLong
object CameraViewHelper {
- // Utilities
-
- @JvmStatic
fun getExifData(exifInterface: ExifInterface): Bundle {
val exifMap = Bundle()
for ((type, name) in exifTags) {
@@ -36,7 +33,6 @@ object CameraViewHelper {
return exifMap
}
- @JvmStatic
@Throws(IllegalArgumentException::class)
fun setExifData(baseExif: ExifInterface, exifMap: Map) {
for ((type, name) in exifTags) {
@@ -65,7 +61,6 @@ object CameraViewHelper {
}
}
- @JvmStatic
@Throws(IOException::class)
fun addExifData(baseExif: ExifInterface, additionalExif: ExifInterface) {
for (tagInfo in exifTags) {
@@ -103,7 +98,6 @@ object CameraViewHelper {
val stream = ByteArrayOutputStream()
fakePhotoBitmap.compress(Bitmap.CompressFormat.PNG, 90, stream)
- val fakePhotoByteArray = stream.toByteArray()
- return fakePhotoByteArray
+ return stream.toByteArray()
}
}
diff --git a/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/ExifTags.kt b/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/ExifTags.kt
index 6f8f2334c24449..22e18bbf80b9f7 100644
--- a/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/ExifTags.kt
+++ b/packages/expo-camera/android/src/main/java/expo/modules/camera/utils/ExifTags.kt
@@ -2,12 +2,6 @@ package expo.modules.camera.utils
import androidx.exifinterface.media.ExifInterface
-const val VIDEO_2160P = 0
-const val VIDEO_1080P = 1
-const val VIDEO_720P = 2
-const val VIDEO_480P = 3
-const val VIDEO_4x3 = 4
-
val exifTags = arrayOf(
arrayOf("string", ExifInterface.TAG_ARTIST),
arrayOf("int", ExifInterface.TAG_BITS_PER_SAMPLE),
diff --git a/packages/expo-camera/build/CameraView.d.ts b/packages/expo-camera/build/CameraView.d.ts
index 8b68d2e1601c42..4c8be7bf3443e4 100644
--- a/packages/expo-camera/build/CameraView.d.ts
+++ b/packages/expo-camera/build/CameraView.d.ts
@@ -1,5 +1,5 @@
import { type EventSubscription } from 'expo-modules-core';
-import { type Ref, Component } from 'react';
+import { Component } from 'react';
import { CameraCapturedPicture, CameraOrientation, CameraPictureOptions, CameraViewProps, CameraRecordingOptions, CameraViewRef, ScanningOptions, ScanningResult, VideoCodec, AvailableLenses } from './Camera.types';
import { PictureRef } from './PictureRef';
export default class CameraView extends Component {
@@ -54,7 +54,6 @@ export default class CameraView extends Component {
flash: Record;
};
static defaultProps: CameraViewProps;
- _cameraHandle?: number | null;
_cameraRef: import("react").RefObject;
_lastEvents: {
[eventName: string]: string;
@@ -171,7 +170,6 @@ export default class CameraView extends Component {
_onObjectDetected: (callback?: Function) => ({ nativeEvent }: {
nativeEvent: any;
}) => void;
- _setReference: (ref: Ref) => void;
render(): import("react").JSX.Element;
}
//# sourceMappingURL=CameraView.d.ts.map
\ No newline at end of file
diff --git a/packages/expo-camera/build/CameraView.d.ts.map b/packages/expo-camera/build/CameraView.d.ts.map
index 7ab11b322c0a5f..8bfdbbb5e2ec0a 100644
--- a/packages/expo-camera/build/CameraView.d.ts.map
+++ b/packages/expo-camera/build/CameraView.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"CameraView.d.ts","sourceRoot":"","sources":["../src/CameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,KAAK,GAAG,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAEvD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA+D1C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS,CAAC,eAAe,CAAC;IAChE;;OAEG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,CAAiD;IAChG;;;;;OAKG;WACU,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IASjD;;;;OAIG;WACU,4BAA4B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQlE;;;;OAIG;IACG,6BAA6B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxD;;;;;OAKG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD;;OAEG;IACH,oBAAoB,IAAI;QACtB,+BAA+B,EAAE,OAAO,CAAC;QACzC,6BAA6B,EAAE,OAAO,CAAC;KACxC;IAOD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,MAAM,CAAC,gBAAgB;;;;MAAoB;IAE3C,MAAM,CAAC,YAAY,EAAE,eAAe,CAMlC;IAEF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,kDAA8B;IACxC,WAAW,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IAClD,gBAAgB,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAErD;;;;;;;;;OASG;IACG,gBAAgB,CACpB,cAAc,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,IAAI,CAAA;KAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWtF;;;;;OAKG;WACU,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE;;;;OAIG;WACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5C;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,iBAAiB;IAI3F;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB;;;IAKlD;;;;;;;;;;;;;OAaG;IACG,oBAAoB;IAI1B;;;;OAIG;IACH,aAAa;IAIb,cAAc,aAIZ;IAEF,yBAAyB,GAAI,iBAAiB;QAAE,WAAW,EAAE,eAAe,CAAA;KAAE,UAI5E;IAEF,aAAa,GAAI,iBAAiB;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,UAIpE;IAEF,+BAA+B,GAAI,kBAEhC;QACD,WAAW,EAAE;YAAE,WAAW,EAAE,iBAAiB,CAAA;SAAE,CAAC;KACjD,UAIC;IAEF,iBAAiB,GACd,WAAW,QAAQ,MACnB,iBAAiB;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,UAgBpC;IAEJ,aAAa,GAAI,KAAK,GAAG,CAAC,aAAa,CAAC,UAOtC;IAEF,MAAM;CA2BP"}
\ No newline at end of file
+{"version":3,"file":"CameraView.d.ts","sourceRoot":"","sources":["../src/CameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA2D1C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS,CAAC,eAAe,CAAC;IAChE;;OAEG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,CAAiD;IAChG;;;;;OAKG;WACU,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IASjD;;;;OAIG;WACU,4BAA4B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQlE;;;;OAIG;IACG,6BAA6B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxD;;;;;OAKG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD;;OAEG;IACH,oBAAoB,IAAI;QACtB,+BAA+B,EAAE,OAAO,CAAC;QACzC,6BAA6B,EAAE,OAAO,CAAC;KACxC;IAOD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,MAAM,CAAC,gBAAgB;;;;MAAoB;IAE3C,MAAM,CAAC,YAAY,EAAE,eAAe,CAMlC;IAEF,UAAU,kDAA8B;IACxC,WAAW,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IAClD,gBAAgB,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAErD;;;;;;;;;OASG;IACG,gBAAgB,CACpB,cAAc,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,IAAI,CAAA;KAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWtF;;;;;OAKG;WACU,aAAa,CAAC,OAAO,GAAE,eAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1F;;;;OAIG;WACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5C;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,iBAAiB;IAI3F;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB;;;IAKlD;;;;;;;;;;;;;OAaG;IACG,oBAAoB;IAI1B;;;;OAIG;IACH,aAAa;IAIb,cAAc,aAEZ;IAEF,yBAAyB,GAAI,iBAAiB;QAAE,WAAW,EAAE,eAAe,CAAA;KAAE,UAE5E;IAEF,aAAa,GAAI,iBAAiB;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,UAEpE;IAEF,+BAA+B,GAAI,kBAEhC;QACD,WAAW,EAAE;YAAE,WAAW,EAAE,iBAAiB,CAAA;SAAE,CAAC;KACjD,UAEC;IAEF,iBAAiB,GACd,WAAW,QAAQ,MACnB,iBAAiB;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,UAgBpC;IAEJ,MAAM;CA2BP"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/CameraView.js b/packages/expo-camera/build/CameraView.js
index 0da8747a033bf1..931d6b23b03ae0 100644
--- a/packages/expo-camera/build/CameraView.js
+++ b/packages/expo-camera/build/CameraView.js
@@ -26,9 +26,6 @@ function ensurePictureOptions(options) {
return options;
}
function ensureRecordingOptions(options = {}) {
- if (!options || typeof options !== 'object') {
- return {};
- }
if (options.mirror) {
console.warn('The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.');
}
@@ -118,7 +115,6 @@ export default class CameraView extends Component {
mode: 'picture',
flash: 'off',
};
- _cameraHandle;
_cameraRef = createRef();
_lastEvents = {};
_lastEventsTimes = {};
@@ -135,10 +131,7 @@ export default class CameraView extends Component {
* @platform android
* @platform ios
*/
- static async launchScanner(options) {
- if (!options) {
- options = { barcodeTypes: [] };
- }
+ static async launchScanner(options = { barcodeTypes: [] }) {
if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {
await CameraManager.launchScanner(options);
}
@@ -204,24 +197,16 @@ export default class CameraView extends Component {
this._cameraRef.current?.stopRecording();
}
_onCameraReady = () => {
- if (this.props.onCameraReady) {
- this.props.onCameraReady();
- }
+ this.props.onCameraReady?.();
};
_onAvailableLensesChanged = ({ nativeEvent }) => {
- if (this.props.onAvailableLensesChanged) {
- this.props.onAvailableLensesChanged(nativeEvent);
- }
+ this.props.onAvailableLensesChanged?.(nativeEvent);
};
_onMountError = ({ nativeEvent }) => {
- if (this.props.onMountError) {
- this.props.onMountError(nativeEvent);
- }
+ this.props.onMountError?.(nativeEvent);
};
_onResponsiveOrientationChanged = ({ nativeEvent, }) => {
- if (this.props.onResponsiveOrientationChanged) {
- this.props.onResponsiveOrientationChanged(nativeEvent);
- }
+ this.props.onResponsiveOrientationChanged?.(nativeEvent);
};
_onObjectDetected = (callback) => ({ nativeEvent }) => {
const { type } = nativeEvent;
@@ -237,14 +222,6 @@ export default class CameraView extends Component {
this._lastEvents[type] = JSON.stringify(nativeEvent);
}
};
- _setReference = (ref) => {
- if (ref) {
- // TODO(Bacon): Unify these - perhaps with hooks?
- if (Platform.OS === 'web') {
- this._cameraHandle = ref;
- }
- }
- };
render() {
const nativeProps = ensureNativeProps(this.props);
const onBarcodeScanned = this.props.onBarcodeScanned
diff --git a/packages/expo-camera/build/CameraView.js.map b/packages/expo-camera/build/CameraView.js.map
index 9ed47fe1755b33..112b859ce69498 100644
--- a/packages/expo-camera/build/CameraView.js.map
+++ b/packages/expo-camera/build/CameraView.js.map
@@ -1 +1 @@
-{"version":3,"file":"CameraView.js","sourceRoot":"","sources":["../src/CameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAA0B,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAY,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAcvD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,wBAAwB,GAC5B,EAAE,CAAC;AAEL,IAAI,8BAA8B,GAAG,KAAK,CAAC;AAC3C,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAE3B,SAAS,oBAAoB,CAAC,OAA8B;IAC1D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAChC,wBAAwB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;QACtD,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkC,EAAE;IAClE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,WAAW,GAGZ;IACC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IACjC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAA0B;IAChE;;OAEG;IACH,MAAM,CAAC,+BAA+B,GAAY,aAAa,CAAC,+BAA+B,CAAC;IAChG;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB;QAC3B,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,IAAI,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,aAAa,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IAED,cAAc;IACd;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,4BAA4B;QACvC,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC;YAChD,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,aAAa,CAAC,4BAA4B,EAAE,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,6BAA6B;QACjC,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB;QAC3B,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,oBAAoB;QAIlB,OAAO;YACL,+BAA+B,EAAE,aAAa,CAAC,+BAA+B;YAC9E,6BAA6B,EAAE,aAAa,CAAC,6BAA6B;SAC3E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAE3C,MAAM,CAAC,YAAY,GAAoB;QACrC,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK;KACb,CAAC;IAEF,aAAa,CAAiB;IAC9B,UAAU,GAAG,SAAS,EAAiB,CAAC;IACxC,WAAW,GAAoC,EAAE,CAAC;IAClD,gBAAgB,GAAkC,EAAE,CAAC;IAwCrD,KAAK,CAAC,gBAAgB,CAAC,OAA8B;QACnD,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAyB;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,CAAC,+BAA+B,EAAE,CAAC;YACxE,MAAM,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,CAAC,+BAA+B,EAAE,CAAC;YACxE,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAyC;QACrE,OAAO,aAAa,CAAC,WAAW,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,OAAgC;QAChD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,cAAc,GAAG,GAAG,EAAE;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,yBAAyB,GAAG,CAAC,EAAE,WAAW,EAAoC,EAAE,EAAE;QAChF,IAAI,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,aAAa,GAAG,CAAC,EAAE,WAAW,EAAwC,EAAE,EAAE;QACxE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,+BAA+B,GAAG,CAAC,EACjC,WAAW,GAGZ,EAAE,EAAE;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC;IAEF,iBAAiB,GACf,CAAC,QAAmB,EAAE,EAAE,CACxB,CAAC,EAAE,WAAW,EAAwB,EAAE,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;QAC7B,IACE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACtD,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,eAAe,EAC9E,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC;IAEJ,aAAa,GAAG,CAAC,GAAuB,EAAE,EAAE;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,iDAAiD;YACjD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,GAAG,GAAU,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM;QACJ,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAClD,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;QAEd,mBAAmB;QACnB,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CACV,oMAAoM,CACrM,CAAC;YACF,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC;QAED,OAAO,CACL,CAAC,UAAU,CACT,IAAI,WAAW,CAAC,CAChB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CACnC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CACjC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,wBAAwB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CACzD,cAAc,CAAC,CAAC,eAAe,CAAC,CAChC,8BAA8B,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EACrE,CACH,CAAC;IACJ,CAAC","sourcesContent":["import { Platform, UnavailabilityError, type EventSubscription } from 'expo-modules-core';\nimport { type Ref, Component, createRef } from 'react';\n\nimport {\n CameraCapturedPicture,\n CameraOrientation,\n CameraPictureOptions,\n CameraViewProps,\n CameraRecordingOptions,\n CameraViewRef,\n ScanningOptions,\n ScanningResult,\n VideoCodec,\n AvailableLenses,\n} from './Camera.types';\nimport ExpoCamera from './ExpoCamera';\nimport CameraManager from './ExpoCameraManager';\nimport { PictureRef } from './PictureRef';\nimport { ConversionTables, ensureNativeProps } from './utils/props';\n\nconst EventThrottleMs = 500;\n\nconst _PICTURE_SAVED_CALLBACKS: Record =\n {};\n\nlet loggedRenderingChildrenWarning = false;\nlet _GLOBAL_PICTURE_ID = 1;\n\nfunction ensurePictureOptions(options?: CameraPictureOptions): CameraPictureOptions {\n if (!options || typeof options !== 'object') {\n return {};\n }\n\n if (options.quality === undefined) {\n options.quality = 1;\n }\n\n if (options.mirror) {\n console.warn(\n 'The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.'\n );\n }\n\n if (options.onPictureSaved) {\n const id = _GLOBAL_PICTURE_ID++;\n _PICTURE_SAVED_CALLBACKS[id] = options.onPictureSaved;\n options.id = id;\n options.fastMode = true;\n }\n\n return options;\n}\n\nfunction ensureRecordingOptions(options: CameraRecordingOptions = {}): CameraRecordingOptions {\n if (!options || typeof options !== 'object') {\n return {};\n }\n\n if (options.mirror) {\n console.warn(\n 'The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.'\n );\n }\n\n return options;\n}\n\nfunction _onPictureSaved({\n nativeEvent,\n}: {\n nativeEvent: { data: CameraCapturedPicture; id: number };\n}) {\n const { id, data } = nativeEvent;\n const callback = _PICTURE_SAVED_CALLBACKS[id];\n if (callback) {\n callback(data);\n delete _PICTURE_SAVED_CALLBACKS[id];\n }\n}\n\nexport default class CameraView extends Component {\n /**\n * Property that determines if the current device has the ability to use `DataScannerViewController` (iOS 16+) or the Google code scanner (Android).\n */\n static isModernBarcodeScannerAvailable: boolean = CameraManager.isModernBarcodeScannerAvailable;\n /**\n * Check whether the current device has a camera. This is useful for web and simulators cases.\n * This isn't influenced by the Permissions API (all platforms), or HTTP usage (in the browser).\n * You will still need to check if the native permission has been accepted.\n * @platform web\n */\n static async isAvailableAsync(): Promise {\n if (!CameraManager.isAvailableAsync) {\n throw new UnavailabilityError('expo-camera', 'isAvailableAsync');\n }\n\n return CameraManager.isAvailableAsync();\n }\n\n // @needsAudit\n /**\n * Queries the device for the available video codecs that can be used in video recording.\n * @return A promise that resolves to a list of strings that represents available codecs.\n * @platform ios\n */\n static async getAvailableVideoCodecsAsync(): Promise {\n if (!CameraManager.getAvailableVideoCodecsAsync) {\n throw new UnavailabilityError('Camera', 'getAvailableVideoCodecsAsync');\n }\n\n return CameraManager.getAvailableVideoCodecsAsync();\n }\n\n /**\n * Get picture sizes that are supported by the device.\n * @return Returns a Promise that resolves to an array of strings representing picture sizes that can be passed to `pictureSize` prop.\n * The list varies across Android devices but is the same for every iOS.\n */\n async getAvailablePictureSizesAsync(): Promise {\n return (await this._cameraRef.current?.getAvailablePictureSizes()) ?? [];\n }\n\n /**\n * Returns the available lenses for the currently selected camera.\n *\n * @return Returns a Promise that resolves to an array of strings representing the lens type that can be passed to `selectedLens` prop.\n * @platform ios\n */\n async getAvailableLensesAsync(): Promise {\n return (await this._cameraRef.current?.getAvailableLenses()) ?? [];\n }\n\n /**\n * Returns an object with the supported features of the camera on the current device.\n */\n getSupportedFeatures(): {\n isModernBarcodeScannerAvailable: boolean;\n toggleRecordingAsyncAvailable: boolean;\n } {\n return {\n isModernBarcodeScannerAvailable: CameraManager.isModernBarcodeScannerAvailable,\n toggleRecordingAsyncAvailable: CameraManager.toggleRecordingAsyncAvailable,\n };\n }\n\n /**\n * Resumes the camera preview.\n */\n async resumePreview(): Promise {\n return this._cameraRef.current?.resumePreview();\n }\n\n /**\n * Pauses the camera preview. It is not recommended to use `takePictureAsync` when preview is paused.\n */\n async pausePreview(): Promise {\n return this._cameraRef.current?.pausePreview();\n }\n\n // Values under keys from this object will be transformed to native options\n static ConversionTables = ConversionTables;\n\n static defaultProps: CameraViewProps = {\n zoom: 0,\n facing: 'back',\n enableTorch: false,\n mode: 'picture',\n flash: 'off',\n };\n\n _cameraHandle?: number | null;\n _cameraRef = createRef();\n _lastEvents: { [eventName: string]: string } = {};\n _lastEventsTimes: { [eventName: string]: Date } = {};\n\n /**\n * Takes a picture and returns an object that references the native image instance.\n * > **Note**: Make sure to wait for the [`onCameraReady`](#oncameraready) callback before calling this method.\n *\n * > **Note:** Avoid calling this method while the preview is paused. On Android, this will throw an error. On iOS, this will take a picture of the last frame that is currently on screen.\n *\n * @param optionsWithRef An object in form of `CameraPictureOptions` type and `pictureRef` key set to `true`.\n * @return Returns a Promise that resolves to `PictureRef` class which contains basic image data, and a reference to native image instance which can be passed\n * to other Expo packages supporting handling such an instance.\n */\n async takePictureAsync(\n optionsWithRef: CameraPictureOptions & { pictureRef: true }\n ): Promise;\n\n /**\n * Takes a picture and saves it to app's cache directory. Photos are rotated to match device's orientation\n * (if `options.skipProcessing` flag is not enabled) and scaled to match the preview.\n * > **Note**: Make sure to wait for the [`onCameraReady`](#oncameraready) callback before calling this method.\n *\n * > **Note:** Avoid calling this method while the preview is paused. On Android, this will throw an error. On iOS, this will take a picture of the last frame that is currently on screen.\n *\n * @param options An object in form of `CameraPictureOptions` type.\n * @return Returns a Promise that resolves to `CameraCapturedPicture` object, where `uri` is a URI to the local image file on Android,\n * iOS, and a base64 string on web (usable as the source for an `Image` element). The `width` and `height` properties specify\n * the dimensions of the image.\n *\n * `base64` is included if the `base64` option was truthy, and is a string containing the JPEG data\n * of the image in Base64. Prepend it with `'data:image/jpg;base64,'` to get a data URI, which you can use as the source\n * for an `Image` element for example.\n *\n * `exif` is included if the `exif` option was truthy, and is an object containing EXIF\n * data for the image. The names of its properties are EXIF tags and their values are the values for those tags.\n *\n * > On native platforms, the local image URI is temporary. Use [`FileSystem.copy`](filesystem/#copydestination-1)\n * > to make a permanent copy of the image.\n */\n async takePictureAsync(options?: CameraPictureOptions): Promise;\n\n async takePictureAsync(options?: CameraPictureOptions) {\n const pictureOptions = ensurePictureOptions(options);\n\n if (Platform.OS === 'ios' && options?.pictureRef) {\n return this._cameraRef.current?.takePictureRef?.(options);\n }\n return this._cameraRef.current?.takePicture(pictureOptions);\n }\n\n /**\n * On Android, we will use the [Google code scanner](https://developers.google.com/ml-kit/vision/barcode-scanning/code-scanner).\n * On iOS, presents a modal view controller that uses the [`DataScannerViewController`](https://developer.apple.com/documentation/visionkit/scanning_data_with_the_camera) available on iOS 16+.\n * @platform android\n * @platform ios\n */\n static async launchScanner(options?: ScanningOptions): Promise {\n if (!options) {\n options = { barcodeTypes: [] };\n }\n if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n await CameraManager.launchScanner(options);\n }\n }\n\n /**\n * Dismiss the scanner presented by `launchScanner`.\n * > **info** On Android, the scanner is dismissed automatically when a barcode is scanned.\n * @platform ios\n */\n static async dismissScanner(): Promise {\n if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n await CameraManager.dismissScanner();\n }\n }\n\n /**\n * Invokes the `listener` function when a bar code has been successfully scanned. The callback is provided with\n * an object of the `ScanningResult` shape, where the `type` refers to the bar code type that was scanned and the `data` is the information encoded in the bar code\n * (in this case of QR codes, this is often a URL). See [`BarcodeType`](#barcodetype) for supported values.\n * @param listener Invoked with the [ScanningResult](#scanningresult) when a bar code has been successfully scanned.\n *\n * @platform ios\n * @platform android\n */\n static onModernBarcodeScanned(listener: (event: ScanningResult) => void): EventSubscription {\n return CameraManager.addListener('onModernBarcodeScanned', listener);\n }\n\n /**\n * Starts recording a video that will be saved to cache directory. Videos are rotated to match device's orientation.\n * Flipping camera during a recording results in stopping it.\n * @param options A map of `CameraRecordingOptions` type.\n * @return Returns a Promise that resolves to an object containing video file `uri` property and a `codec` property on iOS.\n * The Promise is returned if `stopRecording` was invoked, one of `maxDuration` and `maxFileSize` is reached or camera preview is stopped.\n * @platform android\n * @platform ios\n */\n async recordAsync(options?: CameraRecordingOptions) {\n const recordingOptions = ensureRecordingOptions(options);\n return this._cameraRef.current?.record(recordingOptions);\n }\n\n /**\n * Pauses or resumes the video recording. Only has an effect if there is an active recording. On `iOS`, this method only supported on `iOS` 18.\n *\n * @example\n * ```ts\n * const { toggleRecordingAsyncAvailable } = getSupportedFeatures()\n *\n * return (\n * {toggleRecordingAsyncAvailable && (\n * \n * )}\n * )\n * ```\n */\n async toggleRecordingAsync() {\n return this._cameraRef.current?.toggleRecording();\n }\n\n /**\n * Stops recording if any is in progress.\n * @platform android\n * @platform ios\n */\n stopRecording() {\n this._cameraRef.current?.stopRecording();\n }\n\n _onCameraReady = () => {\n if (this.props.onCameraReady) {\n this.props.onCameraReady();\n }\n };\n\n _onAvailableLensesChanged = ({ nativeEvent }: { nativeEvent: AvailableLenses }) => {\n if (this.props.onAvailableLensesChanged) {\n this.props.onAvailableLensesChanged(nativeEvent);\n }\n };\n\n _onMountError = ({ nativeEvent }: { nativeEvent: { message: string } }) => {\n if (this.props.onMountError) {\n this.props.onMountError(nativeEvent);\n }\n };\n\n _onResponsiveOrientationChanged = ({\n nativeEvent,\n }: {\n nativeEvent: { orientation: CameraOrientation };\n }) => {\n if (this.props.onResponsiveOrientationChanged) {\n this.props.onResponsiveOrientationChanged(nativeEvent);\n }\n };\n\n _onObjectDetected =\n (callback?: Function) =>\n ({ nativeEvent }: { nativeEvent: any }) => {\n const { type } = nativeEvent;\n if (\n this._lastEvents[type] &&\n this._lastEventsTimes[type] &&\n JSON.stringify(nativeEvent) === this._lastEvents[type] &&\n new Date().getTime() - this._lastEventsTimes[type].getTime() < EventThrottleMs\n ) {\n return;\n }\n\n if (callback) {\n callback(nativeEvent);\n this._lastEventsTimes[type] = new Date();\n this._lastEvents[type] = JSON.stringify(nativeEvent);\n }\n };\n\n _setReference = (ref: Ref) => {\n if (ref) {\n // TODO(Bacon): Unify these - perhaps with hooks?\n if (Platform.OS === 'web') {\n this._cameraHandle = ref as any;\n }\n }\n };\n\n render() {\n const nativeProps = ensureNativeProps(this.props);\n const onBarcodeScanned = this.props.onBarcodeScanned\n ? this._onObjectDetected(this.props.onBarcodeScanned)\n : undefined;\n\n // @ts-expect-error\n if (nativeProps.children && !loggedRenderingChildrenWarning) {\n console.warn(\n 'The component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the Camera, consider using absolute positioning.'\n );\n loggedRenderingChildrenWarning = true;\n }\n\n return (\n \n );\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"CameraView.js","sourceRoot":"","sources":["../src/CameraView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Platform, UnavailabilityError, type EventSubscription } from 'expo-modules-core';\nimport { Component, createRef } from 'react';\n\nimport {\n CameraCapturedPicture,\n CameraOrientation,\n CameraPictureOptions,\n CameraViewProps,\n CameraRecordingOptions,\n CameraViewRef,\n ScanningOptions,\n ScanningResult,\n VideoCodec,\n AvailableLenses,\n} from './Camera.types';\nimport ExpoCamera from './ExpoCamera';\nimport CameraManager from './ExpoCameraManager';\nimport { PictureRef } from './PictureRef';\nimport { ConversionTables, ensureNativeProps } from './utils/props';\n\nconst EventThrottleMs = 500;\n\nconst _PICTURE_SAVED_CALLBACKS: Record =\n {};\n\nlet loggedRenderingChildrenWarning = false;\nlet _GLOBAL_PICTURE_ID = 1;\n\nfunction ensurePictureOptions(options?: CameraPictureOptions): CameraPictureOptions {\n if (!options || typeof options !== 'object') {\n return {};\n }\n\n if (options.quality === undefined) {\n options.quality = 1;\n }\n\n if (options.mirror) {\n console.warn(\n 'The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.'\n );\n }\n\n if (options.onPictureSaved) {\n const id = _GLOBAL_PICTURE_ID++;\n _PICTURE_SAVED_CALLBACKS[id] = options.onPictureSaved;\n options.id = id;\n options.fastMode = true;\n }\n\n return options;\n}\n\nfunction ensureRecordingOptions(options: CameraRecordingOptions = {}): CameraRecordingOptions {\n if (options.mirror) {\n console.warn(\n 'The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.'\n );\n }\n\n return options;\n}\n\nfunction _onPictureSaved({\n nativeEvent,\n}: {\n nativeEvent: { data: CameraCapturedPicture; id: number };\n}) {\n const { id, data } = nativeEvent;\n const callback = _PICTURE_SAVED_CALLBACKS[id];\n if (callback) {\n callback(data);\n delete _PICTURE_SAVED_CALLBACKS[id];\n }\n}\n\nexport default class CameraView extends Component {\n /**\n * Property that determines if the current device has the ability to use `DataScannerViewController` (iOS 16+) or the Google code scanner (Android).\n */\n static isModernBarcodeScannerAvailable: boolean = CameraManager.isModernBarcodeScannerAvailable;\n /**\n * Check whether the current device has a camera. This is useful for web and simulators cases.\n * This isn't influenced by the Permissions API (all platforms), or HTTP usage (in the browser).\n * You will still need to check if the native permission has been accepted.\n * @platform web\n */\n static async isAvailableAsync(): Promise {\n if (!CameraManager.isAvailableAsync) {\n throw new UnavailabilityError('expo-camera', 'isAvailableAsync');\n }\n\n return CameraManager.isAvailableAsync();\n }\n\n // @needsAudit\n /**\n * Queries the device for the available video codecs that can be used in video recording.\n * @return A promise that resolves to a list of strings that represents available codecs.\n * @platform ios\n */\n static async getAvailableVideoCodecsAsync(): Promise {\n if (!CameraManager.getAvailableVideoCodecsAsync) {\n throw new UnavailabilityError('Camera', 'getAvailableVideoCodecsAsync');\n }\n\n return CameraManager.getAvailableVideoCodecsAsync();\n }\n\n /**\n * Get picture sizes that are supported by the device.\n * @return Returns a Promise that resolves to an array of strings representing picture sizes that can be passed to `pictureSize` prop.\n * The list varies across Android devices but is the same for every iOS.\n */\n async getAvailablePictureSizesAsync(): Promise {\n return (await this._cameraRef.current?.getAvailablePictureSizes()) ?? [];\n }\n\n /**\n * Returns the available lenses for the currently selected camera.\n *\n * @return Returns a Promise that resolves to an array of strings representing the lens type that can be passed to `selectedLens` prop.\n * @platform ios\n */\n async getAvailableLensesAsync(): Promise {\n return (await this._cameraRef.current?.getAvailableLenses()) ?? [];\n }\n\n /**\n * Returns an object with the supported features of the camera on the current device.\n */\n getSupportedFeatures(): {\n isModernBarcodeScannerAvailable: boolean;\n toggleRecordingAsyncAvailable: boolean;\n } {\n return {\n isModernBarcodeScannerAvailable: CameraManager.isModernBarcodeScannerAvailable,\n toggleRecordingAsyncAvailable: CameraManager.toggleRecordingAsyncAvailable,\n };\n }\n\n /**\n * Resumes the camera preview.\n */\n async resumePreview(): Promise {\n return this._cameraRef.current?.resumePreview();\n }\n\n /**\n * Pauses the camera preview. It is not recommended to use `takePictureAsync` when preview is paused.\n */\n async pausePreview(): Promise {\n return this._cameraRef.current?.pausePreview();\n }\n\n // Values under keys from this object will be transformed to native options\n static ConversionTables = ConversionTables;\n\n static defaultProps: CameraViewProps = {\n zoom: 0,\n facing: 'back',\n enableTorch: false,\n mode: 'picture',\n flash: 'off',\n };\n\n _cameraRef = createRef();\n _lastEvents: { [eventName: string]: string } = {};\n _lastEventsTimes: { [eventName: string]: Date } = {};\n\n /**\n * Takes a picture and returns an object that references the native image instance.\n * > **Note**: Make sure to wait for the [`onCameraReady`](#oncameraready) callback before calling this method.\n *\n * > **Note:** Avoid calling this method while the preview is paused. On Android, this will throw an error. On iOS, this will take a picture of the last frame that is currently on screen.\n *\n * @param optionsWithRef An object in form of `CameraPictureOptions` type and `pictureRef` key set to `true`.\n * @return Returns a Promise that resolves to `PictureRef` class which contains basic image data, and a reference to native image instance which can be passed\n * to other Expo packages supporting handling such an instance.\n */\n async takePictureAsync(\n optionsWithRef: CameraPictureOptions & { pictureRef: true }\n ): Promise;\n\n /**\n * Takes a picture and saves it to app's cache directory. Photos are rotated to match device's orientation\n * (if `options.skipProcessing` flag is not enabled) and scaled to match the preview.\n * > **Note**: Make sure to wait for the [`onCameraReady`](#oncameraready) callback before calling this method.\n *\n * > **Note:** Avoid calling this method while the preview is paused. On Android, this will throw an error. On iOS, this will take a picture of the last frame that is currently on screen.\n *\n * @param options An object in form of `CameraPictureOptions` type.\n * @return Returns a Promise that resolves to `CameraCapturedPicture` object, where `uri` is a URI to the local image file on Android,\n * iOS, and a base64 string on web (usable as the source for an `Image` element). The `width` and `height` properties specify\n * the dimensions of the image.\n *\n * `base64` is included if the `base64` option was truthy, and is a string containing the JPEG data\n * of the image in Base64. Prepend it with `'data:image/jpg;base64,'` to get a data URI, which you can use as the source\n * for an `Image` element for example.\n *\n * `exif` is included if the `exif` option was truthy, and is an object containing EXIF\n * data for the image. The names of its properties are EXIF tags and their values are the values for those tags.\n *\n * > On native platforms, the local image URI is temporary. Use [`FileSystem.copy`](filesystem/#copydestination-1)\n * > to make a permanent copy of the image.\n */\n async takePictureAsync(options?: CameraPictureOptions): Promise;\n\n async takePictureAsync(options?: CameraPictureOptions) {\n const pictureOptions = ensurePictureOptions(options);\n\n if (Platform.OS === 'ios' && options?.pictureRef) {\n return this._cameraRef.current?.takePictureRef?.(options);\n }\n return this._cameraRef.current?.takePicture(pictureOptions);\n }\n\n /**\n * On Android, we will use the [Google code scanner](https://developers.google.com/ml-kit/vision/barcode-scanning/code-scanner).\n * On iOS, presents a modal view controller that uses the [`DataScannerViewController`](https://developer.apple.com/documentation/visionkit/scanning_data_with_the_camera) available on iOS 16+.\n * @platform android\n * @platform ios\n */\n static async launchScanner(options: ScanningOptions = { barcodeTypes: [] }): Promise {\n if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n await CameraManager.launchScanner(options);\n }\n }\n\n /**\n * Dismiss the scanner presented by `launchScanner`.\n * > **info** On Android, the scanner is dismissed automatically when a barcode is scanned.\n * @platform ios\n */\n static async dismissScanner(): Promise {\n if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n await CameraManager.dismissScanner();\n }\n }\n\n /**\n * Invokes the `listener` function when a bar code has been successfully scanned. The callback is provided with\n * an object of the `ScanningResult` shape, where the `type` refers to the bar code type that was scanned and the `data` is the information encoded in the bar code\n * (in this case of QR codes, this is often a URL). See [`BarcodeType`](#barcodetype) for supported values.\n * @param listener Invoked with the [ScanningResult](#scanningresult) when a bar code has been successfully scanned.\n *\n * @platform ios\n * @platform android\n */\n static onModernBarcodeScanned(listener: (event: ScanningResult) => void): EventSubscription {\n return CameraManager.addListener('onModernBarcodeScanned', listener);\n }\n\n /**\n * Starts recording a video that will be saved to cache directory. Videos are rotated to match device's orientation.\n * Flipping camera during a recording results in stopping it.\n * @param options A map of `CameraRecordingOptions` type.\n * @return Returns a Promise that resolves to an object containing video file `uri` property and a `codec` property on iOS.\n * The Promise is returned if `stopRecording` was invoked, one of `maxDuration` and `maxFileSize` is reached or camera preview is stopped.\n * @platform android\n * @platform ios\n */\n async recordAsync(options?: CameraRecordingOptions) {\n const recordingOptions = ensureRecordingOptions(options);\n return this._cameraRef.current?.record(recordingOptions);\n }\n\n /**\n * Pauses or resumes the video recording. Only has an effect if there is an active recording. On `iOS`, this method only supported on `iOS` 18.\n *\n * @example\n * ```ts\n * const { toggleRecordingAsyncAvailable } = getSupportedFeatures()\n *\n * return (\n * {toggleRecordingAsyncAvailable && (\n * \n * )}\n * )\n * ```\n */\n async toggleRecordingAsync() {\n return this._cameraRef.current?.toggleRecording();\n }\n\n /**\n * Stops recording if any is in progress.\n * @platform android\n * @platform ios\n */\n stopRecording() {\n this._cameraRef.current?.stopRecording();\n }\n\n _onCameraReady = () => {\n this.props.onCameraReady?.();\n };\n\n _onAvailableLensesChanged = ({ nativeEvent }: { nativeEvent: AvailableLenses }) => {\n this.props.onAvailableLensesChanged?.(nativeEvent);\n };\n\n _onMountError = ({ nativeEvent }: { nativeEvent: { message: string } }) => {\n this.props.onMountError?.(nativeEvent);\n };\n\n _onResponsiveOrientationChanged = ({\n nativeEvent,\n }: {\n nativeEvent: { orientation: CameraOrientation };\n }) => {\n this.props.onResponsiveOrientationChanged?.(nativeEvent);\n };\n\n _onObjectDetected =\n (callback?: Function) =>\n ({ nativeEvent }: { nativeEvent: any }) => {\n const { type } = nativeEvent;\n if (\n this._lastEvents[type] &&\n this._lastEventsTimes[type] &&\n JSON.stringify(nativeEvent) === this._lastEvents[type] &&\n new Date().getTime() - this._lastEventsTimes[type].getTime() < EventThrottleMs\n ) {\n return;\n }\n\n if (callback) {\n callback(nativeEvent);\n this._lastEventsTimes[type] = new Date();\n this._lastEvents[type] = JSON.stringify(nativeEvent);\n }\n };\n\n render() {\n const nativeProps = ensureNativeProps(this.props);\n const onBarcodeScanned = this.props.onBarcodeScanned\n ? this._onObjectDetected(this.props.onBarcodeScanned)\n : undefined;\n\n // @ts-expect-error\n if (nativeProps.children && !loggedRenderingChildrenWarning) {\n console.warn(\n 'The component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the Camera, consider using absolute positioning.'\n );\n loggedRenderingChildrenWarning = true;\n }\n\n return (\n \n );\n }\n}\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/build/ExpoCamera.web.d.ts.map b/packages/expo-camera/build/ExpoCamera.web.d.ts.map
index 58adb52805d294..4cc0ba3000f1f4 100644
--- a/packages/expo-camera/build/ExpoCamera.web.d.ts.map
+++ b/packages/expo-camera/build/ExpoCamera.web.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoCamera.web.d.ts","sourceRoot":"","sources":["../src/ExpoCamera.web.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,QAAA,MAAM,cAAc,GAAI,mCAKrB,iBAAiB,CAAC,iBAAiB,CAAC,gCA0HtC,CAAC;AAEF,eAAe,cAAc,CAAC"}
\ No newline at end of file
+{"version":3,"file":"ExpoCamera.web.d.ts","sourceRoot":"","sources":["../src/ExpoCamera.web.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,QAAA,MAAM,cAAc,GAAI,mCAKrB,iBAAiB,CAAC,iBAAiB,CAAC,gCA0GtC,CAAC;AAEF,eAAe,cAAc,CAAC"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/ExpoCamera.web.js b/packages/expo-camera/build/ExpoCamera.web.js
index 8b87a101f4670e..c05246c88b377b 100644
--- a/packages/expo-camera/build/ExpoCamera.web.js
+++ b/packages/expo-camera/build/ExpoCamera.web.js
@@ -9,41 +9,31 @@ import { useWebBarcodeScanner } from './web/useWebBarcodeScanner';
import { useWebCameraStream } from './web/useWebCameraStream';
const ExponentCamera = ({ facing, poster, ref, ...props }) => {
const video = useRef(null);
- const cameraSettings = useMemo(() => {
- return {
- ...props,
- flashMode: props.enableTorch ? 'torch' : props.flashMode,
- };
- }, [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]);
+ const cameraSettings = useMemo(() => ({
+ ...props,
+ flashMode: props.enableTorch ? 'torch' : props.flashMode,
+ }), [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]);
const native = useWebCameraStream(video, facing, cameraSettings, {
- onCameraReady() {
- if (props.onCameraReady) {
- props.onCameraReady();
- }
- },
+ onCameraReady: props.onCameraReady,
onMountError: props.onMountError,
});
const barcodeTypes = props.barcodeScannerSettings?.barcodeTypes;
const isScannerEnabled = useMemo(() => {
- return Boolean(barcodeTypes?.length && !!props.onBarcodeScanned);
+ return !!barcodeTypes?.length && !!props.onBarcodeScanned;
}, [barcodeTypes, props.onBarcodeScanned]);
useWebBarcodeScanner(video, {
interval: 300,
isEnabled: isScannerEnabled,
barcodeTypes: barcodeTypes ?? [],
isMirrored: native.type === 'front',
- onScanned(event) {
- if (props.onBarcodeScanned) {
- props.onBarcodeScanned(event);
- }
- },
+ onScanned: props.onBarcodeScanned,
});
useImperativeHandle(ref, () => ({
async getAvailablePictureSizes() {
return PictureSizes;
},
async takePicture(options) {
- if (!video.current || video.current?.readyState !== video.current?.HAVE_ENOUGH_DATA) {
+ if (!video.current || video.current.readyState !== video.current.HAVE_ENOUGH_DATA) {
throw new CodedError('ERR_CAMERA_NOT_READY', 'HTMLVideoElement does not have enough camera data to construct an image yet.');
}
const settings = native.mediaTrackSettings;
@@ -52,14 +42,9 @@ const ExponentCamera = ({ facing, poster, ref, ...props }) => {
}
return capture(video.current, settings, {
...options,
- // This will always be defined, the option gets added to a queue in the upper-level. We should replace the original so it isn't called twice.
onPictureSaved(picture) {
- if (options.onPictureSaved) {
- options.onPictureSaved(picture);
- }
- if (props.onPictureSaved) {
- props.onPictureSaved({ nativeEvent: { data: picture, id: -1 } });
- }
+ options.onPictureSaved?.(picture);
+ props.onPictureSaved?.({ nativeEvent: { data: picture, id: -1 } });
},
});
},
@@ -91,9 +76,6 @@ const ExponentCamera = ({ facing, poster, ref, ...props }) => {
return [];
},
}), [native.mediaTrackSettings, props.onPictureSaved]);
- // TODO(Bacon): Create a universal prop, on native the microphone is only used when recording videos.
- // Because we don't support recording video in the browser we don't need the user to give microphone permissions.
- const isMuted = true;
const style = useMemo(() => {
const isFrontFacingCamera = native.type === CameraManager.Type.front;
return [
@@ -107,7 +89,7 @@ const ExponentCamera = ({ facing, poster, ref, ...props }) => {
];
}, [props.pointerEvents, native.type]);
return (
- );
};
diff --git a/packages/expo-camera/build/ExpoCamera.web.js.map b/packages/expo-camera/build/ExpoCamera.web.js.map
index fa14176d3f5f9e..89fffedddde9d1 100644
--- a/packages/expo-camera/build/ExpoCamera.web.js.map
+++ b/packages/expo-camera/build/ExpoCamera.web.js.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoCamera.web.js","sourceRoot":"","sources":["../src/ExpoCamera.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CodedError } from 'expo-modules-core';\nimport {\n type PropsWithChildren,\n useRef,\n useMemo,\n useImperativeHandle,\n type ComponentProps,\n type Ref,\n} from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport createElement from 'react-native-web/dist/exports/createElement';\n\nimport {\n CameraNativeProps,\n CameraCapturedPicture,\n CameraPictureOptions,\n CameraType,\n} from './Camera.types';\nimport CameraManager from './ExpoCameraManager.web';\nimport { capture } from './web/WebCameraUtils';\nimport { PictureSizes } from './web/WebConstants';\nimport { useWebBarcodeScanner } from './web/useWebBarcodeScanner';\nimport { useWebCameraStream } from './web/useWebCameraStream';\n\nexport interface ExponentCameraRef {\n getAvailablePictureSizes: (ratio: string) => Promise;\n takePicture: (options: CameraPictureOptions) => Promise;\n resumePreview: () => Promise;\n pausePreview: () => Promise;\n}\n\nconst ExponentCamera = ({\n facing,\n poster,\n ref,\n ...props\n}: PropsWithChildren) => {\n const video = useRef(null);\n\n const cameraSettings = useMemo(() => {\n return {\n ...props,\n flashMode: props.enableTorch ? 'torch' : props.flashMode,\n };\n }, [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]);\n\n const native = useWebCameraStream(video, facing as CameraType, cameraSettings, {\n onCameraReady() {\n if (props.onCameraReady) {\n props.onCameraReady();\n }\n },\n onMountError: props.onMountError,\n });\n\n const barcodeTypes = props.barcodeScannerSettings?.barcodeTypes;\n\n const isScannerEnabled = useMemo(() => {\n return Boolean(barcodeTypes?.length && !!props.onBarcodeScanned);\n }, [barcodeTypes, props.onBarcodeScanned]);\n\n useWebBarcodeScanner(video, {\n interval: 300,\n isEnabled: isScannerEnabled,\n barcodeTypes: barcodeTypes ?? [],\n isMirrored: native.type === 'front',\n onScanned(event) {\n if (props.onBarcodeScanned) {\n props.onBarcodeScanned(event);\n }\n },\n });\n\n useImperativeHandle(\n ref,\n () => ({\n async getAvailablePictureSizes(): Promise {\n return PictureSizes;\n },\n async takePicture(options: CameraPictureOptions): Promise {\n if (!video.current || video.current?.readyState !== video.current?.HAVE_ENOUGH_DATA) {\n throw new CodedError(\n 'ERR_CAMERA_NOT_READY',\n 'HTMLVideoElement does not have enough camera data to construct an image yet.'\n );\n }\n const settings = native.mediaTrackSettings;\n if (!settings) {\n throw new CodedError('ERR_CAMERA_NOT_READY', 'MediaStream is not ready yet.');\n }\n\n return capture(video.current, settings, {\n ...options,\n // This will always be defined, the option gets added to a queue in the upper-level. We should replace the original so it isn't called twice.\n onPictureSaved(picture) {\n if (options.onPictureSaved) {\n options.onPictureSaved(picture);\n }\n if (props.onPictureSaved) {\n props.onPictureSaved({ nativeEvent: { data: picture, id: -1 } });\n }\n },\n });\n },\n async resumePreview(): Promise {\n if (video.current) {\n video.current.play();\n }\n },\n async pausePreview(): Promise {\n if (video.current) {\n video.current.pause();\n }\n },\n async stopRecording(): Promise {\n console.warn('stopRecording is not supported on web.');\n },\n async record(): Promise<{ uri: string }> {\n console.warn('record is not supported on web.');\n return { uri: '' };\n },\n async toggleRecording() {\n console.warn('toggleRecording is not supported on web.');\n },\n async launchModernScanner() {\n console.warn('launchModernScanner is not supported on web.');\n },\n async getAvailableLenses() {\n console.warn('getAvailableLenses is not supported on web.');\n return [];\n },\n }),\n [native.mediaTrackSettings, props.onPictureSaved]\n );\n\n // TODO(Bacon): Create a universal prop, on native the microphone is only used when recording videos.\n // Because we don't support recording video in the browser we don't need the user to give microphone permissions.\n const isMuted = true;\n\n const style = useMemo>(() => {\n const isFrontFacingCamera = native.type === CameraManager.Type.front;\n return [\n StyleSheet.absoluteFill,\n styles.video,\n {\n pointerEvents: props.pointerEvents,\n // Flip the camera\n transform: isFrontFacingCamera ? [{ scaleX: -1 }] : undefined,\n },\n ];\n }, [props.pointerEvents, native.type]);\n\n return (\n \n \n {props.children}\n \n );\n};\n\nexport default ExponentCamera;\n\nconst Video = (\n props: ComponentProps & {\n autoPlay?: boolean;\n playsInline?: boolean;\n muted?: boolean;\n poster?: string;\n ref: Ref;\n }\n) => createElement('video', { ...props });\n\nconst styles = StyleSheet.create({\n videoWrapper: {\n flex: 1,\n alignItems: 'stretch',\n pointerEvents: 'box-none',\n },\n video: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n});\n"]}
\ No newline at end of file
+{"version":3,"file":"ExpoCamera.web.js","sourceRoot":"","sources":["../src/ExpoCamera.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CodedError } from 'expo-modules-core';\nimport {\n type PropsWithChildren,\n useRef,\n useMemo,\n useImperativeHandle,\n type ComponentProps,\n type Ref,\n} from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport createElement from 'react-native-web/dist/exports/createElement';\n\nimport {\n CameraNativeProps,\n CameraCapturedPicture,\n CameraPictureOptions,\n CameraType,\n} from './Camera.types';\nimport CameraManager from './ExpoCameraManager.web';\nimport { capture } from './web/WebCameraUtils';\nimport { PictureSizes } from './web/WebConstants';\nimport { useWebBarcodeScanner } from './web/useWebBarcodeScanner';\nimport { useWebCameraStream } from './web/useWebCameraStream';\n\nexport interface ExponentCameraRef {\n getAvailablePictureSizes: (ratio: string) => Promise;\n takePicture: (options: CameraPictureOptions) => Promise;\n resumePreview: () => Promise;\n pausePreview: () => Promise;\n}\n\nconst ExponentCamera = ({\n facing,\n poster,\n ref,\n ...props\n}: PropsWithChildren) => {\n const video = useRef(null);\n\n const cameraSettings = useMemo(\n () => ({\n ...props,\n flashMode: props.enableTorch ? 'torch' : props.flashMode,\n }),\n [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]\n );\n\n const native = useWebCameraStream(video, facing as CameraType, cameraSettings, {\n onCameraReady: props.onCameraReady,\n onMountError: props.onMountError,\n });\n\n const barcodeTypes = props.barcodeScannerSettings?.barcodeTypes;\n\n const isScannerEnabled = useMemo(() => {\n return !!barcodeTypes?.length && !!props.onBarcodeScanned;\n }, [barcodeTypes, props.onBarcodeScanned]);\n\n useWebBarcodeScanner(video, {\n interval: 300,\n isEnabled: isScannerEnabled,\n barcodeTypes: barcodeTypes ?? [],\n isMirrored: native.type === 'front',\n onScanned: props.onBarcodeScanned,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n async getAvailablePictureSizes(): Promise {\n return PictureSizes;\n },\n async takePicture(options: CameraPictureOptions): Promise {\n if (!video.current || video.current.readyState !== video.current.HAVE_ENOUGH_DATA) {\n throw new CodedError(\n 'ERR_CAMERA_NOT_READY',\n 'HTMLVideoElement does not have enough camera data to construct an image yet.'\n );\n }\n const settings = native.mediaTrackSettings;\n if (!settings) {\n throw new CodedError('ERR_CAMERA_NOT_READY', 'MediaStream is not ready yet.');\n }\n\n return capture(video.current, settings, {\n ...options,\n onPictureSaved(picture) {\n options.onPictureSaved?.(picture);\n props.onPictureSaved?.({ nativeEvent: { data: picture, id: -1 } });\n },\n });\n },\n async resumePreview(): Promise {\n if (video.current) {\n video.current.play();\n }\n },\n async pausePreview(): Promise {\n if (video.current) {\n video.current.pause();\n }\n },\n async stopRecording(): Promise {\n console.warn('stopRecording is not supported on web.');\n },\n async record(): Promise<{ uri: string }> {\n console.warn('record is not supported on web.');\n return { uri: '' };\n },\n async toggleRecording() {\n console.warn('toggleRecording is not supported on web.');\n },\n async launchModernScanner() {\n console.warn('launchModernScanner is not supported on web.');\n },\n async getAvailableLenses() {\n console.warn('getAvailableLenses is not supported on web.');\n return [];\n },\n }),\n [native.mediaTrackSettings, props.onPictureSaved]\n );\n\n const style = useMemo>(() => {\n const isFrontFacingCamera = native.type === CameraManager.Type.front;\n return [\n StyleSheet.absoluteFill,\n styles.video,\n {\n pointerEvents: props.pointerEvents,\n // Flip the camera\n transform: isFrontFacingCamera ? [{ scaleX: -1 }] : undefined,\n },\n ];\n }, [props.pointerEvents, native.type]);\n\n return (\n \n \n {props.children}\n \n );\n};\n\nexport default ExponentCamera;\n\nconst Video = (\n props: ComponentProps & {\n autoPlay?: boolean;\n playsInline?: boolean;\n muted?: boolean;\n poster?: string;\n ref: Ref;\n }\n) => createElement('video', { ...props });\n\nconst styles = StyleSheet.create({\n videoWrapper: {\n flex: 1,\n alignItems: 'stretch',\n pointerEvents: 'box-none',\n },\n video: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n});\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/build/ExpoCameraManager.web.d.ts.map b/packages/expo-camera/build/ExpoCameraManager.web.d.ts.map
index 4e7604d727df3a..a7fa5271c6ed3d 100644
--- a/packages/expo-camera/build/ExpoCameraManager.web.d.ts.map
+++ b/packages/expo-camera/build/ExpoCameraManager.web.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoCameraManager.web.d.ts","sourceRoot":"","sources":["../src/ExpoCameraManager.web.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;;;;4BA0G3B,MAAM,aAAa,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAuCxC,OAAO,CAAC,OAAO,CAAC;yBAI/B,oBAAoB,UACrB,iBAAiB,GACxB,OAAO,CAAC,qBAAqB,CAAC;yBAGN,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;0BAGhC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;oCAGvB,OAAO,CAAC,MAAM,EAAE,CAAC;oCAYjB,MAAM,UAAU,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;2BAa9D,OAAO,CAAC,kBAAkB,CAAC;+BAGvB,OAAO,CAAC,kBAAkB,CAAC;iCAGzB,OAAO,CAAC,kBAAkB,CAAC;qCAGvB,OAAO,CAAC,kBAAkB,CAAC;qCAG3B,OAAO,CAAC,kBAAkB,CAAC;yCAGvB,OAAO,CAAC,kBAAkB,CAAC;0BAgB/D,MAAM,iBACI,WAAW,EAAE,GAC3B,OAAO,CAAC,qBAAqB,EAAE,CAAC;;AAnHrC,wBA6HE"}
\ No newline at end of file
+{"version":3,"file":"ExpoCameraManager.web.d.ts","sourceRoot":"","sources":["../src/ExpoCameraManager.web.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;;;;4BA2E3B,MAAM,aAAa,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAuCxC,OAAO,CAAC,OAAO,CAAC;yBAI/B,oBAAoB,UACrB,iBAAiB,GACxB,OAAO,CAAC,qBAAqB,CAAC;yBAGN,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;0BAGhC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;oCAGvB,OAAO,CAAC,MAAM,EAAE,CAAC;oCAYjB,MAAM,UAAU,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;2BAG9D,OAAO,CAAC,kBAAkB,CAAC;+BAGvB,OAAO,CAAC,kBAAkB,CAAC;iCAGzB,OAAO,CAAC,kBAAkB,CAAC;qCAGvB,OAAO,CAAC,kBAAkB,CAAC;qCAG3B,OAAO,CAAC,kBAAkB,CAAC;yCAGvB,OAAO,CAAC,kBAAkB,CAAC;0BAS/D,MAAM,iBACI,WAAW,EAAE,GAC3B,OAAO,CAAC,qBAAqB,EAAE,CAAC;;AAlGrC,wBA4GE"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/ExpoCameraManager.web.js b/packages/expo-camera/build/ExpoCameraManager.web.js
index 3f7c8ba89fc116..a028cd4031fceb 100644
--- a/packages/expo-camera/build/ExpoCameraManager.web.js
+++ b/packages/expo-camera/build/ExpoCameraManager.web.js
@@ -5,27 +5,19 @@ import { canGetUserMedia, isBackCameraAvailableAsync, isFrontCameraAvailableAsyn
function getUserMedia(constraints) {
return navigator.mediaDevices.getUserMedia(constraints);
}
-function handleGetUserMediaError({ message }) {
- // name: NotAllowedError
- // code: 0
+function permissionResponse(status) {
+ return {
+ status,
+ expires: 'never',
+ canAskAgain: true,
+ granted: status === PermissionStatus.GRANTED,
+ };
+}
+function handleGetUserMediaError(message) {
if (message === 'Permission dismissed') {
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
- }
- else {
- // TODO: Bacon: [OSX] The system could deny access to chrome.
- // TODO: Bacon: add: { status: 'unimplemented' }
- return {
- status: PermissionStatus.DENIED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
}
+ return permissionResponse(PermissionStatus.DENIED);
}
async function handleRequestPermissionsAsync() {
try {
@@ -39,12 +31,7 @@ async function handleRequestPermissionsAsync() {
track.stop();
streams.removeTrack(track);
});
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ return permissionResponse(PermissionStatus.GRANTED);
}
catch (error) {
return handleGetUserMediaError(error.message);
@@ -58,37 +45,17 @@ async function handlePermissionsQueryAsync(query) {
const { state } = await navigator.permissions.query({ name: query });
switch (state) {
case 'prompt':
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
case 'granted':
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ return permissionResponse(PermissionStatus.GRANTED);
case 'denied':
- return {
- status: PermissionStatus.DENIED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.DENIED);
}
}
catch (e) {
// Firefox doesn't support querying for the camera permission, so return undetermined status
if (e instanceof TypeError) {
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
}
throw e;
}
@@ -139,13 +106,13 @@ export default {
return canGetUserMedia();
},
async takePicture(options, camera) {
- return await camera.takePicture(options);
+ return camera.takePicture(options);
},
async pausePreview(camera) {
- await camera.pausePreview();
+ return camera.pausePreview();
},
async resumePreview(camera) {
- return await camera.resumePreview();
+ return camera.resumePreview();
},
async getAvailableCameraTypesAsync() {
if (!canGetUserMedia() || !navigator.mediaDevices.enumerateDevices)
@@ -158,18 +125,8 @@ export default {
return types.filter(Boolean);
},
async getAvailablePictureSizes(ratio, camera) {
- return await camera.getAvailablePictureSizes(ratio);
- },
- /*
- async record(
- options?: CameraRecordingOptions,
- camera: ExponentCameraRef
- ): Promise<{ uri: string }> {
- // TODO: Support on web
- },
- async stopRecording(camera: ExponentCameraRef): Promise {
- // TODO: Support on web
- }, */
+ return camera.getAvailablePictureSizes(ratio);
+ },
async getPermissionsAsync() {
return handlePermissionsQueryAsync('camera');
},
@@ -187,15 +144,8 @@ export default {
},
async requestMicrophonePermissionsAsync() {
try {
- await getUserMedia({
- audio: true,
- });
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ await getUserMedia({ audio: true });
+ return permissionResponse(PermissionStatus.GRANTED);
}
catch (error) {
return handleGetUserMediaError(error.message);
diff --git a/packages/expo-camera/build/ExpoCameraManager.web.js.map b/packages/expo-camera/build/ExpoCameraManager.web.js.map
index fd5dfc0b025bac..7c95039d8ab0b7 100644
--- a/packages/expo-camera/build/ExpoCameraManager.web.js.map
+++ b/packages/expo-camera/build/ExpoCameraManager.web.js.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoCameraManager.web.js","sourceRoot":"","sources":["../src/ExpoCameraManager.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnavailabilityError } from 'expo-modules-core';\n\nimport {\n BarcodeType,\n BarcodeScanningResult,\n CameraCapturedPicture,\n CameraPictureOptions,\n PermissionResponse,\n PermissionStatus,\n} from './Camera.types';\nimport { ExponentCameraRef } from './ExpoCamera.web';\nimport * as WebBarcodeScanner from './web/WebBarcodeScanner';\nimport {\n canGetUserMedia,\n isBackCameraAvailableAsync,\n isFrontCameraAvailableAsync,\n} from './web/WebUserMediaManager';\n\nfunction getUserMedia(constraints: MediaStreamConstraints): Promise {\n return navigator.mediaDevices.getUserMedia(constraints);\n}\n\nfunction handleGetUserMediaError({ message }: { message: string }): PermissionResponse {\n // name: NotAllowedError\n // code: 0\n if (message === 'Permission dismissed') {\n return {\n status: PermissionStatus.UNDETERMINED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n } else {\n // TODO: Bacon: [OSX] The system could deny access to chrome.\n // TODO: Bacon: add: { status: 'unimplemented' }\n return {\n status: PermissionStatus.DENIED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n }\n}\n\nasync function handleRequestPermissionsAsync(): Promise {\n try {\n const streams = await getUserMedia({\n video: true,\n });\n // We need to close the media stream returned by getUserMedia\n // to avoid using the camera since we won't use these streams now\n // https://developer.mozilla.org/fr/docs/Web/API/MediaDevices/getUserMedia\n streams.getTracks().forEach((track) => {\n track.stop();\n streams.removeTrack(track);\n });\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n canAskAgain: true,\n granted: true,\n };\n } catch (error: any) {\n return handleGetUserMediaError(error.message);\n }\n}\n\nasync function handlePermissionsQueryAsync(\n query: 'camera' | 'microphone'\n): Promise {\n if (!navigator?.permissions?.query) {\n throw new UnavailabilityError('expo-camera', 'navigator.permissions API is not available');\n }\n\n try {\n const { state } = await navigator.permissions.query({ name: query });\n switch (state) {\n case 'prompt':\n return {\n status: PermissionStatus.UNDETERMINED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n case 'granted':\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n canAskAgain: true,\n granted: true,\n };\n case 'denied':\n return {\n status: PermissionStatus.DENIED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n }\n } catch (e) {\n // Firefox doesn't support querying for the camera permission, so return undetermined status\n if (e instanceof TypeError) {\n return {\n status: PermissionStatus.UNDETERMINED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n }\n throw e;\n }\n}\n\nexport default {\n isModernBarcodeScannerAvailable: false,\n toggleRecordingAsyncAvailable: false,\n addListener(_eventName: string, _listener: (...args: any[]) => any) {\n return { remove: () => {} };\n },\n get Type() {\n return {\n back: 'back',\n front: 'front',\n };\n },\n get FlashMode() {\n return {\n on: 'on',\n off: 'off',\n auto: 'auto',\n torch: 'torch',\n screen: 'on',\n };\n },\n get AutoFocus() {\n return {\n on: 'on',\n off: 'off',\n auto: 'auto',\n singleShot: 'singleShot',\n };\n },\n get WhiteBalance() {\n return {\n auto: 'auto',\n continuous: 'continuous',\n manual: 'manual',\n };\n },\n get VideoQuality() {\n return {};\n },\n get VideoStabilization() {\n return {};\n },\n async isAvailableAsync(): Promise {\n return canGetUserMedia();\n },\n async takePicture(\n options: CameraPictureOptions,\n camera: ExponentCameraRef\n ): Promise {\n return await camera.takePicture(options);\n },\n async pausePreview(camera: ExponentCameraRef): Promise {\n await camera.pausePreview();\n },\n async resumePreview(camera: ExponentCameraRef): Promise {\n return await camera.resumePreview();\n },\n async getAvailableCameraTypesAsync(): Promise {\n if (!canGetUserMedia() || !navigator.mediaDevices.enumerateDevices) return [];\n\n const devices = await navigator.mediaDevices.enumerateDevices();\n\n const types: (string | null)[] = await Promise.all([\n (await isFrontCameraAvailableAsync(devices)) && 'front',\n (await isBackCameraAvailableAsync()) && 'back',\n ]);\n\n return types.filter(Boolean) as string[];\n },\n async getAvailablePictureSizes(ratio: string, camera: ExponentCameraRef): Promise {\n return await camera.getAvailablePictureSizes(ratio);\n },\n /*\n async record(\n options?: CameraRecordingOptions,\n camera: ExponentCameraRef\n ): Promise<{ uri: string }> {\n // TODO: Support on web\n },\n async stopRecording(camera: ExponentCameraRef): Promise {\n // TODO: Support on web\n }, */\n async getPermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('camera');\n },\n async requestPermissionsAsync(): Promise {\n return handleRequestPermissionsAsync();\n },\n async getCameraPermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('camera');\n },\n async requestCameraPermissionsAsync(): Promise {\n return handleRequestPermissionsAsync();\n },\n async getMicrophonePermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('microphone');\n },\n async requestMicrophonePermissionsAsync(): Promise {\n try {\n await getUserMedia({\n audio: true,\n });\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n canAskAgain: true,\n granted: true,\n };\n } catch (error: any) {\n return handleGetUserMediaError(error.message);\n }\n },\n async scanFromURLAsync(\n url: string,\n barcodeTypes?: BarcodeType[]\n ): Promise {\n const response = await fetch(url);\n const blob = await response.blob();\n const bitmap = await createImageBitmap(blob);\n const types: BarcodeType[] =\n barcodeTypes && barcodeTypes.length > 0 ? barcodeTypes : WebBarcodeScanner.ALL_BARCODE_TYPES;\n const results = await WebBarcodeScanner.detect(bitmap, types);\n bitmap.close();\n return results;\n },\n};\n"]}
\ No newline at end of file
+{"version":3,"file":"ExpoCameraManager.web.js","sourceRoot":"","sources":["../src/ExpoCameraManager.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnavailabilityError } from 'expo-modules-core';\n\nimport {\n BarcodeType,\n BarcodeScanningResult,\n CameraCapturedPicture,\n CameraPictureOptions,\n PermissionResponse,\n PermissionStatus,\n} from './Camera.types';\nimport { ExponentCameraRef } from './ExpoCamera.web';\nimport * as WebBarcodeScanner from './web/WebBarcodeScanner';\nimport {\n canGetUserMedia,\n isBackCameraAvailableAsync,\n isFrontCameraAvailableAsync,\n} from './web/WebUserMediaManager';\n\nfunction getUserMedia(constraints: MediaStreamConstraints): Promise {\n return navigator.mediaDevices.getUserMedia(constraints);\n}\n\nfunction permissionResponse(status: PermissionStatus): PermissionResponse {\n return {\n status,\n expires: 'never',\n canAskAgain: true,\n granted: status === PermissionStatus.GRANTED,\n };\n}\n\nfunction handleGetUserMediaError(message: string): PermissionResponse {\n if (message === 'Permission dismissed') {\n return permissionResponse(PermissionStatus.UNDETERMINED);\n }\n return permissionResponse(PermissionStatus.DENIED);\n}\n\nasync function handleRequestPermissionsAsync(): Promise {\n try {\n const streams = await getUserMedia({\n video: true,\n });\n // We need to close the media stream returned by getUserMedia\n // to avoid using the camera since we won't use these streams now\n // https://developer.mozilla.org/fr/docs/Web/API/MediaDevices/getUserMedia\n streams.getTracks().forEach((track) => {\n track.stop();\n streams.removeTrack(track);\n });\n return permissionResponse(PermissionStatus.GRANTED);\n } catch (error: any) {\n return handleGetUserMediaError(error.message);\n }\n}\n\nasync function handlePermissionsQueryAsync(\n query: 'camera' | 'microphone'\n): Promise {\n if (!navigator?.permissions?.query) {\n throw new UnavailabilityError('expo-camera', 'navigator.permissions API is not available');\n }\n\n try {\n const { state } = await navigator.permissions.query({ name: query });\n switch (state) {\n case 'prompt':\n return permissionResponse(PermissionStatus.UNDETERMINED);\n case 'granted':\n return permissionResponse(PermissionStatus.GRANTED);\n case 'denied':\n return permissionResponse(PermissionStatus.DENIED);\n }\n } catch (e) {\n // Firefox doesn't support querying for the camera permission, so return undetermined status\n if (e instanceof TypeError) {\n return permissionResponse(PermissionStatus.UNDETERMINED);\n }\n throw e;\n }\n}\n\nexport default {\n isModernBarcodeScannerAvailable: false,\n toggleRecordingAsyncAvailable: false,\n addListener(_eventName: string, _listener: (...args: any[]) => any) {\n return { remove: () => {} };\n },\n get Type() {\n return {\n back: 'back',\n front: 'front',\n };\n },\n get FlashMode() {\n return {\n on: 'on',\n off: 'off',\n auto: 'auto',\n torch: 'torch',\n screen: 'on',\n };\n },\n get AutoFocus() {\n return {\n on: 'on',\n off: 'off',\n auto: 'auto',\n singleShot: 'singleShot',\n };\n },\n get WhiteBalance() {\n return {\n auto: 'auto',\n continuous: 'continuous',\n manual: 'manual',\n };\n },\n get VideoQuality() {\n return {};\n },\n get VideoStabilization() {\n return {};\n },\n async isAvailableAsync(): Promise {\n return canGetUserMedia();\n },\n async takePicture(\n options: CameraPictureOptions,\n camera: ExponentCameraRef\n ): Promise {\n return camera.takePicture(options);\n },\n async pausePreview(camera: ExponentCameraRef): Promise {\n return camera.pausePreview();\n },\n async resumePreview(camera: ExponentCameraRef): Promise {\n return camera.resumePreview();\n },\n async getAvailableCameraTypesAsync(): Promise {\n if (!canGetUserMedia() || !navigator.mediaDevices.enumerateDevices) return [];\n\n const devices = await navigator.mediaDevices.enumerateDevices();\n\n const types: (string | null)[] = await Promise.all([\n (await isFrontCameraAvailableAsync(devices)) && 'front',\n (await isBackCameraAvailableAsync()) && 'back',\n ]);\n\n return types.filter(Boolean) as string[];\n },\n async getAvailablePictureSizes(ratio: string, camera: ExponentCameraRef): Promise {\n return camera.getAvailablePictureSizes(ratio);\n },\n async getPermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('camera');\n },\n async requestPermissionsAsync(): Promise {\n return handleRequestPermissionsAsync();\n },\n async getCameraPermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('camera');\n },\n async requestCameraPermissionsAsync(): Promise {\n return handleRequestPermissionsAsync();\n },\n async getMicrophonePermissionsAsync(): Promise {\n return handlePermissionsQueryAsync('microphone');\n },\n async requestMicrophonePermissionsAsync(): Promise {\n try {\n await getUserMedia({ audio: true });\n return permissionResponse(PermissionStatus.GRANTED);\n } catch (error: any) {\n return handleGetUserMediaError(error.message);\n }\n },\n async scanFromURLAsync(\n url: string,\n barcodeTypes?: BarcodeType[]\n ): Promise {\n const response = await fetch(url);\n const blob = await response.blob();\n const bitmap = await createImageBitmap(blob);\n const types: BarcodeType[] =\n barcodeTypes && barcodeTypes.length > 0 ? barcodeTypes : WebBarcodeScanner.ALL_BARCODE_TYPES;\n const results = await WebBarcodeScanner.detect(bitmap, types);\n bitmap.close();\n return results;\n },\n};\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/WebCameraUtils.d.ts.map b/packages/expo-camera/build/web/WebCameraUtils.d.ts.map
index fc42b175f9cdb4..9a00b9d16a9b2e 100644
--- a/packages/expo-camera/build/web/WebCameraUtils.d.ts.map
+++ b/packages/expo-camera/build/web/WebCameraUtils.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"WebCameraUtils.d.ts","sourceRoot":"","sources":["../../src/web/WebCameraUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,kBAAkB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAS9F;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAOR;AAED,wBAAgB,mBAAmB,CACjC,mBAAmB,CAAC,EAAE,UAAU,EAChC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,EACnC,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACnC,OAAO,CAET;AAmBD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,EAAE,KAAS,EAAE,aAAqB,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,eAAe,CAAC,GAC1F,iBAAiB,CAyBnB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,oBAAoB,GACnC,MAAM,CAKR;AASD,wBAAgB,mBAAmB,CACjC,mBAAmB,EAAE,UAAU,EAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,EACnC,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACnC,sBAAsB,CAoCxB;AAMD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAC5C,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,wBAAsB,eAAe,CACnC,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAC5C,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAOpF;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,qBAAqB,CAsBvB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,QAAQ,GAAE,iBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAMf;AAiFD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,QAMzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAExF;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,sBAAsB,GACpC,OAAO,CAST"}
\ No newline at end of file
+{"version":3,"file":"WebCameraUtils.d.ts","sourceRoot":"","sources":["../../src/web/WebCameraUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,kBAAkB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAS9F;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAOR;AAED,wBAAgB,mBAAmB,CACjC,mBAAmB,CAAC,EAAE,UAAU,EAChC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,EACnC,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACnC,OAAO,CAET;AAaD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,EAAE,KAAS,EAAE,aAAqB,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,eAAe,CAAC,GAC1F,iBAAiB,CAyBnB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,oBAAoB,GACnC,MAAM,CAKR;AASD,wBAAgB,mBAAmB,CACjC,mBAAmB,EAAE,UAAU,EAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,EACnC,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACnC,sBAAsB,CAoCxB;AAMD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAC5C,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,wBAAsB,eAAe,CACnC,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAC5C,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAOpF;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,qBAAqB,CAevB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,QAAQ,GAAE,iBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAMf;AAiFD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,QAMzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAExF;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,sBAAsB,GACpC,OAAO,CAST"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/WebCameraUtils.js b/packages/expo-camera/build/web/WebCameraUtils.js
index a6a7ac48a855b2..3b4c2dc7562ccf 100644
--- a/packages/expo-camera/build/web/WebCameraUtils.js
+++ b/packages/expo-camera/build/web/WebCameraUtils.js
@@ -24,18 +24,12 @@ export function hasValidConstraints(preferredCameraType, width, height) {
return preferredCameraType !== undefined && width !== undefined && height !== undefined;
}
function ensureCameraPictureOptions(config) {
- const captureOptions = {
- scale: 1,
- imageType: 'png',
- isImageMirror: false,
+ return {
+ ...config,
+ scale: config.scale ?? 1,
+ imageType: config.imageType ?? 'png',
+ isImageMirror: config.isImageMirror ?? false,
};
- for (const key in config) {
- const prop = key;
- if (prop in config && config[prop] !== undefined && prop in captureOptions) {
- captureOptions[prop] = config[prop];
- }
- }
- return captureOptions;
}
const DEFAULT_QUALITY = 0.92;
export function captureImageContext(video, { scale = 1, isImageMirror = false }) {
@@ -131,8 +125,7 @@ export async function getPreferredStreamDevice(preferredCameraType, preferredWid
}
export async function getStreamDevice(preferredCameraType, preferredWidth, preferredHeight) {
const constraints = getIdealConstraints(preferredCameraType, preferredWidth, preferredHeight);
- const stream = await requestUserMediaAsync(constraints);
- return stream;
+ return requestUserMediaAsync(constraints);
}
export function isWebKit() {
return /WebKit/.test(navigator.userAgent) && !/Edg/.test(navigator.userAgent);
@@ -147,22 +140,16 @@ export function compareStreams(a, b) {
}
export function capture(video, settings, config) {
const base64 = captureImage(video, config);
+ const { width = 0, height = 0 } = settings;
const capturedPicture = {
uri: base64,
base64,
- width: 0,
- height: 0,
+ width,
+ height,
format: config.imageType ?? 'jpg',
+ exif: settings,
};
- if (settings) {
- const { width = 0, height = 0 } = settings;
- capturedPicture.width = width;
- capturedPicture.height = height;
- capturedPicture.exif = settings;
- }
- if (config.onPictureSaved) {
- config.onPictureSaved(capturedPicture);
- }
+ config.onPictureSaved?.(capturedPicture);
return capturedPicture;
}
export async function syncTrackCapabilities(cameraType, stream, settings = {}) {
diff --git a/packages/expo-camera/build/web/WebCameraUtils.js.map b/packages/expo-camera/build/web/WebCameraUtils.js.map
index 0e39c1d2863db8..b35ea716db99c2 100644
--- a/packages/expo-camera/build/web/WebCameraUtils.js.map
+++ b/packages/expo-camera/build/web/WebCameraUtils.js.map
@@ -1 +1 @@
-{"version":3,"file":"WebCameraUtils.js","sourceRoot":"","sources":["../../src/web/WebCameraUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport * as CapabilityUtils from './WebCapabilityUtils';\nimport { CameraTypeToFacingMode, ImageTypeFormat, MinimumConstraints } from './WebConstants';\nimport { requestUserMediaAsync } from './WebUserMediaManager';\nimport {\n CameraType,\n CameraCapturedPicture,\n ImageSize,\n ImageType,\n WebCameraSettings,\n CameraPictureOptions,\n} from '../Camera.types';\n\ninterface ConstrainLongRange {\n max?: number;\n min?: number;\n exact?: number;\n ideal?: number;\n}\n\nexport function getImageSize(videoWidth: number, videoHeight: number, scale: number): ImageSize {\n const width = videoWidth * scale;\n const ratio = videoWidth / width;\n const height = videoHeight / ratio;\n\n return {\n width,\n height,\n };\n}\n\nexport function toDataURL(\n canvas: HTMLCanvasElement,\n imageType: ImageType,\n quality: number\n): string {\n const format = ImageTypeFormat[imageType];\n if (imageType === 'jpg') {\n return canvas.toDataURL(format, quality);\n } else {\n return canvas.toDataURL(format);\n }\n}\n\nexport function hasValidConstraints(\n preferredCameraType?: CameraType,\n width?: number | ConstrainLongRange,\n height?: number | ConstrainLongRange\n): boolean {\n return preferredCameraType !== undefined && width !== undefined && height !== undefined;\n}\n\nfunction ensureCameraPictureOptions(config: CameraPictureOptions): CameraPictureOptions {\n const captureOptions: CameraPictureOptions = {\n scale: 1,\n imageType: 'png' as ImageType,\n isImageMirror: false,\n };\n for (const key in config) {\n const prop = key as keyof CameraPictureOptions;\n if (prop in config && config[prop] !== undefined && prop in captureOptions) {\n captureOptions[prop] = config[prop] as any;\n }\n }\n return captureOptions;\n}\n\nconst DEFAULT_QUALITY = 0.92;\n\nexport function captureImageContext(\n video: HTMLVideoElement,\n { scale = 1, isImageMirror = false }: Pick\n): HTMLCanvasElement {\n const { videoWidth, videoHeight } = video;\n const { width, height } = getImageSize(videoWidth, videoHeight, scale!);\n\n // Build the canvas size and draw the camera image to the context from video\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d', { alpha: false });\n\n if (!context) {\n // Should never be called\n throw new Error('Context is not defined');\n }\n // sharp image details\n // context.imageSmoothingEnabled = false;\n\n // Flip horizontally (as css transform: rotateY(180deg))\n if (isImageMirror) {\n context.setTransform(-1, 0, 0, 1, canvas.width, 0);\n }\n\n context.drawImage(video, 0, 0, width, height);\n\n return canvas;\n}\n\nexport function captureImage(\n video: HTMLVideoElement,\n pictureOptions: CameraPictureOptions\n): string {\n const config = ensureCameraPictureOptions(pictureOptions);\n const canvas = captureImageContext(video, config);\n const { imageType, quality = DEFAULT_QUALITY } = config;\n return toDataURL(canvas, imageType!, quality);\n}\n\nfunction getSupportedConstraints(): MediaTrackSupportedConstraints | null {\n if (navigator.mediaDevices && navigator.mediaDevices.getSupportedConstraints) {\n return navigator.mediaDevices.getSupportedConstraints();\n }\n return null;\n}\n\nexport function getIdealConstraints(\n preferredCameraType: CameraType,\n width?: number | ConstrainLongRange,\n height?: number | ConstrainLongRange\n): MediaStreamConstraints {\n const preferredConstraints: MediaStreamConstraints = {\n audio: false,\n video: {},\n };\n\n if (hasValidConstraints(preferredCameraType, width, height)) {\n return MinimumConstraints;\n }\n\n const supports = getSupportedConstraints();\n // TODO(Bacon): Test this\n if (!supports || !supports.facingMode || !supports.width || !supports.height) {\n return MinimumConstraints;\n }\n const types = ['front', 'back'];\n if (preferredCameraType && types.includes(preferredCameraType)) {\n const facingMode = CameraTypeToFacingMode[preferredCameraType];\n if (isWebKit()) {\n const key = facingMode === 'user' ? 'exact' : 'ideal';\n (preferredConstraints.video as MediaTrackConstraints).facingMode = {\n [key]: facingMode,\n };\n } else {\n (preferredConstraints.video as MediaTrackConstraints).facingMode = {\n ideal: CameraTypeToFacingMode[preferredCameraType],\n };\n }\n }\n\n if (isMediaTrackConstraints(preferredConstraints.video)) {\n preferredConstraints.video.width = width;\n preferredConstraints.video.height = height;\n }\n\n return preferredConstraints;\n}\n\nfunction isMediaTrackConstraints(input: any): input is MediaTrackConstraints {\n return input && typeof input.video !== 'boolean';\n}\n\n/**\n * Invoke getStreamDevice a second time with the opposing camera type if the preferred type cannot be retrieved.\n *\n * @param preferredCameraType\n * @param preferredWidth\n * @param preferredHeight\n */\nexport async function getPreferredStreamDevice(\n preferredCameraType: CameraType,\n preferredWidth?: number | ConstrainLongRange,\n preferredHeight?: number | ConstrainLongRange\n): Promise {\n try {\n return await getStreamDevice(preferredCameraType, preferredWidth, preferredHeight);\n } catch (error) {\n // A hack on desktop browsers to ensure any camera is used.\n // eslint-disable-next-line no-undef\n if (error instanceof OverconstrainedError && error.constraint === 'facingMode') {\n const nextCameraType = preferredCameraType === 'back' ? 'front' : 'back';\n return await getStreamDevice(nextCameraType, preferredWidth, preferredHeight);\n }\n throw error;\n }\n}\n\nexport async function getStreamDevice(\n preferredCameraType: CameraType,\n preferredWidth?: number | ConstrainLongRange,\n preferredHeight?: number | ConstrainLongRange\n): Promise {\n const constraints: MediaStreamConstraints = getIdealConstraints(\n preferredCameraType,\n preferredWidth,\n preferredHeight\n );\n const stream: MediaStream = await requestUserMediaAsync(constraints);\n return stream;\n}\n\nexport function isWebKit(): boolean {\n return /WebKit/.test(navigator.userAgent) && !/Edg/.test(navigator.userAgent);\n}\n\nexport function compareStreams(a: MediaStream | null, b: MediaStream | null): boolean {\n if (!a || !b) {\n return false;\n }\n const settingsA = a.getTracks()[0].getSettings();\n const settingsB = b.getTracks()[0].getSettings();\n return settingsA.deviceId === settingsB.deviceId;\n}\n\nexport function capture(\n video: HTMLVideoElement,\n settings: MediaTrackSettings,\n config: CameraPictureOptions\n): CameraCapturedPicture {\n const base64 = captureImage(video, config);\n\n const capturedPicture: CameraCapturedPicture = {\n uri: base64,\n base64,\n width: 0,\n height: 0,\n format: config.imageType ?? 'jpg',\n };\n\n if (settings) {\n const { width = 0, height = 0 } = settings;\n capturedPicture.width = width;\n capturedPicture.height = height;\n capturedPicture.exif = settings;\n }\n\n if (config.onPictureSaved) {\n config.onPictureSaved(capturedPicture);\n }\n return capturedPicture;\n}\n\nexport async function syncTrackCapabilities(\n cameraType: CameraType,\n stream: MediaStream | null,\n settings: WebCameraSettings = {}\n): Promise {\n if (stream?.getVideoTracks) {\n await Promise.all(\n stream.getVideoTracks().map((track) => onCapabilitiesReady(cameraType, track, settings))\n );\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\nasync function onCapabilitiesReady(\n cameraType: CameraType,\n track: MediaStreamTrack,\n settings: WebCameraSettings = {}\n): Promise {\n if (typeof track.getCapabilities !== 'function') {\n return;\n }\n\n const capabilities = track.getCapabilities();\n\n // Create an empty object because if you set a constraint that isn't available an error will be thrown.\n const constraints: MediaTrackConstraintSet = {};\n\n // TODO(Bacon): Add `pointsOfInterest` support\n const clampedValues = [\n 'exposureCompensation',\n 'colorTemperature',\n 'iso',\n 'brightness',\n 'contrast',\n 'saturation',\n 'sharpness',\n 'focusDistance',\n 'zoom',\n ] as const;\n\n for (const property of clampedValues) {\n if (capabilities[property]) {\n constraints[property] = convertNormalizedSetting(capabilities[property], settings[property]);\n }\n }\n\n function validatedInternalConstrainedValue(\n constraintKey: keyof MediaTrackCapabilities,\n settingsKey: keyof WebCameraSettings,\n converter: (settingValue: any) => IConvertedType\n ) {\n const convertedSetting = converter(settings[settingsKey]);\n return validatedConstrainedValue({\n constraintKey,\n settingsKey,\n convertedSetting,\n capabilities,\n settings,\n cameraType,\n });\n }\n\n if (capabilities.focusMode && settings.autoFocus !== undefined) {\n constraints.focusMode = validatedInternalConstrainedValue(\n 'focusMode',\n 'autoFocus',\n CapabilityUtils.convertAutoFocusJSONToNative\n );\n }\n\n if (capabilities.torch && settings.flashMode !== undefined) {\n constraints.torch = validatedInternalConstrainedValue(\n 'torch',\n 'flashMode',\n CapabilityUtils.convertFlashModeJSONToNative\n );\n }\n\n if (capabilities.whiteBalanceMode && settings.whiteBalance !== undefined) {\n constraints.whiteBalanceMode = validatedInternalConstrainedValue<\n MediaTrackConstraintSet['whiteBalanceMode']\n >('whiteBalanceMode', 'whiteBalance', CapabilityUtils.convertWhiteBalanceJSONToNative);\n }\n\n try {\n await track.applyConstraints({ advanced: [constraints] });\n } catch (error) {\n if (__DEV__) console.warn('Failed to apply constraints', error);\n }\n}\n\nexport function stopMediaStream(stream: MediaStream | null) {\n if (!stream) {\n return;\n }\n stream.getAudioTracks().forEach((track) => track.stop());\n stream.getVideoTracks().forEach((track) => track.stop());\n}\n\nexport function setVideoSource(video: HTMLVideoElement, stream: MediaStream | null): void {\n video.srcObject = stream;\n}\n\nexport function isCapabilityAvailable(\n video: HTMLVideoElement,\n keyName: keyof MediaTrackCapabilities\n): boolean {\n const stream = video.srcObject;\n\n if (stream instanceof MediaStream) {\n const videoTrack = stream.getVideoTracks()[0];\n return !!videoTrack.getCapabilities?.()?.[keyName];\n }\n\n return false;\n}\n\nfunction convertNormalizedSetting(range: MediaSettingsRange, value?: number): number | undefined {\n if (!value) {\n return;\n }\n // TODO(@kitten): Handle undefined values / normalize explicitly\n // convert the normalized incoming setting to the native camera zoom range\n const converted = convertRange(value, [range.min!, range.max!]);\n // clamp value so we don't get an error\n return Math.min(range.max!, Math.max(range.min!, converted));\n}\n\nfunction convertRange(value: number, r2: [number, number], r1: [number, number] = [0, 1]): number {\n return ((value - r1[0]) * (r2[1] - r2[0])) / (r1[1] - r1[0]) + r2[0];\n}\n\nfunction validatedConstrainedValue(props: {\n constraintKey: keyof MediaTrackCapabilities;\n settingsKey: keyof WebCameraSettings;\n convertedSetting: T;\n capabilities: MediaTrackCapabilities;\n settings: WebCameraSettings;\n cameraType: string;\n}): T | undefined {\n const { constraintKey, settingsKey, convertedSetting, capabilities, settings, cameraType } =\n props;\n const setting = settings[settingsKey];\n if (\n Array.isArray(capabilities[constraintKey]) &&\n convertedSetting &&\n !capabilities[constraintKey].includes(convertedSetting)\n ) {\n if (__DEV__) {\n // Only warn in dev mode.\n console.warn(\n ` { ${settingsKey}: \"${setting}\" } (converted to \"${convertedSetting}\" in the browser) is not supported for camera type \"${cameraType}\" in your browser. Using the default value instead.`\n );\n }\n return undefined;\n }\n return convertedSetting;\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"WebCameraUtils.js","sourceRoot":"","sources":["../../src/web/WebCameraUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport * as CapabilityUtils from './WebCapabilityUtils';\nimport { CameraTypeToFacingMode, ImageTypeFormat, MinimumConstraints } from './WebConstants';\nimport { requestUserMediaAsync } from './WebUserMediaManager';\nimport {\n CameraType,\n CameraCapturedPicture,\n ImageSize,\n ImageType,\n WebCameraSettings,\n CameraPictureOptions,\n} from '../Camera.types';\n\ninterface ConstrainLongRange {\n max?: number;\n min?: number;\n exact?: number;\n ideal?: number;\n}\n\nexport function getImageSize(videoWidth: number, videoHeight: number, scale: number): ImageSize {\n const width = videoWidth * scale;\n const ratio = videoWidth / width;\n const height = videoHeight / ratio;\n\n return {\n width,\n height,\n };\n}\n\nexport function toDataURL(\n canvas: HTMLCanvasElement,\n imageType: ImageType,\n quality: number\n): string {\n const format = ImageTypeFormat[imageType];\n if (imageType === 'jpg') {\n return canvas.toDataURL(format, quality);\n } else {\n return canvas.toDataURL(format);\n }\n}\n\nexport function hasValidConstraints(\n preferredCameraType?: CameraType,\n width?: number | ConstrainLongRange,\n height?: number | ConstrainLongRange\n): boolean {\n return preferredCameraType !== undefined && width !== undefined && height !== undefined;\n}\n\nfunction ensureCameraPictureOptions(config: CameraPictureOptions): CameraPictureOptions {\n return {\n ...config,\n scale: config.scale ?? 1,\n imageType: config.imageType ?? 'png',\n isImageMirror: config.isImageMirror ?? false,\n };\n}\n\nconst DEFAULT_QUALITY = 0.92;\n\nexport function captureImageContext(\n video: HTMLVideoElement,\n { scale = 1, isImageMirror = false }: Pick\n): HTMLCanvasElement {\n const { videoWidth, videoHeight } = video;\n const { width, height } = getImageSize(videoWidth, videoHeight, scale!);\n\n // Build the canvas size and draw the camera image to the context from video\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d', { alpha: false });\n\n if (!context) {\n // Should never be called\n throw new Error('Context is not defined');\n }\n // sharp image details\n // context.imageSmoothingEnabled = false;\n\n // Flip horizontally (as css transform: rotateY(180deg))\n if (isImageMirror) {\n context.setTransform(-1, 0, 0, 1, canvas.width, 0);\n }\n\n context.drawImage(video, 0, 0, width, height);\n\n return canvas;\n}\n\nexport function captureImage(\n video: HTMLVideoElement,\n pictureOptions: CameraPictureOptions\n): string {\n const config = ensureCameraPictureOptions(pictureOptions);\n const canvas = captureImageContext(video, config);\n const { imageType, quality = DEFAULT_QUALITY } = config;\n return toDataURL(canvas, imageType!, quality);\n}\n\nfunction getSupportedConstraints(): MediaTrackSupportedConstraints | null {\n if (navigator.mediaDevices && navigator.mediaDevices.getSupportedConstraints) {\n return navigator.mediaDevices.getSupportedConstraints();\n }\n return null;\n}\n\nexport function getIdealConstraints(\n preferredCameraType: CameraType,\n width?: number | ConstrainLongRange,\n height?: number | ConstrainLongRange\n): MediaStreamConstraints {\n const preferredConstraints: MediaStreamConstraints = {\n audio: false,\n video: {},\n };\n\n if (hasValidConstraints(preferredCameraType, width, height)) {\n return MinimumConstraints;\n }\n\n const supports = getSupportedConstraints();\n // TODO(Bacon): Test this\n if (!supports || !supports.facingMode || !supports.width || !supports.height) {\n return MinimumConstraints;\n }\n const types = ['front', 'back'];\n if (preferredCameraType && types.includes(preferredCameraType)) {\n const facingMode = CameraTypeToFacingMode[preferredCameraType];\n if (isWebKit()) {\n const key = facingMode === 'user' ? 'exact' : 'ideal';\n (preferredConstraints.video as MediaTrackConstraints).facingMode = {\n [key]: facingMode,\n };\n } else {\n (preferredConstraints.video as MediaTrackConstraints).facingMode = {\n ideal: CameraTypeToFacingMode[preferredCameraType],\n };\n }\n }\n\n if (isMediaTrackConstraints(preferredConstraints.video)) {\n preferredConstraints.video.width = width;\n preferredConstraints.video.height = height;\n }\n\n return preferredConstraints;\n}\n\nfunction isMediaTrackConstraints(input: any): input is MediaTrackConstraints {\n return input && typeof input.video !== 'boolean';\n}\n\n/**\n * Invoke getStreamDevice a second time with the opposing camera type if the preferred type cannot be retrieved.\n *\n * @param preferredCameraType\n * @param preferredWidth\n * @param preferredHeight\n */\nexport async function getPreferredStreamDevice(\n preferredCameraType: CameraType,\n preferredWidth?: number | ConstrainLongRange,\n preferredHeight?: number | ConstrainLongRange\n): Promise {\n try {\n return await getStreamDevice(preferredCameraType, preferredWidth, preferredHeight);\n } catch (error) {\n // A hack on desktop browsers to ensure any camera is used.\n // eslint-disable-next-line no-undef\n if (error instanceof OverconstrainedError && error.constraint === 'facingMode') {\n const nextCameraType = preferredCameraType === 'back' ? 'front' : 'back';\n return await getStreamDevice(nextCameraType, preferredWidth, preferredHeight);\n }\n throw error;\n }\n}\n\nexport async function getStreamDevice(\n preferredCameraType: CameraType,\n preferredWidth?: number | ConstrainLongRange,\n preferredHeight?: number | ConstrainLongRange\n): Promise {\n const constraints = getIdealConstraints(preferredCameraType, preferredWidth, preferredHeight);\n return requestUserMediaAsync(constraints);\n}\n\nexport function isWebKit(): boolean {\n return /WebKit/.test(navigator.userAgent) && !/Edg/.test(navigator.userAgent);\n}\n\nexport function compareStreams(a: MediaStream | null, b: MediaStream | null): boolean {\n if (!a || !b) {\n return false;\n }\n const settingsA = a.getTracks()[0].getSettings();\n const settingsB = b.getTracks()[0].getSettings();\n return settingsA.deviceId === settingsB.deviceId;\n}\n\nexport function capture(\n video: HTMLVideoElement,\n settings: MediaTrackSettings,\n config: CameraPictureOptions\n): CameraCapturedPicture {\n const base64 = captureImage(video, config);\n const { width = 0, height = 0 } = settings;\n\n const capturedPicture: CameraCapturedPicture = {\n uri: base64,\n base64,\n width,\n height,\n format: config.imageType ?? 'jpg',\n exif: settings,\n };\n\n config.onPictureSaved?.(capturedPicture);\n return capturedPicture;\n}\n\nexport async function syncTrackCapabilities(\n cameraType: CameraType,\n stream: MediaStream | null,\n settings: WebCameraSettings = {}\n): Promise {\n if (stream?.getVideoTracks) {\n await Promise.all(\n stream.getVideoTracks().map((track) => onCapabilitiesReady(cameraType, track, settings))\n );\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\nasync function onCapabilitiesReady(\n cameraType: CameraType,\n track: MediaStreamTrack,\n settings: WebCameraSettings = {}\n): Promise {\n if (typeof track.getCapabilities !== 'function') {\n return;\n }\n\n const capabilities = track.getCapabilities();\n\n // Create an empty object because if you set a constraint that isn't available an error will be thrown.\n const constraints: MediaTrackConstraintSet = {};\n\n // TODO(Bacon): Add `pointsOfInterest` support\n const clampedValues = [\n 'exposureCompensation',\n 'colorTemperature',\n 'iso',\n 'brightness',\n 'contrast',\n 'saturation',\n 'sharpness',\n 'focusDistance',\n 'zoom',\n ] as const;\n\n for (const property of clampedValues) {\n if (capabilities[property]) {\n constraints[property] = convertNormalizedSetting(capabilities[property], settings[property]);\n }\n }\n\n function validatedInternalConstrainedValue(\n constraintKey: keyof MediaTrackCapabilities,\n settingsKey: keyof WebCameraSettings,\n converter: (settingValue: any) => IConvertedType\n ) {\n const convertedSetting = converter(settings[settingsKey]);\n return validatedConstrainedValue({\n constraintKey,\n settingsKey,\n convertedSetting,\n capabilities,\n settings,\n cameraType,\n });\n }\n\n if (capabilities.focusMode && settings.autoFocus !== undefined) {\n constraints.focusMode = validatedInternalConstrainedValue(\n 'focusMode',\n 'autoFocus',\n CapabilityUtils.convertAutoFocusJSONToNative\n );\n }\n\n if (capabilities.torch && settings.flashMode !== undefined) {\n constraints.torch = validatedInternalConstrainedValue(\n 'torch',\n 'flashMode',\n CapabilityUtils.convertFlashModeJSONToNative\n );\n }\n\n if (capabilities.whiteBalanceMode && settings.whiteBalance !== undefined) {\n constraints.whiteBalanceMode = validatedInternalConstrainedValue<\n MediaTrackConstraintSet['whiteBalanceMode']\n >('whiteBalanceMode', 'whiteBalance', CapabilityUtils.convertWhiteBalanceJSONToNative);\n }\n\n try {\n await track.applyConstraints({ advanced: [constraints] });\n } catch (error) {\n if (__DEV__) console.warn('Failed to apply constraints', error);\n }\n}\n\nexport function stopMediaStream(stream: MediaStream | null) {\n if (!stream) {\n return;\n }\n stream.getAudioTracks().forEach((track) => track.stop());\n stream.getVideoTracks().forEach((track) => track.stop());\n}\n\nexport function setVideoSource(video: HTMLVideoElement, stream: MediaStream | null): void {\n video.srcObject = stream;\n}\n\nexport function isCapabilityAvailable(\n video: HTMLVideoElement,\n keyName: keyof MediaTrackCapabilities\n): boolean {\n const stream = video.srcObject;\n\n if (stream instanceof MediaStream) {\n const videoTrack = stream.getVideoTracks()[0];\n return !!videoTrack.getCapabilities?.()?.[keyName];\n }\n\n return false;\n}\n\nfunction convertNormalizedSetting(range: MediaSettingsRange, value?: number): number | undefined {\n if (!value) {\n return;\n }\n // TODO(@kitten): Handle undefined values / normalize explicitly\n // convert the normalized incoming setting to the native camera zoom range\n const converted = convertRange(value, [range.min!, range.max!]);\n // clamp value so we don't get an error\n return Math.min(range.max!, Math.max(range.min!, converted));\n}\n\nfunction convertRange(value: number, r2: [number, number], r1: [number, number] = [0, 1]): number {\n return ((value - r1[0]) * (r2[1] - r2[0])) / (r1[1] - r1[0]) + r2[0];\n}\n\nfunction validatedConstrainedValue(props: {\n constraintKey: keyof MediaTrackCapabilities;\n settingsKey: keyof WebCameraSettings;\n convertedSetting: T;\n capabilities: MediaTrackCapabilities;\n settings: WebCameraSettings;\n cameraType: string;\n}): T | undefined {\n const { constraintKey, settingsKey, convertedSetting, capabilities, settings, cameraType } =\n props;\n const setting = settings[settingsKey];\n if (\n Array.isArray(capabilities[constraintKey]) &&\n convertedSetting &&\n !capabilities[constraintKey].includes(convertedSetting)\n ) {\n if (__DEV__) {\n // Only warn in dev mode.\n console.warn(\n ` { ${settingsKey}: \"${setting}\" } (converted to \"${convertedSetting}\" in the browser) is not supported for camera type \"${cameraType}\" in your browser. Using the default value instead.`\n );\n }\n return undefined;\n }\n return convertedSetting;\n}\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/useWebBarcodeScanner.d.ts.map b/packages/expo-camera/build/web/useWebBarcodeScanner.d.ts.map
index 468cbcd1c9b397..8b996b83a1775e 100644
--- a/packages/expo-camera/build/web/useWebBarcodeScanner.d.ts.map
+++ b/packages/expo-camera/build/web/useWebBarcodeScanner.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"useWebBarcodeScanner.d.ts","sourceRoot":"","sources":["../../src/web/useWebBarcodeScanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAoCzF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAC/C,EACE,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAkB,EAClB,SAAS,EACT,OAAO,GACR,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE;QAAE,WAAW,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,QAwEF"}
\ No newline at end of file
+{"version":3,"file":"useWebBarcodeScanner.d.ts","sourceRoot":"","sources":["../../src/web/useWebBarcodeScanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAoCzF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAC/C,EACE,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAkB,EAClB,SAAS,EACT,OAAO,GACR,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE;QAAE,WAAW,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,QAkEF"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/useWebBarcodeScanner.js b/packages/expo-camera/build/web/useWebBarcodeScanner.js
index 75bb232cad6bc8..4e5306697dc5cd 100644
--- a/packages/expo-camera/build/web/useWebBarcodeScanner.js
+++ b/packages/expo-camera/build/web/useWebBarcodeScanner.js
@@ -50,9 +50,7 @@ export function useWebBarcodeScanner(video, { isEnabled, barcodeTypes, interval,
}
}
catch (error) {
- if (onError) {
- onError({ nativeEvent: error });
- }
+ onError?.({ nativeEvent: error });
}
finally {
if (interval === 0) {
@@ -74,11 +72,7 @@ export function useWebBarcodeScanner(video, { isEnabled, barcodeTypes, interval,
isRunning.current = true;
scanAsync();
}
- return () => {
- if (isEnabled) {
- stop();
- }
- };
+ return stop;
}, [isEnabled]);
}
//# sourceMappingURL=useWebBarcodeScanner.js.map
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/useWebBarcodeScanner.js.map b/packages/expo-camera/build/web/useWebBarcodeScanner.js.map
index 302722810762a0..6c27cdd6c344c3 100644
--- a/packages/expo-camera/build/web/useWebBarcodeScanner.js.map
+++ b/packages/expo-camera/build/web/useWebBarcodeScanner.js.map
@@ -1 +1 @@
-{"version":3,"file":"useWebBarcodeScanner.js","sourceRoot":"","sources":["../../src/web/useWebBarcodeScanner.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport * as WebBarcodeScanner from './WebBarcodeScanner';\nimport { BarcodeType, BarcodeScanningResult, MountErrorListener } from '../Camera.types';\n\nfunction mapToViewCoordinates(\n result: BarcodeScanningResult,\n videoWidth: number,\n viewHeight: number,\n height: number,\n width: number,\n isMirrored: boolean\n): BarcodeScanningResult {\n const scaleX = width / videoWidth;\n const scaleY = viewHeight / height;\n\n const mapPoint = (p: { x: number; y: number }) => {\n const x = isMirrored ? width - p.x * scaleX : p.x * scaleX;\n const y = p.y * scaleY;\n return { x, y };\n };\n\n const origin = mapPoint(result.bounds.origin);\n const size = {\n width: result.bounds.size.width * scaleX,\n height: result.bounds.size.height * scaleY,\n };\n\n if (isMirrored) {\n origin.x -= size.width;\n }\n\n return {\n ...result,\n bounds: { origin, size },\n cornerPoints: result.cornerPoints.map(mapPoint),\n };\n}\n\nexport function useWebBarcodeScanner(\n video: React.RefObject,\n {\n isEnabled,\n barcodeTypes,\n interval,\n isMirrored = false,\n onScanned,\n onError,\n }: {\n isEnabled: boolean;\n barcodeTypes: BarcodeType[];\n interval?: number;\n isMirrored?: boolean;\n onScanned?: (scanningResult: { nativeEvent: BarcodeScanningResult }) => void;\n onError?: MountErrorListener;\n }\n) {\n const isRunning = React.useRef(false);\n const timeout = React.useRef | undefined>(undefined);\n\n async function scanAsync() {\n if (!isRunning.current || !onScanned) {\n stop();\n return;\n }\n try {\n const videoEl = video.current;\n if (!videoEl || videoEl.readyState !== videoEl.HAVE_ENOUGH_DATA) {\n return;\n }\n\n const { videoWidth, videoHeight } = videoEl;\n if (!videoWidth || !videoHeight) {\n return;\n }\n\n const bitmap = await createImageBitmap(videoEl);\n const results = await WebBarcodeScanner.detect(bitmap, barcodeTypes);\n bitmap.close();\n\n const viewWidth = videoEl.clientWidth || videoWidth;\n const viewHeight = videoEl.clientHeight || videoHeight;\n\n for (const raw of results) {\n const nativeEvent = mapToViewCoordinates(\n raw,\n videoWidth,\n videoHeight,\n viewWidth,\n viewHeight,\n isMirrored\n );\n onScanned({ nativeEvent });\n }\n } catch (error: any) {\n if (onError) {\n onError({ nativeEvent: error });\n }\n } finally {\n if (interval === 0) {\n stop();\n return;\n }\n const intervalToUse = !interval || interval < 0 ? 16 : interval;\n timeout.current = setTimeout(() => {\n scanAsync();\n }, intervalToUse);\n }\n }\n\n function stop() {\n isRunning.current = false;\n clearTimeout(timeout.current);\n }\n\n React.useEffect(() => {\n if (isEnabled) {\n isRunning.current = true;\n scanAsync();\n }\n\n return () => {\n if (isEnabled) {\n stop();\n }\n };\n }, [isEnabled]);\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"useWebBarcodeScanner.js","sourceRoot":"","sources":["../../src/web/useWebBarcodeScanner.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport * as WebBarcodeScanner from './WebBarcodeScanner';\nimport { BarcodeType, BarcodeScanningResult, MountErrorListener } from '../Camera.types';\n\nfunction mapToViewCoordinates(\n result: BarcodeScanningResult,\n videoWidth: number,\n viewHeight: number,\n height: number,\n width: number,\n isMirrored: boolean\n): BarcodeScanningResult {\n const scaleX = width / videoWidth;\n const scaleY = viewHeight / height;\n\n const mapPoint = (p: { x: number; y: number }) => {\n const x = isMirrored ? width - p.x * scaleX : p.x * scaleX;\n const y = p.y * scaleY;\n return { x, y };\n };\n\n const origin = mapPoint(result.bounds.origin);\n const size = {\n width: result.bounds.size.width * scaleX,\n height: result.bounds.size.height * scaleY,\n };\n\n if (isMirrored) {\n origin.x -= size.width;\n }\n\n return {\n ...result,\n bounds: { origin, size },\n cornerPoints: result.cornerPoints.map(mapPoint),\n };\n}\n\nexport function useWebBarcodeScanner(\n video: React.RefObject,\n {\n isEnabled,\n barcodeTypes,\n interval,\n isMirrored = false,\n onScanned,\n onError,\n }: {\n isEnabled: boolean;\n barcodeTypes: BarcodeType[];\n interval?: number;\n isMirrored?: boolean;\n onScanned?: (scanningResult: { nativeEvent: BarcodeScanningResult }) => void;\n onError?: MountErrorListener;\n }\n) {\n const isRunning = React.useRef(false);\n const timeout = React.useRef | undefined>(undefined);\n\n async function scanAsync() {\n if (!isRunning.current || !onScanned) {\n stop();\n return;\n }\n try {\n const videoEl = video.current;\n if (!videoEl || videoEl.readyState !== videoEl.HAVE_ENOUGH_DATA) {\n return;\n }\n\n const { videoWidth, videoHeight } = videoEl;\n if (!videoWidth || !videoHeight) {\n return;\n }\n\n const bitmap = await createImageBitmap(videoEl);\n const results = await WebBarcodeScanner.detect(bitmap, barcodeTypes);\n bitmap.close();\n\n const viewWidth = videoEl.clientWidth || videoWidth;\n const viewHeight = videoEl.clientHeight || videoHeight;\n\n for (const raw of results) {\n const nativeEvent = mapToViewCoordinates(\n raw,\n videoWidth,\n videoHeight,\n viewWidth,\n viewHeight,\n isMirrored\n );\n onScanned({ nativeEvent });\n }\n } catch (error: any) {\n onError?.({ nativeEvent: error });\n } finally {\n if (interval === 0) {\n stop();\n return;\n }\n const intervalToUse = !interval || interval < 0 ? 16 : interval;\n timeout.current = setTimeout(() => {\n scanAsync();\n }, intervalToUse);\n }\n }\n\n function stop() {\n isRunning.current = false;\n clearTimeout(timeout.current);\n }\n\n React.useEffect(() => {\n if (isEnabled) {\n isRunning.current = true;\n scanAsync();\n }\n\n return stop;\n }, [isEnabled]);\n}\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/useWebCameraStream.d.ts.map b/packages/expo-camera/build/web/useWebCameraStream.d.ts.map
index bd22cd1a058d3b..09ef8035677cdb 100644
--- a/packages/expo-camera/build/web/useWebCameraStream.d.ts.map
+++ b/packages/expo-camera/build/web/useWebCameraStream.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"useWebCameraStream.d.ts","sourceRoot":"","sources":["../../src/web/useWebCameraStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,EACtD,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,EACE,aAAa,EACb,YAAY,GACb,EAAE;IAAE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC5E;IACD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC/C,CAmJA"}
\ No newline at end of file
+{"version":3,"file":"useWebCameraStream.d.ts","sourceRoot":"","sources":["../../src/web/useWebCameraStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,EACtD,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,EACE,aAAa,EACb,YAAY,GACb,EAAE;IAAE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC5E;IACD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC/C,CA2IA"}
\ No newline at end of file
diff --git a/packages/expo-camera/build/web/useWebCameraStream.js b/packages/expo-camera/build/web/useWebCameraStream.js
index 7927fc3a783a6f..4b063766a4cda5 100644
--- a/packages/expo-camera/build/web/useWebCameraStream.js
+++ b/packages/expo-camera/build/web/useWebCameraStream.js
@@ -60,9 +60,7 @@ export function useWebCameraStream(video, preferredType, settings, { onCameraRea
if (__DEV__) {
console.warn(`Error requesting UserMedia for type "${preferredType}":`, nativeEvent);
}
- if (onMountError) {
- onMountError({ nativeEvent });
- }
+ onMountError?.({ nativeEvent });
return null;
}
}, [preferredType, onMountError]);
@@ -79,11 +77,8 @@ export function useWebCameraStream(video, preferredType, settings, { onCameraRea
if (!activeStreams.current.some((value) => value.id === nextStream?.id)) {
activeStreams.current.push(nextStream);
}
- // Set the new stream -> update the video, settings, and actual camera type.
setStream(nextStream);
- if (onCameraReady) {
- onCameraReady();
- }
+ onCameraReady?.();
return false;
}, [getStreamDeviceAsync, setStream, onCameraReady, stream, activeStreams.current]);
React.useEffect(() => {
@@ -112,13 +107,11 @@ export function useWebCameraStream(video, preferredType, settings, { onCameraRea
}
}
}
- // Only update the native camera if changes were found
- const hasChanges = !!Object.keys(changes).length;
- const nextWebCameraSettings = { ...capabilities.current, ...changes };
+ const hasChanges = Object.keys(changes).length > 0;
if (hasChanges) {
Utils.syncTrackCapabilities(preferredType, stream, changes);
}
- capabilities.current = nextWebCameraSettings;
+ capabilities.current = { ...capabilities.current, ...changes };
}, [
settings.autoFocus,
settings.flashMode,
diff --git a/packages/expo-camera/build/web/useWebCameraStream.js.map b/packages/expo-camera/build/web/useWebCameraStream.js.map
index bda14955790f65..8e6dc6f6feb792 100644
--- a/packages/expo-camera/build/web/useWebCameraStream.js.map
+++ b/packages/expo-camera/build/web/useWebCameraStream.js.map
@@ -1 +1 @@
-{"version":3,"file":"useWebCameraStream.js","sourceRoot":"","sources":["../../src/web/useWebCameraStream.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport * as React from 'react';\n\nimport * as Utils from './WebCameraUtils';\nimport { FacingModeToCameraType } from './WebConstants';\nimport {\n CameraReadyListener,\n CameraType,\n MountErrorListener,\n WebCameraSettings,\n} from '../Camera.types';\n\nconst VALID_SETTINGS_KEYS = [\n 'autoFocus',\n 'flashMode',\n 'exposureCompensation',\n 'colorTemperature',\n 'iso',\n 'brightness',\n 'contrast',\n 'saturation',\n 'sharpness',\n 'focusDistance',\n 'whiteBalance',\n 'zoom',\n] as const;\n\nfunction useLoadedVideo(video: HTMLVideoElement | null, onLoaded: () => void) {\n React.useEffect(() => {\n if (video) {\n video.addEventListener('loadedmetadata', () => {\n // without this async block the constraints aren't properly applied to the camera,\n // this means that if you were to turn on the torch and swap to the front camera,\n // then swap back to the rear camera the torch setting wouldn't be applied.\n requestAnimationFrame(() => {\n onLoaded();\n });\n });\n }\n }, [video]);\n}\n\nexport function useWebCameraStream(\n video: React.MutableRefObject,\n preferredType: CameraType,\n settings: Record,\n {\n onCameraReady,\n onMountError,\n }: { onCameraReady?: CameraReadyListener; onMountError?: MountErrorListener }\n): {\n type: CameraType | null;\n mediaTrackSettings: MediaTrackSettings | null;\n} {\n const isStartingCamera = React.useRef(false);\n const activeStreams = React.useRef([]);\n const capabilities = React.useRef({\n autoFocus: 'continuous',\n flashMode: 'off',\n whiteBalance: 'continuous',\n zoom: 0,\n });\n const [stream, setStream] = React.useState(null);\n\n const mediaTrackSettings = React.useMemo(() => {\n return stream ? stream.getTracks()[0].getSettings() : null;\n }, [stream]);\n\n // The actual camera type - this can be different from the incoming camera type.\n const type = React.useMemo(() => {\n if (!mediaTrackSettings) {\n return null;\n }\n // On desktop no value will be returned, in this case we should assume the cameraType is 'front'\n const { facingMode = 'user' } = mediaTrackSettings;\n return FacingModeToCameraType[facingMode];\n }, [mediaTrackSettings]);\n\n const getStreamDeviceAsync = React.useCallback(async (): Promise => {\n try {\n return await Utils.getPreferredStreamDevice(preferredType);\n } catch (nativeEvent: any) {\n if (__DEV__) {\n console.warn(`Error requesting UserMedia for type \"${preferredType}\":`, nativeEvent);\n }\n if (onMountError) {\n onMountError({ nativeEvent });\n }\n return null;\n }\n }, [preferredType, onMountError]);\n\n const resumeAsync = React.useCallback(async (): Promise => {\n const nextStream = await getStreamDeviceAsync();\n if (Utils.compareStreams(nextStream, stream)) {\n // Do nothing if the streams are the same.\n // This happens when the device only supports one camera (i.e. desktop) and the mode was toggled between front/back while already active.\n // Without this check there is a screen flash while the video switches.\n return false;\n }\n\n // Save a history of all active streams (usually 2+) so we can close them later.\n // Keeping them open makes swapping camera types much faster.\n if (!activeStreams.current.some((value) => value.id === nextStream?.id)) {\n activeStreams.current.push(nextStream!);\n }\n\n // Set the new stream -> update the video, settings, and actual camera type.\n setStream(nextStream);\n if (onCameraReady) {\n onCameraReady();\n }\n return false;\n }, [getStreamDeviceAsync, setStream, onCameraReady, stream, activeStreams.current]);\n\n React.useEffect(() => {\n // Restart the camera and guard concurrent actions.\n if (isStartingCamera.current) {\n return;\n }\n isStartingCamera.current = true;\n\n resumeAsync()\n .then((isStarting) => {\n isStartingCamera.current = isStarting;\n })\n .catch(() => {\n // ensure the camera can be started again.\n isStartingCamera.current = false;\n });\n }, [preferredType]);\n\n // Update the native camera with any custom capabilities.\n React.useEffect(() => {\n const changes: WebCameraSettings = {};\n\n for (const key of VALID_SETTINGS_KEYS) {\n if (key in settings) {\n const nextValue = settings[key];\n if (nextValue !== capabilities.current[key]) {\n changes[key] = nextValue;\n }\n }\n }\n\n // Only update the native camera if changes were found\n const hasChanges = !!Object.keys(changes).length;\n\n const nextWebCameraSettings = { ...capabilities.current, ...changes };\n if (hasChanges) {\n Utils.syncTrackCapabilities(preferredType, stream, changes);\n }\n\n capabilities.current = nextWebCameraSettings;\n }, [\n settings.autoFocus,\n settings.flashMode,\n settings.exposureCompensation,\n settings.colorTemperature,\n settings.iso,\n settings.brightness,\n settings.contrast,\n settings.saturation,\n settings.sharpness,\n settings.focusDistance,\n settings.whiteBalance,\n settings.zoom,\n ]);\n\n React.useEffect(() => {\n // set or unset the video source.\n if (!video.current) {\n return;\n }\n Utils.setVideoSource(video.current, stream);\n }, [video.current, stream]);\n\n React.useEffect(() => {\n return () => {\n // Clean up on dismount, this is important for making sure the camera light goes off when the component is removed.\n for (const stream of activeStreams.current) {\n // Close all open streams.\n Utils.stopMediaStream(stream);\n }\n if (video.current) {\n // Invalidate the video source.\n Utils.setVideoSource(video.current, stream);\n }\n };\n }, []);\n\n // Update props when the video loads.\n useLoadedVideo(video.current, () => {\n Utils.syncTrackCapabilities(preferredType, stream, capabilities.current);\n });\n\n return {\n type,\n mediaTrackSettings,\n };\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"useWebCameraStream.js","sourceRoot":"","sources":["../../src/web/useWebCameraStream.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport * as React from 'react';\n\nimport * as Utils from './WebCameraUtils';\nimport { FacingModeToCameraType } from './WebConstants';\nimport {\n CameraReadyListener,\n CameraType,\n MountErrorListener,\n WebCameraSettings,\n} from '../Camera.types';\n\nconst VALID_SETTINGS_KEYS = [\n 'autoFocus',\n 'flashMode',\n 'exposureCompensation',\n 'colorTemperature',\n 'iso',\n 'brightness',\n 'contrast',\n 'saturation',\n 'sharpness',\n 'focusDistance',\n 'whiteBalance',\n 'zoom',\n] as const;\n\nfunction useLoadedVideo(video: HTMLVideoElement | null, onLoaded: () => void) {\n React.useEffect(() => {\n if (video) {\n video.addEventListener('loadedmetadata', () => {\n // without this async block the constraints aren't properly applied to the camera,\n // this means that if you were to turn on the torch and swap to the front camera,\n // then swap back to the rear camera the torch setting wouldn't be applied.\n requestAnimationFrame(() => {\n onLoaded();\n });\n });\n }\n }, [video]);\n}\n\nexport function useWebCameraStream(\n video: React.MutableRefObject,\n preferredType: CameraType,\n settings: Record,\n {\n onCameraReady,\n onMountError,\n }: { onCameraReady?: CameraReadyListener; onMountError?: MountErrorListener }\n): {\n type: CameraType | null;\n mediaTrackSettings: MediaTrackSettings | null;\n} {\n const isStartingCamera = React.useRef(false);\n const activeStreams = React.useRef([]);\n const capabilities = React.useRef({\n autoFocus: 'continuous',\n flashMode: 'off',\n whiteBalance: 'continuous',\n zoom: 0,\n });\n const [stream, setStream] = React.useState(null);\n\n const mediaTrackSettings = React.useMemo(() => {\n return stream ? stream.getTracks()[0].getSettings() : null;\n }, [stream]);\n\n // The actual camera type - this can be different from the incoming camera type.\n const type = React.useMemo(() => {\n if (!mediaTrackSettings) {\n return null;\n }\n // On desktop no value will be returned, in this case we should assume the cameraType is 'front'\n const { facingMode = 'user' } = mediaTrackSettings;\n return FacingModeToCameraType[facingMode];\n }, [mediaTrackSettings]);\n\n const getStreamDeviceAsync = React.useCallback(async (): Promise => {\n try {\n return await Utils.getPreferredStreamDevice(preferredType);\n } catch (nativeEvent: any) {\n if (__DEV__) {\n console.warn(`Error requesting UserMedia for type \"${preferredType}\":`, nativeEvent);\n }\n onMountError?.({ nativeEvent });\n return null;\n }\n }, [preferredType, onMountError]);\n\n const resumeAsync = React.useCallback(async (): Promise => {\n const nextStream = await getStreamDeviceAsync();\n if (Utils.compareStreams(nextStream, stream)) {\n // Do nothing if the streams are the same.\n // This happens when the device only supports one camera (i.e. desktop) and the mode was toggled between front/back while already active.\n // Without this check there is a screen flash while the video switches.\n return false;\n }\n\n // Save a history of all active streams (usually 2+) so we can close them later.\n // Keeping them open makes swapping camera types much faster.\n if (!activeStreams.current.some((value) => value.id === nextStream?.id)) {\n activeStreams.current.push(nextStream!);\n }\n\n setStream(nextStream);\n onCameraReady?.();\n return false;\n }, [getStreamDeviceAsync, setStream, onCameraReady, stream, activeStreams.current]);\n\n React.useEffect(() => {\n // Restart the camera and guard concurrent actions.\n if (isStartingCamera.current) {\n return;\n }\n isStartingCamera.current = true;\n\n resumeAsync()\n .then((isStarting) => {\n isStartingCamera.current = isStarting;\n })\n .catch(() => {\n // ensure the camera can be started again.\n isStartingCamera.current = false;\n });\n }, [preferredType]);\n\n // Update the native camera with any custom capabilities.\n React.useEffect(() => {\n const changes: WebCameraSettings = {};\n\n for (const key of VALID_SETTINGS_KEYS) {\n if (key in settings) {\n const nextValue = settings[key];\n if (nextValue !== capabilities.current[key]) {\n changes[key] = nextValue;\n }\n }\n }\n\n const hasChanges = Object.keys(changes).length > 0;\n if (hasChanges) {\n Utils.syncTrackCapabilities(preferredType, stream, changes);\n }\n\n capabilities.current = { ...capabilities.current, ...changes };\n }, [\n settings.autoFocus,\n settings.flashMode,\n settings.exposureCompensation,\n settings.colorTemperature,\n settings.iso,\n settings.brightness,\n settings.contrast,\n settings.saturation,\n settings.sharpness,\n settings.focusDistance,\n settings.whiteBalance,\n settings.zoom,\n ]);\n\n React.useEffect(() => {\n // set or unset the video source.\n if (!video.current) {\n return;\n }\n Utils.setVideoSource(video.current, stream);\n }, [video.current, stream]);\n\n React.useEffect(() => {\n return () => {\n // Clean up on dismount, this is important for making sure the camera light goes off when the component is removed.\n for (const stream of activeStreams.current) {\n // Close all open streams.\n Utils.stopMediaStream(stream);\n }\n if (video.current) {\n // Invalidate the video source.\n Utils.setVideoSource(video.current, stream);\n }\n };\n }, []);\n\n // Update props when the video loads.\n useLoadedVideo(video.current, () => {\n Utils.syncTrackCapabilities(preferredType, stream, capabilities.current);\n });\n\n return {\n type,\n mediaTrackSettings,\n };\n}\n"]}
\ No newline at end of file
diff --git a/packages/expo-camera/ios/CameraViewModule.swift b/packages/expo-camera/ios/CameraViewModule.swift
index 3127091b0a11ad..c827ef38211647 100644
--- a/packages/expo-camera/ios/CameraViewModule.swift
+++ b/packages/expo-camera/ios/CameraViewModule.swift
@@ -30,18 +30,12 @@ public final class CameraViewModule: Module, ScannerResultHandler {
)
}
- Property("isModernBarcodeScannerAvailable") { () -> Bool in
- if #available(iOS 16.0, *) {
- return true
- }
- return false
+ Property("isModernBarcodeScannerAvailable") {
+ if #available(iOS 16.0, *) { true } else { false }
}
- Property("toggleRecordingAsyncAvailable") { () -> Bool in
- if #available(iOS 18.0, *) {
- return true
- }
- return false
+ Property("toggleRecordingAsyncAvailable") {
+ if #available(iOS 18.0, *) { true } else { false }
}
AsyncFunction("scanFromURLAsync") { (url: URL, _: [BarcodeType], promise: Promise) in
@@ -256,9 +250,7 @@ public final class CameraViewModule: Module, ScannerResultHandler {
}
AsyncFunction("getAvailablePictureSizes") {
- return PictureSize.allCases.map {
- $0.rawValue
- }
+ return PictureSize.allCases.map { $0.rawValue }
}
AsyncFunction("getAvailableLenses") { view in
diff --git a/packages/expo-camera/ios/Common/CameraPermissionsRequester.swift b/packages/expo-camera/ios/Common/CameraPermissionsRequester.swift
index 9e77d859b5eeab..f0fb5ffa3ccb22 100644
--- a/packages/expo-camera/ios/Common/CameraPermissionsRequester.swift
+++ b/packages/expo-camera/ios/Common/CameraPermissionsRequester.swift
@@ -71,40 +71,6 @@ class CameraOnlyPermissionRequester: NSObject, EXPermissionsRequester, BaseCamer
}
}
-class CameraPermissionRequester: NSObject, EXPermissionsRequester, BaseCameraRequester {
- let mediaType: AVMediaType = .video
-
- static func permissionType() -> String {
- "camera"
- }
-
- func getPermissions() -> [AnyHashable: Any] {
- var systemStatus: AVAuthorizationStatus
-
- let cameraUsuageDescription = Bundle.main.infoDictionary?[cameraKey] as? String
- let microphoneUsuageDescription = Bundle.main.infoDictionary?[microphoneKey] as? String
-
- if let cameraUsuageDescription, let microphoneUsuageDescription {
- systemStatus = AVCaptureDevice.authorizationStatus(for: mediaType)
- } else {
- RCTFatal(RCTErrorWithMessage("""
- This app is missing either NSCameraUsageDescription or NSMicrophoneUsageDescription,
- so audio/video services will fail. Add one of these entries to
- your bundle's Info.plist
- """))
- systemStatus = .denied
- }
-
- return permissionWith(status: systemStatus)
- }
-
- func requestPermissions(resolver resolve: @escaping EXPromiseResolveBlock, rejecter reject: EXPromiseRejectBlock) {
- requestAccess { [weak self] _ in
- resolve(self?.getPermissions())
- }
- }
-}
-
class CameraMicrophonePermissionRequester: NSObject, EXPermissionsRequester, BaseCameraRequester {
let mediaType: AVMediaType = .audio
diff --git a/packages/expo-camera/ios/Current/BarcodeScannerUtils.swift b/packages/expo-camera/ios/Current/BarcodeScannerUtils.swift
index 5f18d96d983dc8..60f1b2903a63e8 100644
--- a/packages/expo-camera/ios/Current/BarcodeScannerUtils.swift
+++ b/packages/expo-camera/ios/Current/BarcodeScannerUtils.swift
@@ -78,8 +78,6 @@ class BarcodeScannerUtils {
if !value.isEmpty && value.hasPrefix("0") {
result["data"] = value.dropFirst()
}
- } else {
- result["data"] = item.payloadStringValue
}
let bounds = item.bounds
diff --git a/packages/expo-camera/ios/Current/CameraSessionManager.swift b/packages/expo-camera/ios/Current/CameraSessionManager.swift
index 75ed1581408d8b..6aedc3664049a9 100644
--- a/packages/expo-camera/ios/Current/CameraSessionManager.swift
+++ b/packages/expo-camera/ios/Current/CameraSessionManager.swift
@@ -182,7 +182,7 @@ class CameraSessionManager: NSObject, DeviceDiscoveryDelegate {
do {
try device.lockForConfiguration()
defer { device.unlockForConfiguration() }
- if device.hasTorch && device.isTorchModeSupported(.on) {
+ if device.isTorchModeSupported(.on) {
device.torchMode = delegate.torchEnabled ? .on : .off
}
} catch {
@@ -318,17 +318,11 @@ class CameraSessionManager: NSObject, DeviceDiscoveryDelegate {
runtimeErrorTask?.cancel()
}
- var currentPhotoOutput: AVCapturePhotoOutput? {
- return photoOutput
- }
+ var currentPhotoOutput: AVCapturePhotoOutput? { photoOutput }
- var currentVideoFileOutput: AVCaptureMovieFileOutput? {
- return videoFileOutput
- }
+ var currentVideoFileOutput: AVCaptureMovieFileOutput? { videoFileOutput }
- var currentDevice: AVCaptureDevice? {
- return captureDeviceInput?.device
- }
+ var currentDevice: AVCaptureDevice? { captureDeviceInput?.device }
private func addDevice(_ device: AVCaptureDevice) {
guard let delegate else {
diff --git a/packages/expo-camera/ios/Current/CameraVideoRecording.swift b/packages/expo-camera/ios/Current/CameraVideoRecording.swift
index aca7b29993acf9..4db86b16edc682 100644
--- a/packages/expo-camera/ios/Current/CameraVideoRecording.swift
+++ b/packages/expo-camera/ios/Current/CameraVideoRecording.swift
@@ -112,21 +112,19 @@ class CameraVideoRecording: NSObject, AVCaptureFileOutputRecordingDelegate {
from connections: [AVCaptureConnection],
error: Error?
) {
- var success = true
-
- if error != nil {
- let value = (error as? NSError)?.userInfo[AVErrorRecordingSuccessfullyFinishedKey] as? Bool
- success = value == true ? true : false
+ defer {
+ videoRecordedPromise = nil
+ videoCodecType = nil
}
- if success && videoRecordedPromise != nil {
+ let success = error == nil
+ || (error as? NSError)?.userInfo[AVErrorRecordingSuccessfullyFinishedKey] as? Bool == true
+
+ if success {
videoRecordedPromise?.resolve(["uri": outputFileURL.absoluteString])
- } else if videoRecordedPromise != nil {
+ } else {
videoRecordedPromise?.reject(CameraRecordingFailedException())
}
-
- videoRecordedPromise = nil
- videoCodecType = nil
}
func cleanup() {
diff --git a/packages/expo-camera/ios/Current/VisionScannerDelegate.swift b/packages/expo-camera/ios/Current/VisionScannerDelegate.swift
index e50439aa71afd7..0e5ea63419f505 100644
--- a/packages/expo-camera/ios/Current/VisionScannerDelegate.swift
+++ b/packages/expo-camera/ios/Current/VisionScannerDelegate.swift
@@ -18,7 +18,7 @@ class VisionScannerDelegate: NSObject, DataScannerViewControllerDelegate {
switch item {
case .barcode(let code):
handler.onItemScanned(result: BarcodeScannerUtils.visionDataScannerObjectToDictionary(item: code))
- case .text(let text):
+ case .text:
return
@unknown default:
log.error("Unhandled `RecognizedItem` value: \(item), returning `nil` as fallback. Add the missing case as soon as possible.")
diff --git a/packages/expo-camera/src/CameraView.tsx b/packages/expo-camera/src/CameraView.tsx
index cf61c1cdafe6ee..40fc75809f1cf3 100644
--- a/packages/expo-camera/src/CameraView.tsx
+++ b/packages/expo-camera/src/CameraView.tsx
@@ -1,5 +1,5 @@
import { Platform, UnavailabilityError, type EventSubscription } from 'expo-modules-core';
-import { type Ref, Component, createRef } from 'react';
+import { Component, createRef } from 'react';
import {
CameraCapturedPicture,
@@ -52,10 +52,6 @@ function ensurePictureOptions(options?: CameraPictureOptions): CameraPictureOpti
}
function ensureRecordingOptions(options: CameraRecordingOptions = {}): CameraRecordingOptions {
- if (!options || typeof options !== 'object') {
- return {};
- }
-
if (options.mirror) {
console.warn(
'The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.'
@@ -168,7 +164,6 @@ export default class CameraView extends Component {
flash: 'off',
};
- _cameraHandle?: number | null;
_cameraRef = createRef();
_lastEvents: { [eventName: string]: string } = {};
_lastEventsTimes: { [eventName: string]: Date } = {};
@@ -226,10 +221,7 @@ export default class CameraView extends Component {
* @platform android
* @platform ios
*/
- static async launchScanner(options?: ScanningOptions): Promise {
- if (!options) {
- options = { barcodeTypes: [] };
- }
+ static async launchScanner(options: ScanningOptions = { barcodeTypes: [] }): Promise {
if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {
await CameraManager.launchScanner(options);
}
@@ -301,21 +293,15 @@ export default class CameraView extends Component {
}
_onCameraReady = () => {
- if (this.props.onCameraReady) {
- this.props.onCameraReady();
- }
+ this.props.onCameraReady?.();
};
_onAvailableLensesChanged = ({ nativeEvent }: { nativeEvent: AvailableLenses }) => {
- if (this.props.onAvailableLensesChanged) {
- this.props.onAvailableLensesChanged(nativeEvent);
- }
+ this.props.onAvailableLensesChanged?.(nativeEvent);
};
_onMountError = ({ nativeEvent }: { nativeEvent: { message: string } }) => {
- if (this.props.onMountError) {
- this.props.onMountError(nativeEvent);
- }
+ this.props.onMountError?.(nativeEvent);
};
_onResponsiveOrientationChanged = ({
@@ -323,9 +309,7 @@ export default class CameraView extends Component {
}: {
nativeEvent: { orientation: CameraOrientation };
}) => {
- if (this.props.onResponsiveOrientationChanged) {
- this.props.onResponsiveOrientationChanged(nativeEvent);
- }
+ this.props.onResponsiveOrientationChanged?.(nativeEvent);
};
_onObjectDetected =
@@ -348,15 +332,6 @@ export default class CameraView extends Component {
}
};
- _setReference = (ref: Ref) => {
- if (ref) {
- // TODO(Bacon): Unify these - perhaps with hooks?
- if (Platform.OS === 'web') {
- this._cameraHandle = ref as any;
- }
- }
- };
-
render() {
const nativeProps = ensureNativeProps(this.props);
const onBarcodeScanned = this.props.onBarcodeScanned
diff --git a/packages/expo-camera/src/ExpoCamera.web.tsx b/packages/expo-camera/src/ExpoCamera.web.tsx
index c61c18a992ff4e..74d62e19f25ad8 100644
--- a/packages/expo-camera/src/ExpoCamera.web.tsx
+++ b/packages/expo-camera/src/ExpoCamera.web.tsx
@@ -37,26 +37,23 @@ const ExponentCamera = ({
}: PropsWithChildren) => {
const video = useRef(null);
- const cameraSettings = useMemo(() => {
- return {
+ const cameraSettings = useMemo(
+ () => ({
...props,
flashMode: props.enableTorch ? 'torch' : props.flashMode,
- };
- }, [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]);
+ }),
+ [props.enableTorch, props.flashMode, props.zoom, props.autoFocus]
+ );
const native = useWebCameraStream(video, facing as CameraType, cameraSettings, {
- onCameraReady() {
- if (props.onCameraReady) {
- props.onCameraReady();
- }
- },
+ onCameraReady: props.onCameraReady,
onMountError: props.onMountError,
});
const barcodeTypes = props.barcodeScannerSettings?.barcodeTypes;
const isScannerEnabled = useMemo(() => {
- return Boolean(barcodeTypes?.length && !!props.onBarcodeScanned);
+ return !!barcodeTypes?.length && !!props.onBarcodeScanned;
}, [barcodeTypes, props.onBarcodeScanned]);
useWebBarcodeScanner(video, {
@@ -64,11 +61,7 @@ const ExponentCamera = ({
isEnabled: isScannerEnabled,
barcodeTypes: barcodeTypes ?? [],
isMirrored: native.type === 'front',
- onScanned(event) {
- if (props.onBarcodeScanned) {
- props.onBarcodeScanned(event);
- }
- },
+ onScanned: props.onBarcodeScanned,
});
useImperativeHandle(
@@ -78,7 +71,7 @@ const ExponentCamera = ({
return PictureSizes;
},
async takePicture(options: CameraPictureOptions): Promise {
- if (!video.current || video.current?.readyState !== video.current?.HAVE_ENOUGH_DATA) {
+ if (!video.current || video.current.readyState !== video.current.HAVE_ENOUGH_DATA) {
throw new CodedError(
'ERR_CAMERA_NOT_READY',
'HTMLVideoElement does not have enough camera data to construct an image yet.'
@@ -91,14 +84,9 @@ const ExponentCamera = ({
return capture(video.current, settings, {
...options,
- // This will always be defined, the option gets added to a queue in the upper-level. We should replace the original so it isn't called twice.
onPictureSaved(picture) {
- if (options.onPictureSaved) {
- options.onPictureSaved(picture);
- }
- if (props.onPictureSaved) {
- props.onPictureSaved({ nativeEvent: { data: picture, id: -1 } });
- }
+ options.onPictureSaved?.(picture);
+ props.onPictureSaved?.({ nativeEvent: { data: picture, id: -1 } });
},
});
},
@@ -133,10 +121,6 @@ const ExponentCamera = ({
[native.mediaTrackSettings, props.onPictureSaved]
);
- // TODO(Bacon): Create a universal prop, on native the microphone is only used when recording videos.
- // Because we don't support recording video in the browser we don't need the user to give microphone permissions.
- const isMuted = true;
-
const style = useMemo>(() => {
const isFrontFacingCamera = native.type === CameraManager.Type.front;
return [
@@ -152,7 +136,7 @@ const ExponentCamera = ({
return (
-
+
{props.children}
);
diff --git a/packages/expo-camera/src/ExpoCameraManager.web.ts b/packages/expo-camera/src/ExpoCameraManager.web.ts
index 8ee1f6bfd307aa..1a3eec924b8f8b 100644
--- a/packages/expo-camera/src/ExpoCameraManager.web.ts
+++ b/packages/expo-camera/src/ExpoCameraManager.web.ts
@@ -20,26 +20,20 @@ function getUserMedia(constraints: MediaStreamConstraints): Promise
return navigator.mediaDevices.getUserMedia(constraints);
}
-function handleGetUserMediaError({ message }: { message: string }): PermissionResponse {
- // name: NotAllowedError
- // code: 0
+function permissionResponse(status: PermissionStatus): PermissionResponse {
+ return {
+ status,
+ expires: 'never',
+ canAskAgain: true,
+ granted: status === PermissionStatus.GRANTED,
+ };
+}
+
+function handleGetUserMediaError(message: string): PermissionResponse {
if (message === 'Permission dismissed') {
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
- } else {
- // TODO: Bacon: [OSX] The system could deny access to chrome.
- // TODO: Bacon: add: { status: 'unimplemented' }
- return {
- status: PermissionStatus.DENIED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
}
+ return permissionResponse(PermissionStatus.DENIED);
}
async function handleRequestPermissionsAsync(): Promise {
@@ -54,12 +48,7 @@ async function handleRequestPermissionsAsync(): Promise {
track.stop();
streams.removeTrack(track);
});
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ return permissionResponse(PermissionStatus.GRANTED);
} catch (error: any) {
return handleGetUserMediaError(error.message);
}
@@ -76,36 +65,16 @@ async function handlePermissionsQueryAsync(
const { state } = await navigator.permissions.query({ name: query });
switch (state) {
case 'prompt':
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
case 'granted':
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ return permissionResponse(PermissionStatus.GRANTED);
case 'denied':
- return {
- status: PermissionStatus.DENIED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.DENIED);
}
} catch (e) {
// Firefox doesn't support querying for the camera permission, so return undetermined status
if (e instanceof TypeError) {
- return {
- status: PermissionStatus.UNDETERMINED,
- expires: 'never',
- canAskAgain: true,
- granted: false,
- };
+ return permissionResponse(PermissionStatus.UNDETERMINED);
}
throw e;
}
@@ -160,13 +129,13 @@ export default {
options: CameraPictureOptions,
camera: ExponentCameraRef
): Promise {
- return await camera.takePicture(options);
+ return camera.takePicture(options);
},
async pausePreview(camera: ExponentCameraRef): Promise {
- await camera.pausePreview();
+ return camera.pausePreview();
},
async resumePreview(camera: ExponentCameraRef): Promise {
- return await camera.resumePreview();
+ return camera.resumePreview();
},
async getAvailableCameraTypesAsync(): Promise {
if (!canGetUserMedia() || !navigator.mediaDevices.enumerateDevices) return [];
@@ -181,18 +150,8 @@ export default {
return types.filter(Boolean) as string[];
},
async getAvailablePictureSizes(ratio: string, camera: ExponentCameraRef): Promise {
- return await camera.getAvailablePictureSizes(ratio);
- },
- /*
- async record(
- options?: CameraRecordingOptions,
- camera: ExponentCameraRef
- ): Promise<{ uri: string }> {
- // TODO: Support on web
+ return camera.getAvailablePictureSizes(ratio);
},
- async stopRecording(camera: ExponentCameraRef): Promise {
- // TODO: Support on web
- }, */
async getPermissionsAsync(): Promise {
return handlePermissionsQueryAsync('camera');
},
@@ -210,15 +169,8 @@ export default {
},
async requestMicrophonePermissionsAsync(): Promise {
try {
- await getUserMedia({
- audio: true,
- });
- return {
- status: PermissionStatus.GRANTED,
- expires: 'never',
- canAskAgain: true,
- granted: true,
- };
+ await getUserMedia({ audio: true });
+ return permissionResponse(PermissionStatus.GRANTED);
} catch (error: any) {
return handleGetUserMediaError(error.message);
}
diff --git a/packages/expo-camera/src/web/WebCameraUtils.ts b/packages/expo-camera/src/web/WebCameraUtils.ts
index 3132b33f4faf9c..0839902cdff28b 100644
--- a/packages/expo-camera/src/web/WebCameraUtils.ts
+++ b/packages/expo-camera/src/web/WebCameraUtils.ts
@@ -51,18 +51,12 @@ export function hasValidConstraints(
}
function ensureCameraPictureOptions(config: CameraPictureOptions): CameraPictureOptions {
- const captureOptions: CameraPictureOptions = {
- scale: 1,
- imageType: 'png' as ImageType,
- isImageMirror: false,
+ return {
+ ...config,
+ scale: config.scale ?? 1,
+ imageType: config.imageType ?? 'png',
+ isImageMirror: config.isImageMirror ?? false,
};
- for (const key in config) {
- const prop = key as keyof CameraPictureOptions;
- if (prop in config && config[prop] !== undefined && prop in captureOptions) {
- captureOptions[prop] = config[prop] as any;
- }
- }
- return captureOptions;
}
const DEFAULT_QUALITY = 0.92;
@@ -190,13 +184,8 @@ export async function getStreamDevice(
preferredWidth?: number | ConstrainLongRange,
preferredHeight?: number | ConstrainLongRange
): Promise {
- const constraints: MediaStreamConstraints = getIdealConstraints(
- preferredCameraType,
- preferredWidth,
- preferredHeight
- );
- const stream: MediaStream = await requestUserMediaAsync(constraints);
- return stream;
+ const constraints = getIdealConstraints(preferredCameraType, preferredWidth, preferredHeight);
+ return requestUserMediaAsync(constraints);
}
export function isWebKit(): boolean {
@@ -218,25 +207,18 @@ export function capture(
config: CameraPictureOptions
): CameraCapturedPicture {
const base64 = captureImage(video, config);
+ const { width = 0, height = 0 } = settings;
const capturedPicture: CameraCapturedPicture = {
uri: base64,
base64,
- width: 0,
- height: 0,
+ width,
+ height,
format: config.imageType ?? 'jpg',
+ exif: settings,
};
- if (settings) {
- const { width = 0, height = 0 } = settings;
- capturedPicture.width = width;
- capturedPicture.height = height;
- capturedPicture.exif = settings;
- }
-
- if (config.onPictureSaved) {
- config.onPictureSaved(capturedPicture);
- }
+ config.onPictureSaved?.(capturedPicture);
return capturedPicture;
}
diff --git a/packages/expo-camera/src/web/useWebBarcodeScanner.ts b/packages/expo-camera/src/web/useWebBarcodeScanner.ts
index 5d011e02e1ac54..0bf365e6e4d0bc 100644
--- a/packages/expo-camera/src/web/useWebBarcodeScanner.ts
+++ b/packages/expo-camera/src/web/useWebBarcodeScanner.ts
@@ -93,9 +93,7 @@ export function useWebBarcodeScanner(
onScanned({ nativeEvent });
}
} catch (error: any) {
- if (onError) {
- onError({ nativeEvent: error });
- }
+ onError?.({ nativeEvent: error });
} finally {
if (interval === 0) {
stop();
@@ -119,10 +117,6 @@ export function useWebBarcodeScanner(
scanAsync();
}
- return () => {
- if (isEnabled) {
- stop();
- }
- };
+ return stop;
}, [isEnabled]);
}
diff --git a/packages/expo-camera/src/web/useWebCameraStream.ts b/packages/expo-camera/src/web/useWebCameraStream.ts
index ae405849c4e2bf..cca929274829e8 100644
--- a/packages/expo-camera/src/web/useWebCameraStream.ts
+++ b/packages/expo-camera/src/web/useWebCameraStream.ts
@@ -83,9 +83,7 @@ export function useWebCameraStream(
if (__DEV__) {
console.warn(`Error requesting UserMedia for type "${preferredType}":`, nativeEvent);
}
- if (onMountError) {
- onMountError({ nativeEvent });
- }
+ onMountError?.({ nativeEvent });
return null;
}
}, [preferredType, onMountError]);
@@ -105,11 +103,8 @@ export function useWebCameraStream(
activeStreams.current.push(nextStream!);
}
- // Set the new stream -> update the video, settings, and actual camera type.
setStream(nextStream);
- if (onCameraReady) {
- onCameraReady();
- }
+ onCameraReady?.();
return false;
}, [getStreamDeviceAsync, setStream, onCameraReady, stream, activeStreams.current]);
@@ -143,15 +138,12 @@ export function useWebCameraStream(
}
}
- // Only update the native camera if changes were found
- const hasChanges = !!Object.keys(changes).length;
-
- const nextWebCameraSettings = { ...capabilities.current, ...changes };
+ const hasChanges = Object.keys(changes).length > 0;
if (hasChanges) {
Utils.syncTrackCapabilities(preferredType, stream, changes);
}
- capabilities.current = nextWebCameraSettings;
+ capabilities.current = { ...capabilities.current, ...changes };
}, [
settings.autoFocus,
settings.flashMode,
diff --git a/packages/expo-dev-client-components/.eslintrc.js b/packages/expo-dev-client-components/.eslintrc.js
deleted file mode 100644
index 45cf2c1e35eb5e..00000000000000
--- a/packages/expo-dev-client-components/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- root: true,
- extends: ['universe/native', 'universe/web'],
- ignorePatterns: ['build'],
-};
diff --git a/packages/expo-dev-client-components/.gitignore b/packages/expo-dev-client-components/.gitignore
deleted file mode 100644
index f3d6549d836622..00000000000000
--- a/packages/expo-dev-client-components/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build/
\ No newline at end of file
diff --git a/packages/expo-dev-client-components/.npmignore b/packages/expo-dev-client-components/.npmignore
deleted file mode 100644
index 397ce3b98b7e6c..00000000000000
--- a/packages/expo-dev-client-components/.npmignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# @generated by expo-module-scripts
-
-# Exclude all top-level hidden directories by convention
-/.*/
-
-# Exclude tarballs generated by `npm pack`
-/*.tgz
-
-__mocks__
-__tests__
-__rsc_tests__
-
-/e2e
-/e2e-cli
-/babel.config.js
-/android/src/androidTest/
-/android/src/test/
-/ios/Tests
diff --git a/packages/expo-dev-client-components/CHANGELOG.md b/packages/expo-dev-client-components/CHANGELOG.md
deleted file mode 100644
index e5a1ca3f345d7e..00000000000000
--- a/packages/expo-dev-client-components/CHANGELOG.md
+++ /dev/null
@@ -1,191 +0,0 @@
-# Changelog
-
-## Unpublished
-
-### ๐ Breaking changes
-
-### ๐ New features
-
-### ๐ Bug fixes
-
-### ๐ก Others
-
-## 55.0.2 โ 2026-01-26
-
-_This version does not introduce any user-facing changes._
-
-## 55.0.1 โ 2026-01-22
-
-_This version does not introduce any user-facing changes._
-
-## 55.0.0 โ 2026-01-21
-
-### โ ๏ธ Notices
-
-- Added support for React Native 0.82.x. ([#39678](https://github.com/expo/expo/pull/39678) by [@gabrieldonadel](https://github.com/gabrieldonadel))
-
-## 3.0.8 - 2025-12-05
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.7 โ 2025-09-11
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.6 โ 2025-09-02
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.5 โ 2025-08-31
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.4 โ 2025-08-27
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.3 โ 2025-08-25
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.2 โ 2025-08-16
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.1 โ 2025-08-15
-
-_This version does not introduce any user-facing changes._
-
-## 3.0.0 โ 2025-08-13
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.5 - 2025-07-03
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.4 โ 2025-04-30
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.3 โ 2025-04-25
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.2 โ 2025-04-23
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.1 โ 2025-04-14
-
-_This version does not introduce any user-facing changes._
-
-## 2.1.0 โ 2025-04-04
-
-_This version does not introduce any user-facing changes._
-
-## 2.0.4 - 2025-03-11
-
-_This version does not introduce any user-facing changes._
-
-## 2.0.3 - 2025-01-10
-
-_This version does not introduce any user-facing changes._
-
-## 2.0.2 โ 2024-10-29
-
-_This version does not introduce any user-facing changes._
-
-## 2.0.1 โ 2024-10-22
-
-### ๐ก Others
-
-- Fixed check-package test errors. ([#32232](https://github.com/expo/expo/pull/32232) by [@kudo](https://github.com/kudo))
-
-## 2.0.0 โ 2024-10-22
-
-### ๐ Bug fixes
-
-- Add missing `react`/`react-native` peer dependencies. ([#30573](https://github.com/expo/expo/pull/30573) by [@byCedric](https://github.com/byCedric))
-
-### ๐ก Others
-
-- Standardized Babel configuration to use `expo-module-scripts`. ([#31915](https://github.com/expo/expo/pull/31915) by [@reichhartd](https://github.com/reichhartd))
-
-## 1.8.1 โ 2024-04-29
-
-_This version does not introduce any user-facing changes._
-
-## 1.8.0 โ 2023-12-12
-
-### ๐ New features
-
-- Add flex prop to Button component. ([#25699](https://github.com/expo/expo/pull/25699) by [@gabrieldonadel](https://github.com/gabrieldonadel))
-
-## 1.7.0 โ 2023-11-14
-
-### ๐ก Others
-
-- Removed backward compatible code for deprecated SDKs. ([#25154](https://github.com/expo/expo/pull/25154) by [@kudo](https://github.com/kudo))
-
-## 1.6.1 โ 2023-09-04
-
-_This version does not introduce any user-facing changes._
-
-## 1.6.0 โ 2023-08-02
-
-_This version does not introduce any user-facing changes._
-
-## 1.5.3 โ 2023-07-26
-
-_This version does not introduce any user-facing changes._
-
-## 1.5.2 โ 2023-06-28
-
-_This version does not introduce any user-facing changes._
-
-## 1.5.1 โ 2023-06-27
-
-### ๐ New features
-
-- Add Building icon. ([#23114](https://github.com/expo/expo/pull/23114) by [@gabrieldonadel](https://github.com/gabrieldonadel))
-
-## 1.5.0 โ 2023-06-21
-
-### ๐ Bug fixes
-
-- Fixed Spacers background color in dark mode. ([#22612](https://github.com/expo/expo/pull/22612) by [@gabrieldonadel](https://github.com/gabrieldonadel))
-
-### ๐ก Others
-
-- Replace buttons bounce animation with fading animation. ([#22681](https://github.com/expo/expo/pull/22681) by [@gabrieldonadel](https://github.com/gabrieldonadel))
-
-## 1.4.0 โ 2023-05-08
-
-_This version does not introduce any user-facing changes._
-
-## 1.3.1 โ 2023-02-09
-
-_This version does not introduce any user-facing changes._
-
-## 1.3.0 โ 2023-02-03
-
-_This version does not introduce any user-facing changes._
-
-## 1.2.1 โ 2022-10-25
-
-_This version does not introduce any user-facing changes._
-
-## 1.2.0 โ 2022-07-07
-
-_This version does not introduce any user-facing changes._
-
-## 1.1.0 โ 2022-04-18
-
-### ๐ New features
-
-- Extend components to include the spacing scale from `@expo/styleguide-native` ([#16309](https://github.com/expo/expo/pull/16309) by [@ajsmth](https://github.com/ajsmth))
-
-## 1.0.0 โ 2021-12-22
-
-_This version does not introduce any user-facing changes._
diff --git a/packages/expo-dev-client-components/README.md b/packages/expo-dev-client-components/README.md
deleted file mode 100644
index 62ecda5a1b2700..00000000000000
--- a/packages/expo-dev-client-components/README.md
+++ /dev/null
@@ -1,166 +0,0 @@
-# expo-dev-client-components
-
-A package for sharing React Native components between different dev-client RN apps
-
-## API documentation
-
-```tsx
-import { View, Spacer, Row, useExpoTheme, ChevronRightICon } from 'expo-dev-client-components';
-
-function ExampleRow() {
- const theme = useExpoTheme();
-
- return (
-
-
-
-
-
- Enter URL manually
-
-
-
- );
-}
-```
-
-### Documentation
-
-`create-primitive` is a utility that generates a set of themed react-native components.
-
-Features:
-
-- theme-ability
-- typesafety
-- clear and flexible API
-
-## API
-
-```tsx
-import { Text } from 'react-native';
-import { create } from './create-primitives';
-
-const Heading = create(Text, {
- base: {
- fontFamily: 'Helvetica',
- },
-
- variants: {
- size: {
- large: {
- fontSize: 28,
- lineHeight: 34,
- },
- medium: {
- fontSize: 22,
- lineHeight: 28,
- },
- small: {
- fontSize: 18,
- lineHeight: 22,
- },
- },
- color: {
- success: {
- color: 'green',
- },
- danger: {
- color: 'red',
- },
- },
- },
-});
-```
-
-This above produces a `Heading` component that can be used like so:
-
-```tsx
-function App() {
- return (
-
- Hi
-
- );
-}
-```
-
-All of the variants are captured by typescript which makes using them a breeze.
-
-## Declarative Selectors
-
-We can extend the `Heading` component above with selectors:
-
-```tsx
-const Heading = create(RNText, {
- variants: {
- // ....
- },
- selectors: {
- // when device theme is 'light'...
- light: {
- color: {
- // ...any `Heading` with `color="success"`...
- success: {
- // ...will have these styles applied
- color: 'green',
- },
- },
- },
- },
-});
-```
-
-You can also pass selectors to primitives for one-off instances where you need a specific style:
-
-```tsx
-function App() {
- return (
-
-
- Hi
-
-
- );
-}
-```
-
-## Flexibility
-
-You can use any style library you'd like - for example using tailwind for a terser, readable configuration.
-
-```tsx
-import tw from 'somewhere';
-import { create } from './create-primitives';
-
-const Heading = create(RNText, {
- size: {
- large: tw('text-4xl'),
- medium: tw('text-3xl'),
- small: tw('text-2xl'),
- },
- weight: {
- normal: tw('font-medium'),
- heavy: tw('font-semibold'),
- },
- color: {
- success: tw('text-green-500'),
- danger: tw('text-red-500'),
- },
-});
-```
-
-## Installation in managed Expo projects
-
-There are no native dependencies exported and so this module should be compatible with any RN project
-
-## Installation in bare React Native projects
-
-There are no native dependencies exported and so this module should be compatible with any RN project
-
-## Contributing
-
-Contributions are very welcome! Please refer to guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).
diff --git a/packages/expo-dev-client-components/assets/branch-icon-light.png b/packages/expo-dev-client-components/assets/branch-icon-light.png
deleted file mode 100644
index 95d9a55752a261..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/branch-icon-light@2x.png b/packages/expo-dev-client-components/assets/branch-icon-light@2x.png
deleted file mode 100644
index 09ae0a138b47d2..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/branch-icon-light@3x.png b/packages/expo-dev-client-components/assets/branch-icon-light@3x.png
deleted file mode 100644
index 0684163714e764..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/branch-icon.png b/packages/expo-dev-client-components/assets/branch-icon.png
deleted file mode 100644
index e1262ab67562e2..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/branch-icon@2x.png b/packages/expo-dev-client-components/assets/branch-icon@2x.png
deleted file mode 100644
index fbd10a28ac9630..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/branch-icon@3x.png b/packages/expo-dev-client-components/assets/branch-icon@3x.png
deleted file mode 100644
index c479ee6a94be87..00000000000000
Binary files a/packages/expo-dev-client-components/assets/branch-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/building-icon.png b/packages/expo-dev-client-components/assets/building-icon.png
deleted file mode 100644
index ae48dca49ecdb7..00000000000000
Binary files a/packages/expo-dev-client-components/assets/building-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/building-icon@2x.png b/packages/expo-dev-client-components/assets/building-icon@2x.png
deleted file mode 100644
index 3ef3394030e41a..00000000000000
Binary files a/packages/expo-dev-client-components/assets/building-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/building-icon@3x.png b/packages/expo-dev-client-components/assets/building-icon@3x.png
deleted file mode 100644
index 9869bd23261a92..00000000000000
Binary files a/packages/expo-dev-client-components/assets/building-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon-light.png b/packages/expo-dev-client-components/assets/check-icon-light.png
deleted file mode 100644
index ceb987b5206a89..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon-light@2x.png b/packages/expo-dev-client-components/assets/check-icon-light@2x.png
deleted file mode 100644
index b83a09805e268b..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon-light@3x.png b/packages/expo-dev-client-components/assets/check-icon-light@3x.png
deleted file mode 100644
index 35495776a81c71..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon.png b/packages/expo-dev-client-components/assets/check-icon.png
deleted file mode 100644
index bccf36a3582405..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon@2x.png b/packages/expo-dev-client-components/assets/check-icon@2x.png
deleted file mode 100644
index 2fa66c35e87cad..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/check-icon@3x.png b/packages/expo-dev-client-components/assets/check-icon@3x.png
deleted file mode 100644
index 330b2b2b94c05f..00000000000000
Binary files a/packages/expo-dev-client-components/assets/check-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/chevron-right-icon.png b/packages/expo-dev-client-components/assets/chevron-right-icon.png
deleted file mode 100644
index eecb13532c7922..00000000000000
Binary files a/packages/expo-dev-client-components/assets/chevron-right-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/chevron-right-icon@2x.png b/packages/expo-dev-client-components/assets/chevron-right-icon@2x.png
deleted file mode 100644
index 50cfa6774b9556..00000000000000
Binary files a/packages/expo-dev-client-components/assets/chevron-right-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/chevron-right-icon@3x.png b/packages/expo-dev-client-components/assets/chevron-right-icon@3x.png
deleted file mode 100644
index 53f5bbcb0e83d0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/chevron-right-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/clipboard-icon.png b/packages/expo-dev-client-components/assets/clipboard-icon.png
deleted file mode 100644
index 51fbaae8a9e9c6..00000000000000
Binary files a/packages/expo-dev-client-components/assets/clipboard-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/clipboard-icon@2x.png b/packages/expo-dev-client-components/assets/clipboard-icon@2x.png
deleted file mode 100644
index 9c991fd5dce531..00000000000000
Binary files a/packages/expo-dev-client-components/assets/clipboard-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/clipboard-icon@3x.png b/packages/expo-dev-client-components/assets/clipboard-icon@3x.png
deleted file mode 100644
index ba4aef7dacf146..00000000000000
Binary files a/packages/expo-dev-client-components/assets/clipboard-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/debug-icon.png b/packages/expo-dev-client-components/assets/debug-icon.png
deleted file mode 100644
index 3670542d5cd3c2..00000000000000
Binary files a/packages/expo-dev-client-components/assets/debug-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/debug-icon@2x.png b/packages/expo-dev-client-components/assets/debug-icon@2x.png
deleted file mode 100644
index 9ad2d3835a5b64..00000000000000
Binary files a/packages/expo-dev-client-components/assets/debug-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/debug-icon@3x.png b/packages/expo-dev-client-components/assets/debug-icon@3x.png
deleted file mode 100644
index 96733c2c3ad1cc..00000000000000
Binary files a/packages/expo-dev-client-components/assets/debug-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light.png
deleted file mode 100644
index 01a48280fcb675..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@2x.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@2x.png
deleted file mode 100644
index c11347d316329e..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@3x.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@3x.png
deleted file mode 100644
index 427457eed5e9e0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon.png
deleted file mode 100644
index d3d36be7e92427..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon@2x.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon@2x.png
deleted file mode 100644
index 3fde0c120088dc..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-active-icon@3x.png b/packages/expo-dev-client-components/assets/extensions-filled-active-icon@3x.png
deleted file mode 100644
index 283f93de0400e2..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-active-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light.png
deleted file mode 100644
index 1c16409c8144db..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@2x.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@2x.png
deleted file mode 100644
index cec5504ba7ea1d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@3x.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@3x.png
deleted file mode 100644
index 9370e94ad0e787..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon.png
deleted file mode 100644
index c6ef0219a7aa3d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@2x.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@2x.png
deleted file mode 100644
index 481db064130a79..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@3x.png b/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@3x.png
deleted file mode 100644
index 08a2d1746b2ec3..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-filled-inactive-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon-light.png b/packages/expo-dev-client-components/assets/extensions-icon-light.png
deleted file mode 100644
index cb392919dc6706..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon-light@2x.png b/packages/expo-dev-client-components/assets/extensions-icon-light@2x.png
deleted file mode 100644
index 504adb8e348669..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon-light@3x.png b/packages/expo-dev-client-components/assets/extensions-icon-light@3x.png
deleted file mode 100644
index 4939627774d5f5..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon.png b/packages/expo-dev-client-components/assets/extensions-icon.png
deleted file mode 100644
index a35f71a0b8bc21..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon@2x.png b/packages/expo-dev-client-components/assets/extensions-icon@2x.png
deleted file mode 100644
index c6c43726652495..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/extensions-icon@3x.png b/packages/expo-dev-client-components/assets/extensions-icon@3x.png
deleted file mode 100644
index d4ec285a2a2443..00000000000000
Binary files a/packages/expo-dev-client-components/assets/extensions-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon-light.png b/packages/expo-dev-client-components/assets/home-filled-active-icon-light.png
deleted file mode 100644
index 5d790c246f296f..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon-light@2x.png b/packages/expo-dev-client-components/assets/home-filled-active-icon-light@2x.png
deleted file mode 100644
index 6be99b770eaeea..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon-light@3x.png b/packages/expo-dev-client-components/assets/home-filled-active-icon-light@3x.png
deleted file mode 100644
index ba09bbf33fd8b8..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon.png b/packages/expo-dev-client-components/assets/home-filled-active-icon.png
deleted file mode 100644
index 39b77963098791..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon@2x.png b/packages/expo-dev-client-components/assets/home-filled-active-icon@2x.png
deleted file mode 100644
index 3442658eb72fea..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-active-icon@3x.png b/packages/expo-dev-client-components/assets/home-filled-active-icon@3x.png
deleted file mode 100644
index ee9307c2f71484..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-active-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light.png
deleted file mode 100644
index fdde50ba911092..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@2x.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@2x.png
deleted file mode 100644
index 2255d4aeb232c3..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@3x.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@3x.png
deleted file mode 100644
index 1c1125ff37a0d6..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon.png
deleted file mode 100644
index 9c348ba35dafc4..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon@2x.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon@2x.png
deleted file mode 100644
index d86811bbd7ddad..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/home-filled-inactive-icon@3x.png b/packages/expo-dev-client-components/assets/home-filled-inactive-icon@3x.png
deleted file mode 100644
index 7f66c5f205bd53..00000000000000
Binary files a/packages/expo-dev-client-components/assets/home-filled-inactive-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon-light.png b/packages/expo-dev-client-components/assets/info-icon-light.png
deleted file mode 100644
index 02d084b800829d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon-light@2x.png b/packages/expo-dev-client-components/assets/info-icon-light@2x.png
deleted file mode 100644
index 1001b41b2c0030..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon-light@3x.png b/packages/expo-dev-client-components/assets/info-icon-light@3x.png
deleted file mode 100644
index a052fd2bf65889..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon.png b/packages/expo-dev-client-components/assets/info-icon.png
deleted file mode 100644
index 8710cc69475834..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon@2x.png b/packages/expo-dev-client-components/assets/info-icon@2x.png
deleted file mode 100644
index 04c81fbdea6986..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/info-icon@3x.png b/packages/expo-dev-client-components/assets/info-icon@3x.png
deleted file mode 100644
index a763ed2e2b4a0d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/info-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/inspect-element-icon.png b/packages/expo-dev-client-components/assets/inspect-element-icon.png
deleted file mode 100644
index fb63ff506307e4..00000000000000
Binary files a/packages/expo-dev-client-components/assets/inspect-element-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/inspect-element-icon@2x.png b/packages/expo-dev-client-components/assets/inspect-element-icon@2x.png
deleted file mode 100644
index c45e2f9a1e83e0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/inspect-element-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/inspect-element-icon@3x.png b/packages/expo-dev-client-components/assets/inspect-element-icon@3x.png
deleted file mode 100644
index 6ae8a7b8690737..00000000000000
Binary files a/packages/expo-dev-client-components/assets/inspect-element-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/loading-indicator-icon.png b/packages/expo-dev-client-components/assets/loading-indicator-icon.png
deleted file mode 100644
index c2eb4a297aaa64..00000000000000
Binary files a/packages/expo-dev-client-components/assets/loading-indicator-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/loading-indicator-icon@2x.png b/packages/expo-dev-client-components/assets/loading-indicator-icon@2x.png
deleted file mode 100644
index 180d979da26d75..00000000000000
Binary files a/packages/expo-dev-client-components/assets/loading-indicator-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/loading-indicator-icon@3x.png b/packages/expo-dev-client-components/assets/loading-indicator-icon@3x.png
deleted file mode 100644
index 5919e6f02bfb6d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/loading-indicator-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/logo-icon.png b/packages/expo-dev-client-components/assets/logo-icon.png
deleted file mode 100644
index 4e7363ba428609..00000000000000
Binary files a/packages/expo-dev-client-components/assets/logo-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/logo-icon@2x.png b/packages/expo-dev-client-components/assets/logo-icon@2x.png
deleted file mode 100644
index c329f290eacb14..00000000000000
Binary files a/packages/expo-dev-client-components/assets/logo-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/logo-icon@3x.png b/packages/expo-dev-client-components/assets/logo-icon@3x.png
deleted file mode 100644
index a625a1b2ed3232..00000000000000
Binary files a/packages/expo-dev-client-components/assets/logo-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/performance-icon.png b/packages/expo-dev-client-components/assets/performance-icon.png
deleted file mode 100644
index 13f27dcde7e7aa..00000000000000
Binary files a/packages/expo-dev-client-components/assets/performance-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/performance-icon@2x.png b/packages/expo-dev-client-components/assets/performance-icon@2x.png
deleted file mode 100644
index 949928947c1314..00000000000000
Binary files a/packages/expo-dev-client-components/assets/performance-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/performance-icon@3x.png b/packages/expo-dev-client-components/assets/performance-icon@3x.png
deleted file mode 100644
index e686fd0a953b3d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/performance-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/question-mark-icon.png b/packages/expo-dev-client-components/assets/question-mark-icon.png
deleted file mode 100644
index a7330756cf6cf9..00000000000000
Binary files a/packages/expo-dev-client-components/assets/question-mark-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/question-mark-icon@2x.png b/packages/expo-dev-client-components/assets/question-mark-icon@2x.png
deleted file mode 100644
index c5138def57726b..00000000000000
Binary files a/packages/expo-dev-client-components/assets/question-mark-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/question-mark-icon@3x.png b/packages/expo-dev-client-components/assets/question-mark-icon@3x.png
deleted file mode 100644
index 91a4ad2d20ef98..00000000000000
Binary files a/packages/expo-dev-client-components/assets/question-mark-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/refresh-icon.png b/packages/expo-dev-client-components/assets/refresh-icon.png
deleted file mode 100644
index 1b2ae49d670f07..00000000000000
Binary files a/packages/expo-dev-client-components/assets/refresh-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/refresh-icon@2x.png b/packages/expo-dev-client-components/assets/refresh-icon@2x.png
deleted file mode 100644
index e21bc853ad0a4d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/refresh-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/refresh-icon@3x.png b/packages/expo-dev-client-components/assets/refresh-icon@3x.png
deleted file mode 100644
index b5307832aa5a19..00000000000000
Binary files a/packages/expo-dev-client-components/assets/refresh-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/run-icon.png b/packages/expo-dev-client-components/assets/run-icon.png
deleted file mode 100644
index c0b7311ad6d3b0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/run-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/run-icon@2x.png b/packages/expo-dev-client-components/assets/run-icon@2x.png
deleted file mode 100644
index 9e65f6a4195f7a..00000000000000
Binary files a/packages/expo-dev-client-components/assets/run-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/run-icon@3x.png b/packages/expo-dev-client-components/assets/run-icon@3x.png
deleted file mode 100644
index 88b6cf8c045566..00000000000000
Binary files a/packages/expo-dev-client-components/assets/run-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon-light.png
deleted file mode 100644
index a410d1c6df0d0d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@2x.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@2x.png
deleted file mode 100644
index 4752518a9b81f7..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@3x.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@3x.png
deleted file mode 100644
index c9b90d43f06cb4..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon.png
deleted file mode 100644
index 023122858703ff..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon@2x.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon@2x.png
deleted file mode 100644
index c4517a2de032e6..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-active-icon@3x.png b/packages/expo-dev-client-components/assets/settings-filled-active-icon@3x.png
deleted file mode 100644
index b8a7b0af2b3c21..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-active-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light.png
deleted file mode 100644
index 79d4cb528dc574..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@2x.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@2x.png
deleted file mode 100644
index ab665feeadcae9..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@3x.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@3x.png
deleted file mode 100644
index 092a30aa446aeb..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon.png
deleted file mode 100644
index 9fbfb78232e460..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@2x.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@2x.png
deleted file mode 100644
index a6df8bb68620a6..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@3x.png b/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@3x.png
deleted file mode 100644
index bba400c02da3bf..00000000000000
Binary files a/packages/expo-dev-client-components/assets/settings-filled-inactive-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon-light.png b/packages/expo-dev-client-components/assets/shake-device-icon-light.png
deleted file mode 100644
index 1d177b22c39360..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon-light@2x.png b/packages/expo-dev-client-components/assets/shake-device-icon-light@2x.png
deleted file mode 100644
index 705bb962118d2f..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon-light@3x.png b/packages/expo-dev-client-components/assets/shake-device-icon-light@3x.png
deleted file mode 100644
index 96ea3ba33fc563..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon.png b/packages/expo-dev-client-components/assets/shake-device-icon.png
deleted file mode 100644
index 603d95f0b110c6..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon@2x.png b/packages/expo-dev-client-components/assets/shake-device-icon@2x.png
deleted file mode 100644
index b947329ad1d1e1..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/shake-device-icon@3x.png b/packages/expo-dev-client-components/assets/shake-device-icon@3x.png
deleted file mode 100644
index 89eddd460d78ba..00000000000000
Binary files a/packages/expo-dev-client-components/assets/shake-device-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light.png
deleted file mode 100644
index a124a70954664d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@2x.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@2x.png
deleted file mode 100644
index e00bd605fe253d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@3x.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@3x.png
deleted file mode 100644
index c696e27e309b2b..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon.png
deleted file mode 100644
index fb49b2576fef80..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@2x.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@2x.png
deleted file mode 100644
index fa43d0809af00e..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@3x.png b/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@3x.png
deleted file mode 100644
index e755e6025bfda8..00000000000000
Binary files a/packages/expo-dev-client-components/assets/show-menu-at-launch-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/terminal-icon.png b/packages/expo-dev-client-components/assets/terminal-icon.png
deleted file mode 100644
index 9273654a2440a0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/terminal-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/terminal-icon@2x.png b/packages/expo-dev-client-components/assets/terminal-icon@2x.png
deleted file mode 100644
index 2bc8258c25deab..00000000000000
Binary files a/packages/expo-dev-client-components/assets/terminal-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/terminal-icon@3x.png b/packages/expo-dev-client-components/assets/terminal-icon@3x.png
deleted file mode 100644
index da51537d2444e3..00000000000000
Binary files a/packages/expo-dev-client-components/assets/terminal-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light.png
deleted file mode 100644
index e7deb3c578ce61..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@2x.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@2x.png
deleted file mode 100644
index 1fdbb6989dc4c5..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@3x.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@3x.png
deleted file mode 100644
index 79d9be540a0d23..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon.png
deleted file mode 100644
index 862bcf7a64121b..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon@2x.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon@2x.png
deleted file mode 100644
index 5a8b94d8e51b64..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/three-finger-long-press-icon@3x.png b/packages/expo-dev-client-components/assets/three-finger-long-press-icon@3x.png
deleted file mode 100644
index 350cb1449520f7..00000000000000
Binary files a/packages/expo-dev-client-components/assets/three-finger-long-press-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/toolbar-overlay-icon.png b/packages/expo-dev-client-components/assets/toolbar-overlay-icon.png
deleted file mode 100644
index 67263098437561..00000000000000
Binary files a/packages/expo-dev-client-components/assets/toolbar-overlay-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/toolbar-overlay-icon@2x.png b/packages/expo-dev-client-components/assets/toolbar-overlay-icon@2x.png
deleted file mode 100644
index 6d953b0375c3cb..00000000000000
Binary files a/packages/expo-dev-client-components/assets/toolbar-overlay-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/toolbar-overlay-icon@3x.png b/packages/expo-dev-client-components/assets/toolbar-overlay-icon@3x.png
deleted file mode 100644
index a24b5424de4879..00000000000000
Binary files a/packages/expo-dev-client-components/assets/toolbar-overlay-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon-light.png b/packages/expo-dev-client-components/assets/update-icon-light.png
deleted file mode 100644
index b5adc1ec3dc5a0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon-light@2x.png b/packages/expo-dev-client-components/assets/update-icon-light@2x.png
deleted file mode 100644
index 1daa9741267baf..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon-light@3x.png b/packages/expo-dev-client-components/assets/update-icon-light@3x.png
deleted file mode 100644
index a60ca3dd117642..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon.png b/packages/expo-dev-client-components/assets/update-icon.png
deleted file mode 100644
index 42e135863c582b..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon@2x.png b/packages/expo-dev-client-components/assets/update-icon@2x.png
deleted file mode 100644
index 4e2e83f777b6ca..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/update-icon@3x.png b/packages/expo-dev-client-components/assets/update-icon@3x.png
deleted file mode 100644
index 2ab13a4e3bbbe3..00000000000000
Binary files a/packages/expo-dev-client-components/assets/update-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon-light.png b/packages/expo-dev-client-components/assets/user-icon-light.png
deleted file mode 100644
index 0c8575f27db03a..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon-light@2x.png b/packages/expo-dev-client-components/assets/user-icon-light@2x.png
deleted file mode 100644
index d500c56eb8c0ea..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon-light@3x.png b/packages/expo-dev-client-components/assets/user-icon-light@3x.png
deleted file mode 100644
index a2dea56cd5fd0d..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon.png b/packages/expo-dev-client-components/assets/user-icon.png
deleted file mode 100644
index f20cfb150fdcb4..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon@2x.png b/packages/expo-dev-client-components/assets/user-icon@2x.png
deleted file mode 100644
index dcf4298cc7a963..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/user-icon@3x.png b/packages/expo-dev-client-components/assets/user-icon@3x.png
deleted file mode 100644
index fe77c6734c51e1..00000000000000
Binary files a/packages/expo-dev-client-components/assets/user-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon-light.png b/packages/expo-dev-client-components/assets/warning-triangle-icon-light.png
deleted file mode 100644
index 3594dc27c07400..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon-light@2x.png b/packages/expo-dev-client-components/assets/warning-triangle-icon-light@2x.png
deleted file mode 100644
index 53e3bc70aa458e..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon-light@3x.png b/packages/expo-dev-client-components/assets/warning-triangle-icon-light@3x.png
deleted file mode 100644
index 675457f21af82e..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon.png b/packages/expo-dev-client-components/assets/warning-triangle-icon.png
deleted file mode 100644
index 0467cdc1b88268..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon@2x.png b/packages/expo-dev-client-components/assets/warning-triangle-icon@2x.png
deleted file mode 100644
index 2eef8e025345d3..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/warning-triangle-icon@3x.png b/packages/expo-dev-client-components/assets/warning-triangle-icon@3x.png
deleted file mode 100644
index b91d1322a089c0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/warning-triangle-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon-light.png b/packages/expo-dev-client-components/assets/x-icon-light.png
deleted file mode 100644
index 3caea50a7077a0..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon-light.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon-light@2x.png b/packages/expo-dev-client-components/assets/x-icon-light@2x.png
deleted file mode 100644
index 314536eed05e13..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon-light@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon-light@3x.png b/packages/expo-dev-client-components/assets/x-icon-light@3x.png
deleted file mode 100644
index d998e49a24e0d8..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon-light@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon.png b/packages/expo-dev-client-components/assets/x-icon.png
deleted file mode 100644
index dab7c1563624f9..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon@2x.png b/packages/expo-dev-client-components/assets/x-icon@2x.png
deleted file mode 100644
index e26ea9cc148557..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon@2x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/assets/x-icon@3x.png b/packages/expo-dev-client-components/assets/x-icon@3x.png
deleted file mode 100644
index e5f294f427e97a..00000000000000
Binary files a/packages/expo-dev-client-components/assets/x-icon@3x.png and /dev/null differ
diff --git a/packages/expo-dev-client-components/babel.config.js b/packages/expo-dev-client-components/babel.config.js
deleted file mode 100644
index 68c7d3192262e3..00000000000000
--- a/packages/expo-dev-client-components/babel.config.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// @generated by expo-module-scripts
-module.exports = require('expo-module-scripts/babel.config.base');
diff --git a/packages/expo-dev-client-components/package.json b/packages/expo-dev-client-components/package.json
deleted file mode 100644
index 6c1be03f7e1c76..00000000000000
--- a/packages/expo-dev-client-components/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "expo-dev-client-components",
- "version": "55.0.2",
- "description": "Shared JS components and configuration for expo-dev-client",
- "main": "src/index.ts",
- "scripts": {
- "clean": "expo-module clean",
- "lint": "expo-module lint",
- "test": "jest .",
- "prepare": "expo-module prepare",
- "prepublishOnly": "expo-module prepublishOnly",
- "expo-module": "expo-module"
- },
- "keywords": [
- "react-native",
- "expo",
- "expo-dev-client-components"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/expo/expo.git",
- "directory": "packages/expo-dev-client-components"
- },
- "bugs": {
- "url": "https://github.com/expo/expo/issues"
- },
- "author": "650 Industries, Inc.",
- "license": "MIT",
- "homepage": "https://docs.expo.dev",
- "dependencies": {
- "@expo/styleguide-native": "^1.0.1",
- "expo-module-scripts": "^55.0.2"
- },
- "devDependencies": {
- "@testing-library/react-native": "^13.2.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- },
- "jest": {
- "preset": "react-native",
- "setupFilesAfterEnv": [
- "./setupTests.js"
- ]
- }
-}
diff --git a/packages/expo-dev-client-components/setupTests.js b/packages/expo-dev-client-components/setupTests.js
deleted file mode 100644
index 5eceff3fa2b05e..00000000000000
--- a/packages/expo-dev-client-components/setupTests.js
+++ /dev/null
@@ -1,32 +0,0 @@
-jest.mock('react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo', () => {
- const MockA11y = {
- addEventListener: jest.fn(),
- announceForAccessibility: jest.fn(),
- fetch: jest.fn(),
- isBoldTextEnabled: jest.fn().mockResolvedValue(false),
- isGrayscaleEnabled: jest.fn().mockResolvedValue(false),
- isInvertColorsEnabled: jest.fn().mockResolvedValue(false),
- isReduceMotionEnabled: jest.fn().mockResolvedValue(false),
- isReduceTransparencyEnabled: jest.fn().mockResolvedValue(false),
- isScreenReaderEnabled: jest.fn(() => Promise.resolve(false)),
- removeEventListener: jest.fn(),
- setAccessibilityFocus: jest.fn(),
- };
- return {
- __esModule: true,
- default: MockA11y,
- };
-});
-
-jest.mock('react-native/Libraries/Utilities/Appearance', () => {
- const MockAppearance = {
- addChangeListener: jest.fn().mockReturnValue({ remove: jest.fn() }),
- removeChangeListener: jest.fn(),
- getColorScheme: jest.fn(() => 'light'),
- };
- return {
- __esModule: true,
- default: MockAppearance,
- ...MockAppearance,
- };
-});
diff --git a/packages/expo-dev-client-components/src/Button.tsx b/packages/expo-dev-client-components/src/Button.tsx
deleted file mode 100644
index 52b3ebc564fa9f..00000000000000
--- a/packages/expo-dev-client-components/src/Button.tsx
+++ /dev/null
@@ -1,222 +0,0 @@
-import { lightTheme, darkTheme, borderRadius, shadows, palette } from '@expo/styleguide-native';
-import * as React from 'react';
-import {
- Text as RNText,
- Animated,
- useColorScheme,
- Pressable as RNPressable,
- Easing,
-} from 'react-native';
-
-import { create } from './create-primitive';
-import { rounded, margin, padding, text } from './theme';
-
-const AnimatedPressable = Animated.createAnimatedComponent(RNPressable);
-
-const Text = create(RNText, {
- base: {
- fontFamily: 'Inter-Regular',
- color: lightTheme.text.default,
- fontSize: 16,
- lineHeight: 22,
- },
-
- props: {
- accessibilityRole: 'text',
- },
-
- variants: {
- ...text,
-
- color: {
- primary: { color: lightTheme.button.primary.foreground },
- secondary: { color: lightTheme.button.secondary.foreground },
- tertiary: { color: lightTheme.button.tertiary.foreground },
- ghost: { color: lightTheme.button.ghost.foreground },
- transparent: { color: lightTheme.button.transparent.foreground },
- default: { color: lightTheme.text.default },
- },
- },
-
- selectors: {
- dark: {
- base: {
- color: darkTheme.text.default,
- },
-
- color: {
- primary: { color: darkTheme.button.primary.foreground },
- secondary: { color: darkTheme.button.secondary.foreground },
- tertiary: { color: darkTheme.button.tertiary.foreground },
- ghost: { color: darkTheme.button.ghost.foreground },
- transparent: { color: darkTheme.button.transparent.foreground },
- default: { color: darkTheme.text.default },
- },
- },
- },
-});
-
-const Container = create(AnimatedPressable, {
- base: {
- overflow: 'hidden',
- borderRadius: borderRadius.medium,
- },
-
- props: {
- accessibilityRole: 'button',
- android_disableSound: true,
- },
-
- variants: {
- bg: {
- default: { backgroundColor: lightTheme.background.default },
- primary: { backgroundColor: lightTheme.button.primary.background },
- secondary: { backgroundColor: lightTheme.button.secondary.background },
- tertiary: { backgroundColor: lightTheme.button.tertiary.background },
- ghost: { backgroundColor: lightTheme.button.ghost.background },
- transparent: { backgroundColor: lightTheme.button.transparent.background },
- disabled: { backgroundColor: lightTheme.status.default },
- },
-
- border: {
- ghost: { borderColor: lightTheme.button.ghost.border, borderWidth: 1 },
- },
-
- shadow: {
- button: shadows.button,
- },
-
- flex: {
- '1': { flex: 1 },
- '0': { flex: 0 },
- },
-
- ...rounded,
- ...padding,
- ...margin,
- },
-
- selectors: {
- dark: {
- bg: {
- default: { backgroundColor: darkTheme.background.default },
- primary: { backgroundColor: darkTheme.button.primary.background },
- secondary: { backgroundColor: darkTheme.button.secondary.background },
- tertiary: { backgroundColor: darkTheme.button.tertiary.background },
- ghost: { backgroundColor: darkTheme.button.ghost.background },
- transparent: { backgroundColor: darkTheme.button.transparent.background },
- disabled: { backgroundColor: darkTheme.status.default },
- },
- },
- },
-});
-
-export const Button = {
- Container,
- FadeOnPressContainer,
- HighlightOnPressContainer,
- Text,
-};
-
-type FadingPressableProps = {
- activeOpacity?: number;
-};
-
-type NoOptionals = {
- [P in keyof T]-?: T[P];
-};
-
-type ContainerProps = React.ComponentProps;
-type ContainerBackgroundColors = NoOptionals['bg'];
-
-const lightHighlightColorMap: Record = {
- disabled: 'transparent',
- default: lightTheme.background.secondary,
- primary: lightTheme.background.tertiary,
- secondary: lightTheme.background.quaternary,
- tertiary: palette.light.gray[600],
- ghost: lightTheme.background.tertiary,
- transparent: lightTheme.background.secondary,
-};
-
-const darkHighlightColorMap: Record = {
- disabled: 'transparent',
- default: darkTheme.background.secondary,
- primary: darkTheme.background.tertiary,
- secondary: darkTheme.background.quaternary,
- tertiary: palette.dark.gray[600],
- ghost: darkTheme.background.tertiary,
- transparent: darkTheme.background.secondary,
-};
-
-const highlightColorMap = {
- dark: darkHighlightColorMap,
- light: lightHighlightColorMap,
-};
-
-function FadeOnPressContainer({
- activeOpacity = 0.2,
- ...props
-}: React.ComponentProps & FadingPressableProps) {
- const animatedValue = React.useRef(new Animated.Value(1));
-
- const onPressIn = React.useCallback(() => {
- Animated.timing(animatedValue.current, {
- toValue: activeOpacity,
- duration: 150,
- easing: Easing.inOut(Easing.quad),
- useNativeDriver: true,
- }).start();
- }, []);
-
- const onPressOut = React.useCallback(() => {
- Animated.timing(animatedValue.current, {
- toValue: 1,
- duration: 150,
- easing: Easing.inOut(Easing.quad),
- useNativeDriver: true,
- }).start();
- }, []);
-
- return (
-
- {props.children}
-
- );
-}
-
-function HighlightOnPressContainer(props: React.ComponentProps) {
- const systemTheme = useColorScheme();
- const theme = systemTheme !== 'unspecified' ? systemTheme : 'light';
- const [isPressing, setIsPressing] = React.useState(false);
-
- const onPressIn = React.useCallback(() => {
- setIsPressing(true);
- }, []);
-
- const onPressOut = React.useCallback(() => {
- setIsPressing(false);
- }, []);
-
- let backgroundColor = 'transparent';
-
- if (props.bg && isPressing && theme != null) {
- backgroundColor = highlightColorMap[theme][props.bg];
- }
-
- const underlayStyle = {
- backgroundColor,
- };
-
- return (
-
- {props.children}
-
- );
-}
diff --git a/packages/expo-dev-client-components/src/Image.tsx b/packages/expo-dev-client-components/src/Image.tsx
deleted file mode 100644
index 929ec5c4079d35..00000000000000
--- a/packages/expo-dev-client-components/src/Image.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { borderRadius, iconSize } from '@expo/styleguide-native';
-import { Image as RNImage } from 'react-native';
-
-import { create } from './create-primitive';
-import { scale } from './theme';
-
-export const Image = create(RNImage, {
- base: {
- resizeMode: 'cover',
- },
-
- variants: {
- size: {
- tiny: {
- height: scale.small,
- width: scale.small,
- },
- small: {
- height: iconSize.small,
- width: iconSize.small,
- },
-
- large: {
- height: iconSize.large,
- width: iconSize.large,
- },
-
- xl: {
- height: scale.xl,
- width: scale.xl,
- },
- },
-
- rounded: {
- small: { borderRadius: borderRadius.small },
- medium: { borderRadius: borderRadius.medium },
- large: { borderRadius: borderRadius.large },
- huge: { borderRadius: borderRadius.huge },
- full: { borderRadius: 99999 },
- },
- },
-});
diff --git a/packages/expo-dev-client-components/src/Text.tsx b/packages/expo-dev-client-components/src/Text.tsx
deleted file mode 100644
index 5169f4494ad372..00000000000000
--- a/packages/expo-dev-client-components/src/Text.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import { darkTheme, lightTheme, shadows, typography } from '@expo/styleguide-native';
-import { Text as RNText, TextInput as RNTextInput } from 'react-native';
-
-import { create } from './create-primitive';
-import { text, textDark, padding, rounded } from './theme';
-
-export const Heading = create(RNText, {
- base: {
- fontFamily: 'Inter-SemiBold',
- color: lightTheme.text.default,
- ...typography.fontSizes[18],
- },
-
- props: {
- accessibilityRole: 'header',
- },
-
- variants: {
- ...text,
-
- size: {
- large: typography.fontSizes[22],
- small: typography.fontSizes[13],
- },
- },
-
- selectors: {
- dark: textDark,
- },
-});
-
-export const Text = create(RNText, {
- base: {
- fontFamily: 'Inter-Regular',
- color: lightTheme.text.default,
- fontSize: 16,
- lineHeight: 18,
- },
-
- props: {
- accessibilityRole: 'text',
- },
-
- variants: {
- ...text,
- },
-
- selectors: {
- dark: textDark,
- },
-});
-
-export const TextInput = create(RNTextInput, {
- base: {
- fontFamily: 'Inter-Regular',
- color: lightTheme.text.default,
- fontSize: 16,
- lineHeight: 18,
- },
-
- variants: {
- ...text,
-
- border: {
- default: {
- borderWidth: 1,
- borderColor: lightTheme.border.default,
- },
- },
-
- ...rounded,
-
- ...padding,
-
- shadow: {
- input: shadows.input,
- },
- },
-
- selectors: {
- dark: {
- ...textDark,
-
- border: {
- default: {
- borderColor: darkTheme.border.default,
- borderWidth: 1,
- },
- },
- },
- },
-});
diff --git a/packages/expo-dev-client-components/src/View.tsx b/packages/expo-dev-client-components/src/View.tsx
deleted file mode 100644
index 28e3a1b59d9c42..00000000000000
--- a/packages/expo-dev-client-components/src/View.tsx
+++ /dev/null
@@ -1,287 +0,0 @@
-import { lightTheme, darkTheme, shadows } from '@expo/styleguide-native';
-import { View as RNView, StyleSheet } from 'react-native';
-
-import { create } from './create-primitive';
-import {
- scale,
- padding,
- margin,
- rounded,
- bg,
- bgDark,
- width,
- height,
- borderDark,
- border,
-} from './theme';
-
-export const View = create(RNView, {
- variants: {
- overflow: {
- hidden: {
- overflow: 'hidden',
- },
- },
-
- align: {
- centered: {
- justifyContent: 'center',
- alignItems: 'center',
- },
- start: {
- alignItems: 'flex-start',
- },
- },
-
- flex: {
- '1': { flex: 1 },
- '0': { flex: 0 },
- },
-
- shrink: {
- '1': { flexShrink: 1 },
- '0': { flexShrink: 0 },
- },
-
- grow: {
- '1': { flexGrow: 1 },
- '0': { flexGrow: 0 },
- },
-
- bg,
-
- opacity: {
- '1': { opacity: 1 },
- '0.5': { opacity: 0.5 },
- '0.75': { opacity: 0.75 },
- '0': { opacity: 0 },
- },
-
- inset: {
- top: {
- position: 'absolute',
- top: 0,
- left: 0,
- right: 0,
- },
-
- bottom: {
- position: 'absolute',
- bottom: 0,
- left: 0,
- right: 0,
- },
-
- full: {
- position: 'absolute',
- top: 0,
- left: 0,
- right: 0,
- bottom: 0,
- },
- },
-
- border: {
- default: { borderColor: lightTheme.border.default, borderWidth: 1 },
- hairline: { borderColor: lightTheme.border.default, borderWidth: StyleSheet.hairlineWidth },
- warning: { borderColor: lightTheme.border.warning, borderWidth: 1 },
- error: { borderColor: lightTheme.border.error, borderWidth: 1 },
- },
-
- ...rounded,
-
- shadow: {
- micro: shadows.micro,
- tiny: shadows.tiny,
- small: shadows.small,
- medium: shadows.medium,
- button: shadows.button,
- },
-
- width,
- height,
-
- ...padding,
- ...margin,
- },
-
- selectors: {
- dark: {
- bg: bgDark,
-
- border: borderDark,
- },
-
- light: {
- bg: {},
- },
- },
-});
-
-export const Row = create(RNView, {
- base: {
- flexDirection: 'row',
- },
-
- variants: {
- bg,
-
- flex: {
- '1': { flex: 1 },
- '0': { flex: 0 },
- },
-
- shrink: {
- '1': { flexShrink: 1 },
- '0': { flexShrink: 0 },
- },
-
- grow: {
- '1': { flexGrow: 1 },
- '0': { flexGrow: 0 },
- },
-
- align: {
- center: { alignItems: 'center' },
- start: { alignItems: 'flex-start' },
- end: { alignItems: 'flex-end' },
- },
-
- justify: {
- center: { justifyContent: 'center' },
- start: { justifyContent: 'flex-start' },
- end: { justifyContent: 'flex-end' },
- between: { justifyContent: 'space-between' },
- around: { justifyContent: 'space-around' },
- },
-
- ...padding,
- ...margin,
-
- ...rounded,
-
- border,
- },
-
- selectors: {
- dark: {
- bg: bgDark,
- border: borderDark,
- },
- },
-});
-
-const Horizontal = create(RNView, {
- base: {
- flex: 1,
- },
- variants: {
- bg,
- size: {
- micro: { width: scale.micro, flex: 0 },
- tiny: { width: scale.tiny, flex: 0 },
- small: { width: scale.small, flex: 0 },
- medium: { width: scale.medium, flex: 0 },
- large: { width: scale.large, flex: 0 },
- xl: { width: scale.xl, flex: 0 },
- },
- },
-
- selectors: {
- dark: {
- bg: bgDark,
- },
- },
-});
-
-const Vertical = create(RNView, {
- base: {
- flex: 1,
- },
- variants: {
- bg,
- size: {
- micro: { height: scale.micro, flex: 0 },
- tiny: { height: scale.tiny, flex: 0 },
- small: { height: scale.small, flex: 0 },
- medium: { height: scale.medium, flex: 0 },
- large: { height: scale.large, flex: 0 },
- xl: { height: scale.xl, flex: 0 },
- },
- },
-
- selectors: {
- dark: {
- bg: bgDark,
- },
- },
-});
-
-export const Spacer = {
- Vertical,
- Horizontal,
-};
-
-export const Divider = create(RNView, {
- base: {
- height: StyleSheet.hairlineWidth,
- backgroundColor: lightTheme.border.default,
- },
-
- variants: {
- weight: {
- thin: { height: StyleSheet.hairlineWidth },
- normal: { height: 1 },
- heavy: { height: 2 },
- },
-
- ...margin,
- },
-
- selectors: {
- dark: {
- base: {
- height: StyleSheet.hairlineWidth,
- backgroundColor: darkTheme.border.default,
- },
- },
- },
-});
-
-export const StatusIndicator = create(RNView, {
- base: {
- backgroundColor: lightTheme.status.default,
- borderRadius: 9999,
- },
-
- variants: {
- status: {
- info: { backgroundColor: lightTheme.status.info },
- success: { backgroundColor: lightTheme.status.success },
- warning: { backgroundColor: lightTheme.status.warning },
- error: { backgroundColor: lightTheme.status.error },
- default: { backgroundColor: lightTheme.status.default },
- },
-
- size: {
- small: {
- width: scale.small,
- height: scale.small,
- },
- medium: {
- width: scale.medium,
- height: scale.medium,
- },
- },
- },
-
- selectors: {
- dark: {
- info: { backgroundColor: darkTheme.status.info },
- success: { backgroundColor: darkTheme.status.success },
- warning: { backgroundColor: darkTheme.status.warning },
- error: { backgroundColor: darkTheme.status.error },
- default: { backgroundColor: darkTheme.status.default },
- },
- },
-});
diff --git a/packages/expo-dev-client-components/src/__tests__/create-primitive.test.tsx b/packages/expo-dev-client-components/src/__tests__/create-primitive.test.tsx
deleted file mode 100644
index 72f7fa94b775c2..00000000000000
--- a/packages/expo-dev-client-components/src/__tests__/create-primitive.test.tsx
+++ /dev/null
@@ -1,164 +0,0 @@
-import { render } from '@testing-library/react-native';
-import * as React from 'react';
-import { Text, View } from 'react-native';
-
-import { create } from '../create-primitive';
-import { ThemeProvider } from '../useExpoTheme';
-
-test('it renders the given component', async () => {
- const Heading = create(Text, {});
- const Box = create(View, {});
-
- const { toJSON: textJSON } = render(Hi);
- let json: any = textJSON();
-
- expect(json.type).toEqual('Text');
-
- const { toJSON: viewJSON } = render();
- json = viewJSON();
-
- expect(json.type).toEqual('View');
-});
-
-test('it passes variant style props', async () => {
- const Heading = create(Text, {
- variants: {
- size: {
- large: {
- fontSize: 20,
- },
- },
- },
- });
-
- const { toJSON } = render(Hi);
-
- const json: any = toJSON();
-
- expect(json.props.style.fontSize).toEqual(20);
-});
-
-test('it passes base style props', async () => {
- const Heading = create(Text, {
- base: {
- fontFamily: 'Helvetica',
- },
- });
-
- const { toJSON } = render(Hi);
- const json: any = toJSON();
- expect(json.props.style).toEqual({ fontFamily: 'Helvetica' });
-});
-
-test('it passes non-style props', () => {
- const Heading = create(Text, {
- props: {
- accessibilityRole: 'header',
- },
- });
-
- const { toJSON } = render(Hi);
- const json: any = toJSON();
-
- expect(json.props.accessibilityRole).toEqual('header');
-});
-
-test('initial render with the correct style for dark mode', () => {
- const selectors = {
- light: {
- bg: {
- test: {
- backgroundColor: 'red',
- },
- },
- },
- dark: {
- bg: {
- test: {
- backgroundColor: 'blue',
- },
- },
- },
- };
-
- const Heading = create(Text, {
- selectors: {
- light: {
- bg: {
- test: {
- backgroundColor: 'red',
- },
- },
- },
- dark: {
- bg: {
- test: {
- backgroundColor: 'blue',
- },
- },
- },
- },
- });
-
- const { toJSON, rerender } = render(
-
- Hi
-
- );
-
- const darkThemeRender: any = toJSON();
-
- expect(darkThemeRender.props.style.backgroundColor).toEqual(
- selectors.dark.bg.test.backgroundColor
- );
-
- rerender(
-
- Hi
-
- );
-
- const lightThemeRender: any = toJSON();
-
- expect(lightThemeRender.props.style.backgroundColor).toEqual(
- selectors.light.bg.test.backgroundColor
- );
-});
-
-test('it handles ad-hoc selectors as props', () => {
- const Heading = create(Text, {});
-
- const selectors = { dark: { backgroundColor: 'red' }, light: { backgroundColor: 'blue' } };
-
- const { toJSON, rerender } = render(
-
-
-
- );
-
- const darkThemeRender: any = toJSON();
- expect(darkThemeRender.props.style).toEqual(selectors.dark);
-
- rerender(
-
-
-
- );
-
- const lightThemeRender: any = toJSON();
- expect(lightThemeRender.props.style).toEqual(selectors.light);
-});
-
-test('it does not pass props that have a variant of the same name to components', () => {
- const Box = create(View, {
- variants: {
- width: {
- test: { width: 24 },
- },
- },
- });
-
- const { toJSON } = render();
- const output: any = toJSON();
- expect(output.props.width).toBeUndefined();
-});
diff --git a/packages/expo-dev-client-components/src/create-primitive.tsx b/packages/expo-dev-client-components/src/create-primitive.tsx
deleted file mode 100644
index 75c4e2fbba0015..00000000000000
--- a/packages/expo-dev-client-components/src/create-primitive.tsx
+++ /dev/null
@@ -1,124 +0,0 @@
-import { ComponentType, PropsWithChildren, createElement, forwardRef } from 'react';
-import { type ImageStyle, StyleSheet, type TextStyle, type ViewStyle } from 'react-native';
-
-import { useTheme } from './useExpoTheme';
-
-type StyleType = ViewStyle | TextStyle | ImageStyle;
-
-type Options = {
- base?: StyleType;
- variants?: VariantMap;
-};
-
-type VariantMap = { [key: string]: { [key: string]: T } };
-
-type Nested = {
- [Property in keyof Type]?: keyof Type[Property];
-};
-
-type SelectorMap = Partial<{
- [K in keyof Variants]?: {
- [T in keyof Variants[K]]?: StyleType;
- };
-}>;
-
-type Selectors = {
- light?: SelectorMap;
- dark?: SelectorMap;
-};
-
-type SelectorProps = {
- light?: StyleType;
- dark?: StyleType;
-};
-
-export function create(
- component: ComponentType,
- config: O & { selectors?: Selectors; props?: T }
-) {
- config.selectors = config.selectors ?? {};
- config.variants = config.variants ?? {};
-
- return forwardRef<
- T,
- PropsWithChildren & Nested<(typeof config)['variants']> & { selectors?: SelectorProps }
- >((props, ref) => {
- const theme = useTheme();
-
- const variantFreeProps: any = { ...props };
-
- const variantStyles = stylesForVariants(props, config.variants);
- const selectorStyles = stylesForSelectors(props, config.selectors, { theme });
- const selectorPropsStyles = stylesForSelectorProps(variantFreeProps.selectors, { theme });
-
- // @ts-ignore
- // there could be a conflict between the primitive prop and the variant name
- // for example - variant name "width" and prop "width"
- // in these cases, favor the variant because it is under the users control (e.g they can update the conflicting name)
- Object.keys(config.variants).forEach((variant) => {
- delete variantFreeProps[variant];
- });
-
- return createElement(component, {
- ...config.props,
- ...variantFreeProps,
- style: StyleSheet.flatten([
- config.base,
- variantStyles,
- selectorStyles,
- selectorPropsStyles,
- variantFreeProps.style ?? {},
- ]),
- ref,
- });
- });
-}
-
-function stylesForVariants(props: any, variants: any = {}) {
- let styles = {};
-
- for (const key in props) {
- if (variants[key]) {
- const value = props[key];
-
- const styleValue = variants[key][value];
- if (styleValue) {
- styles = StyleSheet.flatten(StyleSheet.compose(styles, styleValue));
- }
- }
- }
-
- return styles;
-}
-
-function stylesForSelectors(props: any, selectors: any = {}, state: any = {}) {
- const styles: any[] = [];
-
- if (state.theme != null) {
- if (selectors[state.theme] != null) {
- const variants = selectors[state.theme];
- const variantStyles = stylesForVariants(props, variants);
-
- if (variants.base != null) {
- styles.push(variants.base);
- }
-
- styles.push(variantStyles);
- }
- }
-
- return StyleSheet.flatten(styles);
-}
-
-function stylesForSelectorProps(selectors: any = {}, state: any = {}) {
- const styles: any[] = [];
-
- if (state.theme != null) {
- if (selectors[state.theme] != null) {
- const selectorStyles = selectors[state.theme];
- styles.push(selectorStyles);
- }
- }
-
- return StyleSheet.flatten(styles);
-}
diff --git a/packages/expo-dev-client-components/src/icons/BranchIcon.tsx b/packages/expo-dev-client-components/src/icons/BranchIcon.tsx
deleted file mode 100644
index 81f3b7223ffc97..00000000000000
--- a/packages/expo-dev-client-components/src/icons/BranchIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/branch-icon-light.png');
-const icon = require('../../assets/branch-icon.png');
-
-export function BranchIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/BuildingIcon.tsx b/packages/expo-dev-client-components/src/icons/BuildingIcon.tsx
deleted file mode 100644
index d78d9dadc0c784..00000000000000
--- a/packages/expo-dev-client-components/src/icons/BuildingIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/building-icon.png');
-
-export function BuildingIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/CheckIcon.tsx b/packages/expo-dev-client-components/src/icons/CheckIcon.tsx
deleted file mode 100644
index 438e44ceb68274..00000000000000
--- a/packages/expo-dev-client-components/src/icons/CheckIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/check-icon-light.png');
-const icon = require('../../assets/check-icon.png');
-
-export function CheckIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ChevronRightIcon.tsx b/packages/expo-dev-client-components/src/icons/ChevronRightIcon.tsx
deleted file mode 100644
index 64076107f022bb..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ChevronRightIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/chevron-right-icon.png');
-
-export function ChevronRightIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ClipboardIcon.tsx b/packages/expo-dev-client-components/src/icons/ClipboardIcon.tsx
deleted file mode 100644
index cfd4a06bd0b7a8..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ClipboardIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/clipboard-icon.png');
-
-export function ClipboardIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/DebugIcon.tsx b/packages/expo-dev-client-components/src/icons/DebugIcon.tsx
deleted file mode 100644
index 721dd1b4a7d221..00000000000000
--- a/packages/expo-dev-client-components/src/icons/DebugIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/debug-icon.png');
-
-export function DebugIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ExpoLogoIcon.tsx b/packages/expo-dev-client-components/src/icons/ExpoLogoIcon.tsx
deleted file mode 100644
index 1bb9cb00204e0b..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ExpoLogoIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/logo-icon.png');
-
-export function ExpoLogoIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ExtensionsFilledIcon.tsx b/packages/expo-dev-client-components/src/icons/ExtensionsFilledIcon.tsx
deleted file mode 100644
index 83678f54fc9788..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ExtensionsFilledIcon.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const activeLightIcon = require('../../assets/extensions-filled-active-icon-light.png');
-const activeIcon = require('../../assets/extensions-filled-active-icon.png');
-const inactiveLightIcon = require('../../assets/extensions-filled-inactive-icon-light.png');
-const inactiveIcon = require('../../assets/extensions-filled-inactive-icon.png');
-
-const iconMap = {
- light: {
- active: activeIcon,
- inactive: inactiveIcon,
- },
- dark: {
- active: activeLightIcon,
- inactive: inactiveLightIcon,
- },
-};
-
-type TabBarIconProps = Partial> & {
- focused?: boolean;
-};
-
-export function ExtensionsFilledIcon(props: TabBarIconProps) {
- const theme = useCurrentTheme();
- const themedIcon = iconMap[theme];
- const icon = props.focused ? themedIcon.active : themedIcon.inactive;
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ExtensionsIcon.tsx b/packages/expo-dev-client-components/src/icons/ExtensionsIcon.tsx
deleted file mode 100644
index 61968c760bf5fa..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ExtensionsIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/extensions-icon-light.png');
-const icon = require('../../assets/extensions-icon.png');
-
-export function ExtensionsIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/HomeFilledIcon.tsx b/packages/expo-dev-client-components/src/icons/HomeFilledIcon.tsx
deleted file mode 100644
index 274c651efd166a..00000000000000
--- a/packages/expo-dev-client-components/src/icons/HomeFilledIcon.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const activeLightIcon = require('../../assets/home-filled-active-icon-light.png');
-const activeIcon = require('../../assets/home-filled-active-icon.png');
-const inactiveLightIcon = require('../../assets/home-filled-inactive-icon-light.png');
-const inactiveIcon = require('../../assets/home-filled-inactive-icon.png');
-
-const iconMap = {
- light: {
- active: activeIcon,
- inactive: inactiveIcon,
- },
- dark: {
- active: activeLightIcon,
- inactive: inactiveLightIcon,
- },
-};
-
-type TabBarIconProps = Partial> & {
- focused?: boolean;
-};
-
-export function HomeFilledIcon(props: TabBarIconProps) {
- const theme = useCurrentTheme();
- const themedIcon = iconMap[theme];
- const icon = props.focused ? themedIcon.active : themedIcon.inactive;
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/InfoIcon.tsx b/packages/expo-dev-client-components/src/icons/InfoIcon.tsx
deleted file mode 100644
index ba5a140f462c8c..00000000000000
--- a/packages/expo-dev-client-components/src/icons/InfoIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/info-icon-light.png');
-const icon = require('../../assets/info-icon.png');
-
-export function InfoIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/InspectElementIcon.tsx b/packages/expo-dev-client-components/src/icons/InspectElementIcon.tsx
deleted file mode 100644
index aed7926de49161..00000000000000
--- a/packages/expo-dev-client-components/src/icons/InspectElementIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/inspect-element-icon.png');
-
-export function InspectElementIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/LoadingIndicatorIcon.tsx b/packages/expo-dev-client-components/src/icons/LoadingIndicatorIcon.tsx
deleted file mode 100644
index 53ac1e2d48ebbb..00000000000000
--- a/packages/expo-dev-client-components/src/icons/LoadingIndicatorIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/loading-indicator-icon.png');
-
-export function LoadingIndicatorIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/PerformanceIcon.tsx b/packages/expo-dev-client-components/src/icons/PerformanceIcon.tsx
deleted file mode 100644
index f9a9852555430c..00000000000000
--- a/packages/expo-dev-client-components/src/icons/PerformanceIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/performance-icon.png');
-
-export function PerformanceIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/QuestionMarkIcon.tsx b/packages/expo-dev-client-components/src/icons/QuestionMarkIcon.tsx
deleted file mode 100644
index 9a4ade4805500d..00000000000000
--- a/packages/expo-dev-client-components/src/icons/QuestionMarkIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/question-mark-icon.png');
-
-export function QuestionMarkIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/RefreshIcon.tsx b/packages/expo-dev-client-components/src/icons/RefreshIcon.tsx
deleted file mode 100644
index 918e908751fef1..00000000000000
--- a/packages/expo-dev-client-components/src/icons/RefreshIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/refresh-icon.png');
-
-export function RefreshIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/RunIcon.tsx b/packages/expo-dev-client-components/src/icons/RunIcon.tsx
deleted file mode 100644
index 4771ae9fb38c69..00000000000000
--- a/packages/expo-dev-client-components/src/icons/RunIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/run-icon.png');
-
-export function RunIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/SettingsFilledIcon.tsx b/packages/expo-dev-client-components/src/icons/SettingsFilledIcon.tsx
deleted file mode 100644
index 107e14b3911c57..00000000000000
--- a/packages/expo-dev-client-components/src/icons/SettingsFilledIcon.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const activeLightIcon = require('../../assets/settings-filled-active-icon-light.png');
-const activeIcon = require('../../assets/settings-filled-active-icon.png');
-const inactiveLightIcon = require('../../assets/settings-filled-inactive-icon-light.png');
-const inactiveIcon = require('../../assets/settings-filled-inactive-icon.png');
-
-const iconMap = {
- light: {
- active: activeIcon,
- inactive: inactiveIcon,
- },
- dark: {
- active: activeLightIcon,
- inactive: inactiveLightIcon,
- },
-};
-
-type TabBarIconProps = Partial> & {
- focused?: boolean;
-};
-
-export function SettingsFilledIcon(props: TabBarIconProps) {
- const theme = useCurrentTheme();
- const themedIcon = iconMap[theme];
- const icon = props.focused ? themedIcon.active : themedIcon.inactive;
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ShakeDeviceIcon.tsx b/packages/expo-dev-client-components/src/icons/ShakeDeviceIcon.tsx
deleted file mode 100644
index c92e14ac57ab80..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ShakeDeviceIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/shake-device-icon-light.png');
-const icon = require('../../assets/shake-device-icon.png');
-
-export function ShakeDeviceIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ShowMenuIcon.tsx b/packages/expo-dev-client-components/src/icons/ShowMenuIcon.tsx
deleted file mode 100644
index f9b4f79db97957..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ShowMenuIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/show-menu-at-launch-icon-light.png');
-const icon = require('../../assets/show-menu-at-launch-icon.png');
-
-export function ShowMenuIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/TerminalIcon.tsx b/packages/expo-dev-client-components/src/icons/TerminalIcon.tsx
deleted file mode 100644
index bf82592c217171..00000000000000
--- a/packages/expo-dev-client-components/src/icons/TerminalIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/terminal-icon.png');
-
-export function TerminalIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ThreeFingerPressIcon.tsx b/packages/expo-dev-client-components/src/icons/ThreeFingerPressIcon.tsx
deleted file mode 100644
index 9df8e3a0ea900c..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ThreeFingerPressIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/three-finger-long-press-icon-light.png');
-const icon = require('../../assets/three-finger-long-press-icon.png');
-
-export function ThreeFingerPressIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/ToolbarOverlayIcon.tsx b/packages/expo-dev-client-components/src/icons/ToolbarOverlayIcon.tsx
deleted file mode 100644
index 41d807c43fbc5e..00000000000000
--- a/packages/expo-dev-client-components/src/icons/ToolbarOverlayIcon.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-
-const icon = require('../../assets/toolbar-overlay-icon.png');
-
-export function ToolbarOverlayIcon(props: Partial>) {
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/UpdateIcon.tsx b/packages/expo-dev-client-components/src/icons/UpdateIcon.tsx
deleted file mode 100644
index 94b443a4685cbc..00000000000000
--- a/packages/expo-dev-client-components/src/icons/UpdateIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/update-icon-light.png');
-const icon = require('../../assets/update-icon.png');
-
-export function UpdateIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return ;
-}
diff --git a/packages/expo-dev-client-components/src/icons/UserIcon.tsx b/packages/expo-dev-client-components/src/icons/UserIcon.tsx
deleted file mode 100644
index a24601eecef4b5..00000000000000
--- a/packages/expo-dev-client-components/src/icons/UserIcon.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from 'react';
-
-import { Image } from '../Image';
-import { useCurrentTheme } from '../useExpoTheme';
-
-const lightIcon = require('../../assets/user-icon-light.png');
-const icon = require('../../assets/user-icon.png');
-
-export function UserIcon(props: Partial>) {
- const theme = useCurrentTheme();
- const themedIcon = theme === 'dark' ? lightIcon : icon;
-
- return