@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
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","mergePerformanceConfig","JsStallCollector","AppLaunchCollector","ScreenLoadCollector","AutoScreenLoadCollector","FrameMetricsCollector","UiHangCollector","NetworkPerfCollector","CustomTraceCollector","PerformanceTransport","MetricKeys","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","transport","platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","launchType","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CUSTOM_TRACE","initialize","context","enabled","trackEvent","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","require","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","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","mergePerformanceConfig","JsStallCollector","AppLaunchCollector","ScreenLoadCollector","AutoScreenLoadCollector","FrameMetricsCollector","UiHangCollector","NetworkPerfCollector","CustomTraceCollector","PerformanceTransport","MetricKeys","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","transport","platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","launchType","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CUSTOM_TRACE","initialize","context","enabled","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","require","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","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
@@ -11,12 +11,16 @@
11
11
  * - Emits FrameMetricsEvent for transport
12
12
  */
13
13
 
14
- import { NativeEventEmitter } from 'react-native';
14
+ import { AppState, NativeEventEmitter } from 'react-native';
15
15
  import { getNativePerformanceModule } from '../getNativePerformanceModule';
16
16
  import { PERF_SCHEMA_VERSION } from '../models';
17
17
  export class FrameMetricsCollector {
18
18
  eventSubscription = null;
19
19
  running = false;
20
+ /** AppState subscription — see `_installAppStateGate`. */
21
+ appStateSubscription = null;
22
+ /** True while the native sampler is actually running (i.e. armed AND foregrounded). */
23
+ sampling = false;
20
24
  constructor(config, onFrameMetrics, contextProvider) {
21
25
  this.config = config;
22
26
  this.onFrameMetrics = onFrameMetrics;
@@ -36,21 +40,62 @@ export class FrameMetricsCollector {
36
40
  // No-throw
37
41
  }
38
42
  });
43
+ this._startNativeSampler();
44
+ this._installAppStateGate();
45
+ } catch {
46
+ // Native module not available — graceful degradation
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Pause sampling while the app is backgrounded.
52
+ *
53
+ * THE BUG THIS FIXES. `startFrameMetrics` hands off to a native loop that runs until something
54
+ * calls `stopFrameMetrics`. Nothing did. The collector had no AppState awareness at all — unlike
55
+ * `AutoScreenLoadCollector`, which has subscribed to it since it was written — so once a session
56
+ * was sampled in, it kept sampling for as long as the PROCESS lived, not as long as the app was
57
+ * being used.
58
+ *
59
+ * Measured in production: sessions with `durationMs` of 86,400,000 (exactly 24h) and 70,797,000
60
+ * (~19.7h) carrying 39,766 and 3,709 frame samples against 0 and 6 real gestures respectively.
61
+ * `frame_metrics` was 75% of ALL mobile events for this reason.
62
+ *
63
+ * The `tier2SampleRate` knob does not help here: it gates WHICH sessions collect, not how long
64
+ * they collect for. A sampled-in session that gets backgrounded still samples for hours, which is
65
+ * why lowering it would have hidden the symptom while leaving the cause.
66
+ *
67
+ * It is also a DATA-QUALITY fix, not only a volume one. Frame timings from a backgrounded app
68
+ * describe a screen nobody is looking at, and they were feeding the low-FPS KPI and jank
69
+ * detection — so the noise was not merely stored, it was being reported as UI performance.
70
+ *
71
+ * NOTE: on iOS the OS already stops delivering CADisplayLink callbacks on background, so the
72
+ * practical effect is largest on Android. Gating in JS keeps the two platforms behaving the same
73
+ * either way, rather than relying on an OS side effect that is not part of any contract.
74
+ */
75
+ _installAppStateGate() {
76
+ if (this.appStateSubscription) return;
77
+ this.appStateSubscription = AppState.addEventListener('change', next => {
78
+ if (!this.running) return; // stop() already tore us down
79
+ if (next === 'active') this._startNativeSampler();else this._stopNativeSampler(); // 'background' and 'inactive' (iOS call/app-switcher)
80
+ });
81
+ }
39
82
 
40
- // Tell native module to start collecting frame metrics
41
- if (typeof perfModule.startFrameMetrics === 'function') {
83
+ /** Idempotent AppState can fire 'active' more than once without an intervening background. */
84
+ _startNativeSampler() {
85
+ if (this.sampling) return;
86
+ try {
87
+ const perfModule = getNativePerformanceModule();
88
+ if (typeof perfModule?.startFrameMetrics === 'function') {
42
89
  perfModule.startFrameMetrics(this.config.reportIntervalMs);
90
+ this.sampling = true;
43
91
  }
44
92
  } catch {
45
- // Native module not available graceful degradation
93
+ // No-throw: a perf collector must never break the host app.
46
94
  }
47
95
  }
48
- stop() {
49
- this.running = false;
50
- if (this.eventSubscription) {
51
- this.eventSubscription.remove();
52
- this.eventSubscription = null;
53
- }
96
+ _stopNativeSampler() {
97
+ if (!this.sampling) return;
98
+ this.sampling = false;
54
99
  try {
55
100
  const perfModule = getNativePerformanceModule();
56
101
  if (typeof perfModule?.stopFrameMetrics === 'function') {
@@ -60,6 +105,21 @@ export class FrameMetricsCollector {
60
105
  // No-throw
61
106
  }
62
107
  }
108
+ stop() {
109
+ this.running = false;
110
+ if (this.eventSubscription) {
111
+ this.eventSubscription.remove();
112
+ this.eventSubscription = null;
113
+ }
114
+ // Remove the AppState listener BEFORE stopping the sampler: a 'change' arriving mid-teardown
115
+ // would otherwise restart the native loop on a collector that is being shut down, which is the
116
+ // same leak this gate exists to close.
117
+ if (this.appStateSubscription) {
118
+ this.appStateSubscription.remove();
119
+ this.appStateSubscription = null;
120
+ }
121
+ this._stopNativeSampler();
122
+ }
63
123
  _handleNativeFrameMetrics(data) {
64
124
  if (!data || typeof data.totalFrames !== 'number') return;
65
125
  const totalFrames = data.totalFrames || 0;
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","getNativePerformanceModule","PERF_SCHEMA_VERSION","FrameMetricsCollector","eventSubscription","running","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","emitter","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","context","min"],"sourceRoot":"../../../../../src","sources":["features/performance/collectors/FrameMetricsCollector.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AppState","NativeEventEmitter","getNativePerformanceModule","PERF_SCHEMA_VERSION","FrameMetricsCollector","eventSubscription","running","appStateSubscription","sampling","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","emitter","addListener","data","_handleNativeFrameMetrics","_startNativeSampler","_installAppStateGate","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","context","min"],"sourceRoot":"../../../../../src","sources":["features/performance/collectors/FrameMetricsCollector.ts"],"mappings":"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","ignoreList":[]}
@@ -58,6 +58,31 @@ export class PerformanceTransport {
58
58
 
59
59
  /** Send a metric value (for backward compat with existing metric handler) */
60
60
  sendMetric(name, value, unit, tags) {
61
+ // D4: the desktop sink is only wired under enableDebug(), so in a
62
+ // production build everything through here — JS stall stats, launch
63
+ // timings, and the PUBLIC ScaleBun.sendMetric() API — was buffered into
64
+ // a bounded array and discarded. Mirror every metric onto the backend
65
+ // ingestion lane (the one that provably lands rows); the desktop sink
66
+ // remains the dev-tooling fan-out below.
67
+ try {
68
+ // Lazy import avoids a static cycle: session → performance → session.
69
+ const {
70
+ SessionManager
71
+ } = require('../../session/SessionManager');
72
+ const backend = SessionManager.getExistingInstance()?.getBackendTransport();
73
+ backend?.queuePerformanceMetric({
74
+ type: name,
75
+ value,
76
+ metadata: {
77
+ ...(unit ? {
78
+ unit
79
+ } : {}),
80
+ ...(tags ?? {})
81
+ }
82
+ });
83
+ } catch {
84
+ // Backend lane unavailable (no session yet) — dev sink may still get it.
85
+ }
61
86
  const msg = {
62
87
  type: 'metric',
63
88
  protocolVersion: PROTOCOL_VERSION,
@@ -1 +1 @@
1
- {"version":3,"names":["MetricKeys","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","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"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MetricKeys","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","require","backend","getExistingInstance","getBackendTransport","queuePerformanceMetric","metadata","Date","now","sendStallSummary","summary","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"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":"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","ignoreList":[]}
@@ -187,6 +187,7 @@ export class BackendSessionAdapter {
187
187
  // Falls back to metadata-only if bridge unavailable (old native binary).
188
188
  bridgeAdapter.getDeviceInfo().then(nativeInfo => {
189
189
  const m = session.metadata;
190
+ this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
190
191
  const payload = {
191
192
  sessionId: session.sessionId,
192
193
  deviceId: session.deviceId,
@@ -298,6 +299,7 @@ export class BackendSessionAdapter {
298
299
  try {
299
300
  const nativeInfo = await bridgeAdapter.getDeviceInfo();
300
301
  const m = session.metadata;
302
+ this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
301
303
  const payload = {
302
304
  sessionId: session.sessionId,
303
305
  deviceId: session.deviceId,
@@ -530,11 +532,31 @@ export class BackendSessionAdapter {
530
532
  this._flushNetwork().catch(() => {});
531
533
  }
532
534
  }
535
+
536
+ // D8/D9/D12: this signature was {type, message, stack, screenName} — four
537
+ // fields — while the backend row and every dashboard surface were already
538
+ // built for the rest. The consequences of the four-field bottleneck:
539
+ // regression detection permanently false (no appVersion on any mobile
540
+ // error), Issue.primaryPlatform NULL for every RN crash (no platform), and
541
+ // native crash signal/thread/exception-type discarded one call before the
542
+ // wire (no metadata). The receiver needed nothing; only this signature did.
543
+ /** App version resolved at session start; errors stamp it so regression
544
+ * detection has a version to work with (D8). Null until a session starts. */
545
+ _cachedAppVersion = null;
546
+ _appVersion() {
547
+ return this._cachedAppVersion ?? undefined;
548
+ }
533
549
  queueError(data) {
534
550
  if (this.destroyed || !this.config.clientKey) return;
535
551
  this.pendingErrors.push({
536
552
  ...data,
537
- clientId: this._clientId(),
553
+ // The session already knows the app version — never make a crash
554
+ // reporter's callers supply what the transport can fill itself.
555
+ appVersion: data.appVersion ?? this._appVersion(),
556
+ // A recovered crash brings its OWN clientId — the stable id written when the crash was
557
+ // first persisted. Generating a fresh one here would mint a new identity on every retry
558
+ // and defeat the unique constraint the backend dedupes with.
559
+ clientId: data.clientId ?? this._clientId(),
538
560
  timestamp: new Date().toISOString()
539
561
  });
540
562
  if (this.pendingErrors.length >= 10) {
@@ -542,7 +564,12 @@ export class BackendSessionAdapter {
542
564
  }
543
565
  }
544
566
 
545
- /** Public: force-flush queued errors immediately (handled-error delivery). */
567
+ /**
568
+ * Public: force-flush queued errors immediately (handled-error delivery).
569
+ *
570
+ * @returns whether the batch was DURABLY accepted. Crash recovery deletes its on-disk record on
571
+ * this answer, so it must reflect the backend and not merely that the call returned.
572
+ */
546
573
  flushErrors() {
547
574
  return this._flushErrors();
548
575
  }
@@ -606,13 +633,23 @@ export class BackendSessionAdapter {
606
633
  * Returns false on any miss (flag off, no session, old binary, native error) so
607
634
  * the caller falls back to the JS HTTP path with the batch intact.
608
635
  */
609
- async _enqueueNative(lane, records) {
610
- if (!this.nativeOutboxEnabled || !this.currentSessionId) return false;
636
+ async _enqueueNative(lane, records,
637
+ /**
638
+ * Session to enqueue UNDER. Defaults to the current one, which is right for every live lane.
639
+ *
640
+ * A recovered native crash must override it. Without this parameter the outbox stamped
641
+ * `currentSessionId` on everything, so with the outbox enabled a recovered crash was filed
642
+ * against the session created after the restart — the exact defect the routing above exists
643
+ * to prevent, reappearing through a path that routing never touched.
644
+ */
645
+ targetSessionId) {
646
+ const sessionId = targetSessionId || this.currentSessionId;
647
+ if (!this.nativeOutboxEnabled || !sessionId) return false;
611
648
  const native = getReplaySdkNative();
612
649
  if (!native?.enqueueOutboxRecords) return false;
613
650
  if (!(await this._ensureNativeOutbox(native))) return false;
614
651
  try {
615
- return await native.enqueueOutboxRecords(lane, this.currentSessionId, records);
652
+ return await native.enqueueOutboxRecords(lane, sessionId, records);
616
653
  } catch {
617
654
  return false;
618
655
  }
@@ -730,6 +767,17 @@ export class BackendSessionAdapter {
730
767
  if (screen) out.screenName = screen;
731
768
  const label = e.subtype ?? e.type;
732
769
  if (label && label !== e.type) out.label = label;
770
+ /**
771
+ * THIS MAPPER ENUMERATES. Every field the wire carries has to be named here, so a field
772
+ * added to JourneyEvent and not added here is dropped silently — no error, no warning, and
773
+ * nothing downstream can tell the difference between "the SDK did not send it" and "the
774
+ * user never produced it". `frameId` was exactly that case: the column, the DTO field and
775
+ * the ingest write all existed already, and the value died on this line.
776
+ *
777
+ * Omitted when absent rather than sent as null, matching how screenName and label behave
778
+ * above — the v2 lean shape drops empty fields and the server reconstructs them.
779
+ */
780
+ if (e.frameId) out.frameId = e.frameId;
733
781
  const data = this._pruneEmpty(e.payload);
734
782
  if (data && Object.keys(data).length > 0) out.data = data;
735
783
  return out;
@@ -1146,20 +1194,89 @@ export class BackendSessionAdapter {
1146
1194
  if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingNetworkRequests.unshift(...batch);
1147
1195
  }
1148
1196
  }
1197
+
1198
+ /**
1199
+ * D11: deliver a bug report to the SAME ingest the web SDK uses
1200
+ * (`POST /ingestion/sessions/:id/bug-reports`). Fire-and-forget with one
1201
+ * retry deferral: RN previously had NO path to this endpoint at all —
1202
+ * `reportBug()` emitted an analytics event no handler consumed, so the
1203
+ * bug-reports page was empty forever for every RN app.
1204
+ */
1205
+ submitBugReport(report) {
1206
+ if (this.destroyed || !this.config.clientKey || !this.currentSessionId) return;
1207
+ void this._post(`/ingestion/sessions/${this.currentSessionId}/bug-reports`, {
1208
+ ...report,
1209
+ timestamp: Date.now()
1210
+ }).catch(() => {
1211
+ /* best-effort; the $bug_report analytics breadcrumb still records intent */
1212
+ });
1213
+ }
1214
+
1215
+ /**
1216
+ * @returns TRUE only when every group in this batch was DURABLY accepted — an HTTP 2xx, or a
1217
+ * handoff to the native outbox, which is itself a persistent retrying queue.
1218
+ *
1219
+ * The return value is not cosmetic: `drainNativeCrash` deletes the on-disk crash record on the
1220
+ * strength of it. This method used to return `void` and swallow its own errors in the catch
1221
+ * below, so "the promise resolved" meant nothing at all — a failed POST looked exactly like a
1222
+ * successful one, and the caller would have deleted the only durable copy of a crash that never
1223
+ * arrived. Anything less than a real acknowledgement here reintroduces the loss this whole
1224
+ * change exists to prevent.
1225
+ */
1149
1226
  async _flushErrors() {
1150
- if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return;
1227
+ if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return false;
1151
1228
  const batch = this.pendingErrors.splice(0, 20);
1152
1229
  try {
1153
- if (await this._enqueueNative('errors', batch)) return;
1154
1230
  if (!this._sessionRowReady()) {
1155
1231
  this.pendingErrors.unshift(...batch);
1156
- return;
1232
+ return false;
1157
1233
  }
1158
- await this._post(ENDPOINTS.INGESTION_ERRORS(this.currentSessionId), {
1159
- errors: batch
1160
- });
1234
+ /**
1235
+ * ROUTED BY THE ERROR'S OWN SESSION, not by whichever session is current.
1236
+ *
1237
+ * A recovered native crash carries the id of the session it actually happened in — that
1238
+ * process is gone, so the current session is the wrong owner. Sending it under
1239
+ * `currentSessionId` is what marked a healthy session crashed and left the crashed one
1240
+ * looking clean.
1241
+ *
1242
+ * The URL still carries a session because that is the established ingest shape; the
1243
+ * error's own `sessionId` simply chooses WHICH one. Errors are grouped by their target
1244
+ * so a batch mixing a recovered crash with live errors cannot drag the live ones onto
1245
+ * the dead session.
1246
+ */
1247
+ const byTarget = new Map();
1248
+ for (const e of batch) {
1249
+ const target = e.sessionId || this.currentSessionId;
1250
+ byTarget.set(target, [...(byTarget.get(target) ?? []), e]);
1251
+ }
1252
+ let allAccepted = true;
1253
+ for (const [target, errors] of byTarget) {
1254
+ // `sessionId` is a routing instruction, not payload — strip it so the stored row is
1255
+ // byte-identical to one sent the ordinary way.
1256
+ const cleaned = errors.map(({
1257
+ sessionId: _s,
1258
+ ...rest
1259
+ }) => rest);
1260
+
1261
+ // The outbox is enqueued PER TARGET, so a recovered crash keeps its own session.
1262
+ if (await this._enqueueNative('errors', cleaned, target)) continue;
1263
+ try {
1264
+ await this._post(ENDPOINTS.INGESTION_ERRORS(target), {
1265
+ errors: cleaned
1266
+ });
1267
+ } catch (err) {
1268
+ allAccepted = false;
1269
+ // A permanent error (4xx) will never succeed, so re-queuing it would spin
1270
+ // forever; anything else is worth another attempt.
1271
+ if (!BackendSessionAdapter._isPermanentHttpError(err)) {
1272
+ this.pendingErrors.unshift(...errors);
1273
+ }
1274
+ }
1275
+ }
1276
+ return allAccepted;
1161
1277
  } catch (err) {
1162
1278
  if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingErrors.unshift(...batch);
1279
+ return false;
1163
1280
  }
1164
1281
  }
1165
1282
  async _flushPerformance() {