diff --git a/.changeset/config.json b/.changeset/config.json index 74954686d..b5efcc0ec 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -17,7 +17,10 @@ "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": [ + "@callstack/repack-expo", "tester-app", + "tester-expo", + "tester-expo-widget", "tester-federation", "tester-federation-v2", "metro-compat-test", diff --git a/apps/tester-app/__tests__/bundle.test.ts b/apps/tester-app/__tests__/bundle.test.ts index 61d533f51..67d6e637f 100644 --- a/apps/tester-app/__tests__/bundle.test.ts +++ b/apps/tester-app/__tests__/bundle.test.ts @@ -155,7 +155,7 @@ describe('bundle command', () => { const lines = bundle.split('\n').length; expect(bundle.length / lines).toBeGreaterThan(1000); }, - 60 * 1000 + 120 * 1000 ); }); }); diff --git a/apps/tester-app/ios/Podfile.lock b/apps/tester-app/ios/Podfile.lock index 0e2160858..056a5bde2 100644 --- a/apps/tester-app/ios/Podfile.lock +++ b/apps/tester-app/ios/Podfile.lock @@ -21,7 +21,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - callstack-repack (5.2.5): + - callstack-repack (5.4.0): - hermes-engine - JWTDecode (~> 3.0.0) - RCTRequired @@ -45,39 +45,39 @@ PODS: - ReactNativeDependencies - SwiftyRSA (~> 1.7) - Yoga - - FBLazyVector (0.86.0) - - hermes-engine (250829098.0.14): - - hermes-engine/Pre-built (= 250829098.0.14) - - hermes-engine/Pre-built (250829098.0.14) + - FBLazyVector (0.86.3) + - hermes-engine (250829098.0.17): + - hermes-engine/Pre-built (= 250829098.0.17) + - hermes-engine/Pre-built (250829098.0.17) - JWTDecode (3.0.1) - - RCTDeprecation (0.86.0) - - RCTRequired (0.86.0) - - RCTSwiftUI (0.86.0) - - RCTSwiftUIWrapper (0.86.0): + - RCTDeprecation (0.86.3) + - RCTRequired (0.86.3) + - RCTSwiftUI (0.86.3) + - RCTSwiftUIWrapper (0.86.3): - RCTSwiftUI - - RCTTypeSafety (0.86.0): - - FBLazyVector (= 0.86.0) - - RCTRequired (= 0.86.0) - - React-Core (= 0.86.0) - - React (0.86.0): - - React-Core (= 0.86.0) - - React-Core/DevSupport (= 0.86.0) - - React-Core/RCTWebSocket (= 0.86.0) - - React-RCTActionSheet (= 0.86.0) - - React-RCTAnimation (= 0.86.0) - - React-RCTBlob (= 0.86.0) - - React-RCTImage (= 0.86.0) - - React-RCTLinking (= 0.86.0) - - React-RCTNetwork (= 0.86.0) - - React-RCTSettings (= 0.86.0) - - React-RCTText (= 0.86.0) - - React-RCTVibration (= 0.86.0) - - React-callinvoker (0.86.0) - - React-Core (0.86.0): + - RCTTypeSafety (0.86.3): + - FBLazyVector (= 0.86.3) + - RCTRequired (= 0.86.3) + - React-Core (= 0.86.3) + - React (0.86.3): + - React-Core (= 0.86.3) + - React-Core/DevSupport (= 0.86.3) + - React-Core/RCTWebSocket (= 0.86.3) + - React-RCTActionSheet (= 0.86.3) + - React-RCTAnimation (= 0.86.3) + - React-RCTBlob (= 0.86.3) + - React-RCTImage (= 0.86.3) + - React-RCTLinking (= 0.86.3) + - React-RCTNetwork (= 0.86.3) + - React-RCTSettings (= 0.86.3) + - React-RCTText (= 0.86.3) + - React-RCTVibration (= 0.86.3) + - React-callinvoker (0.86.3) + - React-Core (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt - - React-Core/Default (= 0.86.0) + - React-Core/Default (= 0.86.3) - React-cxxreact - React-featureflags - React-hermes @@ -92,9 +92,9 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core-prebuilt (0.86.0): + - React-Core-prebuilt (0.86.2): - ReactNativeDependencies - - React-Core/CoreModulesHeaders (0.86.0): + - React-Core/CoreModulesHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -113,7 +113,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/Default (0.86.0): + - React-Core/Default (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -131,12 +131,12 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/DevSupport (0.86.0): + - React-Core/DevSupport (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt - - React-Core/Default (= 0.86.0) - - React-Core/RCTWebSocket (= 0.86.0) + - React-Core/Default (= 0.86.3) + - React-Core/RCTWebSocket (= 0.86.3) - React-cxxreact - React-featureflags - React-hermes @@ -151,7 +151,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTActionSheetHeaders (0.86.0): + - React-Core/RCTActionSheetHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -170,7 +170,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTAnimationHeaders (0.86.0): + - React-Core/RCTAnimationHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -189,7 +189,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTBlobHeaders (0.86.0): + - React-Core/RCTBlobHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -208,7 +208,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTImageHeaders (0.86.0): + - React-Core/RCTImageHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -227,7 +227,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTLinkingHeaders (0.86.0): + - React-Core/RCTLinkingHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -246,7 +246,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTNetworkHeaders (0.86.0): + - React-Core/RCTNetworkHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -265,7 +265,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTSettingsHeaders (0.86.0): + - React-Core/RCTSettingsHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -284,7 +284,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTTextHeaders (0.86.0): + - React-Core/RCTTextHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -303,7 +303,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTVibrationHeaders (0.86.0): + - React-Core/RCTVibrationHeaders (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt @@ -322,11 +322,11 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-Core/RCTWebSocket (0.86.0): + - React-Core/RCTWebSocket (0.86.3): - hermes-engine - RCTDeprecation - React-Core-prebuilt - - React-Core/Default (= 0.86.0) + - React-Core/Default (= 0.86.3) - React-cxxreact - React-featureflags - React-hermes @@ -341,43 +341,43 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-CoreModules (0.86.0): - - RCTTypeSafety (= 0.86.0) + - React-CoreModules (0.86.3): + - RCTTypeSafety (= 0.86.3) - React-Core-prebuilt - - React-Core/CoreModulesHeaders (= 0.86.0) + - React-Core/CoreModulesHeaders (= 0.86.3) - React-debug - React-featureflags - - React-jsi (= 0.86.0) + - React-jsi (= 0.86.3) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.86.0) + - React-RCTImage (= 0.86.3) - React-runtimeexecutor - React-utils - ReactCommon - ReactNativeDependencies - - React-cxxreact (0.86.0): + - React-cxxreact (0.86.3): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.86.3) - React-Core-prebuilt - - React-debug (= 0.86.0) - - React-jsi (= 0.86.0) + - React-debug (= 0.86.3) + - React-jsi (= 0.86.3) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) + - React-logger (= 0.86.3) + - React-perflogger (= 0.86.3) - React-runtimeexecutor - - React-timing (= 0.86.0) + - React-timing (= 0.86.3) - React-utils - ReactNativeDependencies - - React-debug (0.86.0): - - React-debug/redbox (= 0.86.0) - - React-debug/redbox (0.86.0) - - React-defaultsnativemodule (0.86.0): + - React-debug (0.86.3): + - React-debug/redbox (= 0.86.3) + - React-debug/redbox (0.86.3) + - React-defaultsnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-domnativemodule @@ -395,7 +395,7 @@ PODS: - React-webperformancenativemodule - ReactNativeDependencies - Yoga - - React-domnativemodule (0.86.0): + - React-domnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-Fabric @@ -409,7 +409,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric (0.86.0): + - React-Fabric (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -417,25 +417,25 @@ PODS: - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/animated (= 0.86.0) - - React-Fabric/animationbackend (= 0.86.0) - - React-Fabric/animations (= 0.86.0) - - React-Fabric/attributedstring (= 0.86.0) - - React-Fabric/bridging (= 0.86.0) - - React-Fabric/componentregistry (= 0.86.0) - - React-Fabric/componentregistrynative (= 0.86.0) - - React-Fabric/components (= 0.86.0) - - React-Fabric/consistency (= 0.86.0) - - React-Fabric/core (= 0.86.0) - - React-Fabric/dom (= 0.86.0) - - React-Fabric/imagemanager (= 0.86.0) - - React-Fabric/leakchecker (= 0.86.0) - - React-Fabric/mounting (= 0.86.0) - - React-Fabric/observers (= 0.86.0) - - React-Fabric/scheduler (= 0.86.0) - - React-Fabric/telemetry (= 0.86.0) - - React-Fabric/uimanager (= 0.86.0) - - React-Fabric/viewtransition (= 0.86.0) + - React-Fabric/animated (= 0.86.3) + - React-Fabric/animationbackend (= 0.86.3) + - React-Fabric/animations (= 0.86.3) + - React-Fabric/attributedstring (= 0.86.3) + - React-Fabric/bridging (= 0.86.3) + - React-Fabric/componentregistry (= 0.86.3) + - React-Fabric/componentregistrynative (= 0.86.3) + - React-Fabric/components (= 0.86.3) + - React-Fabric/consistency (= 0.86.3) + - React-Fabric/core (= 0.86.3) + - React-Fabric/dom (= 0.86.3) + - React-Fabric/imagemanager (= 0.86.3) + - React-Fabric/leakchecker (= 0.86.3) + - React-Fabric/mounting (= 0.86.3) + - React-Fabric/observers (= 0.86.3) + - React-Fabric/scheduler (= 0.86.3) + - React-Fabric/telemetry (= 0.86.3) + - React-Fabric/uimanager (= 0.86.3) + - React-Fabric/viewtransition (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -447,7 +447,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animated (0.86.0): + - React-Fabric/animated (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -467,7 +467,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animationbackend (0.86.0): + - React-Fabric/animationbackend (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -486,7 +486,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/animations (0.86.0): + - React-Fabric/animations (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -505,7 +505,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/attributedstring (0.86.0): + - React-Fabric/attributedstring (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -524,7 +524,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/bridging (0.86.0): + - React-Fabric/bridging (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -543,7 +543,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistry (0.86.0): + - React-Fabric/componentregistry (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -562,7 +562,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/componentregistrynative (0.86.0): + - React-Fabric/componentregistrynative (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -581,7 +581,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components (0.86.0): + - React-Fabric/components (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -589,10 +589,10 @@ PODS: - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.86.0) - - React-Fabric/components/root (= 0.86.0) - - React-Fabric/components/scrollview (= 0.86.0) - - React-Fabric/components/view (= 0.86.0) + - React-Fabric/components/legacyviewmanagerinterop (= 0.86.3) + - React-Fabric/components/root (= 0.86.3) + - React-Fabric/components/scrollview (= 0.86.3) + - React-Fabric/components/view (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -604,7 +604,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/legacyviewmanagerinterop (0.86.0): + - React-Fabric/components/legacyviewmanagerinterop (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -623,7 +623,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/root (0.86.0): + - React-Fabric/components/root (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -642,7 +642,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/scrollview (0.86.0): + - React-Fabric/components/scrollview (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -661,7 +661,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/components/view (0.86.0): + - React-Fabric/components/view (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -682,7 +682,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-Fabric/consistency (0.86.0): + - React-Fabric/consistency (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -701,7 +701,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/core (0.86.0): + - React-Fabric/core (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -720,7 +720,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/dom (0.86.0): + - React-Fabric/dom (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -739,7 +739,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/imagemanager (0.86.0): + - React-Fabric/imagemanager (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -758,7 +758,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/leakchecker (0.86.0): + - React-Fabric/leakchecker (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -777,7 +777,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/mounting (0.86.0): + - React-Fabric/mounting (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -797,7 +797,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers (0.86.0): + - React-Fabric/observers (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -805,9 +805,9 @@ PODS: - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.86.0) - - React-Fabric/observers/intersection (= 0.86.0) - - React-Fabric/observers/mutation (= 0.86.0) + - React-Fabric/observers/events (= 0.86.3) + - React-Fabric/observers/intersection (= 0.86.3) + - React-Fabric/observers/mutation (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -819,7 +819,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/events (0.86.0): + - React-Fabric/observers/events (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -838,7 +838,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/intersection (0.86.0): + - React-Fabric/observers/intersection (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -857,7 +857,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/observers/mutation (0.86.0): + - React-Fabric/observers/mutation (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -876,7 +876,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/scheduler (0.86.0): + - React-Fabric/scheduler (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -900,7 +900,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/telemetry (0.86.0): + - React-Fabric/telemetry (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -919,7 +919,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager (0.86.0): + - React-Fabric/uimanager (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -927,7 +927,7 @@ PODS: - React-Core-prebuilt - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.86.0) + - React-Fabric/uimanager/consistency (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -940,7 +940,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/uimanager/consistency (0.86.0): + - React-Fabric/uimanager/consistency (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -960,7 +960,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-Fabric/viewtransition (0.86.0): + - React-Fabric/viewtransition (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -979,7 +979,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-FabricComponents (0.86.0): + - React-FabricComponents (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -988,8 +988,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.86.0) - - React-FabricComponents/textlayoutmanager (= 0.86.0) + - React-FabricComponents/components (= 0.86.3) + - React-FabricComponents/textlayoutmanager (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -1002,7 +1002,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components (0.86.0): + - React-FabricComponents/components (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1011,17 +1011,17 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.86.0) - - React-FabricComponents/components/iostextinput (= 0.86.0) - - React-FabricComponents/components/modal (= 0.86.0) - - React-FabricComponents/components/rncore (= 0.86.0) - - React-FabricComponents/components/safeareaview (= 0.86.0) - - React-FabricComponents/components/scrollview (= 0.86.0) - - React-FabricComponents/components/switch (= 0.86.0) - - React-FabricComponents/components/text (= 0.86.0) - - React-FabricComponents/components/textinput (= 0.86.0) - - React-FabricComponents/components/unimplementedview (= 0.86.0) - - React-FabricComponents/components/virtualview (= 0.86.0) + - React-FabricComponents/components/inputaccessory (= 0.86.3) + - React-FabricComponents/components/iostextinput (= 0.86.3) + - React-FabricComponents/components/modal (= 0.86.3) + - React-FabricComponents/components/rncore (= 0.86.3) + - React-FabricComponents/components/safeareaview (= 0.86.3) + - React-FabricComponents/components/scrollview (= 0.86.3) + - React-FabricComponents/components/switch (= 0.86.3) + - React-FabricComponents/components/text (= 0.86.3) + - React-FabricComponents/components/textinput (= 0.86.3) + - React-FabricComponents/components/unimplementedview (= 0.86.3) + - React-FabricComponents/components/virtualview (= 0.86.3) - React-featureflags - React-graphics - React-jsi @@ -1034,7 +1034,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/inputaccessory (0.86.0): + - React-FabricComponents/components/inputaccessory (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1055,7 +1055,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/iostextinput (0.86.0): + - React-FabricComponents/components/iostextinput (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1076,7 +1076,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/modal (0.86.0): + - React-FabricComponents/components/modal (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1097,7 +1097,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/rncore (0.86.0): + - React-FabricComponents/components/rncore (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1118,7 +1118,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/safeareaview (0.86.0): + - React-FabricComponents/components/safeareaview (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1139,7 +1139,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/scrollview (0.86.0): + - React-FabricComponents/components/scrollview (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1160,7 +1160,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/switch (0.86.0): + - React-FabricComponents/components/switch (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1181,7 +1181,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/text (0.86.0): + - React-FabricComponents/components/text (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1202,7 +1202,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/textinput (0.86.0): + - React-FabricComponents/components/textinput (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1223,7 +1223,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/unimplementedview (0.86.0): + - React-FabricComponents/components/unimplementedview (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1244,7 +1244,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/components/virtualview (0.86.0): + - React-FabricComponents/components/virtualview (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1265,7 +1265,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricComponents/textlayoutmanager (0.86.0): + - React-FabricComponents/textlayoutmanager (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1286,27 +1286,27 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-FabricImage (0.86.0): + - React-FabricImage (0.86.3): - hermes-engine - - RCTRequired (= 0.86.0) - - RCTTypeSafety (= 0.86.0) + - RCTRequired (= 0.86.3) + - RCTTypeSafety (= 0.86.3) - React-Core-prebuilt - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.86.0) + - React-jsiexecutor (= 0.86.3) - React-logger - React-rendererdebug - React-utils - ReactCommon - ReactNativeDependencies - Yoga - - React-featureflags (0.86.0): + - React-featureflags (0.86.3): - React-Core-prebuilt - ReactNativeDependencies - - React-featureflagsnativemodule (0.86.0): + - React-featureflagsnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1315,7 +1315,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-graphics (0.86.0): + - React-graphics (0.86.3): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1324,21 +1324,21 @@ PODS: - React-rendererdebug - React-utils - ReactNativeDependencies - - React-hermes (0.86.0): + - React-hermes (0.86.3): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.86.0) + - React-cxxreact (= 0.86.3) - React-jsi - - React-jsiexecutor (= 0.86.0) + - React-jsiexecutor (= 0.86.3) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-oscompat - - React-perflogger (= 0.86.0) + - React-perflogger (= 0.86.3) - React-runtimeexecutor - ReactNativeDependencies - - React-idlecallbacksnativemodule (0.86.0): + - React-idlecallbacksnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1348,7 +1348,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-ImageManager (0.86.0): + - React-ImageManager (0.86.3): - React-Core-prebuilt - React-Core/Default - React-debug @@ -1357,7 +1357,7 @@ PODS: - React-rendererdebug - React-utils - ReactNativeDependencies - - React-intersectionobservernativemodule (0.86.0): + - React-intersectionobservernativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1372,7 +1372,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-jserrorhandler (0.86.0): + - React-jserrorhandler (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1381,11 +1381,11 @@ PODS: - React-jsi - ReactCommon/turbomodule/bridging - ReactNativeDependencies - - React-jsi (0.86.0): + - React-jsi (0.86.3): - hermes-engine - React-Core-prebuilt - ReactNativeDependencies - - React-jsiexecutor (0.86.0): + - React-jsiexecutor (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1400,7 +1400,7 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspector (0.86.0): + - React-jsinspector (0.86.3): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1409,18 +1409,18 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.86.0) + - React-perflogger (= 0.86.3) - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsinspectorcdp (0.86.0): + - React-jsinspectorcdp (0.86.3): - React-Core-prebuilt - ReactNativeDependencies - - React-jsinspectornetwork (0.86.0): + - React-jsinspectornetwork (0.86.3): - React-Core-prebuilt - React-jsinspectorcdp - ReactNativeDependencies - - React-jsinspectortracing (0.86.0): + - React-jsinspectortracing (0.86.3): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1429,28 +1429,28 @@ PODS: - React-timing - React-utils - ReactNativeDependencies - - React-jsitooling (0.86.0): + - React-jsitooling (0.86.3): - hermes-engine - React-Core-prebuilt - - React-cxxreact (= 0.86.0) + - React-cxxreact (= 0.86.3) - React-debug - - React-jsi (= 0.86.0) + - React-jsi (= 0.86.3) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-jsitracing (0.86.0): + - React-jsitracing (0.86.3): - React-jsi - - React-logger (0.86.0): + - React-logger (0.86.3): - React-Core-prebuilt - ReactNativeDependencies - - React-Mapbuffer (0.86.0): + - React-Mapbuffer (0.86.3): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-microtasksnativemodule (0.86.0): + - React-microtasksnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1458,7 +1458,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-mutationobservernativemodule (0.86.0): + - React-mutationobservernativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1542,7 +1542,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-NativeModulesApple (0.86.0): + - React-NativeModulesApple (0.86.3): - hermes-engine - React-callinvoker - React-Core @@ -1557,18 +1557,18 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - React-networking (0.86.0): + - React-networking (0.86.3): - React-Core-prebuilt - React-jsinspectornetwork - React-jsinspectortracing - React-performancetimeline - React-timing - ReactNativeDependencies - - React-oscompat (0.86.0) - - React-perflogger (0.86.0): + - React-oscompat (0.86.3) + - React-perflogger (0.86.3): - React-Core-prebuilt - ReactNativeDependencies - - React-performancecdpmetrics (0.86.0): + - React-performancecdpmetrics (0.86.3): - hermes-engine - React-Core-prebuilt - React-jsi @@ -1576,7 +1576,7 @@ PODS: - React-runtimeexecutor - React-timing - ReactNativeDependencies - - React-performancetimeline (0.86.0): + - React-performancetimeline (0.86.3): - React-Core-prebuilt - React-featureflags - React-jsinspector @@ -1584,9 +1584,9 @@ PODS: - React-perflogger - React-timing - ReactNativeDependencies - - React-RCTActionSheet (0.86.0): - - React-Core/RCTActionSheetHeaders (= 0.86.0) - - React-RCTAnimation (0.86.0): + - React-RCTActionSheet (0.86.3): + - React-Core/RCTActionSheetHeaders (= 0.86.3) + - React-RCTAnimation (0.86.3): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTAnimationHeaders @@ -1597,7 +1597,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTAppDelegate (0.86.0): + - React-RCTAppDelegate (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1625,7 +1625,7 @@ PODS: - React-utils - ReactCommon - ReactNativeDependencies - - React-RCTBlob (0.86.0): + - React-RCTBlob (0.86.3): - hermes-engine - React-Core-prebuilt - React-Core/RCTBlobHeaders @@ -1638,7 +1638,7 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTFabric (0.86.0): + - React-RCTFabric (0.86.3): - hermes-engine - RCTSwiftUIWrapper - React-Core @@ -1669,7 +1669,7 @@ PODS: - React-utils - ReactNativeDependencies - Yoga - - React-RCTFBReactNativeSpec (0.86.0): + - React-RCTFBReactNativeSpec (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1677,10 +1677,10 @@ PODS: - React-Core-prebuilt - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.86.0) + - React-RCTFBReactNativeSpec/components (= 0.86.3) - ReactCommon - ReactNativeDependencies - - React-RCTFBReactNativeSpec/components (0.86.0): + - React-RCTFBReactNativeSpec/components (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1697,7 +1697,7 @@ PODS: - ReactCommon - ReactNativeDependencies - Yoga - - React-RCTImage (0.86.0): + - React-RCTImage (0.86.3): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTImageHeaders @@ -1707,14 +1707,14 @@ PODS: - React-RCTNetwork - ReactCommon - ReactNativeDependencies - - React-RCTLinking (0.86.0): - - React-Core/RCTLinkingHeaders (= 0.86.0) - - React-jsi (= 0.86.0) + - React-RCTLinking (0.86.3): + - React-Core/RCTLinkingHeaders (= 0.86.3) + - React-jsi (= 0.86.3) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.86.0) - - React-RCTNetwork (0.86.0): + - ReactCommon/turbomodule/core (= 0.86.3) + - React-RCTNetwork (0.86.3): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTNetworkHeaders @@ -1728,7 +1728,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTRuntime (0.86.0): + - React-RCTRuntime (0.86.3): - hermes-engine - React-Core - React-Core-prebuilt @@ -1744,7 +1744,7 @@ PODS: - React-RuntimeHermes - React-utils - ReactNativeDependencies - - React-RCTSettings (0.86.0): + - React-RCTSettings (0.86.3): - RCTTypeSafety - React-Core-prebuilt - React-Core/RCTSettingsHeaders @@ -1753,10 +1753,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-RCTText (0.86.0): - - React-Core/RCTTextHeaders (= 0.86.0) + - React-RCTText (0.86.3): + - React-Core/RCTTextHeaders (= 0.86.3) - Yoga - - React-RCTVibration (0.86.0): + - React-RCTVibration (0.86.3): - React-Core-prebuilt - React-Core/RCTVibrationHeaders - React-jsi @@ -1764,15 +1764,15 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - ReactNativeDependencies - - React-rendererconsistency (0.86.0) - - React-renderercss (0.86.0): + - React-rendererconsistency (0.86.3) + - React-renderercss (0.86.3): - React-debug - React-utils - - React-rendererdebug (0.86.0): + - React-rendererdebug (0.86.3): - React-Core-prebuilt - React-debug - ReactNativeDependencies - - React-RuntimeApple (0.86.0): + - React-RuntimeApple (0.86.3): - hermes-engine - React-callinvoker - React-Core-prebuilt @@ -1795,7 +1795,7 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-RuntimeCore (0.86.0): + - React-RuntimeCore (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1811,14 +1811,14 @@ PODS: - React-runtimescheduler - React-utils - ReactNativeDependencies - - React-runtimeexecutor (0.86.0): + - React-runtimeexecutor (0.86.3): - React-Core-prebuilt - React-debug - React-featureflags - - React-jsi (= 0.86.0) + - React-jsi (= 0.86.3) - React-utils - ReactNativeDependencies - - React-RuntimeHermes (0.86.0): + - React-RuntimeHermes (0.86.3): - hermes-engine - React-Core-prebuilt - React-featureflags @@ -1833,7 +1833,7 @@ PODS: - React-runtimeexecutor - React-utils - ReactNativeDependencies - - React-runtimescheduler (0.86.0): + - React-runtimescheduler (0.86.3): - hermes-engine - React-callinvoker - React-Core-prebuilt @@ -1849,15 +1849,15 @@ PODS: - React-timing - React-utils - ReactNativeDependencies - - React-timing (0.86.0): + - React-timing (0.86.3): - React-debug - - React-utils (0.86.0): + - React-utils (0.86.3): - hermes-engine - React-Core-prebuilt - React-debug - - React-jsi (= 0.86.0) + - React-jsi (= 0.86.3) - ReactNativeDependencies - - React-viewtransitionnativemodule (0.86.0): + - React-viewtransitionnativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-Fabric @@ -1869,7 +1869,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - React-webperformancenativemodule (0.86.0): + - React-webperformancenativemodule (0.86.3): - hermes-engine - React-Core-prebuilt - React-cxxreact @@ -1880,9 +1880,9 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactAppDependencyProvider (0.86.0): + - ReactAppDependencyProvider (0.86.3): - ReactCodegen - - ReactCodegen (0.86.0): + - ReactCodegen (0.86.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1902,43 +1902,43 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - ReactCommon (0.86.0): + - ReactCommon (0.86.3): - React-Core-prebuilt - - ReactCommon/turbomodule (= 0.86.0) + - ReactCommon/turbomodule (= 0.86.3) - ReactNativeDependencies - - ReactCommon/turbomodule (0.86.0): + - ReactCommon/turbomodule (0.86.3): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.86.3) - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) - - ReactCommon/turbomodule/bridging (= 0.86.0) - - ReactCommon/turbomodule/core (= 0.86.0) + - React-cxxreact (= 0.86.3) + - React-jsi (= 0.86.3) + - React-logger (= 0.86.3) + - React-perflogger (= 0.86.3) + - ReactCommon/turbomodule/bridging (= 0.86.3) + - ReactCommon/turbomodule/core (= 0.86.3) - ReactNativeDependencies - - ReactCommon/turbomodule/bridging (0.86.0): + - ReactCommon/turbomodule/bridging (0.86.3): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.86.3) - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) + - React-cxxreact (= 0.86.3) + - React-jsi (= 0.86.3) + - React-logger (= 0.86.3) + - React-perflogger (= 0.86.3) - ReactNativeDependencies - - ReactCommon/turbomodule/core (0.86.0): + - ReactCommon/turbomodule/core (0.86.3): - hermes-engine - - React-callinvoker (= 0.86.0) + - React-callinvoker (= 0.86.3) - React-Core-prebuilt - - React-cxxreact (= 0.86.0) - - React-debug (= 0.86.0) - - React-featureflags (= 0.86.0) - - React-jsi (= 0.86.0) - - React-logger (= 0.86.0) - - React-perflogger (= 0.86.0) - - React-utils (= 0.86.0) + - React-cxxreact (= 0.86.3) + - React-debug (= 0.86.3) + - React-featureflags (= 0.86.3) + - React-jsi (= 0.86.3) + - React-logger (= 0.86.3) + - React-perflogger (= 0.86.3) + - React-utils (= 0.86.3) - ReactNativeDependencies - - ReactNativeDependencies (0.86.0) + - ReactNativeDependencies (0.86.3) - ReactNativeHost (0.5.21): - hermes-engine - RCTRequired @@ -2266,7 +2266,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`) - - "ReactNativeHost (from `../../../node_modules/.pnpm/react-native-test-app@5.4.5_@react-native-community+cli-types@20.2.0_memfs@4.64.0_metro_b45d70323f70daab609212d0cf320271/node_modules/@rnx-kit/react-native-host`)" + - "ReactNativeHost (from `../../../node_modules/.pnpm/react-native-test-app@5.4.5_@expo+config-plugins@57.0.9_typescript@7.0.2__@react-native_7c529de154f01eddca5a102ec2b2b3e5/node_modules/@rnx-kit/react-native-host`)" - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) - ReactTestApp-Resources (from `..`) - RNReanimated (from `../node_modules/react-native-reanimated`) @@ -2288,7 +2288,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.14 + :tag: hermes-v250829098.0.17 RCTDeprecation: :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: @@ -2436,7 +2436,7 @@ EXTERNAL SOURCES: ReactNativeDependencies: :podspec: "../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" ReactNativeHost: - :path: "../../../node_modules/.pnpm/react-native-test-app@5.4.5_@react-native-community+cli-types@20.2.0_memfs@4.64.0_metro_b45d70323f70daab609212d0cf320271/node_modules/@rnx-kit/react-native-host" + :path: "../../../node_modules/.pnpm/react-native-test-app@5.4.5_@expo+config-plugins@57.0.9_typescript@7.0.2__@react-native_7c529de154f01eddca5a102ec2b2b3e5/node_modules/@rnx-kit/react-native-host" ReactTestApp-DevSupport: :path: "../node_modules/react-native-test-app" ReactTestApp-Resources: @@ -2452,91 +2452,91 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AsyncStorage: 163ab23f6aa37a58b7f2379d0b4ee7ac84d6655c - callstack-repack: 2d0e744d37013ccc33451e4c797d5dd67eae6e56 - FBLazyVector: b3e7ad108f0d882e30445c5527d774e3fd432f3d - hermes-engine: 399db9aa65675d12edcd906c1caab4a41e98f4e1 + callstack-repack: 3f61a1d346f8b2892226889d5ea0b7d66be3570f + FBLazyVector: 2138c6c2ab66c31bf5754dc18097fbc498a49c7f + hermes-engine: f950618e994e43d007f013c66a7666906b11ed29 JWTDecode: 2eed97c2fa46ccaf3049a787004eedf0be474a87 - RCTDeprecation: 2a74a2c57675e64419bd89078efde81f7c1de90b - RCTRequired: 30451112e6fef4e6f31b4e7eee0845156e35e4b0 - RCTSwiftUI: 5aaf0b07e747ba749dc6acc94d8bd41eea4b570f - RCTSwiftUIWrapper: ab2ca548be15d63afa95103afc8685a7c3eab78b - RCTTypeSafety: 3eaed17dbddb0b989208b062ea14c44d412b9780 - React: 2574546f2d017abd14d0c9b48cf2b6a0547c2591 - React-callinvoker: 03cd4b931d1d583d87aae99b8f7b6fe26bf571ee - React-Core: 1c824d9c7dd8aa760b5f1b50d5a54c2a3f598f87 - React-Core-prebuilt: 13924a267683b3d6fa4bde9c80380becf83a9c5c - React-CoreModules: 2f9ed75bca7f6dea2b70e8a1f4a5ca9b6be52d76 - React-cxxreact: 7103d5ba69848c039e11079e74ceede05efe795e - React-debug: 8cc8d99ccc664ef9e873027f7fc3fb0a50496012 - React-defaultsnativemodule: 603c108411d39d7bb5ccb8c270f1f50cb6207e10 - React-domnativemodule: c49a502edc85f515a029c341fe5fba155fa6675c - React-Fabric: acc4915d719db793c5853e5c74b54ea5aa48e865 - React-FabricComponents: aebebc98914a4a8fc962fa7b5b98ebaf250acb68 - React-FabricImage: 42e99e48ff73c8b20cee229e622977d0b97b6247 - React-featureflags: c6d8d8d52acf3a956485726076b73eeff7935340 - React-featureflagsnativemodule: c992de92dcf30dcf09efdec17752abe4128ec55f - React-graphics: 239fd9b0512e539d3563f0825618f4e49795eefd - React-hermes: ae4685ca9fa5f47003bc594d3f146e29284136d1 - React-idlecallbacksnativemodule: 10a5be842ab181953c772a3f28cdf94572833eb0 - React-ImageManager: c36a56c3b13eba92e1d0d30da35d0a1ccf29cd6c - React-intersectionobservernativemodule: 71404bfa47d31e4143cc9db3e26178b5cfcd07e1 - React-jserrorhandler: ca2eeb03c1a77bbfab1b5425b943e3e8d92295f2 - React-jsi: c4b6daf8a31ac54f2db49cd6cce29720fec1f3a8 - React-jsiexecutor: acdc1a217b7ea29bcf6315b770d01e6b1c2fca14 - React-jsinspector: 95d6394efe9fb4a64ed33afc076b32a6384c8514 - React-jsinspectorcdp: 6ce51378a552feaaaac1a7b0d995fa0c49fa4f8c - React-jsinspectornetwork: 0db435c9264f200635fdf294a3b643dd3946d4cf - React-jsinspectortracing: 2e4470e1f301ff597bd65299aa95da4bae6e5c4f - React-jsitooling: 796bc991cdce68e2cc059d0271a28e0d4f8b0891 - React-jsitracing: f3008e7b5e1d9de8d9f2ca1b85824ed86b0cea00 - React-logger: fff73f4ceecad968c97baafdc77dcf84befc38b6 - React-Mapbuffer: ce449ccdf3b80384415b925606be8a4bdcfc65d3 - React-microtasksnativemodule: 2eb3f49d0d8e77b5343455eccd057010b8d38b6b - React-mutationobservernativemodule: f0a0d5ae9b51caf7becbeabf836d716cfedb6bf2 + RCTDeprecation: 96f68ebf33f8762466b01d57d6e873c4f30efb07 + RCTRequired: 166eed8ad6d8440e73e56d09a9090366609823d2 + RCTSwiftUI: e818198d11928a78c2b2afe281d072171dab617f + RCTSwiftUIWrapper: b9457f8613a1d0c8146c08844a04154702ff8809 + RCTTypeSafety: efc19e6b92931abf0b68b064212323a258a5f019 + React: 52dce66f71097ed7a4968673d95eeb8095ded74e + React-callinvoker: afa0525ab27f4ffbb4c377f855fe9368edb099bc + React-Core: fdb67992e049f2526ade3e258c21b8404e7943a3 + React-Core-prebuilt: 405cf395d66cf694faf9aed3483a21b5515cec85 + React-CoreModules: 456d91152aa283ddc6ae8abfcec3292af88912f6 + React-cxxreact: 73a20c0dde5ec221f98d5e4da0e71349ab48353d + React-debug: d06757ac6c78b84af0c31e513a83662d6b8d0ac7 + React-defaultsnativemodule: ad832e8ce045ef01ea586834b1732c3d4d4d5d86 + React-domnativemodule: 7d1bd200df2d58c2f61d416cf16838c0c9fbb06c + React-Fabric: 363e0524d0724a17afbcba653da4f3398f41236e + React-FabricComponents: d41c87cd39ccf6c4c1df7f726ced22db1f90f072 + React-FabricImage: b4fb0ebc0a2e6fabfd8de8b3fa441331bda99403 + React-featureflags: 1c88b4566806604500a8a9fdf9ad0108c2e9d541 + React-featureflagsnativemodule: dab00693f49c6629f186dedcc3cdaeadd094972f + React-graphics: 991a75fa954a20d0297580dc7fd4e365982cef3b + React-hermes: 65cfbf62d8d31c1e69f3556ff6836a2890cf4a62 + React-idlecallbacksnativemodule: 492f6da9e5a2fa37e2ac0c3a7447302a342d42c2 + React-ImageManager: 02effe13f7b0ca3a7282ee364a8691cd789b9726 + React-intersectionobservernativemodule: 91b54a39a2e7187b9caf62e8b7310aa2d0026679 + React-jserrorhandler: 91985482e35b0b102febda42168ee71946db9958 + React-jsi: 69052b2d1958c9069a143f1637f382b933917b43 + React-jsiexecutor: b9b98ea432f58ee2899a60204f090d0bc8d48313 + React-jsinspector: 75119552df2413c48d33e9f0a72836b30c1ccb14 + React-jsinspectorcdp: 8e65995e9083f7bce0839d3169f6f2d304049e2e + React-jsinspectornetwork: 7e8375e27430cc7694c52fb904db2b9118194480 + React-jsinspectortracing: 643bd9d6f9dc64ea9b28b0e915b4fb0b9b0b1b90 + React-jsitooling: b7ec4b982dfc62f744587deeb1948b983f9edaa4 + React-jsitracing: 8d2f0c8d6d81324606b6d55b946cb443a0c5a425 + React-logger: b9bf04943233973fece220497f0784eaad409b3a + React-Mapbuffer: 3c805ea54675b00ef1755f23b3c1fccf34962b93 + React-microtasksnativemodule: 97a771dbbb4315c71579995b53e4e3e351a99d89 + React-mutationobservernativemodule: 530bff1bba9511a5133e3cf8170e3b2c0df49e89 react-native-safe-area-context: fb5c8ee9f6dd62ef710611b3d370c501f42a4ac0 - React-NativeModulesApple: a092d89b58f635ebfab88048b0eda9fb516819fd - React-networking: 968bbbe73590149feb1e72b2af4f6a68e4796ece - React-oscompat: 0b72a7e926954a0415ccd83e0748b6561fe45367 - React-perflogger: 865984e492514aa6e5279fc3e663132cfa4d5022 - React-performancecdpmetrics: 2efbf9bdb48c8d8446f4dd10e8bf0dc5d711772f - React-performancetimeline: 9d256484bff1513481be9f234baba694dc3b52e2 - React-RCTActionSheet: 902c79deec52f99cc48b1051b59bcbe86787d339 - React-RCTAnimation: 09cf722039ae30ff5d64e2b011ff054ae651c3b6 - React-RCTAppDelegate: a47de6fddb7eb0c028abba83138a5ce283bd7e77 - React-RCTBlob: 38c418d067e0c61818223503063310122e44c588 - React-RCTFabric: 480ca2a105730e1790cfd13291d086cb53725825 - React-RCTFBReactNativeSpec: 63131378510a5191515a4adfc308e65b465106f4 - React-RCTImage: 3ce36f82441b76b715818ee7ee95f6f5b34f9ee1 - React-RCTLinking: 2f7b5ed4983122e5115732d25a4360960eab583c - React-RCTNetwork: dcd3b180f33da86f5dc5e928a816eb5464fa7f16 - React-RCTRuntime: 6ef8e778fbab426b12eb5a9b5f7a0e86313c5a10 - React-RCTSettings: b97727ec8c55c35bd284457a647c938c040b942b - React-RCTText: 4d1b88f6d3e1a43afe46706d956ec6664c87b984 - React-RCTVibration: 415d14d6a1a64bf947fcef6b193915a494431168 - React-rendererconsistency: ef8519bdd9931261c6561bfad6506356b8108387 - React-renderercss: 1aa1bf99fa2ace143eb87d5190fd43609fc1e832 - React-rendererdebug: 40a4fb3dea21a7ac1759ca0eb6c88a924aecb075 - React-RuntimeApple: 84fadbb4fe8ca531e15e29a22af05911f17569c6 - React-RuntimeCore: f4d9af5f16d37e63308cb03b36c89d01e7f68a06 - React-runtimeexecutor: 4d59410f66af529d04c84c8b152ced07dabc471e - React-RuntimeHermes: fd719d8f4d9ce79636fe2e09e94b0ac31b7b263b - React-runtimescheduler: 784033620aa5515e2f45a60369eed4d32f9400b8 - React-timing: a16df9ae98f950396d9ce3abf43cb0cb2f21194c - React-utils: b68ee619aef28d8f9b85532d98db0327f7bdf743 - React-viewtransitionnativemodule: 11fe091101d381451b1542c37b2745900254f096 - React-webperformancenativemodule: b5d249419f1546663845c82f24de4e18a3180997 - ReactAppDependencyProvider: dcdd0e1b9559a6d8d8aea05286f4ed085091978e - ReactCodegen: 8500855cf3a21af082b2fcffdd903a23c2ff4776 - ReactCommon: d5c1bb4427bf51c443de5926aac332c89ddd9363 - ReactNativeDependencies: fa0a54b3f5319ae0e3b9aff32bfee7a424b88e66 + React-NativeModulesApple: 2b658272ca69df0694cf5d54f9510aa7c33977bc + React-networking: 6be0b80e18e710dd30e77b04838ec46666a7bb78 + React-oscompat: cea7c66df8076bd97e95885d7f584b86afffde41 + React-perflogger: 9110ba33a4aa70c708e9d50aeca040e6f2aefaf7 + React-performancecdpmetrics: d9c07c4855c5a975cc7abc482fcb086e8a87abd1 + React-performancetimeline: 336af57802d9cdb4ac079774007677031c891fe0 + React-RCTActionSheet: aeb20277150454e9020517c6a2cb70410d4856d9 + React-RCTAnimation: 8453deeb01d0f284202c9670b5f7d827575b4967 + React-RCTAppDelegate: 5e9c748cc138decd9045683d8987700d824a99ff + React-RCTBlob: e6c01cae3eeb7e63a55b12f72b7dfcfd8236b4b2 + React-RCTFabric: deab07276af1b74b0b8d0772a9a58cac15785312 + React-RCTFBReactNativeSpec: 83d67909e5c67b460bec8851d8413a8ce1ecc6b2 + React-RCTImage: ec8488bc119d7e5d3209f85be3ebda7e4a937c61 + React-RCTLinking: b6ff56c2f206127d49d338262418c097ea306ad0 + React-RCTNetwork: 08d71b365278511a9bb07885b4a54bdc510d99bf + React-RCTRuntime: 634c58094cc601bc2a63ef38b2389cf81143fbcb + React-RCTSettings: 372551bc9f30d26890f5c5fd569dcd15243c656c + React-RCTText: 62cff7e93aeb3c06e3634f1c59984e8c5322b542 + React-RCTVibration: 2e8c1630ae80c092f437db9638a03715f616ac03 + React-rendererconsistency: e8b244c284931cac80a30ce754d77f6c64e528f9 + React-renderercss: 97791244f7ff7a2a060d07acbf240261d4a0519c + React-rendererdebug: 9d023ca26ed3daf60e7b7615729bb7ba6027a96a + React-RuntimeApple: 2daf515379135ccd5e3af5306c90f7827428f4ca + React-RuntimeCore: 637867058de3e0ae7f1ef2653cd0e01c4c850d71 + React-runtimeexecutor: a5cdf5961ec221a40e6612f35bd1e23f84fd9702 + React-RuntimeHermes: 390a5605857f207c8261c75fd4a296ead9aeee0f + React-runtimescheduler: 1be91f9ec0417bb69bd8dfabbe11b07147b24538 + React-timing: bbb861d02c9bcee3e9c08c51a38f59d27c0904ce + React-utils: 28c555b582a9607a938cc0f47b5a7600db42393a + React-viewtransitionnativemodule: 3977270cf367fd1562221047e2358a26da174f2d + React-webperformancenativemodule: fb203d77856165582e519855fc13773a2855f9a6 + ReactAppDependencyProvider: bb350d1333fd459c1aabe782088419a9b8894d3a + ReactCodegen: 0871c56db6eb02e1dc2ea9172da4a561bd51eaa5 + ReactCommon: 02f6a489d5eb4ab79d7deba5cd4434e0ba351a07 + ReactNativeDependencies: 6738e602b46fd24aa453cd58267ec3bb8bf29d27 ReactNativeHost: c49183895850a534a9d58049bf02b3c80a3ebb0c ReactTestApp-DevSupport: 55c92a794b09b56e00757e68312c6340d7c520ee ReactTestApp-Resources: 8d72c3deef156833760694a288ff334af4d427d7 - RNReanimated: bd1e484c4ea6c4d14e9fbed3e2974bf7a347e191 + RNReanimated: b79ed3c5b080218e53a52f3b78f908b780c52cb3 RNSVG: 6cae8d4082913be2eb43eaec2a456222c42195ed - RNWorklets: 430a95dd2e80f522bea3c7046d382582aef22314 + RNWorklets: 0fe6e2e06660726a047dcf7b9567a17d002316c9 SwiftyRSA: 8c6dd1ea7db1b8dc4fb517a202f88bb1354bc2c6 - Yoga: fe50ab299e578f397fef753cf309c6703a4db29b + Yoga: 18b74b3ade30bebc1904004dfaceae1dd02a330a PODFILE CHECKSUM: 6d7cbe03444d5e87210979fb32a0eca299d758fe diff --git a/apps/tester-app/package.json b/apps/tester-app/package.json index 35ccd3757..bf71ab9f3 100644 --- a/apps/tester-app/package.json +++ b/apps/tester-app/package.json @@ -18,7 +18,7 @@ "serve-remote-assets:ios": "pnpm http-server -p 9999 build/output/ios/remote" }, "dependencies": { - "@react-native-async-storage/async-storage": "^3.1.1", + "@react-native-async-storage/async-storage": "catalog:testers", "@rn-primitives/slot": "^1.2.0", "@rn-primitives/types": "^1.2.0", "class-variance-authority": "^0.7.1", @@ -27,10 +27,10 @@ "react": "catalog:", "react-native": "catalog:", "react-native-css-interop": "0.2.6", - "react-native-reanimated": "4.5.3", - "react-native-safe-area-context": "5.8.0", + "react-native-reanimated": "catalog:testers", + "react-native-safe-area-context": "catalog:testers", "react-native-svg": "15.15.5", - "react-native-worklets": "0.11.3", + "react-native-worklets": "catalog:testers", "tailwind-merge": "^3.5.0" }, "devDependencies": { diff --git a/apps/tester-expo-widget/.env.development b/apps/tester-expo-widget/.env.development new file mode 100644 index 000000000..277004f69 --- /dev/null +++ b/apps/tester-expo-widget/.env.development @@ -0,0 +1 @@ +EXPO_PUBLIC_FEDERATION_OWNER=expo-widget diff --git a/apps/tester-expo-widget/.env.production b/apps/tester-expo-widget/.env.production new file mode 100644 index 000000000..277004f69 --- /dev/null +++ b/apps/tester-expo-widget/.env.production @@ -0,0 +1 @@ +EXPO_PUBLIC_FEDERATION_OWNER=expo-widget diff --git a/apps/tester-expo-widget/.gitignore b/apps/tester-expo-widget/.gitignore new file mode 100644 index 000000000..721fe0e61 --- /dev/null +++ b/apps/tester-expo-widget/.gitignore @@ -0,0 +1,21 @@ +# Native projects are generated by Expo prebuild and intentionally untracked. +/android +/ios + +.DS_Store +build/ +node_modules/ +.expo/ +*.jsbundle +*.map + +**/Pods/ +**/.gradle/ +**/DerivedData/ +**/xcuserdata/ +**/.xcode.env.local +local.properties +*.keystore +!debug.keystore + +**/@mf-types diff --git a/apps/tester-expo-widget/app.json b/apps/tester-expo-widget/app.json new file mode 100644 index 000000000..6a3cef592 --- /dev/null +++ b/apps/tester-expo-widget/app.json @@ -0,0 +1,18 @@ +{ + "expo": { + "name": "Repack Expo Widget", + "slug": "repack-expo-widget", + "scheme": "repackexpowidget", + "version": "1.0.0", + "updates": { + "enabled": false + }, + "plugins": ["@callstack/repack-expo"], + "ios": { + "bundleIdentifier": "com.callstack.repackexpowidget" + }, + "android": { + "package": "com.callstack.repackexpowidget" + } + } +} diff --git a/apps/tester-expo-widget/assets/README.md b/apps/tester-expo-widget/assets/README.md new file mode 100644 index 000000000..c1bddaa59 --- /dev/null +++ b/apps/tester-expo-widget/assets/README.md @@ -0,0 +1,7 @@ +# Widget fixture assets + +The density images are copied from the repository's Expo host fixture. The +Material Symbols font is copied from the same fixture and is distributed under +the Apache License 2.0 in `fonts/LICENSE-MATERIAL-SYMBOLS`. + +These copies keep the independently published widget artifact self-contained. diff --git a/apps/tester-expo-widget/assets/fonts/LICENSE-MATERIAL-SYMBOLS b/apps/tester-expo-widget/assets/fonts/LICENSE-MATERIAL-SYMBOLS new file mode 100644 index 000000000..7a4a3ea24 --- /dev/null +++ b/apps/tester-expo-widget/assets/fonts/LICENSE-MATERIAL-SYMBOLS @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/apps/tester-expo-widget/assets/fonts/material-symbols-regular.ttf b/apps/tester-expo-widget/assets/fonts/material-symbols-regular.ttf new file mode 100644 index 000000000..190afc39c Binary files /dev/null and b/apps/tester-expo-widget/assets/fonts/material-symbols-regular.ttf differ diff --git a/apps/tester-expo-widget/assets/images/widget-density.png b/apps/tester-expo-widget/assets/images/widget-density.png new file mode 100644 index 000000000..352e4631e Binary files /dev/null and b/apps/tester-expo-widget/assets/images/widget-density.png differ diff --git a/apps/tester-expo-widget/assets/images/widget-density@2x.png b/apps/tester-expo-widget/assets/images/widget-density@2x.png new file mode 100644 index 000000000..23b99fc52 Binary files /dev/null and b/apps/tester-expo-widget/assets/images/widget-density@2x.png differ diff --git a/apps/tester-expo-widget/assets/images/widget-density@3x.png b/apps/tester-expo-widget/assets/images/widget-density@3x.png new file mode 100644 index 000000000..3719056cc Binary files /dev/null and b/apps/tester-expo-widget/assets/images/widget-density@3x.png differ diff --git a/apps/tester-expo-widget/babel.config.cjs b/apps/tester-expo-widget/babel.config.cjs new file mode 100644 index 000000000..e135c946f --- /dev/null +++ b/apps/tester-expo-widget/babel.config.cjs @@ -0,0 +1,6 @@ +module.exports = function babelConfig(api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + }; +}; diff --git a/apps/tester-expo-widget/expo-env.d.ts b/apps/tester-expo-widget/expo-env.d.ts new file mode 100644 index 000000000..e6394b247 --- /dev/null +++ b/apps/tester-expo-widget/expo-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/tester-expo-widget/index.ts b/apps/tester-expo-widget/index.ts new file mode 100644 index 000000000..c1c862e92 --- /dev/null +++ b/apps/tester-expo-widget/index.ts @@ -0,0 +1,4 @@ +import { registerRootComponent } from 'expo'; +import App from './src/App'; + +registerRootComponent(App); diff --git a/apps/tester-expo-widget/package.json b/apps/tester-expo-widget/package.json new file mode 100644 index 000000000..a7f9eab40 --- /dev/null +++ b/apps/tester-expo-widget/package.json @@ -0,0 +1,39 @@ +{ + "name": "tester-expo-widget", + "version": "0.0.1", + "private": true, + "main": "index.ts", + "scripts": { + "repack:start": "react-native webpack-start", + "repack:start:remote": "react-native webpack-start --port 8082", + "repack:ios": "expo run:ios --no-bundler", + "repack:android": "expo run:android --no-bundler", + "repack:build:production": "pnpm run repack:build:production:ios && pnpm run repack:build:production:android", + "repack:build:production:ios": "node ./scripts/build-production.mjs ios", + "repack:build:production:android": "node ./scripts/build-production.mjs android", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@callstack/repack": "workspace:*", + "@callstack/repack-expo": "workspace:*", + "@module-federation/enhanced": "catalog:testers", + "expo": "catalog:expo57", + "expo-asset": "catalog:expo57", + "expo-constants": "catalog:expo57", + "expo-font": "catalog:expo57", + "react": "catalog:", + "react-native": "catalog:" + }, + "devDependencies": { + "@babel/core": "catalog:", + "@react-native-community/cli": "catalog:testers", + "@react-native-community/cli-platform-android": "catalog:testers", + "@react-native-community/cli-platform-ios": "catalog:testers", + "@react-native/babel-preset": "catalog:testers", + "@react-native/community-cli-plugin": "catalog:testers", + "@rspack/core": "catalog:", + "@types/react": "catalog:testers", + "babel-preset-expo": "catalog:expo57", + "typescript": "catalog:" + } +} diff --git a/apps/tester-expo-widget/react-native.config.js b/apps/tester-expo-widget/react-native.config.js new file mode 100644 index 000000000..d4f5f41c7 --- /dev/null +++ b/apps/tester-expo-widget/react-native.config.js @@ -0,0 +1,3 @@ +module.exports = { + commands: require('@callstack/repack/commands'), +}; diff --git a/apps/tester-expo-widget/rspack.config.mjs b/apps/tester-expo-widget/rspack.config.mjs new file mode 100644 index 000000000..c8fedd524 --- /dev/null +++ b/apps/tester-expo-widget/rspack.config.mjs @@ -0,0 +1,89 @@ +import { createRequire } from 'node:module'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import * as Repack from '@callstack/repack'; +import { ExpoPlugin } from '@callstack/repack-expo/rspack'; + +const require = createRequire(import.meta.url); +const projectRoot = path.dirname(fileURLToPath(import.meta.url)); + +// Must match the host's shared list. Versions come from the installed +// packages so they follow the workspace catalogs. +const SHARED_SINGLETONS = [ + 'react', + 'react-native', + 'expo-constants', + 'expo-asset', + 'expo-font', +]; + +export default (env) => { + const { + mode = 'development', + platform = process.env.PLATFORM, + devServer, + } = env; + + if (platform !== 'ios' && platform !== 'android') { + throw new Error( + 'tester-expo-widget requires PLATFORM=ios or PLATFORM=android' + ); + } + + const remoteOutputPath = path.join(projectRoot, 'build', 'remote', platform); + const remotePublicPath = `http://localhost:8082/${platform}/remote-assets`; + + return { + context: projectRoot, + devServer, + devtool: 'source-map', + mode, + name: platform, + module: { + rules: Repack.getAssetTransformRules({ + remote: { publicPath: remotePublicPath }, + }), + }, + output: { + clean: true, + path: path.join(projectRoot, 'build', 'rspack', platform), + publicPath: `http://localhost:8082/${platform}/`, + uniqueName: `tester-expo-widget-${platform}`, + }, + plugins: [ + new ExpoPlugin({ + platform, + repack: { + output: { + auxiliaryAssetsPath: remoteOutputPath, + }, + extraChunks: [ + { + include: /.*/, + type: 'remote', + outputPath: remoteOutputPath, + }, + ], + }, + }), + new Repack.plugins.ModuleFederationPluginV2({ + name: 'ExpoWidget', + filename: 'ExpoWidget.container.js.bundle', + exposes: { + './Widget': './src/Widget', + }, + dts: false, + shared: Object.fromEntries( + SHARED_SINGLETONS.map((name) => [ + name, + { + singleton: true, + eager: true, + requiredVersion: require(`${name}/package.json`).version, + }, + ]) + ), + }), + ], + }; +}; diff --git a/apps/tester-expo-widget/scripts/build-production.mjs b/apps/tester-expo-widget/scripts/build-production.mjs new file mode 100644 index 000000000..a417ab136 --- /dev/null +++ b/apps/tester-expo-widget/scripts/build-production.mjs @@ -0,0 +1,168 @@ +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +const FEDERATION_METADATA_FILES = ['mf-manifest.json', 'mf-stats.json']; +const supportedPlatforms = new Set(['android', 'ios']); + +function assertProductionPlatform(platform) { + if (!supportedPlatforms.has(platform)) { + throw new Error( + `Expected production widget platform to be ios or android, received ${JSON.stringify(platform)}` + ); + } + return platform; +} + +const scriptDirectory = path.dirname(fileURLToPath(import.meta.url)); +export const defaultProjectRoot = path.resolve(scriptDirectory, '..'); + +export function resolveProductionArtifactPaths(projectRoot, platform) { + assertProductionPlatform(platform); + const standaloneRoot = path.join( + projectRoot, + 'build', + 'standalone', + platform + ); + const bundleFilename = + platform === 'ios' ? 'main.jsbundle' : 'index.android.bundle'; + + return { + assetsDest: + platform === 'ios' ? standaloneRoot : path.join(standaloneRoot, 'res'), + bundleOutput: path.join(standaloneRoot, bundleFilename), + configPath: path.join(projectRoot, 'rspack.config.mjs'), + entryFile: path.join(projectRoot, 'index.ts'), + publishRoot: path.join(projectRoot, 'build', 'remote', platform), + sourceMapOutput: path.join(standaloneRoot, `${bundleFilename}.map`), + stagingRoot: path.join(projectRoot, 'build', 'rspack', platform), + standaloneRoot, + }; +} + +export function createBundleInvocation({ + commandName = 'bundle', + platform, + projectRoot = defaultProjectRoot, +}) { + if (commandName !== 'bundle' && commandName !== 'webpack-bundle') { + throw new Error( + `Expected Re.Pack production command to be bundle or webpack-bundle, received ${JSON.stringify(commandName)}` + ); + } + const paths = resolveProductionArtifactPaths(projectRoot, platform); + return { + arguments: [ + commandName, + '--config', + paths.configPath, + '--platform', + platform, + '--entry-file', + paths.entryFile, + '--dev=false', + '--bundle-output', + paths.bundleOutput, + '--sourcemap-output', + paths.sourceMapOutput, + '--assets-dest', + paths.assetsDest, + ], + command: 'react-native', + cwd: projectRoot, + paths, + }; +} + +export function createFederationMetadataCopyPlan({ publishRoot, stagingRoot }) { + return FEDERATION_METADATA_FILES.map((filename) => ({ + destination: path.join(publishRoot, filename), + filename, + source: path.join(stagingRoot, filename), + })); +} + +export function publishFederationMetadata( + paths, + { copyFileSync = fs.copyFileSync, mkdirSync = fs.mkdirSync } = {} +) { + const plan = createFederationMetadataCopyPlan(paths); + mkdirSync(paths.publishRoot, { recursive: true }); + for (const item of plan) { + copyFileSync(item.source, item.destination); + } + return plan; +} + +function renderInvocation(invocation) { + return [invocation.command, ...invocation.arguments] + .map((part) => (part.includes(' ') ? JSON.stringify(part) : part)) + .join(' '); +} + +export function runProductionBuild({ + commandName = 'bundle', + platform, + projectRoot = defaultProjectRoot, + spawn = spawnSync, +}) { + const invocation = createBundleInvocation({ + commandName, + platform, + projectRoot, + }); + + fs.rmSync(invocation.paths.publishRoot, { force: true, recursive: true }); + fs.rmSync(invocation.paths.standaloneRoot, { force: true, recursive: true }); + fs.mkdirSync(invocation.paths.standaloneRoot, { recursive: true }); + + console.log(`Running ${renderInvocation(invocation)}`); + const result = spawn(invocation.command, invocation.arguments, { + cwd: invocation.cwd, + env: process.env, + stdio: 'inherit', + }); + if (result.error) { + throw new Error( + `Could not run the standard Re.Pack ${commandName} command: ${result.error.message}` + ); + } + if (result.status !== 0) { + throw new Error( + `Standard Re.Pack ${commandName} command exited with status ${String(result.status)}` + ); + } + + const copiedMetadata = publishFederationMetadata(invocation.paths); + return { copiedMetadata, invocation }; +} + +function parseArguments(arguments_) { + const commandName = arguments_.includes('--webpack-bundle') + ? 'webpack-bundle' + : 'bundle'; + const positionals = arguments_.filter( + (argument) => argument !== '--webpack-bundle' + ); + if (positionals.length !== 1) { + throw new Error( + 'Usage: node scripts/build-production.mjs [--webpack-bundle]' + ); + } + return { commandName, platform: assertProductionPlatform(positionals[0]) }; +} + +if (import.meta.url === pathToFileURL(process.argv[1]).href) { + try { + const options = parseArguments(process.argv.slice(2)); + const result = runProductionBuild(options); + console.log( + `Published ${options.platform} Expo widget artifacts to ${result.invocation.paths.publishRoot}.` + ); + } catch (error) { + console.error(error instanceof Error ? error.message : error); + process.exitCode = 1; + } +} diff --git a/apps/tester-expo-widget/src/App.tsx b/apps/tester-expo-widget/src/App.tsx new file mode 100644 index 000000000..2107d411a --- /dev/null +++ b/apps/tester-expo-widget/src/App.tsx @@ -0,0 +1,18 @@ +import { SafeAreaView, StyleSheet } from 'react-native'; +import Widget from './Widget'; + +export default function App() { + return ( + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + padding: 24, + }, +}); diff --git a/apps/tester-expo-widget/src/Widget.tsx b/apps/tester-expo-widget/src/Widget.tsx new file mode 100644 index 000000000..970059cd1 --- /dev/null +++ b/apps/tester-expo-widget/src/Widget.tsx @@ -0,0 +1,156 @@ +import { Asset } from 'expo-asset'; +import Constants from 'expo-constants'; +import { useFonts } from 'expo-font'; +import { + type ComponentType, + useCallback, + useEffect, + useMemo, + useState, +} from 'react'; +import { Image, PixelRatio, StyleSheet, Text, View } from 'react-native'; + +const widgetDensityImage = require('../assets/images/widget-density.png'); +const widgetDensityAsset = Asset.fromModule(widgetDensityImage); +const widgetFontAsset = Asset.fromModule( + require('../assets/fonts/material-symbols-regular.ttf') +); +const widgetRuntimeGeneration = Date.now(); + +type LazyDetailsComponent = ComponentType<{ onReady: () => void }>; + +type LazyDetailsLoadState = + | { status: 'loading' } + | { component: LazyDetailsComponent; status: 'loaded' } + | { error: Error; status: 'failed' }; + +function LazyDetailsLoader({ onReady }: { onReady: () => void }) { + const [loadState, setLoadState] = useState({ + status: 'loading', + }); + + useEffect(() => { + let active = true; + import( + /* webpackChunkName: "expo-widget-lazy" */ './WidgetLazyDetails' + ).then( + ({ default: component }) => { + if (active) setLoadState({ component, status: 'loaded' }); + }, + (error: Error) => { + if (active) setLoadState({ error, status: 'failed' }); + } + ); + return () => { + active = false; + }; + }, []); + + if (loadState.status === 'failed') throw loadState.error; + if (loadState.status === 'loading') { + return ( + + Loading nested widget chunk… + + ); + } + + const LazyDetails = loadState.component; + return ; +} + +export default function Widget({ + recoveryAttempt = 0, +}: { + recoveryAttempt?: number; +}) { + const resolvedImage = useMemo( + () => Image.resolveAssetSource(widgetDensityImage), + [] + ); + const imageSource = useMemo(() => { + const separator = resolvedImage.uri.includes('?') ? '&' : '?'; + return { + ...resolvedImage, + uri: `${resolvedImage.uri}${separator}runtimeGeneration=${widgetRuntimeGeneration}&recoveryAttempt=${recoveryAttempt}`, + }; + }, [recoveryAttempt, resolvedImage]); + const [imageLoaded, setImageLoaded] = useState(false); + const [imageError, setImageError] = useState(); + const [lazyLoaded, setLazyLoaded] = useState(false); + const [fontsLoaded, fontError] = useFonts({ + ExpoWidgetFixture: widgetFontAsset, + }); + const handleLazyReady = useCallback(() => setLazyLoaded(true), []); + const ready = imageLoaded && fontsLoaded && lazyLoaded; + + if (imageError) throw imageError; + if (fontError) throw fontError; + + return ( + + {ready ? ( + Expo widget resources loaded + ) : null} + Expo MF v2 widget loaded by Re.Pack. + + Native app owner: {Constants.expoConfig?.name ?? 'host'} + + + Widget public environment:{' '} + {process.env.EXPO_PUBLIC_FEDERATION_OWNER ?? 'missing'} + + + Widget asset type: {widgetDensityAsset.type} + + {imageLoaded ? ( + + Widget density image loaded + + ) : null} + + setImageError(new Error(nativeEvent.error)) + } + onLoad={() => setImageLoaded(true)} + source={imageSource} + style={styles.image} + testID="expo-widget-density-image" + /> + + Selected widget density scale: {resolvedImage.scale} + + + Widget device density scale: {PixelRatio.get()} + + {fontsLoaded ? ( + + home + + ) : ( + Loading widget font… + )} + + + ); +} + +const styles = StyleSheet.create({ + card: { + backgroundColor: '#fff7ed', + borderColor: '#c2410c', + borderRadius: 8, + borderWidth: 1, + gap: 8, + padding: 16, + }, + fixtureFont: { + fontFamily: 'ExpoWidgetFixture', + fontSize: 32, + }, + image: { + height: 48, + width: 48, + }, +}); diff --git a/apps/tester-expo-widget/src/WidgetLazyDetails.tsx b/apps/tester-expo-widget/src/WidgetLazyDetails.tsx new file mode 100644 index 000000000..e8f28a289 --- /dev/null +++ b/apps/tester-expo-widget/src/WidgetLazyDetails.tsx @@ -0,0 +1,30 @@ +import { StyleSheet, Text, View } from 'react-native'; + +const lazyChunkSentinel = 'repack-expo-widget-lazy-sentinel'; + +export default function WidgetLazyDetails({ + onReady, +}: { + onReady: () => void; +}) { + return ( + + This content was loaded from a nested remote widget chunk. + + ); +} + +const styles = StyleSheet.create({ + card: { + backgroundColor: '#eff6ff', + borderColor: '#1d4ed8', + borderRadius: 8, + borderWidth: 1, + padding: 12, + }, +}); diff --git a/apps/tester-expo-widget/tsconfig.json b/apps/tester-expo-widget/tsconfig.json new file mode 100644 index 000000000..5bfb77848 --- /dev/null +++ b/apps/tester-expo-widget/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "expo/tsconfig.base", + "compilerOptions": { + "strict": true + }, + "include": ["*.ts", "*.tsx", "src/**/*.ts", "src/**/*.tsx", "expo-env.d.ts"] +} diff --git a/apps/tester-expo/.env.development b/apps/tester-expo/.env.development new file mode 100644 index 000000000..751c8bfb9 --- /dev/null +++ b/apps/tester-expo/.env.development @@ -0,0 +1 @@ +EXPO_PUBLIC_FEDERATION_OWNER=expo-host diff --git a/apps/tester-expo/.env.production b/apps/tester-expo/.env.production new file mode 100644 index 000000000..751c8bfb9 --- /dev/null +++ b/apps/tester-expo/.env.production @@ -0,0 +1 @@ +EXPO_PUBLIC_FEDERATION_OWNER=expo-host diff --git a/apps/tester-expo/.gitignore b/apps/tester-expo/.gitignore new file mode 100644 index 000000000..a486fe0a3 --- /dev/null +++ b/apps/tester-expo/.gitignore @@ -0,0 +1,3 @@ +# Native projects are generated by Expo prebuild and intentionally untracked. +/android +/ios diff --git a/apps/tester-expo/app.json b/apps/tester-expo/app.json new file mode 100644 index 000000000..08c54e1bc --- /dev/null +++ b/apps/tester-expo/app.json @@ -0,0 +1,23 @@ +{ + "expo": { + "name": "Repack Expo Tester", + "slug": "repack-expo-tester", + "scheme": "repackexpo", + "version": "1.0.0", + "orientation": "portrait", + "updates": { + "enabled": false + }, + "plugins": [ + "expo-router", + "@callstack/repack-expo", + "./plugins/with-localhost-cleartext" + ], + "ios": { + "bundleIdentifier": "com.callstack.repackexpo" + }, + "android": { + "package": "com.callstack.repackexpo" + } + } +} diff --git a/apps/tester-expo/app/_layout.tsx b/apps/tester-expo/app/_layout.tsx new file mode 100644 index 000000000..624cfe6c7 --- /dev/null +++ b/apps/tester-expo/app/_layout.tsx @@ -0,0 +1,5 @@ +import { Stack } from 'expo-router'; + +export default function RootLayout() { + return ; +} diff --git a/apps/tester-expo/app/density-image.tsx b/apps/tester-expo/app/density-image.tsx new file mode 100644 index 000000000..a3d0ee7cd --- /dev/null +++ b/apps/tester-expo/app/density-image.tsx @@ -0,0 +1,55 @@ +import { Link } from 'expo-router'; +import { useState } from 'react'; +import { Image, PixelRatio, StyleSheet, Text, View } from 'react-native'; + +const densityImage = require('../assets/images/density.png'); + +export default function DensityImageRoute() { + const resolvedImage = Image.resolveAssetSource(densityImage); + const [imageLoaded, setImageLoaded] = useState(false); + const [imageError, setImageError] = useState(false); + + return ( + + {imageLoaded && !imageError ? ( + + Density-aware bundled image loaded + + ) : null} + {imageError ? ( + + Density-aware bundled image failed to load + + ) : null} + setImageError(true)} + onLoad={() => setImageLoaded(true)} + source={densityImage} + style={styles.image} + testID="density-image" + /> + + Selected density scale: {resolvedImage.scale} + + + Device density scale: {PixelRatio.get()} + + Back home + + ); +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + flex: 1, + gap: 16, + justifyContent: 'center', + padding: 24, + }, + image: { + height: 48, + width: 48, + }, +}); diff --git a/apps/tester-expo/app/details.tsx b/apps/tester-expo/app/details.tsx new file mode 100644 index 000000000..ddc776e6a --- /dev/null +++ b/apps/tester-expo/app/details.tsx @@ -0,0 +1,24 @@ +import Constants from 'expo-constants'; +import { Link } from 'expo-router'; +import { StyleSheet, Text, View } from 'react-native'; + +export default function DetailsRoute() { + return ( + + + Expo runtime: {Constants.expoVersion ?? 'development build'} + + Back home + + ); +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + flex: 1, + gap: 16, + justifyContent: 'center', + padding: 24, + }, +}); diff --git a/apps/tester-expo/app/font.tsx b/apps/tester-expo/app/font.tsx new file mode 100644 index 000000000..08fe4d71a --- /dev/null +++ b/apps/tester-expo/app/font.tsx @@ -0,0 +1,49 @@ +import { useFonts } from 'expo-font'; +import { Link } from 'expo-router'; +import { StyleSheet, Text, View } from 'react-native'; + +export default function FontRoute() { + const [fontsLoaded, fontError] = useFonts({ + ExpoFixture: require('../assets/fonts/material-symbols-regular.ttf'), + }); + + if (fontError) { + return ( + + Font error: {fontError.message} + + ); + } + + if (!fontsLoaded) { + return ( + + Loading bundled font… + + ); + } + + return ( + + Bundled font loaded by expo-font: + + home + + Back home + + ); +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + flex: 1, + gap: 16, + justifyContent: 'center', + padding: 24, + }, + fixtureFont: { + fontFamily: 'ExpoFixture', + fontSize: 32, + }, +}); diff --git a/apps/tester-expo/app/image.tsx b/apps/tester-expo/app/image.tsx new file mode 100644 index 000000000..122c16af6 --- /dev/null +++ b/apps/tester-expo/app/image.tsx @@ -0,0 +1,68 @@ +import { Asset } from 'expo-asset'; +import { Link } from 'expo-router'; +import { useState } from 'react'; +import { Image, StyleSheet, Text, View } from 'react-native'; + +const packagedImage = require('../assets/images/repack.png'); +const packagedAsset = Asset.fromModule(packagedImage); +const monorepoImage = require('../../../tests/integration/src/loaders/__fixtures__/assets/logo.png'); +const monorepoAsset = Asset.fromModule(monorepoImage); + +export default function ImageRoute() { + const [appLocalImageLoaded, setAppLocalImageLoaded] = useState(false); + const [monorepoImageLoaded, setMonorepoImageLoaded] = useState(false); + const [imageError, setImageError] = useState(); + const imagesLoaded = + appLocalImageLoaded && monorepoImageLoaded && !imageError; + + return ( + + {imagesLoaded ? ( + + Expo assets loaded: {packagedAsset.name}.{packagedAsset.type} and{' '} + monorepo {monorepoAsset.name}.{monorepoAsset.type} + + ) : null} + {imageError ? {imageError} : null} + + setImageError((error) => error ?? 'App-local image failed to load') + } + onLoad={() => setAppLocalImageLoaded(true)} + source={packagedImage} + style={styles.logo} + testID="app-local-image" + /> + + setImageError((error) => error ?? 'Monorepo image failed to load') + } + onLoad={() => setMonorepoImageLoaded(true)} + source={monorepoImage} + style={styles.monorepoLogo} + testID="monorepo-image" + /> + Back home + + ); +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + flex: 1, + gap: 16, + justifyContent: 'center', + padding: 24, + }, + logo: { + height: 30, + width: 147, + }, + monorepoLogo: { + height: 64, + width: 64, + }, +}); diff --git a/apps/tester-expo/app/index.tsx b/apps/tester-expo/app/index.tsx new file mode 100644 index 000000000..8e5a32427 --- /dev/null +++ b/apps/tester-expo/app/index.tsx @@ -0,0 +1,42 @@ +import { Link } from 'expo-router'; +import { StatusBar } from 'expo-status-bar'; +import { useState } from 'react'; +import { Button, StyleSheet, Text, View } from 'react-native'; +import FastRefreshLeaf from '../components/FastRefreshLeaf'; +import SymbolicationProbe from '../components/SymbolicationProbe'; + +export default function HomeRoute() { + const [count, setCount] = useState(0); + + return ( + + Expo Router compiled by Re.Pack + Parent state: {count} +