@scalebun/react-native 1.0.3 → 1.1.0

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 (244) hide show
  1. package/android/src/main/java/com/scalebun/core/crash/CrashStorage.kt +115 -1
  2. package/android/src/main/java/com/scalebun/core/crash/NativeCrashHandler.kt +14 -0
  3. package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkModule.kt +25 -9
  4. package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceTranscriber.kt +68 -2
  5. package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashModule.kt +66 -2
  6. package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +70 -4
  7. package/ios/Crash/ScaleBunCrashBridge.mm +6 -0
  8. package/ios/Crash/ScaleBunCrashHandler.swift +14 -1
  9. package/ios/Crash/ScaleBunCrashModule.swift +14 -0
  10. package/ios/Crash/ScaleBunCrashSignalBridge.h +32 -1
  11. package/ios/Crash/ScaleBunCrashSignalBridge.m +172 -7
  12. package/ios/Crash/ScaleBunCrashSignalStress.c +137 -0
  13. package/ios/Crash/ScaleBunCrashStorage.swift +75 -0
  14. package/lib/commonjs/analytics/EventTracker.js +30 -2
  15. package/lib/commonjs/analytics/EventTracker.js.map +1 -1
  16. package/lib/commonjs/bootstrap/SDKBootstrapper.js +31 -23
  17. package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +1 -1
  18. package/lib/commonjs/compat/codepush.js +78 -15
  19. package/lib/commonjs/compat/codepush.js.map +1 -1
  20. package/lib/commonjs/core/config/schema.js +26 -5
  21. package/lib/commonjs/core/config/schema.js.map +1 -1
  22. package/lib/commonjs/core/constants/endpoints.js +9 -6
  23. package/lib/commonjs/core/constants/endpoints.js.map +1 -1
  24. package/lib/commonjs/core/context/device.js +130 -0
  25. package/lib/commonjs/core/context/device.js.map +1 -1
  26. package/lib/commonjs/debug/replayWiring.js +2 -1
  27. package/lib/commonjs/debug/replayWiring.js.map +1 -1
  28. package/lib/commonjs/features/bugreport/BugReportFeature.js +112 -0
  29. package/lib/commonjs/features/bugreport/BugReportFeature.js.map +1 -0
  30. package/lib/commonjs/features/bugreport/buildPayload.js +97 -0
  31. package/lib/commonjs/features/bugreport/buildPayload.js.map +1 -0
  32. package/lib/commonjs/features/crash/CrashReporter.js +25 -1
  33. package/lib/commonjs/features/crash/CrashReporter.js.map +1 -1
  34. package/lib/commonjs/features/crash/capture.js +27 -9
  35. package/lib/commonjs/features/crash/capture.js.map +1 -1
  36. package/lib/commonjs/features/crash/nativeCrashBridge.js +163 -28
  37. package/lib/commonjs/features/crash/nativeCrashBridge.js.map +1 -1
  38. package/lib/commonjs/features/engage/EngagePromptProvider.js +36 -2
  39. package/lib/commonjs/features/engage/EngagePromptProvider.js.map +1 -1
  40. package/lib/commonjs/features/engage/EngagePromptView.js +47 -14
  41. package/lib/commonjs/features/engage/EngagePromptView.js.map +1 -1
  42. package/lib/commonjs/features/engage/engageTriggerEngine.js +10 -0
  43. package/lib/commonjs/features/engage/engageTriggerEngine.js.map +1 -1
  44. package/lib/commonjs/features/engage/engageTypes.js.map +1 -1
  45. package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +2 -1
  46. package/lib/commonjs/features/journey/ScaleBunDebugRoot.js.map +1 -1
  47. package/lib/commonjs/features/ota/OtaOrchestrator.js +72 -5
  48. package/lib/commonjs/features/ota/OtaOrchestrator.js.map +1 -1
  49. package/lib/commonjs/features/ota/deviceAttributes.js +48 -0
  50. package/lib/commonjs/features/ota/deviceAttributes.js.map +1 -0
  51. package/lib/commonjs/features/ota/geoCountry.js +93 -0
  52. package/lib/commonjs/features/ota/geoCountry.js.map +1 -0
  53. package/lib/commonjs/features/ota/useOtaUpdate.js +4 -1
  54. package/lib/commonjs/features/ota/useOtaUpdate.js.map +1 -1
  55. package/lib/commonjs/features/performance/PerformanceFeature.js +23 -9
  56. package/lib/commonjs/features/performance/PerformanceFeature.js.map +1 -1
  57. package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js +69 -9
  58. package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
  59. package/lib/commonjs/features/performance/transport/PerformanceTransport.js +25 -0
  60. package/lib/commonjs/features/performance/transport/PerformanceTransport.js.map +1 -1
  61. package/lib/commonjs/features/session/BackendSessionAdapter.js +128 -11
  62. package/lib/commonjs/features/session/BackendSessionAdapter.js.map +1 -1
  63. package/lib/commonjs/features/session/JourneyEventPipeline.js +1 -0
  64. package/lib/commonjs/features/session/JourneyEventPipeline.js.map +1 -1
  65. package/lib/commonjs/features/session/ReplayCaptureManager.js +46 -0
  66. package/lib/commonjs/features/session/ReplayCaptureManager.js.map +1 -1
  67. package/lib/commonjs/features/session/SessionManager.js +42 -12
  68. package/lib/commonjs/features/session/SessionManager.js.map +1 -1
  69. package/lib/commonjs/features/session/nativeCapture.js +4 -4
  70. package/lib/commonjs/features/session/nativeCapture.js.map +1 -1
  71. package/lib/commonjs/features/session/outboxFrameCapture.js +3 -2
  72. package/lib/commonjs/features/session/outboxFrameCapture.js.map +1 -1
  73. package/lib/commonjs/features/session/sessionTypes.js.map +1 -1
  74. package/lib/commonjs/index.js +13 -0
  75. package/lib/commonjs/index.js.map +1 -1
  76. package/lib/commonjs/public/ScaleBunFacade.js +199 -2
  77. package/lib/commonjs/public/ScaleBunFacade.js.map +1 -1
  78. package/lib/commonjs/specs/NativeScaleBunCrash.js.map +1 -1
  79. package/lib/module/analytics/EventTracker.js +29 -1
  80. package/lib/module/analytics/EventTracker.js.map +1 -1
  81. package/lib/module/bootstrap/SDKBootstrapper.js +29 -21
  82. package/lib/module/bootstrap/SDKBootstrapper.js.map +1 -1
  83. package/lib/module/compat/codepush.js +77 -14
  84. package/lib/module/compat/codepush.js.map +1 -1
  85. package/lib/module/core/config/schema.js +26 -5
  86. package/lib/module/core/config/schema.js.map +1 -1
  87. package/lib/module/core/constants/endpoints.js +9 -6
  88. package/lib/module/core/constants/endpoints.js.map +1 -1
  89. package/lib/module/core/context/device.js +119 -0
  90. package/lib/module/core/context/device.js.map +1 -1
  91. package/lib/module/debug/replayWiring.js +2 -1
  92. package/lib/module/debug/replayWiring.js.map +1 -1
  93. package/lib/module/features/bugreport/BugReportFeature.js +105 -0
  94. package/lib/module/features/bugreport/BugReportFeature.js.map +1 -0
  95. package/lib/module/features/bugreport/buildPayload.js +91 -0
  96. package/lib/module/features/bugreport/buildPayload.js.map +1 -0
  97. package/lib/module/features/crash/CrashReporter.js +25 -1
  98. package/lib/module/features/crash/CrashReporter.js.map +1 -1
  99. package/lib/module/features/crash/capture.js +28 -9
  100. package/lib/module/features/crash/capture.js.map +1 -1
  101. package/lib/module/features/crash/nativeCrashBridge.js +161 -28
  102. package/lib/module/features/crash/nativeCrashBridge.js.map +1 -1
  103. package/lib/module/features/engage/EngagePromptProvider.js +36 -2
  104. package/lib/module/features/engage/EngagePromptProvider.js.map +1 -1
  105. package/lib/module/features/engage/EngagePromptView.js +47 -14
  106. package/lib/module/features/engage/EngagePromptView.js.map +1 -1
  107. package/lib/module/features/engage/engageTriggerEngine.js +10 -0
  108. package/lib/module/features/engage/engageTriggerEngine.js.map +1 -1
  109. package/lib/module/features/engage/engageTypes.js.map +1 -1
  110. package/lib/module/features/journey/ScaleBunDebugRoot.js +2 -1
  111. package/lib/module/features/journey/ScaleBunDebugRoot.js.map +1 -1
  112. package/lib/module/features/ota/OtaOrchestrator.js +72 -5
  113. package/lib/module/features/ota/OtaOrchestrator.js.map +1 -1
  114. package/lib/module/features/ota/deviceAttributes.js +43 -0
  115. package/lib/module/features/ota/deviceAttributes.js.map +1 -0
  116. package/lib/module/features/ota/geoCountry.js +86 -0
  117. package/lib/module/features/ota/geoCountry.js.map +1 -0
  118. package/lib/module/features/ota/useOtaUpdate.js +4 -1
  119. package/lib/module/features/ota/useOtaUpdate.js.map +1 -1
  120. package/lib/module/features/performance/PerformanceFeature.js +23 -9
  121. package/lib/module/features/performance/PerformanceFeature.js.map +1 -1
  122. package/lib/module/features/performance/collectors/FrameMetricsCollector.js +70 -10
  123. package/lib/module/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
  124. package/lib/module/features/performance/transport/PerformanceTransport.js +25 -0
  125. package/lib/module/features/performance/transport/PerformanceTransport.js.map +1 -1
  126. package/lib/module/features/session/BackendSessionAdapter.js +128 -11
  127. package/lib/module/features/session/BackendSessionAdapter.js.map +1 -1
  128. package/lib/module/features/session/JourneyEventPipeline.js +1 -0
  129. package/lib/module/features/session/JourneyEventPipeline.js.map +1 -1
  130. package/lib/module/features/session/ReplayCaptureManager.js +46 -0
  131. package/lib/module/features/session/ReplayCaptureManager.js.map +1 -1
  132. package/lib/module/features/session/SessionManager.js +42 -12
  133. package/lib/module/features/session/SessionManager.js.map +1 -1
  134. package/lib/module/features/session/nativeCapture.js +4 -5
  135. package/lib/module/features/session/nativeCapture.js.map +1 -1
  136. package/lib/module/features/session/outboxFrameCapture.js +3 -2
  137. package/lib/module/features/session/outboxFrameCapture.js.map +1 -1
  138. package/lib/module/features/session/sessionTypes.js.map +1 -1
  139. package/lib/module/index.js +4 -1
  140. package/lib/module/index.js.map +1 -1
  141. package/lib/module/public/ScaleBunFacade.js +199 -2
  142. package/lib/module/public/ScaleBunFacade.js.map +1 -1
  143. package/lib/module/specs/NativeScaleBunCrash.js.map +1 -1
  144. package/lib/typescript/analytics/EventTracker.d.ts +20 -0
  145. package/lib/typescript/analytics/EventTracker.d.ts.map +1 -1
  146. package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +1 -1
  147. package/lib/typescript/compat/codepush.d.ts +27 -4
  148. package/lib/typescript/compat/codepush.d.ts.map +1 -1
  149. package/lib/typescript/core/config/schema.d.ts +4 -1
  150. package/lib/typescript/core/config/schema.d.ts.map +1 -1
  151. package/lib/typescript/core/constants/endpoints.d.ts +9 -6
  152. package/lib/typescript/core/constants/endpoints.d.ts.map +1 -1
  153. package/lib/typescript/core/context/device.d.ts +46 -0
  154. package/lib/typescript/core/context/device.d.ts.map +1 -1
  155. package/lib/typescript/debug/replayWiring.d.ts.map +1 -1
  156. package/lib/typescript/features/bugreport/BugReportFeature.d.ts +59 -0
  157. package/lib/typescript/features/bugreport/BugReportFeature.d.ts.map +1 -0
  158. package/lib/typescript/features/bugreport/buildPayload.d.ts +51 -0
  159. package/lib/typescript/features/bugreport/buildPayload.d.ts.map +1 -0
  160. package/lib/typescript/features/crash/CrashReporter.d.ts +20 -1
  161. package/lib/typescript/features/crash/CrashReporter.d.ts.map +1 -1
  162. package/lib/typescript/features/crash/capture.d.ts +21 -2
  163. package/lib/typescript/features/crash/capture.d.ts.map +1 -1
  164. package/lib/typescript/features/crash/nativeCrashBridge.d.ts +16 -3
  165. package/lib/typescript/features/crash/nativeCrashBridge.d.ts.map +1 -1
  166. package/lib/typescript/features/engage/EngagePromptProvider.d.ts.map +1 -1
  167. package/lib/typescript/features/engage/EngagePromptView.d.ts.map +1 -1
  168. package/lib/typescript/features/engage/EngageTransport.d.ts +1 -1
  169. package/lib/typescript/features/engage/EngageTransport.d.ts.map +1 -1
  170. package/lib/typescript/features/engage/engageTriggerEngine.d.ts.map +1 -1
  171. package/lib/typescript/features/engage/engageTypes.d.ts +15 -0
  172. package/lib/typescript/features/engage/engageTypes.d.ts.map +1 -1
  173. package/lib/typescript/features/journey/ScaleBunDebugRoot.d.ts.map +1 -1
  174. package/lib/typescript/features/ota/OtaOrchestrator.d.ts +14 -2
  175. package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +1 -1
  176. package/lib/typescript/features/ota/deviceAttributes.d.ts +18 -0
  177. package/lib/typescript/features/ota/deviceAttributes.d.ts.map +1 -0
  178. package/lib/typescript/features/ota/geoCountry.d.ts +14 -0
  179. package/lib/typescript/features/ota/geoCountry.d.ts.map +1 -0
  180. package/lib/typescript/features/ota/useOtaUpdate.d.ts +20 -2
  181. package/lib/typescript/features/ota/useOtaUpdate.d.ts.map +1 -1
  182. package/lib/typescript/features/performance/PerformanceFeature.d.ts +0 -1
  183. package/lib/typescript/features/performance/PerformanceFeature.d.ts.map +1 -1
  184. package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts +33 -0
  185. package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts.map +1 -1
  186. package/lib/typescript/features/performance/transport/PerformanceTransport.d.ts.map +1 -1
  187. package/lib/typescript/features/session/BackendSessionAdapter.d.ts +42 -2
  188. package/lib/typescript/features/session/BackendSessionAdapter.d.ts.map +1 -1
  189. package/lib/typescript/features/session/JourneyEventPipeline.d.ts +2 -0
  190. package/lib/typescript/features/session/JourneyEventPipeline.d.ts.map +1 -1
  191. package/lib/typescript/features/session/ReplayCaptureManager.d.ts +38 -1
  192. package/lib/typescript/features/session/ReplayCaptureManager.d.ts.map +1 -1
  193. package/lib/typescript/features/session/SessionManager.d.ts.map +1 -1
  194. package/lib/typescript/features/session/nativeCapture.d.ts +2 -1
  195. package/lib/typescript/features/session/nativeCapture.d.ts.map +1 -1
  196. package/lib/typescript/features/session/outboxFrameCapture.d.ts.map +1 -1
  197. package/lib/typescript/features/session/sessionTypes.d.ts +20 -3
  198. package/lib/typescript/features/session/sessionTypes.d.ts.map +1 -1
  199. package/lib/typescript/index.d.ts +1 -0
  200. package/lib/typescript/index.d.ts.map +1 -1
  201. package/lib/typescript/public/ScaleBunFacade.d.ts +69 -0
  202. package/lib/typescript/public/ScaleBunFacade.d.ts.map +1 -1
  203. package/lib/typescript/public/types.d.ts +34 -8
  204. package/lib/typescript/public/types.d.ts.map +1 -1
  205. package/lib/typescript/specs/NativeScaleBunCrash.d.ts +14 -0
  206. package/lib/typescript/specs/NativeScaleBunCrash.d.ts.map +1 -1
  207. package/lib/typescript/vendor/protocol/index.d.ts +17 -17
  208. package/package.json +1 -1
  209. package/src/analytics/EventTracker.ts +28 -1
  210. package/src/bootstrap/SDKBootstrapper.ts +27 -23
  211. package/src/compat/codepush.ts +87 -16
  212. package/src/core/config/schema.ts +26 -5
  213. package/src/core/constants/endpoints.ts +9 -6
  214. package/src/core/context/device.ts +146 -0
  215. package/src/debug/replayWiring.ts +2 -1
  216. package/src/features/bugreport/BugReportFeature.ts +128 -0
  217. package/src/features/bugreport/buildPayload.ts +116 -0
  218. package/src/features/crash/CrashReporter.ts +40 -1
  219. package/src/features/crash/capture.ts +36 -9
  220. package/src/features/crash/nativeCrashBridge.ts +156 -22
  221. package/src/features/engage/EngagePromptProvider.tsx +48 -2
  222. package/src/features/engage/EngagePromptView.tsx +51 -15
  223. package/src/features/engage/EngageTransport.ts +1 -1
  224. package/src/features/engage/engageTriggerEngine.ts +15 -0
  225. package/src/features/engage/engageTypes.ts +15 -0
  226. package/src/features/journey/ScaleBunDebugRoot.tsx +2 -1
  227. package/src/features/ota/OtaOrchestrator.ts +84 -6
  228. package/src/features/ota/deviceAttributes.ts +46 -0
  229. package/src/features/ota/geoCountry.ts +85 -0
  230. package/src/features/ota/useOtaUpdate.ts +20 -2
  231. package/src/features/performance/PerformanceFeature.ts +22 -9
  232. package/src/features/performance/collectors/FrameMetricsCollector.ts +72 -10
  233. package/src/features/performance/transport/PerformanceTransport.ts +18 -0
  234. package/src/features/session/BackendSessionAdapter.ts +137 -10
  235. package/src/features/session/JourneyEventPipeline.ts +3 -0
  236. package/src/features/session/ReplayCaptureManager.ts +53 -1
  237. package/src/features/session/SessionManager.ts +46 -7
  238. package/src/features/session/nativeCapture.ts +3 -2
  239. package/src/features/session/outboxFrameCapture.ts +3 -2
  240. package/src/features/session/sessionTypes.ts +26 -3
  241. package/src/index.ts +4 -1
  242. package/src/public/ScaleBunFacade.ts +198 -2
  243. package/src/public/types.ts +35 -8
  244. package/src/specs/NativeScaleBunCrash.ts +16 -0
@@ -18,7 +18,10 @@ var _OtaEventEmitter = require("./OtaEventEmitter");
18
18
  * apiUrl: 'https://api.scalebun.com/api/v1',
19
19
  * clientKey: 'scalebun_ck_…',
20
20
  * appVersion: '1.0.0',
21
- * installationId: deviceId,
21
+ * // installationId is resolved from the SDK's own persisted install id —
22
+ * // do NOT pass deviceId here (the old example did; it split OTA telemetry
23
+ * // into a separate identity namespace from every other lane).
24
+ * channelName: 'production',
22
25
  * mandatoryBlocksUi: true,
23
26
  * });
24
27
  * ```
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_OtaOrchestrator","_OtaEventEmitter","useOtaUpdate","options","isSyncing","setIsSyncing","useState","syncResult","setSyncResult","downloadProgress","setDownloadProgress","lastEvent","setLastEvent","mandatoryUpdatePending","setMandatoryUpdatePending","optionsRef","useRef","current","useEffect","unsubscribe","otaEventEmitter","addListener","event","type","progress","sync","useCallback","result","otaOrchestrator","isMandatory","status","mandatoryBlocksUi","apiUrl","clientKey","appVersion","installationId","autoRestart","restart","isRestartRequired","activeBundle","bundle"],"sourceRoot":"../../../../src","sources":["features/ota/useOtaUpdate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_OtaOrchestrator","_OtaEventEmitter","useOtaUpdate","options","isSyncing","setIsSyncing","useState","syncResult","setSyncResult","downloadProgress","setDownloadProgress","lastEvent","setLastEvent","mandatoryUpdatePending","setMandatoryUpdatePending","optionsRef","useRef","current","useEffect","unsubscribe","otaEventEmitter","addListener","event","type","progress","sync","useCallback","result","otaOrchestrator","isMandatory","status","mandatoryBlocksUi","apiUrl","clientKey","appVersion","installationId","autoRestart","restart","isRestartRequired","activeBundle","bundle"],"sourceRoot":"../../../../src","sources":["features/ota/useOtaUpdate.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,YAAYA,CAACC,OAA4B,EAAsB;EAC7E,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACjD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAF,eAAQ,EAAoB,IAAI,CAAC;EACrE,MAAM,CAACG,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAJ,eAAQ,EAAC,CAAC,CAAC;EAC3D,MAAM,CAACK,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAN,eAAQ,EAAkB,IAAI,CAAC;EACjE,MAAM,CAACO,sBAAsB,EAAEC,yBAAyB,CAAC,GAAG,IAAAR,eAAQ,EAAC,KAAK,CAAC;;EAE3E;EACA,MAAMS,UAAU,GAAG,IAAAC,aAAM,EAACb,OAAO,CAAC;EAClCY,UAAU,CAACE,OAAO,GAAGd,OAAO;;EAE5B;EACA,IAAAe,gBAAS,EAAC,MAAM;IACd,MAAMC,WAAW,GAAGC,gCAAe,CAACC,WAAW,CAAEC,KAAe,IAAK;MACnEV,YAAY,CAACU,KAAK,CAAC;MAEnB,QAAQA,KAAK,CAACC,IAAI;QAChB,KAAK,kBAAkB;UACrBb,mBAAmB,CAAC,CAAC,CAAC;UACtB;QACF,KAAK,mBAAmB;UACtBA,mBAAmB,CAACY,KAAK,CAACE,QAAQ,IAAI,CAAC,CAAC;UACxC;QACF,KAAK,mBAAmB;UACtBd,mBAAmB,CAAC,GAAG,CAAC;UACxB;QACF,KAAK,WAAW;UACdA,mBAAmB,CAAC,GAAG,CAAC;UACxB;QACF,KAAK,cAAc;QACnB,KAAK,eAAe;UAClBA,mBAAmB,CAAC,CAAC,CAAC;UACtB;MACJ;IACF,CAAC,CAAC;IAEF,OAAOS,WAAW;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,IAAI,GAAG,IAAAC,kBAAW,EAAC,YAAiC;IACxDrB,YAAY,CAAC,IAAI,CAAC;IAClBK,mBAAmB,CAAC,CAAC,CAAC;IACtB,IAAI;MACF,MAAMiB,MAAM,GAAG,MAAMC,gCAAe,CAACH,IAAI,CAACtB,OAAO,CAAC;MAClDK,aAAa,CAACmB,MAAM,CAAC;;MAErB;MACA,IACEA,MAAM,CAACE,WAAW,IAClBF,MAAM,CAACG,MAAM,KAAK,kBAAkB,IACpCf,UAAU,CAACE,OAAO,CAACc,iBAAiB,EACpC;QACAjB,yBAAyB,CAAC,IAAI,CAAC;MACjC;MAEA,OAAOa,MAAM;IACf,CAAC,SAAS;MACRtB,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CAACF,OAAO,CAAC6B,MAAM,EAAE7B,OAAO,CAAC8B,SAAS,EAAE9B,OAAO,CAAC+B,UAAU,EAAE/B,OAAO,CAACgC,cAAc,EAAEhC,OAAO,CAACiC,WAAW,CAAC,CAAC;EAExG,MAAMC,OAAO,GAAG,IAAAX,kBAAW,EAAC,MAAM;IAChCZ,yBAAyB,CAAC,KAAK,CAAC;IAChCc,gCAAe,CAACS,OAAO,CAAC,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACLjC,SAAS;IACTkC,iBAAiB,EAAEV,gCAAe,CAACU,iBAAiB,CAAC,CAAC;IACtDC,YAAY,EAAEhC,UAAU,EAAEiC,MAAM,IAAI,IAAI;IACxCjC,UAAU;IACVE,gBAAgB;IAChBE,SAAS;IACTE,sBAAsB;IACtBY,IAAI;IACJY;EACF,CAAC;AACH","ignoreList":[]}
@@ -63,7 +63,7 @@ class PerformanceFeature {
63
63
  static CAPTURE_DELAYS = [300, 600, 1200];
64
64
 
65
65
  // Track event function from SDK pipeline
66
- trackFn = null;
66
+
67
67
  constructor(config) {
68
68
  this.config = (0, _config.mergePerformanceConfig)(config);
69
69
  this.transport = new _PerformanceTransport.PerformanceTransport(this.config);
@@ -143,7 +143,6 @@ class PerformanceFeature {
143
143
 
144
144
  async initialize(context) {
145
145
  if (this.active || !this.config.enabled) return;
146
- this.trackFn = context.trackEvent;
147
146
  this.active = true;
148
147
 
149
148
  // Activate native performance collectors (Android AppStart/Frame/ANR,
@@ -473,13 +472,28 @@ class PerformanceFeature {
473
472
  // Send to debug transport
474
473
  this.transport.sendEvent(event);
475
474
 
476
- // Also track through SDK pipeline (for backend ingestion)
477
- if (this.trackFn) {
478
- this.trackFn('$perf_event', {
479
- perfType: event.type,
480
- ...event
481
- });
482
- }
475
+ /**
476
+ * REMOVED: a duplicate `$perf_event` through the analytics/event pipeline.
477
+ *
478
+ * This claimed to be "for backend ingestion", but the `queuePerformanceMetric` call below is
479
+ * the backend ingestion path — it writes the dedicated `performance_metrics` table, and that
480
+ * is what EVERY consumer reads: `perf-aggregate.ch.ts` (FPS, frameMetricsSessions), the
481
+ * Monitor low-FPS KPI, the page-load RenderingPanel and the Replay Inspector's FPS readout.
482
+ * Nothing in the backend or the dashboard reads `$perf_event` — verified by search.
483
+ *
484
+ * So this line wrote every perf sample a SECOND time, into the event lane, where it landed as
485
+ * `USER_ACTION` and was counted as a user interaction. Measured in production:
486
+ *
487
+ * performance_metrics.frame_metrics 75,278 ← read by everything
488
+ * replay_events (as USER_ACTION) 47,019 ← read by nothing
489
+ *
490
+ * `USER_ACTION` was 99% of all mobile events (62,026 of ~62,600), and only 980 of those
491
+ * carried real gesture data. One session showed 4,735 events against SIX real gestures. That
492
+ * made session event counts meaningless and polluted anything counting user interactions.
493
+ *
494
+ * Dropping it loses no data and no feature — the perf lane's copy is the more complete one —
495
+ * and it costs a duplicate serialize + upload per sample on every session.
496
+ */
483
497
 
484
498
  // Queue to SaaS backend dedicated performance endpoint
485
499
  const backendTransport = _SessionManager.SessionManager.getExistingInstance()?.getBackendTransport();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_config","_JsStallCollector","_AppLaunchCollector","_ScreenLoadCollector","_AutoScreenLoadCollector","_FrameMetricsCollector","_UiHangCollector","_NetworkPerfCollector","_CustomTraceCollector","_PerformanceTransport","_MetricsEngine","_SessionManager","PerformanceFeature","name","active","sessionId","currentScreen","deviceMeta","_captureGen","_lastCaptureTs","_recentCaptures","Map","_captureTimer","CAPTURE_THROTTLE_MS","CAPTURE_DEDUP_MS","CAPTURE_MAX_RETRIES","CAPTURE_DELAYS","trackFn","constructor","config","mergePerformanceConfig","transport","PerformanceTransport","platform","Platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","JsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","AppLaunchCollector","launchType","MetricKeys","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","ScreenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","AutoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FrameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","NetworkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CustomTraceCollector","CUSTOM_TRACE","initialize","context","enabled","trackEvent","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","ScaleBunPerformance","rate","tier2SampleRate","Math","random","h","i","length","charCodeAt","imul","startContinuousCollection","stopContinuousCollection","stop","teardown","reset","clearTimeout","isActive","setTransportSink","sink","setSink","setSessionId","setCurrentScreen","visitId","gen","now","Date","dedupKey","floor","lastSuccess","get","_scheduleCaptureAttempt","attempt","delay","setTimeout","_executeAutoCapture","getSink","bridgeAdapter","isAvailable","result","captureScreenshot","base64","set","pruneOlderThan","key","ts","delete","frameId","toString","substring","send","type","protocolVersion","deviceId","timestamp","sequence","nextSequence","payload","category","data","sequenceNumber","trigger","format","sizeBytes","width","height","imageData","source","onNavigationStateChange","state","onScreenChange","onScreenDetected","markScreenLoadStart","registerManualOverride","markStart","markScreenLoadEnd","markEnd","clearManualOverride","startTrace","stopTrace","traceId","addTraceSpan","addSpan","addTraceMeasurement","value","unit","addMeasurement","tags","processNetworkEvent","sendEvent","perfType","backendTransport","SessionManager","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration","exports"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_config","_JsStallCollector","_AppLaunchCollector","_ScreenLoadCollector","_AutoScreenLoadCollector","_FrameMetricsCollector","_UiHangCollector","_NetworkPerfCollector","_CustomTraceCollector","_PerformanceTransport","_MetricsEngine","_SessionManager","PerformanceFeature","name","active","sessionId","currentScreen","deviceMeta","_captureGen","_lastCaptureTs","_recentCaptures","Map","_captureTimer","CAPTURE_THROTTLE_MS","CAPTURE_DEDUP_MS","CAPTURE_MAX_RETRIES","CAPTURE_DELAYS","constructor","config","mergePerformanceConfig","transport","PerformanceTransport","platform","Platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","JsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","AppLaunchCollector","launchType","MetricKeys","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","ScreenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","AutoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FrameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","NetworkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CustomTraceCollector","CUSTOM_TRACE","initialize","context","enabled","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","ScaleBunPerformance","rate","tier2SampleRate","Math","random","h","i","length","charCodeAt","imul","startContinuousCollection","stopContinuousCollection","stop","teardown","reset","clearTimeout","isActive","setTransportSink","sink","setSink","setSessionId","setCurrentScreen","visitId","gen","now","Date","dedupKey","floor","lastSuccess","get","_scheduleCaptureAttempt","attempt","delay","setTimeout","_executeAutoCapture","getSink","bridgeAdapter","isAvailable","result","captureScreenshot","base64","set","pruneOlderThan","key","ts","delete","frameId","toString","substring","send","type","protocolVersion","deviceId","timestamp","sequence","nextSequence","payload","category","data","sequenceNumber","trigger","format","sizeBytes","width","height","imageData","source","onNavigationStateChange","state","onScreenChange","onScreenDetected","markScreenLoadStart","registerManualOverride","markStart","markScreenLoadEnd","markEnd","clearManualOverride","startTrace","stopTrace","traceId","addTraceSpan","addSpan","addTraceMeasurement","value","unit","addMeasurement","tags","processNetworkEvent","sendEvent","backendTransport","SessionManager","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration","exports"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,10 @@ var _models = require("../models");
23
23
  class FrameMetricsCollector {
24
24
  eventSubscription = null;
25
25
  running = false;
26
+ /** AppState subscription — see `_installAppStateGate`. */
27
+ appStateSubscription = null;
28
+ /** True while the native sampler is actually running (i.e. armed AND foregrounded). */
29
+ sampling = false;
26
30
  constructor(config, onFrameMetrics, contextProvider) {
27
31
  this.config = config;
28
32
  this.onFrameMetrics = onFrameMetrics;
@@ -42,21 +46,62 @@ class FrameMetricsCollector {
42
46
  // No-throw
43
47
  }
44
48
  });
49
+ this._startNativeSampler();
50
+ this._installAppStateGate();
51
+ } catch {
52
+ // Native module not available — graceful degradation
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Pause sampling while the app is backgrounded.
58
+ *
59
+ * THE BUG THIS FIXES. `startFrameMetrics` hands off to a native loop that runs until something
60
+ * calls `stopFrameMetrics`. Nothing did. The collector had no AppState awareness at all — unlike
61
+ * `AutoScreenLoadCollector`, which has subscribed to it since it was written — so once a session
62
+ * was sampled in, it kept sampling for as long as the PROCESS lived, not as long as the app was
63
+ * being used.
64
+ *
65
+ * Measured in production: sessions with `durationMs` of 86,400,000 (exactly 24h) and 70,797,000
66
+ * (~19.7h) carrying 39,766 and 3,709 frame samples against 0 and 6 real gestures respectively.
67
+ * `frame_metrics` was 75% of ALL mobile events for this reason.
68
+ *
69
+ * The `tier2SampleRate` knob does not help here: it gates WHICH sessions collect, not how long
70
+ * they collect for. A sampled-in session that gets backgrounded still samples for hours, which is
71
+ * why lowering it would have hidden the symptom while leaving the cause.
72
+ *
73
+ * It is also a DATA-QUALITY fix, not only a volume one. Frame timings from a backgrounded app
74
+ * describe a screen nobody is looking at, and they were feeding the low-FPS KPI and jank
75
+ * detection — so the noise was not merely stored, it was being reported as UI performance.
76
+ *
77
+ * NOTE: on iOS the OS already stops delivering CADisplayLink callbacks on background, so the
78
+ * practical effect is largest on Android. Gating in JS keeps the two platforms behaving the same
79
+ * either way, rather than relying on an OS side effect that is not part of any contract.
80
+ */
81
+ _installAppStateGate() {
82
+ if (this.appStateSubscription) return;
83
+ this.appStateSubscription = _reactNative.AppState.addEventListener('change', next => {
84
+ if (!this.running) return; // stop() already tore us down
85
+ if (next === 'active') this._startNativeSampler();else this._stopNativeSampler(); // 'background' and 'inactive' (iOS call/app-switcher)
86
+ });
87
+ }
45
88
 
46
- // Tell native module to start collecting frame metrics
47
- if (typeof perfModule.startFrameMetrics === 'function') {
89
+ /** Idempotent AppState can fire 'active' more than once without an intervening background. */
90
+ _startNativeSampler() {
91
+ if (this.sampling) return;
92
+ try {
93
+ const perfModule = (0, _getNativePerformanceModule.getNativePerformanceModule)();
94
+ if (typeof perfModule?.startFrameMetrics === 'function') {
48
95
  perfModule.startFrameMetrics(this.config.reportIntervalMs);
96
+ this.sampling = true;
49
97
  }
50
98
  } catch {
51
- // Native module not available graceful degradation
99
+ // No-throw: a perf collector must never break the host app.
52
100
  }
53
101
  }
54
- stop() {
55
- this.running = false;
56
- if (this.eventSubscription) {
57
- this.eventSubscription.remove();
58
- this.eventSubscription = null;
59
- }
102
+ _stopNativeSampler() {
103
+ if (!this.sampling) return;
104
+ this.sampling = false;
60
105
  try {
61
106
  const perfModule = (0, _getNativePerformanceModule.getNativePerformanceModule)();
62
107
  if (typeof perfModule?.stopFrameMetrics === 'function') {
@@ -66,6 +111,21 @@ class FrameMetricsCollector {
66
111
  // No-throw
67
112
  }
68
113
  }
114
+ stop() {
115
+ this.running = false;
116
+ if (this.eventSubscription) {
117
+ this.eventSubscription.remove();
118
+ this.eventSubscription = null;
119
+ }
120
+ // Remove the AppState listener BEFORE stopping the sampler: a 'change' arriving mid-teardown
121
+ // would otherwise restart the native loop on a collector that is being shut down, which is the
122
+ // same leak this gate exists to close.
123
+ if (this.appStateSubscription) {
124
+ this.appStateSubscription.remove();
125
+ this.appStateSubscription = null;
126
+ }
127
+ this._stopNativeSampler();
128
+ }
69
129
  _handleNativeFrameMetrics(data) {
70
130
  if (!data || typeof data.totalFrames !== 'number') return;
71
131
  const totalFrames = data.totalFrames || 0;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_getNativePerformanceModule","_models","FrameMetricsCollector","eventSubscription","running","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","getNativePerformanceModule","emitter","NativeEventEmitter","addListener","data","_handleNativeFrameMetrics","startFrameMetrics","reportIntervalMs","stop","remove","stopFrameMetrics","totalFrames","droppedFrames","slowFrames","frozenFrames","windowMs","maxFrameTimeMs","expectedFrames","Math","round","actualFrames","max","estimatedFps","event","id","Date","now","random","toString","substring","type","timestamp","schemaVersion","PERF_SCHEMA_VERSION","context","min","exports"],"sourceRoot":"../../../../../src","sources":["features/performance/collectors/FrameMetricsCollector.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_getNativePerformanceModule","_models","FrameMetricsCollector","eventSubscription","running","appStateSubscription","sampling","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","getNativePerformanceModule","emitter","NativeEventEmitter","addListener","data","_handleNativeFrameMetrics","_startNativeSampler","_installAppStateGate","AppState","addEventListener","next","_stopNativeSampler","startFrameMetrics","reportIntervalMs","stopFrameMetrics","stop","remove","totalFrames","droppedFrames","slowFrames","frozenFrames","windowMs","maxFrameTimeMs","expectedFrames","Math","round","actualFrames","max","estimatedFps","event","id","Date","now","random","toString","substring","type","timestamp","schemaVersion","PERF_SCHEMA_VERSION","context","min","exports"],"sourceRoot":"../../../../../src","sources":["features/performance/collectors/FrameMetricsCollector.ts"],"mappings":"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","ignoreList":[]}
@@ -63,6 +63,31 @@ class PerformanceTransport {
63
63
 
64
64
  /** Send a metric value (for backward compat with existing metric handler) */
65
65
  sendMetric(name, value, unit, tags) {
66
+ // D4: the desktop sink is only wired under enableDebug(), so in a
67
+ // production build everything through here — JS stall stats, launch
68
+ // timings, and the PUBLIC ScaleBun.sendMetric() API — was buffered into
69
+ // a bounded array and discarded. Mirror every metric onto the backend
70
+ // ingestion lane (the one that provably lands rows); the desktop sink
71
+ // remains the dev-tooling fan-out below.
72
+ try {
73
+ // Lazy import avoids a static cycle: session → performance → session.
74
+ const {
75
+ SessionManager
76
+ } = require('../../session/SessionManager');
77
+ const backend = SessionManager.getExistingInstance()?.getBackendTransport();
78
+ backend?.queuePerformanceMetric({
79
+ type: name,
80
+ value,
81
+ metadata: {
82
+ ...(unit ? {
83
+ unit
84
+ } : {}),
85
+ ...(tags ?? {})
86
+ }
87
+ });
88
+ } catch {
89
+ // Backend lane unavailable (no session yet) — dev sink may still get it.
90
+ }
66
91
  const msg = {
67
92
  type: 'metric',
68
93
  protocolVersion: PROTOCOL_VERSION,
@@ -1 +1 @@
1
- {"version":3,"names":["_MetricsEngine","require","PROTOCOL_VERSION","PerformanceTransport","sink","buffer","constructor","config","setSink","length","pending","splice","msg","send","getSink","sendEvent","event","type","protocolVersion","deviceId","sessionId","timestamp","sequence","nextSequence","payload","id","category","name","data","_send","sendMetric","value","unit","tags","Date","now","sendStallSummary","summary","MetricKeys","JS_STALL_COUNT","stallCount","JS_STALL_MAX","maxStallMs","JS_STALL_AVG","avgStallMs","expectedFrames","Math","round","reportIntervalMs","droppedFrames","totalStallMs","actualFrames","max","estimatedFps","JS_ESTIMATED_FPS","min","JS_FRAMES_DROPPED","sendSummary","random","toString","substring","schemaVersion","context","durationMs","maxBufferSize","push","reset","exports"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_MetricsEngine","require","PROTOCOL_VERSION","PerformanceTransport","sink","buffer","constructor","config","setSink","length","pending","splice","msg","send","getSink","sendEvent","event","type","protocolVersion","deviceId","sessionId","timestamp","sequence","nextSequence","payload","id","category","name","data","_send","sendMetric","value","unit","tags","SessionManager","backend","getExistingInstance","getBackendTransport","queuePerformanceMetric","metadata","Date","now","sendStallSummary","summary","MetricKeys","JS_STALL_COUNT","stallCount","JS_STALL_MAX","maxStallMs","JS_STALL_AVG","avgStallMs","expectedFrames","Math","round","reportIntervalMs","droppedFrames","totalStallMs","actualFrames","max","estimatedFps","JS_ESTIMATED_FPS","min","JS_FRAMES_DROPPED","sendSummary","random","toString","substring","schemaVersion","context","durationMs","maxBufferSize","push","reset","exports"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":";;;;;;AAUA,IAAAA,cAAA,GAAAC,OAAA;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AAQA,MAAMC,gBAAgB,GAAG,CAAC;AAEnB,MAAMC,oBAAoB,CAAC;EACtBC,IAAI,GAA6B,IAAI;EAErCC,MAAM,GAAc,EAAE;EAE9BC,WAAWA,CAACC,MAAyB,EAAE;IACnC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;;EAEA;EACAC,OAAOA,CAACJ,IAA8B,EAAQ;IAC1C,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB;IACA,IAAIA,IAAI,IAAI,IAAI,CAACC,MAAM,CAACI,MAAM,GAAG,CAAC,EAAE;MAChC,MAAMC,OAAO,GAAG,IAAI,CAACL,MAAM,CAACM,MAAM,CAAC,CAAC,CAAC;MACrC,KAAK,MAAMC,GAAG,IAAIF,OAAO,EAAE;QACvB,IAAI;UAAEN,IAAI,CAACS,IAAI,CAACD,GAAG,CAAC;QAAE,CAAC,CAAC,MAAM,CAAE;MACpC;IACJ;EACJ;;EAEA;EACAE,OAAOA,CAAA,EAA6B;IAChC,OAAO,IAAI,CAACV,IAAI;EACpB;;EAEA;EACAW,SAASA,CAACC,KAAmB,EAAQ;IACjC,MAAMJ,GAAG,GAAG;MACRK,IAAI,EAAE,OAAgB;MACtBC,eAAe,EAAEhB,gBAAgB;MACjCiB,QAAQ,EAAE,IAAI,CAACf,IAAI,EAAEe,QAAQ,IAAI,SAAS;MAC1CC,SAAS,EAAE,IAAI,CAAChB,IAAI,EAAEgB,SAAS,IAAI,SAAS;MAC5CC,SAAS,EAAEL,KAAK,CAACK,SAAS;MAC1BC,QAAQ,EAAE,IAAI,CAAClB,IAAI,EAAEmB,YAAY,CAAC,CAAC,IAAI,CAAC;MACxCC,OAAO,EAAE;QACLC,EAAE,EAAET,KAAK,CAACS,EAAE;QACZC,QAAQ,EAAE,aAAsB;QAChCC,IAAI,EAAE,QAAQX,KAAK,CAACC,IAAI,EAAE;QAC1BW,IAAI,EAAEZ;MACV;IACJ,CAAC;IAED,IAAI,CAACa,KAAK,CAACjB,GAAG,CAAC;EACnB;;EAEA;EACAkB,UAAUA,CAACH,IAAY,EAAEI,KAAa,EAAEC,IAAa,EAAEC,IAA6B,EAAQ;IACxF;IACA;IACA;IACA;IACA;IACA;IACA,IAAI;MACA;MACA,MAAM;QAAEC;MAAe,CAAC,GAAGjC,OAAO,CAAC,8BAA8B,CAAC;MAClE,MAAMkC,OAAO,GAAGD,cAAc,CAACE,mBAAmB,CAAC,CAAC,EAAEC,mBAAmB,CAAC,CAAC;MAC3EF,OAAO,EAAEG,sBAAsB,CAAC;QAC5BrB,IAAI,EAAEU,IAAI;QACVI,KAAK;QACLQ,QAAQ,EAAE;UAAE,IAAIP,IAAI,GAAG;YAAEA;UAAK,CAAC,GAAG,CAAC,CAAC,CAAC;UAAE,IAAIC,IAAI,IAAI,CAAC,CAAC;QAAE;MAC3D,CAAC,CAAC;IACN,CAAC,CAAC,MAAM;MACJ;IAAA;IAEJ,MAAMrB,GAAG,GAAG;MACRK,IAAI,EAAE,QAAiB;MACvBC,eAAe,EAAEhB,gBAAgB;MACjCiB,QAAQ,EAAE,IAAI,CAACf,IAAI,EAAEe,QAAQ,IAAI,SAAS;MAC1CC,SAAS,EAAE,IAAI,CAAChB,IAAI,EAAEgB,SAAS,IAAI,SAAS;MAC5CC,SAAS,EAAEmB,IAAI,CAACC,GAAG,CAAC,CAAC;MACrBnB,QAAQ,EAAE,IAAI,CAAClB,IAAI,EAAEmB,YAAY,CAAC,CAAC,IAAI,CAAC;MACxCC,OAAO,EAAE;QACLG,IAAI;QACJI,KAAK;QACL,IAAIC,IAAI,GAAG;UAAEA;QAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAIC,IAAI,GAAG;UAAEA;QAAK,CAAC,GAAG,CAAC,CAAC;MAC5B;IACJ,CAAC;IAED,IAAI,CAACJ,KAAK,CAACjB,GAAG,CAAC;EACnB;;EAEA;EACA8B,gBAAgBA,CAACC,OAA+C,EAAQ;IACpE,IAAI,CAACb,UAAU,CAACc,yBAAU,CAACC,cAAc,EAAEF,OAAO,CAACG,UAAU,EAAE,OAAO,CAAC;IACvE,IAAI,CAAChB,UAAU,CAACc,yBAAU,CAACG,YAAY,EAAEJ,OAAO,CAACK,UAAU,EAAE,IAAI,CAAC;IAClE,IAAI,CAAClB,UAAU,CAACc,yBAAU,CAACK,YAAY,EAAEN,OAAO,CAACO,UAAU,EAAE,IAAI,CAAC;;IAElE;IACA;IACA;IACA,MAAMC,cAAc,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC9C,MAAM,CAAC+C,gBAAgB,GAAG,KAAK,CAAC;IACvE,MAAMC,aAAa,GAAGH,IAAI,CAACC,KAAK,CAACV,OAAO,CAACa,YAAY,GAAG,KAAK,CAAC;IAC9D,MAAMC,YAAY,GAAGL,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEP,cAAc,GAAGI,aAAa,CAAC;IAChE,MAAMI,YAAY,GAAGR,cAAc,GAAG,CAAC,GACjCC,IAAI,CAACC,KAAK,CAAEI,YAAY,GAAGN,cAAc,GAAI,EAAE,CAAC,GAChD,EAAE;IACR,IAAI,CAACrB,UAAU,CAACc,yBAAU,CAACgB,gBAAgB,EAAER,IAAI,CAACS,GAAG,CAAC,EAAE,EAAET,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5F,IAAI,CAAC7B,UAAU,CAACc,yBAAU,CAACkB,iBAAiB,EAAEP,aAAa,EAAE,OAAO,CAAC;EACzE;;EAEA;EACAQ,WAAWA,CAACpB,OAA2B,EAAQ;IAC3C,IAAI,CAAC5B,SAAS,CAAC;MACXU,EAAE,EAAE,WAAWe,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIW,IAAI,CAACY,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;MACzEjD,IAAI,EAAE,cAAc;MAAE;MACtBI,SAAS,EAAEsB,OAAO,CAACtB,SAAS;MAC5B8C,aAAa,EAAExB,OAAO,CAACwB,aAAa;MACpCC,OAAO,EAAE;QAAEhD,SAAS,EAAEuB,OAAO,CAACvB;MAAU,CAAC;MACzCO,IAAI,EAAE,sBAAsB;MAC5B0C,UAAU,EAAE;IAChB,CAAQ,CAAC;EACb;EAEQxC,KAAKA,CAACjB,GAAY,EAAQ;IAC9B,IAAI,IAAI,CAACR,IAAI,EAAE;MACX,IAAI;QACA,IAAI,CAACA,IAAI,CAACS,IAAI,CAACD,GAAG,CAAC;MACvB,CAAC,CAAC,MAAM;QACJ;QACA,IAAI,IAAI,CAACP,MAAM,CAACI,MAAM,GAAG,IAAI,CAACF,MAAM,CAAC+D,aAAa,EAAE;UAChD,IAAI,CAACjE,MAAM,CAACkE,IAAI,CAAC3D,GAAG,CAAC;QACzB;MACJ;IACJ,CAAC,MAAM;MACH;MACA,IAAI,IAAI,CAACP,MAAM,CAACI,MAAM,GAAG,IAAI,CAACF,MAAM,CAAC+D,aAAa,EAAE;QAChD,IAAI,CAACjE,MAAM,CAACkE,IAAI,CAAC3D,GAAG,CAAC;MACzB;IACJ;EACJ;;EAEA;EACA4D,KAAKA,CAAA,EAAS;IACV,IAAI,CAACnE,MAAM,GAAG,EAAE;EACpB;AACJ;AAACoE,OAAA,CAAAtE,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -193,6 +193,7 @@ class BackendSessionAdapter {
193
193
  // Falls back to metadata-only if bridge unavailable (old native binary).
194
194
  _bridgeAdapter.bridgeAdapter.getDeviceInfo().then(nativeInfo => {
195
195
  const m = session.metadata;
196
+ this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
196
197
  const payload = {
197
198
  sessionId: session.sessionId,
198
199
  deviceId: session.deviceId,
@@ -304,6 +305,7 @@ class BackendSessionAdapter {
304
305
  try {
305
306
  const nativeInfo = await _bridgeAdapter.bridgeAdapter.getDeviceInfo();
306
307
  const m = session.metadata;
308
+ this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
307
309
  const payload = {
308
310
  sessionId: session.sessionId,
309
311
  deviceId: session.deviceId,
@@ -536,11 +538,31 @@ class BackendSessionAdapter {
536
538
  this._flushNetwork().catch(() => {});
537
539
  }
538
540
  }
541
+
542
+ // D8/D9/D12: this signature was {type, message, stack, screenName} — four
543
+ // fields — while the backend row and every dashboard surface were already
544
+ // built for the rest. The consequences of the four-field bottleneck:
545
+ // regression detection permanently false (no appVersion on any mobile
546
+ // error), Issue.primaryPlatform NULL for every RN crash (no platform), and
547
+ // native crash signal/thread/exception-type discarded one call before the
548
+ // wire (no metadata). The receiver needed nothing; only this signature did.
549
+ /** App version resolved at session start; errors stamp it so regression
550
+ * detection has a version to work with (D8). Null until a session starts. */
551
+ _cachedAppVersion = null;
552
+ _appVersion() {
553
+ return this._cachedAppVersion ?? undefined;
554
+ }
539
555
  queueError(data) {
540
556
  if (this.destroyed || !this.config.clientKey) return;
541
557
  this.pendingErrors.push({
542
558
  ...data,
543
- clientId: this._clientId(),
559
+ // The session already knows the app version — never make a crash
560
+ // reporter's callers supply what the transport can fill itself.
561
+ appVersion: data.appVersion ?? this._appVersion(),
562
+ // A recovered crash brings its OWN clientId — the stable id written when the crash was
563
+ // first persisted. Generating a fresh one here would mint a new identity on every retry
564
+ // and defeat the unique constraint the backend dedupes with.
565
+ clientId: data.clientId ?? this._clientId(),
544
566
  timestamp: new Date().toISOString()
545
567
  });
546
568
  if (this.pendingErrors.length >= 10) {
@@ -548,7 +570,12 @@ class BackendSessionAdapter {
548
570
  }
549
571
  }
550
572
 
551
- /** Public: force-flush queued errors immediately (handled-error delivery). */
573
+ /**
574
+ * Public: force-flush queued errors immediately (handled-error delivery).
575
+ *
576
+ * @returns whether the batch was DURABLY accepted. Crash recovery deletes its on-disk record on
577
+ * this answer, so it must reflect the backend and not merely that the call returned.
578
+ */
552
579
  flushErrors() {
553
580
  return this._flushErrors();
554
581
  }
@@ -612,13 +639,23 @@ class BackendSessionAdapter {
612
639
  * Returns false on any miss (flag off, no session, old binary, native error) so
613
640
  * the caller falls back to the JS HTTP path with the batch intact.
614
641
  */
615
- async _enqueueNative(lane, records) {
616
- if (!this.nativeOutboxEnabled || !this.currentSessionId) return false;
642
+ async _enqueueNative(lane, records,
643
+ /**
644
+ * Session to enqueue UNDER. Defaults to the current one, which is right for every live lane.
645
+ *
646
+ * A recovered native crash must override it. Without this parameter the outbox stamped
647
+ * `currentSessionId` on everything, so with the outbox enabled a recovered crash was filed
648
+ * against the session created after the restart — the exact defect the routing above exists
649
+ * to prevent, reappearing through a path that routing never touched.
650
+ */
651
+ targetSessionId) {
652
+ const sessionId = targetSessionId || this.currentSessionId;
653
+ if (!this.nativeOutboxEnabled || !sessionId) return false;
617
654
  const native = (0, _nativeModule.getReplaySdkNative)();
618
655
  if (!native?.enqueueOutboxRecords) return false;
619
656
  if (!(await this._ensureNativeOutbox(native))) return false;
620
657
  try {
621
- return await native.enqueueOutboxRecords(lane, this.currentSessionId, records);
658
+ return await native.enqueueOutboxRecords(lane, sessionId, records);
622
659
  } catch {
623
660
  return false;
624
661
  }
@@ -736,6 +773,17 @@ class BackendSessionAdapter {
736
773
  if (screen) out.screenName = screen;
737
774
  const label = e.subtype ?? e.type;
738
775
  if (label && label !== e.type) out.label = label;
776
+ /**
777
+ * THIS MAPPER ENUMERATES. Every field the wire carries has to be named here, so a field
778
+ * added to JourneyEvent and not added here is dropped silently — no error, no warning, and
779
+ * nothing downstream can tell the difference between "the SDK did not send it" and "the
780
+ * user never produced it". `frameId` was exactly that case: the column, the DTO field and
781
+ * the ingest write all existed already, and the value died on this line.
782
+ *
783
+ * Omitted when absent rather than sent as null, matching how screenName and label behave
784
+ * above — the v2 lean shape drops empty fields and the server reconstructs them.
785
+ */
786
+ if (e.frameId) out.frameId = e.frameId;
739
787
  const data = this._pruneEmpty(e.payload);
740
788
  if (data && Object.keys(data).length > 0) out.data = data;
741
789
  return out;
@@ -1152,20 +1200,89 @@ class BackendSessionAdapter {
1152
1200
  if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingNetworkRequests.unshift(...batch);
1153
1201
  }
1154
1202
  }
1203
+
1204
+ /**
1205
+ * D11: deliver a bug report to the SAME ingest the web SDK uses
1206
+ * (`POST /ingestion/sessions/:id/bug-reports`). Fire-and-forget with one
1207
+ * retry deferral: RN previously had NO path to this endpoint at all —
1208
+ * `reportBug()` emitted an analytics event no handler consumed, so the
1209
+ * bug-reports page was empty forever for every RN app.
1210
+ */
1211
+ submitBugReport(report) {
1212
+ if (this.destroyed || !this.config.clientKey || !this.currentSessionId) return;
1213
+ void this._post(`/ingestion/sessions/${this.currentSessionId}/bug-reports`, {
1214
+ ...report,
1215
+ timestamp: Date.now()
1216
+ }).catch(() => {
1217
+ /* best-effort; the $bug_report analytics breadcrumb still records intent */
1218
+ });
1219
+ }
1220
+
1221
+ /**
1222
+ * @returns TRUE only when every group in this batch was DURABLY accepted — an HTTP 2xx, or a
1223
+ * handoff to the native outbox, which is itself a persistent retrying queue.
1224
+ *
1225
+ * The return value is not cosmetic: `drainNativeCrash` deletes the on-disk crash record on the
1226
+ * strength of it. This method used to return `void` and swallow its own errors in the catch
1227
+ * below, so "the promise resolved" meant nothing at all — a failed POST looked exactly like a
1228
+ * successful one, and the caller would have deleted the only durable copy of a crash that never
1229
+ * arrived. Anything less than a real acknowledgement here reintroduces the loss this whole
1230
+ * change exists to prevent.
1231
+ */
1155
1232
  async _flushErrors() {
1156
- if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return;
1233
+ if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return false;
1157
1234
  const batch = this.pendingErrors.splice(0, 20);
1158
1235
  try {
1159
- if (await this._enqueueNative('errors', batch)) return;
1160
1236
  if (!this._sessionRowReady()) {
1161
1237
  this.pendingErrors.unshift(...batch);
1162
- return;
1238
+ return false;
1163
1239
  }
1164
- await this._post(_endpoints.ENDPOINTS.INGESTION_ERRORS(this.currentSessionId), {
1165
- errors: batch
1166
- });
1240
+ /**
1241
+ * ROUTED BY THE ERROR'S OWN SESSION, not by whichever session is current.
1242
+ *
1243
+ * A recovered native crash carries the id of the session it actually happened in — that
1244
+ * process is gone, so the current session is the wrong owner. Sending it under
1245
+ * `currentSessionId` is what marked a healthy session crashed and left the crashed one
1246
+ * looking clean.
1247
+ *
1248
+ * The URL still carries a session because that is the established ingest shape; the
1249
+ * error's own `sessionId` simply chooses WHICH one. Errors are grouped by their target
1250
+ * so a batch mixing a recovered crash with live errors cannot drag the live ones onto
1251
+ * the dead session.
1252
+ */
1253
+ const byTarget = new Map();
1254
+ for (const e of batch) {
1255
+ const target = e.sessionId || this.currentSessionId;
1256
+ byTarget.set(target, [...(byTarget.get(target) ?? []), e]);
1257
+ }
1258
+ let allAccepted = true;
1259
+ for (const [target, errors] of byTarget) {
1260
+ // `sessionId` is a routing instruction, not payload — strip it so the stored row is
1261
+ // byte-identical to one sent the ordinary way.
1262
+ const cleaned = errors.map(({
1263
+ sessionId: _s,
1264
+ ...rest
1265
+ }) => rest);
1266
+
1267
+ // The outbox is enqueued PER TARGET, so a recovered crash keeps its own session.
1268
+ if (await this._enqueueNative('errors', cleaned, target)) continue;
1269
+ try {
1270
+ await this._post(_endpoints.ENDPOINTS.INGESTION_ERRORS(target), {
1271
+ errors: cleaned
1272
+ });
1273
+ } catch (err) {
1274
+ allAccepted = false;
1275
+ // A permanent error (4xx) will never succeed, so re-queuing it would spin
1276
+ // forever; anything else is worth another attempt.
1277
+ if (!BackendSessionAdapter._isPermanentHttpError(err)) {
1278
+ this.pendingErrors.unshift(...errors);
1279
+ }
1280
+ }
1281
+ }
1282
+ return allAccepted;
1167
1283
  } catch (err) {
1168
1284
  if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingErrors.unshift(...batch);
1285
+ return false;
1169
1286
  }
1170
1287
  }
1171
1288
  async _flushPerformance() {