@scalebun/react-native 1.0.4 → 1.2.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 (400) hide show
  1. package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +70 -4
  2. package/dist/scalebun.full.js +33132 -0
  3. package/dist/scalebun.full.js.map +1 -0
  4. package/dist/scalebun.slim.js +29930 -0
  5. package/dist/scalebun.slim.js.map +1 -0
  6. package/lib/commonjs/bootstrap/FeatureRegistry.js +4 -4
  7. package/lib/commonjs/bootstrap/FeatureRegistry.js.map +1 -1
  8. package/lib/commonjs/bootstrap/SDKBootstrapper.js +20 -17
  9. package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +1 -1
  10. package/lib/commonjs/compat/codepush.js +78 -15
  11. package/lib/commonjs/compat/codepush.js.map +1 -1
  12. package/lib/commonjs/core/config/schema.js +412 -219
  13. package/lib/commonjs/core/config/schema.js.map +1 -1
  14. package/lib/commonjs/core/constants/endpoints.js +9 -6
  15. package/lib/commonjs/core/constants/endpoints.js.map +1 -1
  16. package/lib/commonjs/core/constants/protocol.js +31 -0
  17. package/lib/commonjs/core/constants/protocol.js.map +1 -0
  18. package/lib/commonjs/core/constants/timings.js +4 -1
  19. package/lib/commonjs/core/constants/timings.js.map +1 -1
  20. package/lib/commonjs/core/lifecycle/appLifecycle.js +1 -1
  21. package/lib/commonjs/core/lifecycle/appLifecycle.js.map +1 -1
  22. package/lib/commonjs/debug/bootstrap.js +30 -10
  23. package/lib/commonjs/debug/bootstrap.js.map +1 -1
  24. package/lib/commonjs/debug/exportBridge.js +5 -3
  25. package/lib/commonjs/debug/exportBridge.js.map +1 -1
  26. package/lib/commonjs/debug/hostResolver.js +2 -2
  27. package/lib/commonjs/debug/hostResolver.js.map +1 -1
  28. package/lib/commonjs/debug/perfWiring.js +4 -4
  29. package/lib/commonjs/debug/perfWiring.js.map +1 -1
  30. package/lib/commonjs/debug/replayWiring.js +5 -5
  31. package/lib/commonjs/debug/replayWiring.js.map +1 -1
  32. package/lib/commonjs/debug/screenTracking.js +2 -2
  33. package/lib/commonjs/debug/screenTracking.js.map +1 -1
  34. package/lib/commonjs/debug/sessionWiring.js +2 -2
  35. package/lib/commonjs/debug/sessionWiring.js.map +1 -1
  36. package/lib/commonjs/features/crash/NativeCrashFeature.js +1 -1
  37. package/lib/commonjs/features/crash/NativeCrashFeature.js.map +1 -1
  38. package/lib/commonjs/features/crash/globalHandler.js +3 -3
  39. package/lib/commonjs/features/crash/globalHandler.js.map +1 -1
  40. package/lib/commonjs/features/crash/nativeCrashBridge.js +7 -7
  41. package/lib/commonjs/features/crash/nativeCrashBridge.js.map +1 -1
  42. package/lib/commonjs/features/crash/rejectionHandler.js +2 -2
  43. package/lib/commonjs/features/crash/rejectionHandler.js.map +1 -1
  44. package/lib/commonjs/features/engage/EngageArchetypeRenderers.js +0 -9
  45. package/lib/commonjs/features/engage/EngageArchetypeRenderers.js.map +1 -1
  46. package/lib/commonjs/features/engage/EngageInAppView.js +1 -1
  47. package/lib/commonjs/features/engage/EngageInAppView.js.map +1 -1
  48. package/lib/commonjs/features/engage/EngagePromptProvider.js +17 -17
  49. package/lib/commonjs/features/engage/EngagePromptProvider.js.map +1 -1
  50. package/lib/commonjs/features/engage/EngageTransport.js +5 -5
  51. package/lib/commonjs/features/engage/EngageTransport.js.map +1 -1
  52. package/lib/commonjs/features/engage/engagePushTokenBridge.js +4 -4
  53. package/lib/commonjs/features/engage/engagePushTokenBridge.js.map +1 -1
  54. package/lib/commonjs/features/engage/engageShakeBridge.js +2 -2
  55. package/lib/commonjs/features/engage/engageShakeBridge.js.map +1 -1
  56. package/lib/commonjs/features/engage/engageSignals.js +1 -1
  57. package/lib/commonjs/features/engage/engageSignals.js.map +1 -1
  58. package/lib/commonjs/features/engage/engageStoreReviewBridge.js +2 -2
  59. package/lib/commonjs/features/engage/engageStoreReviewBridge.js.map +1 -1
  60. package/lib/commonjs/features/engage/engageTestSeenStore.js +1 -1
  61. package/lib/commonjs/features/engage/engageTestSeenStore.js.map +1 -1
  62. package/lib/commonjs/features/engage/engageThrottle.js +4 -4
  63. package/lib/commonjs/features/engage/engageThrottle.js.map +1 -1
  64. package/lib/commonjs/features/engage/engageTriggerEngine.js +4 -4
  65. package/lib/commonjs/features/engage/engageTriggerEngine.js.map +1 -1
  66. package/lib/commonjs/features/engage/engageWindowInsets.js +1 -1
  67. package/lib/commonjs/features/engage/engageWindowInsets.js.map +1 -1
  68. package/lib/commonjs/features/install-referrer/installReferrer.js +3 -3
  69. package/lib/commonjs/features/install-referrer/installReferrer.js.map +1 -1
  70. package/lib/commonjs/features/journey/calibrationContext.js +0 -9
  71. package/lib/commonjs/features/journey/calibrationContext.js.map +1 -1
  72. package/lib/commonjs/features/journey/journeyManager.js +4 -1
  73. package/lib/commonjs/features/journey/journeyManager.js.map +1 -1
  74. package/lib/commonjs/features/navigation/AutoScreenDetector.js +4 -4
  75. package/lib/commonjs/features/navigation/AutoScreenDetector.js.map +1 -1
  76. package/lib/commonjs/features/ota/OtaOrchestrator.js +27 -18
  77. package/lib/commonjs/features/ota/OtaOrchestrator.js.map +1 -1
  78. package/lib/commonjs/features/ota/geoCountry.js +2 -2
  79. package/lib/commonjs/features/ota/geoCountry.js.map +1 -1
  80. package/lib/commonjs/features/ota/retry.js +2 -2
  81. package/lib/commonjs/features/ota/retry.js.map +1 -1
  82. package/lib/commonjs/features/replay/core/logger/logger.js +0 -4
  83. package/lib/commonjs/features/replay/core/logger/logger.js.map +1 -1
  84. package/lib/commonjs/features/replay/integrations/network/networkAdapter.js +1 -54
  85. package/lib/commonjs/features/replay/integrations/network/networkAdapter.js.map +1 -1
  86. package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js +1 -1
  87. package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js.map +1 -1
  88. package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js +1 -1
  89. package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js.map +1 -1
  90. package/lib/commonjs/features/replay/pipeline/batching/batchManager.js +1 -1
  91. package/lib/commonjs/features/replay/pipeline/batching/batchManager.js.map +1 -1
  92. package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js +1 -1
  93. package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js.map +1 -1
  94. package/lib/commonjs/features/replay/public/api.js +7 -7
  95. package/lib/commonjs/features/replay/public/api.js.map +1 -1
  96. package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js +9 -9
  97. package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js.map +1 -1
  98. package/lib/commonjs/features/session/BackendSessionAdapter.js +41 -41
  99. package/lib/commonjs/features/session/BackendSessionAdapter.js.map +1 -1
  100. package/lib/commonjs/features/session/DesktopSessionTransport.js +5 -2
  101. package/lib/commonjs/features/session/DesktopSessionTransport.js.map +1 -1
  102. package/lib/commonjs/features/session/JourneyEventPipeline.js +1 -1
  103. package/lib/commonjs/features/session/JourneyEventPipeline.js.map +1 -1
  104. package/lib/commonjs/features/session/ReplayCaptureManager.js +14 -14
  105. package/lib/commonjs/features/session/ReplayCaptureManager.js.map +1 -1
  106. package/lib/commonjs/features/session/SessionManager.js +9 -9
  107. package/lib/commonjs/features/session/SessionManager.js.map +1 -1
  108. package/lib/commonjs/features/session/SyncDecisionEngine.js +1 -1
  109. package/lib/commonjs/features/session/SyncDecisionEngine.js.map +1 -1
  110. package/lib/commonjs/features/skan/skanBridge.js +6 -15
  111. package/lib/commonjs/features/skan/skanBridge.js.map +1 -1
  112. package/lib/commonjs/features/skan/skanConversionManager.js +5 -5
  113. package/lib/commonjs/features/skan/skanConversionManager.js.map +1 -1
  114. package/lib/commonjs/integrations/fetch/fetchInterceptor.js +1 -1
  115. package/lib/commonjs/integrations/fetch/fetchInterceptor.js.map +1 -1
  116. package/lib/commonjs/integrations/xhr/xhrInterceptor.js +1 -1
  117. package/lib/commonjs/integrations/xhr/xhrInterceptor.js.map +1 -1
  118. package/lib/commonjs/metro/composeSourceMap.js +105 -0
  119. package/lib/commonjs/metro/composeSourceMap.js.map +1 -0
  120. package/lib/commonjs/metro/featureModules.js +131 -0
  121. package/lib/commonjs/metro/featureModules.js.map +1 -0
  122. package/lib/commonjs/metro/index.js +123 -2
  123. package/lib/commonjs/metro/index.js.map +1 -1
  124. package/lib/commonjs/metro/serializerCompose.js +129 -0
  125. package/lib/commonjs/metro/serializerCompose.js.map +1 -0
  126. package/lib/commonjs/pipeline/dispatcher/dispatcher.js +1 -1
  127. package/lib/commonjs/pipeline/dispatcher/dispatcher.js.map +1 -1
  128. package/lib/commonjs/pipeline/queue/flushQueue.js +2 -2
  129. package/lib/commonjs/pipeline/queue/flushQueue.js.map +1 -1
  130. package/lib/commonjs/pipeline/queue/persistentQueue.js +6 -37
  131. package/lib/commonjs/pipeline/queue/persistentQueue.js.map +1 -1
  132. package/lib/commonjs/pipeline/scheduler/flushScheduler.js +1 -1
  133. package/lib/commonjs/pipeline/scheduler/flushScheduler.js.map +1 -1
  134. package/lib/commonjs/public/ScaleBunFacade.js +64 -15
  135. package/lib/commonjs/public/ScaleBunFacade.js.map +1 -1
  136. package/lib/commonjs/push/PushManager.js +3 -3
  137. package/lib/commonjs/push/PushManager.js.map +1 -1
  138. package/lib/commonjs/push/adapters/NativeBridgeAdapter.js +1 -1
  139. package/lib/commonjs/push/adapters/NativeBridgeAdapter.js.map +1 -1
  140. package/lib/commonjs/push/native/nativeNotifications.js +7 -18
  141. package/lib/commonjs/push/native/nativeNotifications.js.map +1 -1
  142. package/lib/commonjs/storage/StorageBackend.js +1 -1
  143. package/lib/commonjs/storage/StorageBackend.js.map +1 -1
  144. package/lib/module/bootstrap/FeatureRegistry.js +4 -4
  145. package/lib/module/bootstrap/FeatureRegistry.js.map +1 -1
  146. package/lib/module/bootstrap/SDKBootstrapper.js +20 -17
  147. package/lib/module/bootstrap/SDKBootstrapper.js.map +1 -1
  148. package/lib/module/compat/codepush.js +77 -14
  149. package/lib/module/compat/codepush.js.map +1 -1
  150. package/lib/module/core/config/schema.js +411 -218
  151. package/lib/module/core/config/schema.js.map +1 -1
  152. package/lib/module/core/constants/endpoints.js +9 -6
  153. package/lib/module/core/constants/endpoints.js.map +1 -1
  154. package/lib/module/core/constants/protocol.js +25 -0
  155. package/lib/module/core/constants/protocol.js.map +1 -0
  156. package/lib/module/core/constants/timings.js +3 -1
  157. package/lib/module/core/constants/timings.js.map +1 -1
  158. package/lib/module/core/lifecycle/appLifecycle.js +1 -1
  159. package/lib/module/core/lifecycle/appLifecycle.js.map +1 -1
  160. package/lib/module/debug/bootstrap.js +30 -9
  161. package/lib/module/debug/bootstrap.js.map +1 -1
  162. package/lib/module/debug/exportBridge.js +5 -3
  163. package/lib/module/debug/exportBridge.js.map +1 -1
  164. package/lib/module/debug/hostResolver.js +2 -2
  165. package/lib/module/debug/hostResolver.js.map +1 -1
  166. package/lib/module/debug/perfWiring.js +4 -4
  167. package/lib/module/debug/perfWiring.js.map +1 -1
  168. package/lib/module/debug/replayWiring.js +5 -5
  169. package/lib/module/debug/replayWiring.js.map +1 -1
  170. package/lib/module/debug/screenTracking.js +2 -2
  171. package/lib/module/debug/screenTracking.js.map +1 -1
  172. package/lib/module/debug/sessionWiring.js +2 -2
  173. package/lib/module/debug/sessionWiring.js.map +1 -1
  174. package/lib/module/features/crash/NativeCrashFeature.js +1 -1
  175. package/lib/module/features/crash/NativeCrashFeature.js.map +1 -1
  176. package/lib/module/features/crash/globalHandler.js +3 -3
  177. package/lib/module/features/crash/globalHandler.js.map +1 -1
  178. package/lib/module/features/crash/nativeCrashBridge.js +7 -7
  179. package/lib/module/features/crash/nativeCrashBridge.js.map +1 -1
  180. package/lib/module/features/crash/rejectionHandler.js +2 -2
  181. package/lib/module/features/crash/rejectionHandler.js.map +1 -1
  182. package/lib/module/features/engage/EngageArchetypeRenderers.js +0 -8
  183. package/lib/module/features/engage/EngageArchetypeRenderers.js.map +1 -1
  184. package/lib/module/features/engage/EngageInAppView.js +1 -1
  185. package/lib/module/features/engage/EngageInAppView.js.map +1 -1
  186. package/lib/module/features/engage/EngagePromptProvider.js +17 -17
  187. package/lib/module/features/engage/EngagePromptProvider.js.map +1 -1
  188. package/lib/module/features/engage/EngageTransport.js +5 -5
  189. package/lib/module/features/engage/EngageTransport.js.map +1 -1
  190. package/lib/module/features/engage/engagePushTokenBridge.js +4 -4
  191. package/lib/module/features/engage/engagePushTokenBridge.js.map +1 -1
  192. package/lib/module/features/engage/engageShakeBridge.js +2 -2
  193. package/lib/module/features/engage/engageShakeBridge.js.map +1 -1
  194. package/lib/module/features/engage/engageSignals.js +1 -1
  195. package/lib/module/features/engage/engageSignals.js.map +1 -1
  196. package/lib/module/features/engage/engageStoreReviewBridge.js +2 -2
  197. package/lib/module/features/engage/engageStoreReviewBridge.js.map +1 -1
  198. package/lib/module/features/engage/engageTestSeenStore.js +1 -1
  199. package/lib/module/features/engage/engageTestSeenStore.js.map +1 -1
  200. package/lib/module/features/engage/engageThrottle.js +4 -4
  201. package/lib/module/features/engage/engageThrottle.js.map +1 -1
  202. package/lib/module/features/engage/engageTriggerEngine.js +4 -4
  203. package/lib/module/features/engage/engageTriggerEngine.js.map +1 -1
  204. package/lib/module/features/engage/engageWindowInsets.js +1 -1
  205. package/lib/module/features/engage/engageWindowInsets.js.map +1 -1
  206. package/lib/module/features/install-referrer/installReferrer.js +3 -3
  207. package/lib/module/features/install-referrer/installReferrer.js.map +1 -1
  208. package/lib/module/features/journey/calibrationContext.js +0 -8
  209. package/lib/module/features/journey/calibrationContext.js.map +1 -1
  210. package/lib/module/features/journey/journeyManager.js +3 -1
  211. package/lib/module/features/journey/journeyManager.js.map +1 -1
  212. package/lib/module/features/navigation/AutoScreenDetector.js +4 -4
  213. package/lib/module/features/navigation/AutoScreenDetector.js.map +1 -1
  214. package/lib/module/features/ota/OtaOrchestrator.js +27 -18
  215. package/lib/module/features/ota/OtaOrchestrator.js.map +1 -1
  216. package/lib/module/features/ota/geoCountry.js +2 -2
  217. package/lib/module/features/ota/geoCountry.js.map +1 -1
  218. package/lib/module/features/ota/retry.js +2 -2
  219. package/lib/module/features/ota/retry.js.map +1 -1
  220. package/lib/module/features/replay/core/logger/logger.js +0 -3
  221. package/lib/module/features/replay/core/logger/logger.js.map +1 -1
  222. package/lib/module/features/replay/integrations/network/networkAdapter.js +1 -52
  223. package/lib/module/features/replay/integrations/network/networkAdapter.js.map +1 -1
  224. package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js +1 -1
  225. package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js.map +1 -1
  226. package/lib/module/features/replay/integrations/touch/ReplayRoot.js +1 -1
  227. package/lib/module/features/replay/integrations/touch/ReplayRoot.js.map +1 -1
  228. package/lib/module/features/replay/pipeline/batching/batchManager.js +1 -1
  229. package/lib/module/features/replay/pipeline/batching/batchManager.js.map +1 -1
  230. package/lib/module/features/replay/pipeline/retry/retryPolicy.js +1 -1
  231. package/lib/module/features/replay/pipeline/retry/retryPolicy.js.map +1 -1
  232. package/lib/module/features/replay/public/api.js +7 -7
  233. package/lib/module/features/replay/public/api.js.map +1 -1
  234. package/lib/module/features/replay/replay/session/sessionOrchestrator.js +9 -9
  235. package/lib/module/features/replay/replay/session/sessionOrchestrator.js.map +1 -1
  236. package/lib/module/features/session/BackendSessionAdapter.js +41 -41
  237. package/lib/module/features/session/BackendSessionAdapter.js.map +1 -1
  238. package/lib/module/features/session/DesktopSessionTransport.js +4 -2
  239. package/lib/module/features/session/DesktopSessionTransport.js.map +1 -1
  240. package/lib/module/features/session/JourneyEventPipeline.js +1 -1
  241. package/lib/module/features/session/JourneyEventPipeline.js.map +1 -1
  242. package/lib/module/features/session/ReplayCaptureManager.js +14 -14
  243. package/lib/module/features/session/ReplayCaptureManager.js.map +1 -1
  244. package/lib/module/features/session/SessionManager.js +9 -9
  245. package/lib/module/features/session/SessionManager.js.map +1 -1
  246. package/lib/module/features/session/SyncDecisionEngine.js +1 -1
  247. package/lib/module/features/session/SyncDecisionEngine.js.map +1 -1
  248. package/lib/module/features/skan/skanBridge.js +6 -14
  249. package/lib/module/features/skan/skanBridge.js.map +1 -1
  250. package/lib/module/features/skan/skanConversionManager.js +5 -5
  251. package/lib/module/features/skan/skanConversionManager.js.map +1 -1
  252. package/lib/module/index.js +1 -1
  253. package/lib/module/integrations/fetch/fetchInterceptor.js +1 -1
  254. package/lib/module/integrations/fetch/fetchInterceptor.js.map +1 -1
  255. package/lib/module/integrations/xhr/xhrInterceptor.js +1 -1
  256. package/lib/module/integrations/xhr/xhrInterceptor.js.map +1 -1
  257. package/lib/module/metro/composeSourceMap.js +97 -0
  258. package/lib/module/metro/composeSourceMap.js.map +1 -0
  259. package/lib/module/metro/featureModules.js +123 -0
  260. package/lib/module/metro/featureModules.js.map +1 -0
  261. package/lib/module/metro/index.js +122 -2
  262. package/lib/module/metro/index.js.map +1 -1
  263. package/lib/module/metro/serializerCompose.js +120 -0
  264. package/lib/module/metro/serializerCompose.js.map +1 -0
  265. package/lib/module/pipeline/dispatcher/dispatcher.js +1 -1
  266. package/lib/module/pipeline/dispatcher/dispatcher.js.map +1 -1
  267. package/lib/module/pipeline/queue/flushQueue.js +2 -2
  268. package/lib/module/pipeline/queue/flushQueue.js.map +1 -1
  269. package/lib/module/pipeline/queue/persistentQueue.js +6 -36
  270. package/lib/module/pipeline/queue/persistentQueue.js.map +1 -1
  271. package/lib/module/pipeline/scheduler/flushScheduler.js +1 -1
  272. package/lib/module/pipeline/scheduler/flushScheduler.js.map +1 -1
  273. package/lib/module/public/ScaleBunFacade.js +64 -15
  274. package/lib/module/public/ScaleBunFacade.js.map +1 -1
  275. package/lib/module/push/PushManager.js +3 -3
  276. package/lib/module/push/PushManager.js.map +1 -1
  277. package/lib/module/push/adapters/NativeBridgeAdapter.js +1 -1
  278. package/lib/module/push/adapters/NativeBridgeAdapter.js.map +1 -1
  279. package/lib/module/push/native/nativeNotifications.js +7 -17
  280. package/lib/module/push/native/nativeNotifications.js.map +1 -1
  281. package/lib/module/storage/StorageBackend.js +1 -1
  282. package/lib/module/storage/StorageBackend.js.map +1 -1
  283. package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +1 -1
  284. package/lib/typescript/compat/codepush.d.ts +27 -4
  285. package/lib/typescript/compat/codepush.d.ts.map +1 -1
  286. package/lib/typescript/core/config/schema.d.ts +61 -37
  287. package/lib/typescript/core/config/schema.d.ts.map +1 -1
  288. package/lib/typescript/core/constants/endpoints.d.ts +9 -6
  289. package/lib/typescript/core/constants/endpoints.d.ts.map +1 -1
  290. package/lib/typescript/core/constants/protocol.d.ts +23 -0
  291. package/lib/typescript/core/constants/protocol.d.ts.map +1 -0
  292. package/lib/typescript/core/constants/timings.d.ts +1 -1
  293. package/lib/typescript/core/constants/timings.d.ts.map +1 -1
  294. package/lib/typescript/debug/bootstrap.d.ts +0 -1
  295. package/lib/typescript/debug/bootstrap.d.ts.map +1 -1
  296. package/lib/typescript/debug/exportBridge.d.ts.map +1 -1
  297. package/lib/typescript/features/engage/EngageArchetypeRenderers.d.ts +0 -2
  298. package/lib/typescript/features/engage/EngageArchetypeRenderers.d.ts.map +1 -1
  299. package/lib/typescript/features/engage/EngageTransport.d.ts +1 -1
  300. package/lib/typescript/features/engage/EngageTransport.d.ts.map +1 -1
  301. package/lib/typescript/features/journey/calibrationContext.d.ts +0 -1
  302. package/lib/typescript/features/journey/calibrationContext.d.ts.map +1 -1
  303. package/lib/typescript/features/journey/journeyManager.d.ts.map +1 -1
  304. package/lib/typescript/features/ota/OtaOrchestrator.d.ts +6 -0
  305. package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +1 -1
  306. package/lib/typescript/features/replay/core/logger/logger.d.ts +0 -1
  307. package/lib/typescript/features/replay/core/logger/logger.d.ts.map +1 -1
  308. package/lib/typescript/features/replay/integrations/network/networkAdapter.d.ts +0 -10
  309. package/lib/typescript/features/replay/integrations/network/networkAdapter.d.ts.map +1 -1
  310. package/lib/typescript/features/session/DesktopSessionTransport.d.ts.map +1 -1
  311. package/lib/typescript/features/skan/skanBridge.d.ts +0 -2
  312. package/lib/typescript/features/skan/skanBridge.d.ts.map +1 -1
  313. package/lib/typescript/metro/composeSourceMap.d.ts +26 -0
  314. package/lib/typescript/metro/composeSourceMap.d.ts.map +1 -0
  315. package/lib/typescript/metro/featureModules.d.ts +49 -0
  316. package/lib/typescript/metro/featureModules.d.ts.map +1 -0
  317. package/lib/typescript/metro/index.d.ts +22 -0
  318. package/lib/typescript/metro/index.d.ts.map +1 -1
  319. package/lib/typescript/metro/serializerCompose.d.ts +46 -0
  320. package/lib/typescript/metro/serializerCompose.d.ts.map +1 -0
  321. package/lib/typescript/pipeline/queue/persistentQueue.d.ts +0 -10
  322. package/lib/typescript/pipeline/queue/persistentQueue.d.ts.map +1 -1
  323. package/lib/typescript/public/ScaleBunFacade.d.ts +11 -0
  324. package/lib/typescript/public/ScaleBunFacade.d.ts.map +1 -1
  325. package/lib/typescript/public/types.d.ts +34 -8
  326. package/lib/typescript/public/types.d.ts.map +1 -1
  327. package/lib/typescript/push/native/nativeNotifications.d.ts +0 -6
  328. package/lib/typescript/push/native/nativeNotifications.d.ts.map +1 -1
  329. package/package.json +15 -11
  330. package/src/bootstrap/FeatureRegistry.ts +4 -4
  331. package/src/bootstrap/SDKBootstrapper.ts +20 -17
  332. package/src/compat/codepush.ts +87 -16
  333. package/src/core/config/schema.ts +353 -222
  334. package/src/core/constants/endpoints.ts +9 -6
  335. package/src/core/constants/protocol.ts +24 -0
  336. package/src/core/constants/timings.ts +3 -1
  337. package/src/core/lifecycle/appLifecycle.ts +1 -1
  338. package/src/debug/bootstrap.ts +40 -7
  339. package/src/debug/exportBridge.ts +5 -3
  340. package/src/debug/hostResolver.ts +2 -2
  341. package/src/debug/perfWiring.ts +4 -4
  342. package/src/debug/replayWiring.ts +5 -5
  343. package/src/debug/screenTracking.ts +2 -2
  344. package/src/debug/sessionWiring.ts +2 -2
  345. package/src/features/crash/NativeCrashFeature.ts +1 -1
  346. package/src/features/crash/globalHandler.ts +3 -3
  347. package/src/features/crash/nativeCrashBridge.ts +7 -7
  348. package/src/features/crash/rejectionHandler.ts +2 -2
  349. package/src/features/engage/EngageArchetypeRenderers.tsx +0 -11
  350. package/src/features/engage/EngageInAppView.tsx +1 -1
  351. package/src/features/engage/EngagePromptProvider.tsx +17 -17
  352. package/src/features/engage/EngageTransport.ts +6 -6
  353. package/src/features/engage/engagePushTokenBridge.ts +4 -4
  354. package/src/features/engage/engageShakeBridge.ts +2 -2
  355. package/src/features/engage/engageSignals.ts +1 -1
  356. package/src/features/engage/engageStoreReviewBridge.ts +2 -2
  357. package/src/features/engage/engageTestSeenStore.ts +1 -1
  358. package/src/features/engage/engageThrottle.ts +4 -4
  359. package/src/features/engage/engageTriggerEngine.ts +4 -4
  360. package/src/features/engage/engageWindowInsets.ts +1 -1
  361. package/src/features/install-referrer/installReferrer.ts +3 -3
  362. package/src/features/journey/calibrationContext.ts +0 -9
  363. package/src/features/journey/journeyManager.ts +3 -1
  364. package/src/features/navigation/AutoScreenDetector.ts +4 -4
  365. package/src/features/ota/OtaOrchestrator.ts +27 -18
  366. package/src/features/ota/geoCountry.ts +2 -2
  367. package/src/features/ota/retry.ts +2 -2
  368. package/src/features/replay/core/logger/logger.ts +0 -4
  369. package/src/features/replay/integrations/network/networkAdapter.ts +1 -56
  370. package/src/features/replay/integrations/react-navigation/navigationIntegration.ts +1 -1
  371. package/src/features/replay/integrations/touch/ReplayRoot.tsx +1 -1
  372. package/src/features/replay/pipeline/batching/batchManager.ts +1 -1
  373. package/src/features/replay/pipeline/retry/retryPolicy.ts +1 -1
  374. package/src/features/replay/public/api.ts +7 -7
  375. package/src/features/replay/replay/session/sessionOrchestrator.ts +9 -9
  376. package/src/features/session/BackendSessionAdapter.ts +41 -41
  377. package/src/features/session/DesktopSessionTransport.ts +4 -2
  378. package/src/features/session/JourneyEventPipeline.ts +1 -1
  379. package/src/features/session/ReplayCaptureManager.ts +14 -14
  380. package/src/features/session/SessionManager.ts +9 -9
  381. package/src/features/session/SyncDecisionEngine.ts +1 -1
  382. package/src/features/skan/skanBridge.ts +6 -14
  383. package/src/features/skan/skanConversionManager.ts +5 -5
  384. package/src/index.ts +1 -1
  385. package/src/integrations/fetch/fetchInterceptor.ts +1 -1
  386. package/src/integrations/xhr/xhrInterceptor.ts +1 -1
  387. package/src/metro/composeSourceMap.ts +104 -0
  388. package/src/metro/featureModules.ts +143 -0
  389. package/src/metro/index.ts +173 -1
  390. package/src/metro/serializerCompose.ts +157 -0
  391. package/src/pipeline/dispatcher/dispatcher.ts +1 -1
  392. package/src/pipeline/queue/flushQueue.ts +2 -2
  393. package/src/pipeline/queue/persistentQueue.ts +6 -35
  394. package/src/pipeline/scheduler/flushScheduler.ts +1 -1
  395. package/src/public/ScaleBunFacade.ts +60 -15
  396. package/src/public/types.ts +35 -8
  397. package/src/push/PushManager.ts +3 -3
  398. package/src/push/adapters/NativeBridgeAdapter.ts +1 -1
  399. package/src/push/native/nativeNotifications.ts +7 -16
  400. package/src/storage/StorageBackend.ts +1 -1
@@ -87,7 +87,7 @@ export class PersistentQueue {
87
87
  this.config = { ...DEFAULT_PERSISTENCE_CONFIG, ...config };
88
88
  this.meta = this._loadMeta();
89
89
 
90
- logger.debug(
90
+ __DEV__ && logger.debug(
91
91
  `[PersistentQueue] Initialized: count=${this.meta.count}, ` +
92
92
  `bytes=${this.meta.totalBytes}, head=${this.meta.head}, tail=${this.meta.tail}`,
93
93
  );
@@ -150,7 +150,7 @@ export class PersistentQueue {
150
150
  this.meta.totalBytes -= raw.length;
151
151
  } else {
152
152
  // Gap — entry was already evicted or corrupted
153
- logger.debug(`[PersistentQueue] Missing entry at seq=${seq}`);
153
+ __DEV__ && logger.debug(`[PersistentQueue] Missing entry at seq=${seq}`);
154
154
  }
155
155
  }
156
156
 
@@ -224,7 +224,7 @@ export class PersistentQueue {
224
224
  drainLeftovers(): Envelope[] {
225
225
  if (this.meta.count === 0) return [];
226
226
 
227
- logger.info(
227
+ __DEV__ && logger.info(
228
228
  `[PersistentQueue] Draining ${this.meta.count} leftover envelopes ` +
229
229
  `from previous run (${this.meta.totalBytes} bytes)`,
230
230
  );
@@ -311,7 +311,7 @@ export class PersistentQueue {
311
311
  totalBytes,
312
312
  };
313
313
 
314
- logger.info(
314
+ __DEV__ && logger.info(
315
315
  `[PersistentQueue] Recovered metadata: ${meta.count} entries, ` +
316
316
  `head=${meta.head}, tail=${meta.tail}, bytes=${meta.totalBytes}`,
317
317
  );
@@ -381,34 +381,5 @@ export class PersistentQueue {
381
381
  }
382
382
  }
383
383
 
384
- // ─── Factory ────────────────────────────────────────────────────────────────
385
-
386
- /**
387
- * Create a PersistentQueue with the best available backend.
388
- *
389
- * If persistence is disabled in config, uses MemoryBackend.
390
- * Otherwise uses the shared first-party durable backend from createStorageBackend().
391
- *
392
- * @param config - Persistence config from SDK init
393
- * @param backend - Override backend (for tests). If provided, skips auto-detection.
394
- */
395
- export function createPersistentQueue(
396
- config: Partial<PersistenceConfig> = {},
397
- backend?: StorageBackend,
398
- ): PersistentQueue {
399
- if (backend) {
400
- return new PersistentQueue(backend, config);
401
- }
402
-
403
- const mergedConfig = { ...DEFAULT_PERSISTENCE_CONFIG, ...config };
404
-
405
- if (!mergedConfig.enabled) {
406
- logger.info('[PersistentQueue] Persistence disabled — using in-memory queue');
407
- const { MemoryBackend } = require('../../storage/StorageBackend');
408
- return new PersistentQueue(new MemoryBackend(), mergedConfig);
409
- }
410
-
411
- const { createStorageBackend } = require('../../storage/StorageBackend');
412
- const autoBackend = createStorageBackend();
413
- return new PersistentQueue(autoBackend, mergedConfig);
414
- }
384
+ // (A createPersistentQueue factory used to live here; every construction site builds
385
+ // PersistentQueue directly with an explicit backend, so the factory was verified dead and removed.)
@@ -16,7 +16,7 @@ export class FlushScheduler {
16
16
  // Skip if the previous tick's flush hasn't settled — avoids
17
17
  // overlapping flushes piling up when the network is slow.
18
18
  if (this.running) {
19
- logger.debug('[FlushScheduler] Previous flush still running — skipping tick');
19
+ __DEV__ && logger.debug('[FlushScheduler] Previous flush still running — skipping tick');
20
20
  return;
21
21
  }
22
22
  this.running = true;
@@ -234,7 +234,7 @@ class ScaleBunFacade {
234
234
  const realQueue = coreContainer.get<PersistentQueue>('PersistentQueue');
235
235
  const buffered = this._preInitBuffer.popBatch(this._preInitBuffer.length());
236
236
  if (buffered.length > 0) {
237
- logger.debug(`[ScaleBun] Draining ${buffered.length} pre-init events into persistent queue`);
237
+ __DEV__ && logger.debug(`[ScaleBun] Draining ${buffered.length} pre-init events into persistent queue`);
238
238
  for (const envelope of buffered) {
239
239
  realQueue.add(envelope);
240
240
  }
@@ -251,6 +251,13 @@ class ScaleBunFacade {
251
251
  // Continue — debug connection is independent of backend API
252
252
  }
253
253
 
254
+ // OTA from init config. Without this the whole `ota` config block was
255
+ // inert: `otaOrchestrator.init()` was reachable only by importing the
256
+ // orchestrator directly, so an app that followed the documented
257
+ // `ota: { enabled: true }` path silently got no updates AND no
258
+ // signature enforcement (sync() gates on the flag init() sets).
259
+ this._maybeStartOta(rawConfig);
260
+
254
261
  // Auto debug connection from init config — runs regardless of backend status
255
262
  const debugConfig = (rawConfig?.desktopDebug ?? rawConfig?.debug) as DebugConnectionConfig | undefined;
256
263
  if (debugConfig) {
@@ -264,13 +271,51 @@ class ScaleBunFacade {
264
271
  }
265
272
  }
266
273
 
274
+ /**
275
+ * Boot the OTA orchestrator when the init config asks for it.
276
+ *
277
+ * `publicSigningKey` is honoured here so signature enforcement is reachable
278
+ * from configuration alone. The SDK ships no ed25519 implementation, so a
279
+ * host that pins a key must also supply `ota.verifySignature`; pinning a key
280
+ * without a verifier is fail-CLOSED by design (signature.ts) — an update
281
+ * that cannot be verified is not installed. We say that out loud rather than
282
+ * letting the app discover it as a silent no-update condition.
283
+ */
284
+ private _maybeStartOta(rawConfig: any): void {
285
+ const ota = rawConfig?.ota;
286
+ if (!ota?.enabled) return;
287
+ try {
288
+ // Required lazily: hosts that never enable OTA should not pay for the
289
+ // module (or touch the native spec) at import time.
290
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
291
+ const { otaOrchestrator } = require('../features/ota/OtaOrchestrator');
292
+ const publicKey = ota.publicSigningKey;
293
+ const verifier = ota.verifySignature;
294
+ if (publicKey && typeof verifier !== 'function') {
295
+ logger.warn(
296
+ '[ScaleBun] ota.publicSigningKey is set but ota.verifySignature is not a function. ' +
297
+ 'Signature checking is fail-closed: updates will be REJECTED until a verifier is supplied.',
298
+ );
299
+ }
300
+ otaOrchestrator.init({
301
+ ...(publicKey ? { signature: { publicKey, verifier } } : {}),
302
+ ...(typeof ota.healthyTimeoutMs === 'number'
303
+ ? { healthyTimeoutMs: ota.healthyTimeoutMs }
304
+ : {}),
305
+ });
306
+ logger.info('[ScaleBun] OTA enabled from init config.');
307
+ } catch (err: any) {
308
+ logger.warn(`[ScaleBun] OTA init failed: ${err?.message ?? err}`);
309
+ }
310
+ }
311
+
267
312
  private _autoEnableDebug(debugConfig: DebugConnectionConfig): void {
268
313
  try {
269
314
  const dbgConfig = buildDebugConfigFromInitConfig(debugConfig);
270
315
  if (!dbgConfig) return;
271
316
  (dbgConfig as any).__skipDeprecationWarning = true;
272
317
  this.enableDebug(dbgConfig);
273
- logger.info('[ScaleBun] Debug auto-connected via init({ debug }).');
318
+ __DEV__ && logger.info('[ScaleBun] Debug auto-connected via init({ debug }).');
274
319
  } catch (err: any) {
275
320
  logger.warn('[ScaleBun] Auto debug connection failed:', err?.message);
276
321
  }
@@ -287,7 +332,7 @@ class ScaleBunFacade {
287
332
  const apiBaseUrl = this._apiBaseUrl;
288
333
  if (!enabled || !appId || !clientKey || !apiBaseUrl) {
289
334
  if (enabled && !appId) {
290
- logger.info('[ScaleBun] Envelope event tracking disabled — no appId in init config.');
335
+ __DEV__ && logger.info('[ScaleBun] Envelope event tracking disabled — no appId in init config.');
291
336
  }
292
337
  return;
293
338
  }
@@ -336,7 +381,7 @@ class ScaleBunFacade {
336
381
  onEvent: (eventName, revenue) => this._skanManager?.onEvent(eventName, revenue),
337
382
  });
338
383
  this._eventTracker.start();
339
- logger.info('[ScaleBun] Envelope event tracking started → /v1/batch.');
384
+ __DEV__ && logger.info('[ScaleBun] Envelope event tracking started → /v1/batch.');
340
385
 
341
386
  // Android: capture the Play Install Referrer once per install → feeds the
342
387
  // deterministic click_id path + a one-off install_referrer event (UTM/gclid).
@@ -859,7 +904,7 @@ class ScaleBunFacade {
859
904
  const cfg = await (this._getEngageTransport()?.fetchEngageConfig(context) ?? Promise.resolve(null));
860
905
  const messages = cfg?.inAppMessages ?? [];
861
906
  const previews = messages.filter((m) => m.preview === true || m.isTest === true);
862
- logger.info(
907
+ __DEV__ && logger.info(
863
908
  `[Engage] debugFetchInAppMessages → ${messages.length} message(s), ${previews.length} test preview(s)`,
864
909
  );
865
910
  return messages;
@@ -1170,7 +1215,7 @@ class ScaleBunFacade {
1170
1215
  logger.warn('SDK not initialized. Event dropped:', name);
1171
1216
  return;
1172
1217
  }
1173
- logger.debug('Tracking event:', name);
1218
+ __DEV__ && logger.debug('Tracking event:', name);
1174
1219
 
1175
1220
  // Fan this event out to the Engage trigger engine. Same single funnel,
1176
1221
  // extra observer — lets behavioral triggers (custom_event, failed_action,
@@ -1310,7 +1355,7 @@ class ScaleBunFacade {
1310
1355
  ]);
1311
1356
  return;
1312
1357
  }
1313
- logger.debug('Flushing events from persistent queue...');
1358
+ __DEV__ && logger.debug('Flushing events from persistent queue...');
1314
1359
  const httpClient = coreContainer.get<HttpClient>('HttpClient');
1315
1360
  await flushQueue(this._getQueue(), httpClient, getDeviceId());
1316
1361
  });
@@ -1338,10 +1383,10 @@ class ScaleBunFacade {
1338
1383
  const bootstrapPerfFeature = _getPerformanceFeature();
1339
1384
  if (bootstrapPerfFeature) {
1340
1385
  this._performanceFeature = bootstrapPerfFeature;
1341
- logger.debug('Performance feature linked from bootstrap');
1386
+ __DEV__ && logger.debug('Performance feature linked from bootstrap');
1342
1387
  }
1343
1388
 
1344
- logger.info('Debug enabled');
1389
+ __DEV__ && logger.info('Debug enabled');
1345
1390
  });
1346
1391
  }
1347
1392
 
@@ -1496,14 +1541,14 @@ class ScaleBunFacade {
1496
1541
  return false;
1497
1542
  }
1498
1543
  sm.startSession(metadata as Parameters<SessionManager['startSession']>[0]);
1499
- logger.info('session.start() ✅ sessionId:', sm.currentSessionId);
1544
+ __DEV__ && logger.info('session.start() ✅ sessionId:', sm.currentSessionId);
1500
1545
  return true;
1501
1546
  },
1502
1547
  end: (reason?: 'ended' | 'timeout'): boolean => {
1503
1548
  const sm = SessionManager.getExistingInstance();
1504
1549
  if (!sm || !sm.isActive) return false;
1505
1550
  sm.endSession(reason);
1506
- logger.info('session.end() ✅');
1551
+ __DEV__ && logger.info('session.end() ✅');
1507
1552
  return true;
1508
1553
  },
1509
1554
  emitEvent: (type: string, data?: Record<string, unknown>) => {
@@ -1559,13 +1604,13 @@ class ScaleBunFacade {
1559
1604
  /** Set SDK-wide privacy settings for report generation. */
1560
1605
  setPrivacy: (config: PrivacyConfig): void => {
1561
1606
  this._privacyConfig = { ...this._privacyConfig, ...config };
1562
- logger.debug('[report] Privacy config updated');
1607
+ __DEV__ && logger.debug('[report] Privacy config updated');
1563
1608
  },
1564
1609
 
1565
1610
  /** Set branding for exported reports. */
1566
1611
  setBranding: (config: BrandingConfig): void => {
1567
1612
  this._brandingConfig = { ...this._brandingConfig, ...config };
1568
- logger.debug('[report] Branding config updated');
1613
+ __DEV__ && logger.debug('[report] Branding config updated');
1569
1614
  },
1570
1615
 
1571
1616
  /** Get current privacy config. */
@@ -1616,9 +1661,9 @@ class ScaleBunFacade {
1616
1661
  try {
1617
1662
  const { AutoScreenDetector } = require('../features/navigation/AutoScreenDetector');
1618
1663
  AutoScreenDetector.getInstance().setNavigationRef(ref);
1619
- logger.info('[ScaleBun] Navigation ref set → auto screen detection active');
1664
+ __DEV__ && logger.info('[ScaleBun] Navigation ref set → auto screen detection active');
1620
1665
  } catch (err: any) {
1621
- logger.debug('[ScaleBun] Navigation ref stashed (detector not ready):', err?.message);
1666
+ __DEV__ && logger.debug('[ScaleBun] Navigation ref stashed (detector not ready):', err?.message);
1622
1667
  }
1623
1668
  });
1624
1669
  }
@@ -78,14 +78,28 @@ export interface ScaleBunInitConfig {
78
78
  /** Publishable API key from dashboard */
79
79
  publishableKey: string;
80
80
  /**
81
- * Backend API base URL. Optional — defaults to the ScaleBun cloud.
82
- * Override only for staging or a self-hosted backend.
81
+ * @deprecated The endpoint is LOCKED to the ScaleBun cloud. Any value passed here is accepted
82
+ * (for backward compatibility) but ignored the bootstrapper always uses the fixed
83
+ * `DEFAULT_API_BASE_URL`. To target a different backend, change that constant at build time.
83
84
  */
84
85
  apiBaseUrl?: string;
85
86
  /** @deprecated Use desktopDebug instead */
86
87
  debug?: boolean;
87
- /** Enable session replay capture. Default: true */
88
+ /** Enable session replay capture (feature on/off). Default: true */
88
89
  sessionReplay?: boolean;
90
+ /**
91
+ * Session-replay capture options (SaaS mode).
92
+ * - `record` (default **true**): auto-start frame recording at cold launch so replays appear out
93
+ * of the box. Set `false` for events-only sessions — you can still record on demand with
94
+ * `ScaleBun.startSession()`.
95
+ * - `captureMode` / `intervalMs` / `quality`: tune capture cadence.
96
+ */
97
+ replay?: {
98
+ record?: boolean;
99
+ captureMode?: 'navigation' | 'interactions' | 'frequency';
100
+ intervalMs?: number;
101
+ quality?: 'high' | 'normal' | 'low' | 'grayscale';
102
+ };
89
103
  /** Event flush interval in ms. Default: 5000 */
90
104
  flushIntervalMs?: number;
91
105
  /** Max events per flush batch. Default: 1000 */
@@ -234,7 +248,6 @@ export interface ExportResult {
234
248
  * await ScaleBun.init({
235
249
  * projectId: 'proj_xxx',
236
250
  * publishableKey: 'pk_xxx',
237
- * apiBaseUrl: 'https://api.scalebun.com',
238
251
  * });
239
252
  * ```
240
253
  *
@@ -243,7 +256,6 @@ export interface ExportResult {
243
256
  * await ScaleBun.init({
244
257
  * projectId: 'proj_xxx',
245
258
  * publishableKey: 'pk_xxx',
246
- * apiBaseUrl: 'https://api.scalebun.com',
247
259
  * debug: true,
248
260
  * });
249
261
  * ```
@@ -254,8 +266,9 @@ export interface SimplifiedInitConfig {
254
266
  /** Publishable API key from dashboard */
255
267
  publishableKey: string;
256
268
  /**
257
- * Backend API base URL. Optional — defaults to the ScaleBun cloud.
258
- * Override only for staging or a self-hosted backend.
269
+ * @deprecated The endpoint is LOCKED to the ScaleBun cloud. Any value passed here is accepted
270
+ * (for backward compatibility) but ignored the bootstrapper always uses the fixed
271
+ * `DEFAULT_API_BASE_URL`. To target a different backend, change that constant at build time.
259
272
  */
260
273
  apiBaseUrl?: string;
261
274
 
@@ -271,9 +284,23 @@ export interface SimplifiedInitConfig {
271
284
  /** @deprecated Use desktopDebug instead. */
272
285
  debug?: DebugConnectionConfig;
273
286
 
274
- /** Enable session replay capture. Default: true */
287
+ /** Enable session replay capture (feature on/off). Default: true */
275
288
  sessionReplay?: boolean;
276
289
 
290
+ /**
291
+ * Session-replay capture options (SaaS mode).
292
+ * - `record` (default **true**): auto-start frame recording at cold launch so replays appear out
293
+ * of the box. Set `false` for events-only sessions — you can still record on demand with
294
+ * `ScaleBun.startSession()`.
295
+ * - `captureMode` / `intervalMs` / `quality`: tune capture cadence.
296
+ */
297
+ replay?: {
298
+ record?: boolean;
299
+ captureMode?: 'navigation' | 'interactions' | 'frequency';
300
+ intervalMs?: number;
301
+ quality?: 'high' | 'normal' | 'low' | 'grayscale';
302
+ };
303
+
277
304
  /** SDK-wide privacy settings */
278
305
  privacy?: PrivacyConfig;
279
306
 
@@ -89,7 +89,7 @@ export class PushManager {
89
89
  return { ok: false, adapter: this.adapter.id, reason: this.reason };
90
90
  }
91
91
 
92
- logger.info('[push] adapter:', this.adapter.id, '—', selection.reason);
92
+ __DEV__ && logger.info('[push] adapter:', this.adapter.id, '—', selection.reason);
93
93
 
94
94
  // 1) Permission
95
95
  if (!options.skipPermissionRequest) {
@@ -215,7 +215,7 @@ export class PushManager {
215
215
  */
216
216
  private async syncToken(token: string, force = false): Promise<any> {
217
217
  if (!force && token === this.lastSyncedToken) {
218
- logger.debug('[push] token unchanged since last registration — skipping');
218
+ __DEV__ && logger.debug('[push] token unchanged since last registration — skipping');
219
219
  return { ok: true, skipped: true };
220
220
  }
221
221
  const platform = Platform.OS === 'ios' ? 'ios' : 'android';
@@ -224,7 +224,7 @@ export class PushManager {
224
224
  // adapter is set (manual setToken before enable).
225
225
  const pushProvider: PushProviderId =
226
226
  this.adapter?.pushProvider() ?? (platform === 'ios' ? 'apns' : 'fcm');
227
- logger.debug(`[push] registering device token with backend (provider=${pushProvider})`);
227
+ __DEV__ && logger.debug(`[push] registering device token with backend (provider=${pushProvider})`);
228
228
  const res = await this.deps.registerToken({ pushToken: token, platform, pushProvider, tokenStatus: 'active' });
229
229
  this.lastSyncedToken = token;
230
230
  return res;
@@ -84,7 +84,7 @@ export class NativeBridgeAdapter implements PushAdapter {
84
84
  public async createAndroidChannel(_channel: AndroidChannelConfig): Promise<void> {
85
85
  // The native bridge has no JS channel API; FCM uses the manifest-declared
86
86
  // fallback channel (default_notification_channel_id). No-op on iOS.
87
- logger.debug('[push] native adapter relies on FCM fallback channel');
87
+ __DEV__ && logger.debug('[push] native adapter relies on FCM fallback channel');
88
88
  }
89
89
 
90
90
  public async getToken(): Promise<string | null> {
@@ -78,7 +78,7 @@ export async function ensureNativeChannel(config: {
78
78
  config.description ?? null,
79
79
  );
80
80
  } catch (err: any) {
81
- logger.debug(`[Push.native] ensureChannel failed (fail-soft): ${err?.message}`);
81
+ __DEV__ && logger.debug(`[Push.native] ensureChannel failed (fail-soft): ${err?.message}`);
82
82
  return false;
83
83
  }
84
84
  }
@@ -102,7 +102,7 @@ export async function showNativeNotification(input: {
102
102
  ...(input.notificationId != null ? { notificationId: input.notificationId } : {}),
103
103
  });
104
104
  } catch (err: any) {
105
- logger.debug(`[Push.native] showNotification failed (fail-soft): ${err?.message}`);
105
+ __DEV__ && logger.debug(`[Push.native] showNotification failed (fail-soft): ${err?.message}`);
106
106
  return false;
107
107
  }
108
108
  }
@@ -124,7 +124,7 @@ export function subscribeNativeNotificationOpened(
124
124
  );
125
125
  return () => sub.remove();
126
126
  } catch (err: any) {
127
- logger.debug(`[Push.native] opened subscription failed (fail-soft): ${err?.message}`);
127
+ __DEV__ && logger.debug(`[Push.native] opened subscription failed (fail-soft): ${err?.message}`);
128
128
  return () => {};
129
129
  }
130
130
  }
@@ -141,20 +141,11 @@ export async function consumeInitialNativeNotification(): Promise<Record<string,
141
141
  if (!payload) return null;
142
142
  return payload.data ?? {};
143
143
  } catch (err: any) {
144
- logger.debug(`[Push.native] consumeInitial failed (fail-soft): ${err?.message}`);
144
+ __DEV__ && logger.debug(`[Push.native] consumeInitial failed (fail-soft): ${err?.message}`);
145
145
  return null;
146
146
  }
147
147
  }
148
148
 
149
- /**
150
- * iOS (UNUserNotificationCenter): the native module owns the full notification
151
- * surface — request authorization, foreground presentation, taps, and cold-start.
152
- * Presence == iOS ScaleBunEngage exposes the notification delegate methods.
153
- */
154
- export function hasNativeNotificationDelegate(): boolean {
155
- const mod = getModule();
156
- return !!(mod?.requestPushPermission && mod?.consumeInitialNotification);
157
- }
158
149
 
159
150
  /**
160
151
  * iOS: request notification authorization natively. Returns the normalized status
@@ -166,7 +157,7 @@ export async function requestNativePushPermission(): Promise<string | null> {
166
157
  if (!mod?.requestPushPermission) return null;
167
158
  return await mod.requestPushPermission();
168
159
  } catch (err: any) {
169
- logger.debug(`[Push.native] requestPushPermission failed (fail-soft): ${err?.message}`);
160
+ __DEV__ && logger.debug(`[Push.native] requestPushPermission failed (fail-soft): ${err?.message}`);
170
161
  return null;
171
162
  }
172
163
  }
@@ -189,7 +180,7 @@ export function subscribeNativeForegroundNotification(
189
180
  );
190
181
  return () => sub.remove();
191
182
  } catch (err: any) {
192
- logger.debug(`[Push.native] foreground subscription failed (fail-soft): ${err?.message}`);
183
+ __DEV__ && logger.debug(`[Push.native] foreground subscription failed (fail-soft): ${err?.message}`);
193
184
  return () => {};
194
185
  }
195
186
  }
@@ -210,7 +201,7 @@ export async function consumeInitialNativeNotificationFull(): Promise<NativeNoti
210
201
  data: payload.data ?? {},
211
202
  };
212
203
  } catch (err: any) {
213
- logger.debug(`[Push.native] consumeInitialFull failed (fail-soft): ${err?.message}`);
204
+ __DEV__ && logger.debug(`[Push.native] consumeInitialFull failed (fail-soft): ${err?.message}`);
214
205
  return null;
215
206
  }
216
207
  }
@@ -244,7 +244,7 @@ export function createStorageBackend(): StorageBackend {
244
244
  if (native) {
245
245
  try {
246
246
  sharedBackend = new NativeKVBackend(native);
247
- logger.debug('[StorageBackend] Using native durable backend (ScaleBunStorage)');
247
+ __DEV__ && logger.debug('[StorageBackend] Using native durable backend (ScaleBunStorage)');
248
248
  return sharedBackend;
249
249
  } catch (e) {
250
250
  logger.warn('[StorageBackend] Native durable store failed to initialize; ' +