@hot-updater/react-native 1.0.0-rc.1 → 1.0.0-rc.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/android/proguard-rules.pro +15 -0
  2. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +1 -1
  3. package/android/src/main/java/com/hotupdater/BundleMetadata.kt +7 -0
  4. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +37 -54
  5. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryState.kt +64 -0
  6. package/android/src/test/java/com/hotupdater/HotUpdaterRecoveryStateTest.kt +97 -0
  7. package/android/src/test/java/com/hotupdater/PendingCrashRecoveryTest.kt +44 -0
  8. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +102 -20
  9. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.h +16 -0
  10. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.mm +83 -0
  11. package/ios/HotUpdater/Recovery/HotUpdaterRecoveryHooks.mm +49 -0
  12. package/lib/commonjs/checkForUpdate.js +25 -13
  13. package/lib/commonjs/checkForUpdate.js.map +1 -1
  14. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +88 -24
  15. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  16. package/lib/commonjs/httpClient.js +2 -2
  17. package/lib/commonjs/httpClient.js.map +1 -1
  18. package/lib/commonjs/index.js +30 -9
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/index.spec.js +56 -11
  21. package/lib/commonjs/index.spec.js.map +1 -1
  22. package/lib/commonjs/native.js +8 -6
  23. package/lib/commonjs/native.js.map +1 -1
  24. package/lib/commonjs/native.spec.js +107 -6
  25. package/lib/commonjs/native.spec.js.map +1 -1
  26. package/lib/commonjs/{notifyAppReadyAnalytics.boundary.spec.js → notifyAppReadyInsights.boundary.spec.js} +21 -21
  27. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +1 -0
  28. package/lib/commonjs/notifyAppReadyInsights.js +185 -0
  29. package/lib/commonjs/notifyAppReadyInsights.js.map +1 -0
  30. package/lib/commonjs/{notifyAppReadyAnalytics.spec.js → notifyAppReadyInsights.spec.js} +102 -29
  31. package/lib/commonjs/notifyAppReadyInsights.spec.js.map +1 -0
  32. package/lib/commonjs/{notifyAppReadyAnalytics.test-utils.js → notifyAppReadyInsights.test-utils.js} +3 -3
  33. package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +1 -0
  34. package/lib/commonjs/{notifyAppReadyAnalytics.transport.spec.js → notifyAppReadyInsights.transport.spec.js} +7 -7
  35. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +1 -0
  36. package/lib/commonjs/sdkVersion.js +1 -1
  37. package/lib/commonjs/sdkVersion.js.map +1 -1
  38. package/lib/commonjs/wrap.js +10 -9
  39. package/lib/commonjs/wrap.js.map +1 -1
  40. package/lib/commonjs/wrap.spec.js +90 -25
  41. package/lib/commonjs/wrap.spec.js.map +1 -1
  42. package/lib/module/checkForUpdate.js +25 -13
  43. package/lib/module/checkForUpdate.js.map +1 -1
  44. package/lib/module/checkForUpdate.releaseCatalog.spec.js +88 -24
  45. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  46. package/lib/module/httpClient.js +2 -2
  47. package/lib/module/httpClient.js.map +1 -1
  48. package/lib/module/index.js +31 -10
  49. package/lib/module/index.js.map +1 -1
  50. package/lib/module/index.spec.js +56 -11
  51. package/lib/module/index.spec.js.map +1 -1
  52. package/lib/module/native.js +6 -4
  53. package/lib/module/native.js.map +1 -1
  54. package/lib/module/native.spec.js +107 -6
  55. package/lib/module/native.spec.js.map +1 -1
  56. package/lib/module/{notifyAppReadyAnalytics.boundary.spec.js → notifyAppReadyInsights.boundary.spec.js} +16 -16
  57. package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +1 -0
  58. package/lib/module/notifyAppReadyInsights.js +178 -0
  59. package/lib/module/notifyAppReadyInsights.js.map +1 -0
  60. package/lib/module/{notifyAppReadyAnalytics.spec.js → notifyAppReadyInsights.spec.js} +94 -21
  61. package/lib/module/notifyAppReadyInsights.spec.js.map +1 -0
  62. package/lib/module/{notifyAppReadyAnalytics.test-utils.js → notifyAppReadyInsights.test-utils.js} +3 -3
  63. package/lib/module/notifyAppReadyInsights.test-utils.js.map +1 -0
  64. package/lib/module/{notifyAppReadyAnalytics.transport.spec.js → notifyAppReadyInsights.transport.spec.js} +4 -4
  65. package/lib/module/notifyAppReadyInsights.transport.spec.js.map +1 -0
  66. package/lib/module/sdkVersion.js +1 -1
  67. package/lib/module/sdkVersion.js.map +1 -1
  68. package/lib/module/wrap.js +10 -9
  69. package/lib/module/wrap.js.map +1 -1
  70. package/lib/module/wrap.spec.js +92 -25
  71. package/lib/module/wrap.spec.js.map +1 -1
  72. package/lib/typescript/commonjs/checkForUpdate.d.ts +1 -1
  73. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/httpClient.d.ts +6 -6
  75. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/index.d.ts +4 -5
  77. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/native.d.ts +4 -3
  79. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +25 -0
  81. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +8 -0
  83. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  85. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/wrap.types.d.ts +5 -6
  88. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
  89. package/lib/typescript/module/checkForUpdate.d.ts +1 -1
  90. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  91. package/lib/typescript/module/httpClient.d.ts +6 -6
  92. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  93. package/lib/typescript/module/index.d.ts +4 -5
  94. package/lib/typescript/module/index.d.ts.map +1 -1
  95. package/lib/typescript/module/native.d.ts +4 -3
  96. package/lib/typescript/module/native.d.ts.map +1 -1
  97. package/lib/typescript/module/notifyAppReadyInsights.d.ts +25 -0
  98. package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +1 -0
  99. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +8 -0
  100. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +1 -0
  101. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  102. package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
  103. package/lib/typescript/module/wrap.d.ts.map +1 -1
  104. package/lib/typescript/module/wrap.types.d.ts +5 -6
  105. package/lib/typescript/module/wrap.types.d.ts.map +1 -1
  106. package/package.json +3 -3
  107. package/src/checkForUpdate.releaseCatalog.spec.ts +127 -57
  108. package/src/checkForUpdate.ts +30 -18
  109. package/src/httpClient.ts +11 -11
  110. package/src/index.spec.ts +59 -11
  111. package/src/index.ts +41 -13
  112. package/src/native.spec.ts +110 -6
  113. package/src/native.ts +9 -8
  114. package/src/{notifyAppReadyAnalytics.boundary.spec.ts → notifyAppReadyInsights.boundary.spec.ts} +17 -17
  115. package/src/{notifyAppReadyAnalytics.spec.ts → notifyAppReadyInsights.spec.ts} +81 -22
  116. package/src/{notifyAppReadyAnalytics.test-utils.ts → notifyAppReadyInsights.test-utils.ts} +4 -4
  117. package/src/{notifyAppReadyAnalytics.transport.spec.ts → notifyAppReadyInsights.transport.spec.ts} +5 -5
  118. package/src/notifyAppReadyInsights.ts +281 -0
  119. package/src/sdkVersion.ts +1 -1
  120. package/src/wrap.spec.ts +101 -31
  121. package/src/wrap.tsx +11 -9
  122. package/src/wrap.types.ts +5 -6
  123. package/lib/commonjs/notifyAppReadyAnalytics.boundary.spec.js.map +0 -1
  124. package/lib/commonjs/notifyAppReadyAnalytics.js +0 -133
  125. package/lib/commonjs/notifyAppReadyAnalytics.js.map +0 -1
  126. package/lib/commonjs/notifyAppReadyAnalytics.spec.js.map +0 -1
  127. package/lib/commonjs/notifyAppReadyAnalytics.test-utils.js.map +0 -1
  128. package/lib/commonjs/notifyAppReadyAnalytics.transport.spec.js.map +0 -1
  129. package/lib/module/notifyAppReadyAnalytics.boundary.spec.js.map +0 -1
  130. package/lib/module/notifyAppReadyAnalytics.js +0 -128
  131. package/lib/module/notifyAppReadyAnalytics.js.map +0 -1
  132. package/lib/module/notifyAppReadyAnalytics.spec.js.map +0 -1
  133. package/lib/module/notifyAppReadyAnalytics.test-utils.js.map +0 -1
  134. package/lib/module/notifyAppReadyAnalytics.transport.spec.js.map +0 -1
  135. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts +0 -13
  136. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts.map +0 -1
  137. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts +0 -8
  138. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts.map +0 -1
  139. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts +0 -13
  140. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts.map +0 -1
  141. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts +0 -8
  142. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts.map +0 -1
  143. package/src/notifyAppReadyAnalytics.ts +0 -194
@@ -17,6 +17,18 @@ private func hotUpdaterUpdateSignalLaunchStateSymbol(
17
17
  @_silgen_name("HotUpdaterPerformRecoveryReload")
18
18
  private func hotUpdaterPerformRecoveryReloadSymbol() -> ObjCBool
19
19
 
20
+ @_silgen_name("HotUpdaterMarkFailedRuntime")
21
+ private func hotUpdaterMarkFailedRuntime()
22
+
23
+ @_silgen_name("HotUpdaterIsFailedRuntime")
24
+ private func hotUpdaterIsFailedRuntime() -> ObjCBool
25
+
26
+ @_silgen_name("HotUpdaterInstallRecoveryHooks")
27
+ private func hotUpdaterInstallRecoveryHooks()
28
+
29
+ @_silgen_name("HotUpdaterAfterSurfaceStarts")
30
+ private func hotUpdaterAfterSurfaceStarts(_ action: @convention(block) @escaping () -> Void)
31
+
20
32
  @_silgen_name("HotUpdaterCopyMinBundleId")
21
33
  private func hotUpdaterCopyMinBundleIdSymbol() -> UnsafeMutableRawPointer
22
34
 
@@ -545,6 +557,11 @@ private func hotUpdaterGetMinBundleId() -> String {
545
557
  // MARK: - Rollback Support
546
558
 
547
559
  public func notifyAppReady() -> [String: Any] {
560
+ // A failed runtime can finish queued native calls while recovery starts.
561
+ // Keep its readiness loop from consuming the new launch's report.
562
+ if hotUpdaterIsFailedRuntime().boolValue {
563
+ return ["status": "PENDING"]
564
+ }
548
565
  return bundleStorage.notifyAppReady()
549
566
  }
550
567
 
@@ -672,6 +689,7 @@ final class HotUpdaterRecoveryManager: NSObject {
672
689
  private var handlersInstalled = false
673
690
  private var isMonitoring = false
674
691
  private var recoveryRequested = false
692
+ private var monitoringGeneration = 0
675
693
  private var currentBundleId: String?
676
694
  private var shouldRollbackOnCrash = false
677
695
  private var contentAppearedCallback: ((String?) -> Void)?
@@ -709,6 +727,10 @@ final class HotUpdaterRecoveryManager: NSObject {
709
727
  shouldRollback: Bool,
710
728
  onContentAppeared: @escaping (String?) -> Void
711
729
  ) {
730
+ objc_sync_enter(self)
731
+ defer { objc_sync_exit(self) }
732
+
733
+ monitoringGeneration += 1
712
734
  currentBundleId = bundleId
713
735
  shouldRollbackOnCrash = shouldRollback
714
736
  recoveryRequested = false
@@ -719,6 +741,7 @@ final class HotUpdaterRecoveryManager: NSObject {
719
741
  stopMonitoringWorkItem = nil
720
742
 
721
743
  installHandlersIfNeeded()
744
+ hotUpdaterInstallRecoveryHooks()
722
745
  registerObservers()
723
746
  installSignalHandlersIfNeeded()
724
747
  hotUpdaterUpdateSignalLaunchState(bundleId, shouldRollback: shouldRollback)
@@ -726,9 +749,8 @@ final class HotUpdaterRecoveryManager: NSObject {
726
749
 
727
750
  func handleUncaughtException(_ exception: NSException) {
728
751
  writeCrashMarker()
729
- if requestRecoveryReloadIfNeeded() {
730
- return
731
- }
752
+ // An uncaught native exception cannot safely continue in this process.
753
+ // Preserve the marker so the next launch can select the safe bundle.
732
754
  previousUncaughtExceptionHandler?(exception)
733
755
  }
734
756
 
@@ -742,16 +764,22 @@ final class HotUpdaterRecoveryManager: NSObject {
742
764
  previousUncaughtExceptionHandler = NSGetUncaughtExceptionHandler()
743
765
 
744
766
  RCTSetFatalHandler { [weak self] error in
745
- self?.writeCrashMarker()
746
- if self?.requestRecoveryReloadIfNeeded() != true {
747
- self?.previousFatalHandler?(error)
767
+ guard !hotUpdaterIsFailedRuntime().boolValue else { return }
768
+ if self?.requestRecoveryReloadIfNeeded(onFailure: {
769
+ self?.forwardFatalError(error)
770
+ }) != true {
771
+ self?.writeCrashMarker()
772
+ self?.forwardFatalError(error)
748
773
  }
749
774
  }
750
775
 
751
776
  RCTSetFatalExceptionHandler { [weak self] exception in
752
- self?.writeCrashMarker()
753
- if self?.requestRecoveryReloadIfNeeded() != true {
754
- self?.previousFatalExceptionHandler?(exception)
777
+ guard !hotUpdaterIsFailedRuntime().boolValue else { return }
778
+ if self?.requestRecoveryReloadIfNeeded(onFailure: {
779
+ self?.forwardFatalException(exception)
780
+ }) != true {
781
+ self?.writeCrashMarker()
782
+ self?.forwardFatalException(exception)
755
783
  }
756
784
  }
757
785
 
@@ -759,6 +787,33 @@ final class HotUpdaterRecoveryManager: NSObject {
759
787
  handlersInstalled = true
760
788
  }
761
789
 
790
+ private func forwardFatalError(_ error: Error?) {
791
+ if let previousFatalHandler {
792
+ previousFatalHandler(error)
793
+ } else {
794
+ let handler = RCTGetFatalHandler()
795
+ RCTSetFatalHandler(nil)
796
+ RCTFatal(error)
797
+ // React Native's DEBUG default handler can return.
798
+ if RCTGetFatalHandler() == nil {
799
+ RCTSetFatalHandler(handler)
800
+ }
801
+ }
802
+ }
803
+
804
+ private func forwardFatalException(_ exception: NSException?) {
805
+ if let previousFatalExceptionHandler {
806
+ previousFatalExceptionHandler(exception)
807
+ } else {
808
+ let handler = RCTGetFatalExceptionHandler()
809
+ RCTSetFatalExceptionHandler(nil)
810
+ RCTFatalException(exception)
811
+ if RCTGetFatalExceptionHandler() == nil {
812
+ RCTSetFatalExceptionHandler(handler)
813
+ }
814
+ }
815
+ }
816
+
762
817
  private func installSignalHandlersIfNeeded() {
763
818
  guard !signalHandlersInstalled else {
764
819
  return
@@ -777,7 +832,7 @@ final class HotUpdaterRecoveryManager: NSObject {
777
832
  unregisterObservers()
778
833
  NotificationCenter.default.addObserver(
779
834
  self,
780
- selector: #selector(handleJavaScriptDidFailToLoad),
835
+ selector: #selector(handleJavaScriptDidFailToLoad(_:)),
781
836
  name: NSNotification.Name.RCTJavaScriptDidFailToLoad,
782
837
  object: nil
783
838
  )
@@ -802,15 +857,25 @@ final class HotUpdaterRecoveryManager: NSObject {
802
857
  )
803
858
  }
804
859
 
805
- @objc private func handleJavaScriptDidFailToLoad() {
806
- if requestRecoveryReloadIfNeeded() {
860
+ @objc private func handleJavaScriptDidFailToLoad(_ notification: Notification) {
861
+ let error = notification.userInfo?["error"] as? NSError ?? NSError(
862
+ domain: "HotUpdaterRecovery",
863
+ code: 1,
864
+ userInfo: [NSLocalizedDescriptionKey: "JavaScript bundle failed to load"]
865
+ )
866
+ if requestRecoveryReloadIfNeeded(onFailure: { [weak self] in
867
+ self?.forwardFatalError(error)
868
+ }) {
807
869
  return
808
870
  }
809
871
  unregisterObservers()
810
872
  }
811
873
 
812
874
  @objc private func handleContentDidAppear() {
813
- guard isMonitoring else {
875
+ objc_sync_enter(self)
876
+ defer { objc_sync_exit(self) }
877
+
878
+ guard isMonitoring, !recoveryRequested else {
814
879
  return
815
880
  }
816
881
 
@@ -820,14 +885,19 @@ final class HotUpdaterRecoveryManager: NSObject {
820
885
  hotUpdaterUpdateSignalLaunchState(currentBundleId, shouldRollback: false)
821
886
 
822
887
  stopMonitoringWorkItem?.cancel()
888
+ let generation = monitoringGeneration
823
889
  let workItem = DispatchWorkItem { [weak self] in
824
- self?.finishMonitoring()
890
+ self?.finishMonitoring(generation: generation)
825
891
  }
826
892
  stopMonitoringWorkItem = workItem
827
893
  DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(10), execute: workItem)
828
894
  }
829
895
 
830
- private func finishMonitoring() {
896
+ private func finishMonitoring(generation: Int) {
897
+ objc_sync_enter(self)
898
+ defer { objc_sync_exit(self) }
899
+ guard monitoringGeneration == generation else { return }
900
+
831
901
  isMonitoring = false
832
902
  recoveryRequested = false
833
903
  stopMonitoringWorkItem = nil
@@ -837,31 +907,40 @@ final class HotUpdaterRecoveryManager: NSObject {
837
907
  hotUpdaterUpdateSignalLaunchState(nil, shouldRollback: false)
838
908
  }
839
909
 
840
- private func requestRecoveryReloadIfNeeded() -> Bool {
910
+ private func requestRecoveryReloadIfNeeded(onFailure: @escaping () -> Void) -> Bool {
911
+ objc_sync_enter(self)
912
+ defer { objc_sync_exit(self) }
913
+
841
914
  guard isMonitoring, shouldRollbackOnCrash else {
842
915
  return false
843
916
  }
844
917
 
845
- objc_sync_enter(self)
918
+ hotUpdaterMarkFailedRuntime()
846
919
  if recoveryRequested {
847
- objc_sync_exit(self)
848
920
  return true
849
921
  }
850
922
  recoveryRequested = true
851
- objc_sync_exit(self)
923
+ writeCrashMarker()
852
924
 
853
925
  let bundleId = currentBundleId
854
- DispatchQueue.main.async { [weak self] in
926
+ let generation = monitoringGeneration
927
+ hotUpdaterAfterSurfaceStarts { [weak self] in
855
928
  guard let self else {
856
929
  return
857
930
  }
858
931
 
932
+ objc_sync_enter(self)
933
+ let isCurrentLaunch = self.monitoringGeneration == generation
934
+ objc_sync_exit(self)
935
+ guard isCurrentLaunch else { return }
936
+
859
937
  let started = hotUpdaterPerformRecoveryReload()
860
938
  if !started {
861
939
  objc_sync_enter(self)
862
940
  self.recoveryRequested = false
863
941
  objc_sync_exit(self)
864
942
  NSLog("[HotUpdaterRecovery] Failed to trigger recovery reload")
943
+ onFailure()
865
944
  } else {
866
945
  NSLog("[HotUpdaterRecovery] Triggered recovery reload for bundleId=\(bundleId ?? "nil")")
867
946
  }
@@ -871,6 +950,9 @@ final class HotUpdaterRecoveryManager: NSObject {
871
950
  }
872
951
 
873
952
  private func writeCrashMarker() {
953
+ objc_sync_enter(self)
954
+ defer { objc_sync_exit(self) }
955
+
874
956
  guard isMonitoring else {
875
957
  return
876
958
  }
@@ -0,0 +1,16 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ #ifdef __cplusplus
4
+ extern "C" {
5
+ #endif
6
+
7
+ void HotUpdaterMarkFailedRuntime(void);
8
+ BOOL HotUpdaterIsFailedRuntime(void);
9
+ void HotUpdaterInstallRecoveryHooks(void);
10
+ BOOL HotUpdaterBeginSurfaceStart(const void *surfaceHandler);
11
+ void HotUpdaterFinishSurfaceStart(const void *surfaceHandler);
12
+ void HotUpdaterAfterSurfaceStarts(dispatch_block_t action);
13
+
14
+ #ifdef __cplusplus
15
+ }
16
+ #endif
@@ -0,0 +1,83 @@
1
+ #import "HotUpdaterRecovery.h"
2
+
3
+ static NSString *const failedRuntimeKey = @"HotUpdater.failedRuntime";
4
+ static NSString *const surfaceStartsKey = @"HotUpdater.surfaceStarts";
5
+
6
+ static BOOL isRuntimeThread(void)
7
+ {
8
+ return [[NSThread currentThread].name isEqualToString:@"com.facebook.react.runtime.JavaScript"];
9
+ }
10
+
11
+ static NSMutableDictionary *pendingStarts(void)
12
+ {
13
+ static NSMutableDictionary *starts;
14
+ static dispatch_once_t onceToken;
15
+ dispatch_once(&onceToken, ^{ starts = [NSMutableDictionary new]; });
16
+ return starts;
17
+ }
18
+
19
+ BOOL HotUpdaterIsFailedRuntime(void)
20
+ {
21
+ return [[[NSThread currentThread] threadDictionary][failedRuntimeKey] boolValue];
22
+ }
23
+
24
+ void HotUpdaterMarkFailedRuntime(void)
25
+ {
26
+ #ifdef RCT_NEW_ARCH_ENABLED
27
+ // A bridgeless runtime owns this thread. Never mark shared native workers.
28
+ if (isRuntimeThread()) {
29
+ [NSThread currentThread].threadDictionary[failedRuntimeKey] = @YES;
30
+ }
31
+ #endif
32
+ }
33
+
34
+ BOOL HotUpdaterBeginSurfaceStart(const void *surfaceHandler)
35
+ {
36
+ if (HotUpdaterIsFailedRuntime()) {
37
+ return NO;
38
+ }
39
+ if (!isRuntimeThread()) {
40
+ return YES;
41
+ }
42
+
43
+ NSMutableDictionary *starts = pendingStarts();
44
+ NSValue *key = [NSValue valueWithPointer:surfaceHandler];
45
+ @synchronized (starts) {
46
+ if (starts[key]) {
47
+ return NO;
48
+ }
49
+ NSMutableDictionary *runtime = [NSThread currentThread].threadDictionary;
50
+ dispatch_group_t group = runtime[surfaceStartsKey];
51
+ if (!group) {
52
+ group = dispatch_group_create();
53
+ runtime[surfaceStartsKey] = group;
54
+ }
55
+ dispatch_group_enter(group);
56
+ starts[key] = group;
57
+ }
58
+ return YES;
59
+ }
60
+
61
+ void HotUpdaterFinishSurfaceStart(const void *surfaceHandler)
62
+ {
63
+ NSMutableDictionary *starts = pendingStarts();
64
+ NSValue *key = [NSValue valueWithPointer:surfaceHandler];
65
+ dispatch_group_t group;
66
+ @synchronized (starts) {
67
+ group = starts[key];
68
+ [starts removeObjectForKey:key];
69
+ }
70
+ if (group) {
71
+ dispatch_group_leave(group);
72
+ }
73
+ }
74
+
75
+ void HotUpdaterAfterSurfaceStarts(dispatch_block_t action)
76
+ {
77
+ dispatch_group_t group = [NSThread currentThread].threadDictionary[surfaceStartsKey];
78
+ if (group) {
79
+ dispatch_group_notify(group, dispatch_get_main_queue(), action);
80
+ } else {
81
+ dispatch_async(dispatch_get_main_queue(), action);
82
+ }
83
+ }
@@ -0,0 +1,49 @@
1
+ #import "HotUpdaterRecovery.h"
2
+ #import <objc/runtime.h>
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import <React/RCTFabricSurface.h>
6
+ #import <React/RCTSurfacePresenter.h>
7
+ #endif
8
+
9
+ void HotUpdaterInstallRecoveryHooks(void)
10
+ {
11
+ #ifdef RCT_NEW_ARCH_ENABLED
12
+ static dispatch_once_t onceToken;
13
+ dispatch_once(&onceToken, ^{
14
+ SEL startSelector = @selector(start);
15
+ SEL completionSelector = @selector(setupAnimationDriverWithSurfaceHandler:);
16
+ Method startMethod = class_getInstanceMethod(RCTFabricSurface.class, startSelector);
17
+ Method completionMethod = class_getInstanceMethod(RCTSurfacePresenter.class, completionSelector);
18
+ if (!startMethod || !completionMethod) {
19
+ return;
20
+ }
21
+
22
+ IMP originalCompletion = method_getImplementation(completionMethod);
23
+ method_setImplementation(completionMethod, imp_implementationWithBlock(
24
+ ^(RCTSurfacePresenter *presenter, const facebook::react::SurfaceHandler &handler) {
25
+ ((void (*)(id, SEL, const facebook::react::SurfaceHandler &))originalCompletion)(
26
+ presenter, completionSelector, handler);
27
+ // This is the final operation in both synchronous and asynchronous
28
+ // Fabric starts. A stage callback fires too early to permit reload.
29
+ HotUpdaterFinishSurfaceStart(&handler);
30
+ }));
31
+
32
+ IMP originalStart = method_getImplementation(startMethod);
33
+ method_setImplementation(startMethod, imp_implementationWithBlock(^(RCTFabricSurface *surface) {
34
+ if (HotUpdaterIsFailedRuntime()) {
35
+ return;
36
+ }
37
+ const auto &handler = surface.surfaceHandler;
38
+ if (handler.getStatus() != facebook::react::SurfaceHandler::Status::Registered) {
39
+ return;
40
+ }
41
+ if (HotUpdaterBeginSurfaceStart(&handler)) {
42
+ // No coordination lock crosses the original call: older RN versions
43
+ // invoke the completion synchronously on this same thread.
44
+ ((void (*)(id, SEL))originalStart)(surface, startSelector);
45
+ }
46
+ }));
47
+ });
48
+ #endif
49
+ }
@@ -9,6 +9,7 @@ var _pluginCore = require("@hot-updater/plugin-core");
9
9
  var _reactNative = require("react-native");
10
10
  var _error = require("./error.js");
11
11
  var _native = require("./native.js");
12
+ var _notifyAppReadyInsights = require("./notifyAppReadyInsights.js");
12
13
  var _releaseCatalogCache = require("./releaseCatalogCache.js");
13
14
  var _store = require("./store.js");
14
15
  const sameReceipt = (first, second) => first !== null && first.kind === second.kind && first.releaseId === second.releaseId && first.bundleId === second.bundleId && first.catalogId === second.catalogId && first.scopeKey === second.scopeKey && first.generation === second.generation && first.catalogHash === second.catalogHash && first.channel === second.channel && first.selectionContextHash === second.selectionContextHash;
@@ -27,18 +28,18 @@ const resetProgress = () => {
27
28
  totalBytes: undefined
28
29
  });
29
30
  };
30
- const notifyReleaseAdoption = async input => {
31
+ const notifyUnchangedSelection = async input => {
31
32
  const {
32
33
  userId,
33
34
  username
34
35
  } = (0, _native.getPersistedUserIdentity)();
35
36
  try {
36
- await input.session.sendAnalyticsEvent({
37
+ await input.session.sendInsightsEvent({
37
38
  appVersion: input.appVersion,
38
39
  channel: input.desired.channel,
39
40
  cohort: input.cohort,
40
41
  fingerprintHash: input.fingerprintHash,
41
- fromBundleId: input.desired.bundleId,
42
+ fromBundleId: null,
42
43
  fromReleaseId: input.active?.releaseId ?? null,
43
44
  installId: (0, _native.getInstallId)(),
44
45
  platform: input.platform,
@@ -46,8 +47,8 @@ const notifyReleaseAdoption = async input => {
46
47
  requestTimeout: input.requestTimeout,
47
48
  toBundleId: input.desired.bundleId,
48
49
  toReleaseId: input.desired.releaseId,
49
- type: "RELEASE_ADOPTED",
50
- updateStrategy: input.updateStrategy,
50
+ type: "UNCHANGED",
51
+ updateStrategy: null,
51
52
  ...(userId === undefined ? {} : {
52
53
  userId
53
54
  }),
@@ -56,7 +57,7 @@ const notifyReleaseAdoption = async input => {
56
57
  })
57
58
  });
58
59
  } catch (error) {
59
- console.warn("[HotUpdater] Release adoption analytics failed:", error);
60
+ console.warn("[HotUpdater] Unchanged selection insights failed:", error);
60
61
  }
61
62
  };
62
63
  async function checkForReleaseCatalogUpdate(input) {
@@ -96,7 +97,8 @@ async function checkForReleaseCatalogUpdate(input) {
96
97
  const catalogId = catalog.catalogId;
97
98
  const scopeKey = catalog.scopeKey;
98
99
  const crashedBundleIds = (0, _native.getCrashHistory)();
99
- const active = (0, _native.getActiveUpdateState)().activeSelection;
100
+ const activeState = (0, _native.getActiveUpdateState)();
101
+ const active = activeState.activeSelection;
100
102
  const explicitScopeSwitch = input.explicitChannel !== undefined && input.explicitChannel !== input.currentChannel;
101
103
  const activeInTargetScope = active?.catalogId === catalogId && active.scopeKey === scopeKey ? active : null;
102
104
  const hasAuthenticatedActive = active !== null && active.catalogId !== null && active.scopeKey !== null && active.generation !== null;
@@ -176,8 +178,8 @@ async function checkForReleaseCatalogUpdate(input) {
176
178
  guard,
177
179
  selection: receipt
178
180
  });
179
- if (committed && transitionKind === "ADOPT_RELEASE" && options.analytics) {
180
- await notifyReleaseAdoption({
181
+ if (committed && transitionKind === "ADOPT_RELEASE" && options.insights) {
182
+ await notifyUnchangedSelection({
181
183
  active,
182
184
  appVersion: input.currentAppVersion,
183
185
  cohort: input.cohort,
@@ -186,8 +188,7 @@ async function checkForReleaseCatalogUpdate(input) {
186
188
  platform: input.platform,
187
189
  requestHeaders: options.requestHeaders,
188
190
  requestTimeout: options.requestTimeout,
189
- session,
190
- updateStrategy: options.updateStrategy
191
+ session
191
192
  });
192
193
  }
193
194
  return committed;
@@ -201,7 +202,7 @@ async function checkForReleaseCatalogUpdate(input) {
201
202
  if (!(0, _native.isReleaseSelectionCurrent)(guard)) {
202
203
  throw new _error.StaleReleaseCatalogError();
203
204
  }
204
- return (0, _native.updateBundle)({
205
+ const downloaded = await (0, _native.updateBundle)({
205
206
  bundleId: desired.bundleId,
206
207
  changedAssets: artifact.changedAssets ?? null,
207
208
  channel: input.targetChannel,
@@ -213,11 +214,22 @@ async function checkForReleaseCatalogUpdate(input) {
213
214
  shouldSkipCurrentBundleIdCheck: true,
214
215
  status: desired.status
215
216
  });
217
+ if (downloaded) {
218
+ await (0, _notifyAppReadyInsights.reportBundleDownloaded)(options, {
219
+ fromBundleId: input.currentBundleId,
220
+ fromReleaseId: active?.bundleId === input.currentBundleId ? active.releaseId : activeState.stableSelection?.bundleId === input.currentBundleId ? activeState.stableSelection.releaseId : null,
221
+ toBundleId: desired.bundleId,
222
+ toReleaseId: desired.releaseId,
223
+ channel: input.targetChannel,
224
+ updateStrategy: options.updateStrategy
225
+ });
226
+ }
227
+ return downloaded;
216
228
  };
217
229
  return {
218
230
  fileHash: null,
219
231
  fileUrl: null,
220
- id: desired.bundleId,
232
+ id: desired.releaseId ?? desired.bundleId,
221
233
  message: release?.message ?? null,
222
234
  releaseId: desired.releaseId,
223
235
  rolloutCohortCount: release?.rolloutCohortCount ?? 1000,
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_pluginCore","_reactNative","_error","_native","_releaseCatalogCache","_store","sameReceipt","first","second","kind","releaseId","bundleId","catalogId","scopeKey","generation","catalogHash","channel","selectionContextHash","validateCatalog","catalog","expectedScope","schemaVersion","Number","isSafeInteger","test","hasExpectedReleaseCatalogScope","HotUpdaterError","resetProgress","hotUpdaterStore","setState","artifactType","details","downloadedBytes","undefined","isUpdateDownloaded","progress","totalBytes","notifyReleaseAdoption","input","userId","username","getPersistedUserIdentity","session","sendAnalyticsEvent","appVersion","desired","cohort","fingerprintHash","fromBundleId","fromReleaseId","active","installId","getInstallId","platform","requestHeaders","requestTimeout","toBundleId","toReleaseId","type","updateStrategy","error","console","warn","checkForReleaseCatalogUpdate","options","client","createSession","channelKey","encodeChannelKey","targetChannel","strategy","canonicalAppVersion","canonicalizeAppVersion","currentAppVersion","fetchReleaseCatalog","crashedBundleIds","getCrashHistory","getActiveUpdateState","activeSelection","explicitScopeSwitch","explicitChannel","currentChannel","activeInTargetScope","hasAuthenticatedActive","selectorCurrentBundleId","currentBundleId","minimumReleaseId","createReleaseSelectionContextHash","activeBundleId","activeReleaseId","strategyValue","acceptReleaseCatalog","selectDesiredRelease","builtInBundleId","receipt","authorization","authorizeReleaseTransition","authorized","reason","release","transitionKind","guard","updateBundleForSelection","isReleaseSelectionCurrent","StaleReleaseCatalogError","committed","commitReleaseSelection","selection","analytics","artifact","resolveArtifact","targetBundleId","updateBundle","changedAssets","fileHash","fileUrl","manifestFileHash","manifestUrl","shouldSkipCurrentBundleIdCheck","status","id","message","rolloutCohortCount","shouldForceUpdate","targetCohorts","checkForUpdate","__DEV__","includes","Platform","OS","onError","getAppVersion","getBundleId","getMinBundleId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","getChannel","getCohort","getFingerprintHash"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_pluginCore","_reactNative","_error","_native","_notifyAppReadyInsights","_releaseCatalogCache","_store","sameReceipt","first","second","kind","releaseId","bundleId","catalogId","scopeKey","generation","catalogHash","channel","selectionContextHash","validateCatalog","catalog","expectedScope","schemaVersion","Number","isSafeInteger","test","hasExpectedReleaseCatalogScope","HotUpdaterError","resetProgress","hotUpdaterStore","setState","artifactType","details","downloadedBytes","undefined","isUpdateDownloaded","progress","totalBytes","notifyUnchangedSelection","input","userId","username","getPersistedUserIdentity","session","sendInsightsEvent","appVersion","desired","cohort","fingerprintHash","fromBundleId","fromReleaseId","active","installId","getInstallId","platform","requestHeaders","requestTimeout","toBundleId","toReleaseId","type","updateStrategy","error","console","warn","checkForReleaseCatalogUpdate","options","client","createSession","channelKey","encodeChannelKey","targetChannel","strategy","canonicalAppVersion","canonicalizeAppVersion","currentAppVersion","fetchReleaseCatalog","crashedBundleIds","getCrashHistory","activeState","getActiveUpdateState","activeSelection","explicitScopeSwitch","explicitChannel","currentChannel","activeInTargetScope","hasAuthenticatedActive","selectorCurrentBundleId","currentBundleId","minimumReleaseId","createReleaseSelectionContextHash","activeBundleId","activeReleaseId","strategyValue","acceptReleaseCatalog","selectDesiredRelease","builtInBundleId","receipt","authorization","authorizeReleaseTransition","authorized","reason","release","transitionKind","guard","updateBundleForSelection","isReleaseSelectionCurrent","StaleReleaseCatalogError","committed","commitReleaseSelection","selection","insights","artifact","resolveArtifact","targetBundleId","downloaded","updateBundle","changedAssets","fileHash","fileUrl","manifestFileHash","manifestUrl","shouldSkipCurrentBundleIdCheck","status","reportBundleDownloaded","stableSelection","id","message","rolloutCohortCount","shouldForceUpdate","targetCohorts","checkForUpdate","__DEV__","includes","Platform","OS","onError","getAppVersion","getBundleId","getMinBundleId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","getChannel","getCohort","getFingerprintHash"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}