@userflow-tech/react-native 0.4.5 → 0.6.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 (502) hide show
  1. package/README.md +31 -2
  2. package/docs/anchoring.md +6 -1
  3. package/docs/custom-fonts.md +36 -0
  4. package/docs/troubleshooting.md +33 -6
  5. package/lib/commonjs/anchors/AutoAnchorRegistry.js +144 -34
  6. package/lib/commonjs/anchors/AutoAnchorRegistry.js.map +1 -1
  7. package/lib/commonjs/anchors/animationFrame.js +29 -1
  8. package/lib/commonjs/anchors/animationFrame.js.map +1 -1
  9. package/lib/commonjs/anchors/appActive.js +61 -0
  10. package/lib/commonjs/anchors/appActive.js.map +1 -0
  11. package/lib/commonjs/anchors/elementConditionEvaluator.js +25 -8
  12. package/lib/commonjs/anchors/elementConditionEvaluator.js.map +1 -1
  13. package/lib/commonjs/anchors/elementTapMonitor.js +67 -12
  14. package/lib/commonjs/anchors/elementTapMonitor.js.map +1 -1
  15. package/lib/commonjs/anchors/elementTargetMatch.js +33 -7
  16. package/lib/commonjs/anchors/elementTargetMatch.js.map +1 -1
  17. package/lib/commonjs/anchors/fiber/FiberScanRootStore.js +8 -0
  18. package/lib/commonjs/anchors/fiber/FiberScanRootStore.js.map +1 -1
  19. package/lib/commonjs/anchors/fiber/detectAppFontFamily.js +341 -0
  20. package/lib/commonjs/anchors/fiber/detectAppFontFamily.js.map +1 -0
  21. package/lib/commonjs/anchors/fiber/fiberInternals.js +66 -0
  22. package/lib/commonjs/anchors/fiber/fiberInternals.js.map +1 -1
  23. package/lib/commonjs/anchors/fiber/indexHostFibers.js +4 -3
  24. package/lib/commonjs/anchors/fiber/indexHostFibers.js.map +1 -1
  25. package/lib/commonjs/anchors/fiber/resolveFiberPath.js +30 -15
  26. package/lib/commonjs/anchors/fiber/resolveFiberPath.js.map +1 -1
  27. package/lib/commonjs/anchors/fiber/visibleScreens.js +6 -0
  28. package/lib/commonjs/anchors/fiber/visibleScreens.js.map +1 -1
  29. package/lib/commonjs/anchors/fiberAnchorCache.js +20 -0
  30. package/lib/commonjs/anchors/fiberAnchorCache.js.map +1 -1
  31. package/lib/commonjs/anchors/gestureHandlerHandoff.js +304 -0
  32. package/lib/commonjs/anchors/gestureHandlerHandoff.js.map +1 -0
  33. package/lib/commonjs/anchors/resolveAnchorHost.js +6 -0
  34. package/lib/commonjs/anchors/resolveAnchorHost.js.map +1 -1
  35. package/lib/commonjs/anchors/resolveAutoAnchorHost.js +11 -6
  36. package/lib/commonjs/anchors/resolveAutoAnchorHost.js.map +1 -1
  37. package/lib/commonjs/anchors/resolveElementTargets.js +63 -8
  38. package/lib/commonjs/anchors/resolveElementTargets.js.map +1 -1
  39. package/lib/commonjs/anchors/semanticMatcher.js +43 -21
  40. package/lib/commonjs/anchors/semanticMatcher.js.map +1 -1
  41. package/lib/commonjs/anchors/tapSlop.js +16 -0
  42. package/lib/commonjs/anchors/tapSlop.js.map +1 -0
  43. package/lib/commonjs/anchors/targetPressMonitor.js +66 -12
  44. package/lib/commonjs/anchors/targetPressMonitor.js.map +1 -1
  45. package/lib/commonjs/authoring/fingerprintFromInstance.js +5 -9
  46. package/lib/commonjs/authoring/fingerprintFromInstance.js.map +1 -1
  47. package/lib/commonjs/content/BannerStepButton.js +2 -1
  48. package/lib/commonjs/content/BannerStepButton.js.map +1 -1
  49. package/lib/commonjs/content/RichContentRenderer.js +20 -14
  50. package/lib/commonjs/content/RichContentRenderer.js.map +1 -1
  51. package/lib/commonjs/content/StepButton.js +2 -1
  52. package/lib/commonjs/content/StepButton.js.map +1 -1
  53. package/lib/commonjs/content/openSafeUrl.js +3 -1
  54. package/lib/commonjs/content/openSafeUrl.js.map +1 -1
  55. package/lib/commonjs/content/resolveContentFontFamily.js +96 -0
  56. package/lib/commonjs/content/resolveContentFontFamily.js.map +1 -0
  57. package/lib/commonjs/expo-router/useUserflowExpoRouter.js +6 -0
  58. package/lib/commonjs/expo-router/useUserflowExpoRouter.js.map +1 -1
  59. package/lib/commonjs/index.js +21 -5
  60. package/lib/commonjs/index.js.map +1 -1
  61. package/lib/commonjs/navigation/navigateUrlUtils.js +105 -0
  62. package/lib/commonjs/navigation/navigateUrlUtils.js.map +1 -0
  63. package/lib/commonjs/navigation/openExternalNavigateUrl.js +14 -0
  64. package/lib/commonjs/navigation/openExternalNavigateUrl.js.map +1 -0
  65. package/lib/commonjs/navigation/openFlowNavigateUrl.js +47 -41
  66. package/lib/commonjs/navigation/openFlowNavigateUrl.js.map +1 -1
  67. package/lib/commonjs/pairing/PairingController.js +3 -1
  68. package/lib/commonjs/pairing/PairingController.js.map +1 -1
  69. package/lib/commonjs/runtime/BannerHost.js +38 -29
  70. package/lib/commonjs/runtime/BannerHost.js.map +1 -1
  71. package/lib/commonjs/runtime/TargetPressBridge.js +55 -7
  72. package/lib/commonjs/runtime/TargetPressBridge.js.map +1 -1
  73. package/lib/commonjs/runtime/UserflowOverlay.js +5 -11
  74. package/lib/commonjs/runtime/UserflowOverlay.js.map +1 -1
  75. package/lib/commonjs/runtime/UserflowProvider.js +66 -40
  76. package/lib/commonjs/runtime/UserflowProvider.js.map +1 -1
  77. package/lib/commonjs/runtime/bannerEngine.js +8 -2
  78. package/lib/commonjs/runtime/bannerEngine.js.map +1 -1
  79. package/lib/commonjs/runtime/bannerFlowSpacer.js +71 -0
  80. package/lib/commonjs/runtime/bannerFlowSpacer.js.map +1 -0
  81. package/lib/commonjs/runtime/flowEngine.js +11 -0
  82. package/lib/commonjs/runtime/flowEngine.js.map +1 -1
  83. package/lib/commonjs/runtime/previewStart.js +39 -0
  84. package/lib/commonjs/runtime/previewStart.js.map +1 -0
  85. package/lib/commonjs/runtime/pushBannerLayoutContext.js +101 -0
  86. package/lib/commonjs/runtime/pushBannerLayoutContext.js.map +1 -0
  87. package/lib/commonjs/screenTracker.js +12 -0
  88. package/lib/commonjs/screenTracker.js.map +1 -1
  89. package/lib/commonjs/surfaces/BannerBar.js +79 -61
  90. package/lib/commonjs/surfaces/BannerBar.js.map +1 -1
  91. package/lib/commonjs/surfaces/BannerSurface.js +28 -6
  92. package/lib/commonjs/surfaces/BannerSurface.js.map +1 -1
  93. package/lib/commonjs/surfaces/ProgressBar.js +2 -1
  94. package/lib/commonjs/surfaces/ProgressBar.js.map +1 -1
  95. package/lib/commonjs/surfaces/TooltipSurface.js +48 -41
  96. package/lib/commonjs/surfaces/TooltipSurface.js.map +1 -1
  97. package/lib/commonjs/surfaces/bannerBarLayout.js +77 -10
  98. package/lib/commonjs/surfaces/bannerBarLayout.js.map +1 -1
  99. package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js +114 -63
  100. package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
  101. package/lib/commonjs/surfaces/bannerWebView/bannerNeedsWebView.js +3 -33
  102. package/lib/commonjs/surfaces/bannerWebView/bannerNeedsWebView.js.map +1 -1
  103. package/lib/commonjs/surfaces/bannerWebView/bannerThemeStyles.js +2 -1
  104. package/lib/commonjs/surfaces/bannerWebView/bannerThemeStyles.js.map +1 -1
  105. package/lib/commonjs/surfaces/bannerWebView/bannerWebViewHeight.js +33 -0
  106. package/lib/commonjs/surfaces/bannerWebView/bannerWebViewHeight.js.map +1 -0
  107. package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js +104 -23
  108. package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
  109. package/lib/commonjs/surfaces/hostAccessibilityTrap.js +28 -0
  110. package/lib/commonjs/surfaces/hostAccessibilityTrap.js.map +1 -0
  111. package/lib/commonjs/surfaces/resolveBannerTheme.js +6 -3
  112. package/lib/commonjs/surfaces/resolveBannerTheme.js.map +1 -1
  113. package/lib/commonjs/surfaces/tooltip/TooltipBubble.js +3 -2
  114. package/lib/commonjs/surfaces/tooltip/TooltipBubble.js.map +1 -1
  115. package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js +134 -0
  116. package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
  117. package/lib/commonjs/version.js +1 -1
  118. package/lib/module/anchors/AutoAnchorRegistry.js +145 -35
  119. package/lib/module/anchors/AutoAnchorRegistry.js.map +1 -1
  120. package/lib/module/anchors/animationFrame.js +29 -2
  121. package/lib/module/anchors/animationFrame.js.map +1 -1
  122. package/lib/module/anchors/appActive.js +57 -0
  123. package/lib/module/anchors/appActive.js.map +1 -0
  124. package/lib/module/anchors/elementConditionEvaluator.js +26 -9
  125. package/lib/module/anchors/elementConditionEvaluator.js.map +1 -1
  126. package/lib/module/anchors/elementTapMonitor.js +67 -12
  127. package/lib/module/anchors/elementTapMonitor.js.map +1 -1
  128. package/lib/module/anchors/elementTargetMatch.js +32 -7
  129. package/lib/module/anchors/elementTargetMatch.js.map +1 -1
  130. package/lib/module/anchors/fiber/FiberScanRootStore.js +8 -0
  131. package/lib/module/anchors/fiber/FiberScanRootStore.js.map +1 -1
  132. package/lib/module/anchors/fiber/detectAppFontFamily.js +330 -0
  133. package/lib/module/anchors/fiber/detectAppFontFamily.js.map +1 -0
  134. package/lib/module/anchors/fiber/fiberInternals.js +65 -0
  135. package/lib/module/anchors/fiber/fiberInternals.js.map +1 -1
  136. package/lib/module/anchors/fiber/indexHostFibers.js +4 -3
  137. package/lib/module/anchors/fiber/indexHostFibers.js.map +1 -1
  138. package/lib/module/anchors/fiber/resolveFiberPath.js +30 -15
  139. package/lib/module/anchors/fiber/resolveFiberPath.js.map +1 -1
  140. package/lib/module/anchors/fiber/visibleScreens.js +5 -0
  141. package/lib/module/anchors/fiber/visibleScreens.js.map +1 -1
  142. package/lib/module/anchors/fiberAnchorCache.js +19 -0
  143. package/lib/module/anchors/fiberAnchorCache.js.map +1 -1
  144. package/lib/module/anchors/gestureHandlerHandoff.js +298 -0
  145. package/lib/module/anchors/gestureHandlerHandoff.js.map +1 -0
  146. package/lib/module/anchors/resolveAnchorHost.js +1 -0
  147. package/lib/module/anchors/resolveAnchorHost.js.map +1 -1
  148. package/lib/module/anchors/resolveAutoAnchorHost.js +11 -6
  149. package/lib/module/anchors/resolveAutoAnchorHost.js.map +1 -1
  150. package/lib/module/anchors/resolveElementTargets.js +63 -8
  151. package/lib/module/anchors/resolveElementTargets.js.map +1 -1
  152. package/lib/module/anchors/semanticMatcher.js +43 -21
  153. package/lib/module/anchors/semanticMatcher.js.map +1 -1
  154. package/lib/module/anchors/tapSlop.js +11 -0
  155. package/lib/module/anchors/tapSlop.js.map +1 -0
  156. package/lib/module/anchors/targetPressMonitor.js +53 -8
  157. package/lib/module/anchors/targetPressMonitor.js.map +1 -1
  158. package/lib/module/authoring/fingerprintFromInstance.js +6 -10
  159. package/lib/module/authoring/fingerprintFromInstance.js.map +1 -1
  160. package/lib/module/content/BannerStepButton.js +2 -1
  161. package/lib/module/content/BannerStepButton.js.map +1 -1
  162. package/lib/module/content/RichContentRenderer.js +20 -14
  163. package/lib/module/content/RichContentRenderer.js.map +1 -1
  164. package/lib/module/content/StepButton.js +2 -1
  165. package/lib/module/content/StepButton.js.map +1 -1
  166. package/lib/module/content/openSafeUrl.js +3 -1
  167. package/lib/module/content/openSafeUrl.js.map +1 -1
  168. package/lib/module/content/resolveContentFontFamily.js +89 -0
  169. package/lib/module/content/resolveContentFontFamily.js.map +1 -0
  170. package/lib/module/expo-router/useUserflowExpoRouter.js +7 -1
  171. package/lib/module/expo-router/useUserflowExpoRouter.js.map +1 -1
  172. package/lib/module/index.js +24 -7
  173. package/lib/module/index.js.map +1 -1
  174. package/lib/module/navigation/navigateUrlUtils.js +94 -0
  175. package/lib/module/navigation/navigateUrlUtils.js.map +1 -0
  176. package/lib/module/navigation/openExternalNavigateUrl.js +11 -0
  177. package/lib/module/navigation/openExternalNavigateUrl.js.map +1 -0
  178. package/lib/module/navigation/openFlowNavigateUrl.js +22 -36
  179. package/lib/module/navigation/openFlowNavigateUrl.js.map +1 -1
  180. package/lib/module/pairing/PairingController.js +3 -1
  181. package/lib/module/pairing/PairingController.js.map +1 -1
  182. package/lib/module/runtime/BannerHost.js +38 -29
  183. package/lib/module/runtime/BannerHost.js.map +1 -1
  184. package/lib/module/runtime/TargetPressBridge.js +56 -8
  185. package/lib/module/runtime/TargetPressBridge.js.map +1 -1
  186. package/lib/module/runtime/UserflowOverlay.js +5 -11
  187. package/lib/module/runtime/UserflowOverlay.js.map +1 -1
  188. package/lib/module/runtime/UserflowProvider.js +66 -40
  189. package/lib/module/runtime/UserflowProvider.js.map +1 -1
  190. package/lib/module/runtime/bannerEngine.js +7 -2
  191. package/lib/module/runtime/bannerEngine.js.map +1 -1
  192. package/lib/module/runtime/bannerFlowSpacer.js +65 -0
  193. package/lib/module/runtime/bannerFlowSpacer.js.map +1 -0
  194. package/lib/module/runtime/flowEngine.js +11 -0
  195. package/lib/module/runtime/flowEngine.js.map +1 -1
  196. package/lib/module/runtime/previewStart.js +35 -0
  197. package/lib/module/runtime/previewStart.js.map +1 -0
  198. package/lib/module/runtime/pushBannerLayoutContext.js +94 -0
  199. package/lib/module/runtime/pushBannerLayoutContext.js.map +1 -0
  200. package/lib/module/screenTracker.js +11 -0
  201. package/lib/module/screenTracker.js.map +1 -1
  202. package/lib/module/surfaces/BannerBar.js +80 -62
  203. package/lib/module/surfaces/BannerBar.js.map +1 -1
  204. package/lib/module/surfaces/BannerSurface.js +28 -6
  205. package/lib/module/surfaces/BannerSurface.js.map +1 -1
  206. package/lib/module/surfaces/ProgressBar.js +2 -1
  207. package/lib/module/surfaces/ProgressBar.js.map +1 -1
  208. package/lib/module/surfaces/TooltipSurface.js +49 -42
  209. package/lib/module/surfaces/TooltipSurface.js.map +1 -1
  210. package/lib/module/surfaces/bannerBarLayout.js +72 -11
  211. package/lib/module/surfaces/bannerBarLayout.js.map +1 -1
  212. package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js +115 -64
  213. package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
  214. package/lib/module/surfaces/bannerWebView/bannerNeedsWebView.js +3 -31
  215. package/lib/module/surfaces/bannerWebView/bannerNeedsWebView.js.map +1 -1
  216. package/lib/module/surfaces/bannerWebView/bannerThemeStyles.js +2 -1
  217. package/lib/module/surfaces/bannerWebView/bannerThemeStyles.js.map +1 -1
  218. package/lib/module/surfaces/bannerWebView/bannerWebViewHeight.js +29 -0
  219. package/lib/module/surfaces/bannerWebView/bannerWebViewHeight.js.map +1 -0
  220. package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js +104 -23
  221. package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
  222. package/lib/module/surfaces/hostAccessibilityTrap.js +24 -0
  223. package/lib/module/surfaces/hostAccessibilityTrap.js.map +1 -0
  224. package/lib/module/surfaces/resolveBannerTheme.js +6 -3
  225. package/lib/module/surfaces/resolveBannerTheme.js.map +1 -1
  226. package/lib/module/surfaces/tooltip/TooltipBubble.js +3 -2
  227. package/lib/module/surfaces/tooltip/TooltipBubble.js.map +1 -1
  228. package/lib/module/surfaces/tooltip/targetSearchSchedule.js +128 -0
  229. package/lib/module/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
  230. package/lib/module/version.js +1 -1
  231. package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts +36 -2
  232. package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts +0 -4
  234. package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/src/anchors/appActive.d.ts +8 -0
  236. package/lib/typescript/commonjs/src/anchors/appActive.d.ts.map +1 -0
  237. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts +17 -0
  238. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts +7 -0
  240. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/src/anchors/fiber/FiberScanRootStore.d.ts +5 -0
  242. package/lib/typescript/commonjs/src/anchors/fiber/FiberScanRootStore.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/src/anchors/fiber/detectAppFontFamily.d.ts +30 -0
  244. package/lib/typescript/commonjs/src/anchors/fiber/detectAppFontFamily.d.ts.map +1 -0
  245. package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts +7 -0
  246. package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts +3 -2
  248. package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
  250. package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/src/anchors/fiber/visibleScreens.d.ts +2 -0
  252. package/lib/typescript/commonjs/src/anchors/fiber/visibleScreens.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts +5 -0
  254. package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts +70 -0
  256. package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
  257. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts +1 -0
  258. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
  260. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts +2 -0
  263. package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts +9 -0
  265. package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts.map +1 -0
  266. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts +13 -8
  267. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/src/content/BannerStepButton.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/src/content/RichContentRenderer.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/src/content/StepButton.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/src/content/openSafeUrl.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/src/content/resolveContentFontFamily.d.ts +35 -0
  274. package/lib/typescript/commonjs/src/content/resolveContentFontFamily.d.ts.map +1 -0
  275. package/lib/typescript/commonjs/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/src/index.d.ts +6 -5
  277. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts +15 -0
  279. package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts.map +1 -0
  280. package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts +3 -0
  281. package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
  282. package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts +2 -5
  283. package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/src/pairing/PairingController.d.ts +6 -0
  285. package/lib/typescript/commonjs/src/pairing/PairingController.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/src/runtime/BannerHost.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts +3 -0
  288. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts.map +1 -1
  289. package/lib/typescript/commonjs/src/runtime/UserflowOverlay.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/src/runtime/UserflowProvider.d.ts.map +1 -1
  291. package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts +5 -1
  292. package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts +15 -0
  294. package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
  295. package/lib/typescript/commonjs/src/runtime/flowEngine.d.ts.map +1 -1
  296. package/lib/typescript/commonjs/src/runtime/previewStart.d.ts +13 -0
  297. package/lib/typescript/commonjs/src/runtime/previewStart.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts +22 -0
  299. package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/src/screenTracker.d.ts +6 -0
  301. package/lib/typescript/commonjs/src/screenTracker.d.ts.map +1 -1
  302. package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts +3 -1
  303. package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts.map +1 -1
  304. package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts +6 -5
  305. package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts.map +1 -1
  306. package/lib/typescript/commonjs/src/surfaces/ProgressBar.d.ts.map +1 -1
  307. package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts +1 -1
  308. package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts.map +1 -1
  309. package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts +17 -0
  310. package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts.map +1 -1
  311. package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
  312. package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts +3 -12
  314. package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts.map +1 -1
  315. package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerThemeStyles.d.ts.map +1 -1
  316. package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts +13 -0
  317. package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
  319. package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
  320. package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts +4 -1
  322. package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
  323. package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
  324. package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
  325. package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
  326. package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
  327. package/lib/typescript/commonjs/src/version.d.ts +1 -1
  328. package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts +36 -2
  329. package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
  330. package/lib/typescript/module/src/anchors/animationFrame.d.ts +0 -4
  331. package/lib/typescript/module/src/anchors/animationFrame.d.ts.map +1 -1
  332. package/lib/typescript/module/src/anchors/appActive.d.ts +8 -0
  333. package/lib/typescript/module/src/anchors/appActive.d.ts.map +1 -0
  334. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts +17 -0
  335. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts.map +1 -1
  336. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts +7 -0
  337. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts.map +1 -1
  338. package/lib/typescript/module/src/anchors/fiber/FiberScanRootStore.d.ts +5 -0
  339. package/lib/typescript/module/src/anchors/fiber/FiberScanRootStore.d.ts.map +1 -1
  340. package/lib/typescript/module/src/anchors/fiber/detectAppFontFamily.d.ts +30 -0
  341. package/lib/typescript/module/src/anchors/fiber/detectAppFontFamily.d.ts.map +1 -0
  342. package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts +7 -0
  343. package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
  344. package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts +3 -2
  345. package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
  346. package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
  347. package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
  348. package/lib/typescript/module/src/anchors/fiber/visibleScreens.d.ts +2 -0
  349. package/lib/typescript/module/src/anchors/fiber/visibleScreens.d.ts.map +1 -1
  350. package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts +5 -0
  351. package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts.map +1 -1
  352. package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts +70 -0
  353. package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
  354. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts +1 -0
  355. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  356. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
  357. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  358. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts.map +1 -1
  359. package/lib/typescript/module/src/anchors/semanticMatcher.d.ts +2 -0
  360. package/lib/typescript/module/src/anchors/semanticMatcher.d.ts.map +1 -1
  361. package/lib/typescript/module/src/anchors/tapSlop.d.ts +9 -0
  362. package/lib/typescript/module/src/anchors/tapSlop.d.ts.map +1 -0
  363. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts +13 -8
  364. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts.map +1 -1
  365. package/lib/typescript/module/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
  366. package/lib/typescript/module/src/content/BannerStepButton.d.ts.map +1 -1
  367. package/lib/typescript/module/src/content/RichContentRenderer.d.ts.map +1 -1
  368. package/lib/typescript/module/src/content/StepButton.d.ts.map +1 -1
  369. package/lib/typescript/module/src/content/openSafeUrl.d.ts.map +1 -1
  370. package/lib/typescript/module/src/content/resolveContentFontFamily.d.ts +35 -0
  371. package/lib/typescript/module/src/content/resolveContentFontFamily.d.ts.map +1 -0
  372. package/lib/typescript/module/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
  373. package/lib/typescript/module/src/index.d.ts +6 -5
  374. package/lib/typescript/module/src/index.d.ts.map +1 -1
  375. package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts +15 -0
  376. package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts.map +1 -0
  377. package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts +3 -0
  378. package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
  379. package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts +2 -5
  380. package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
  381. package/lib/typescript/module/src/pairing/PairingController.d.ts +6 -0
  382. package/lib/typescript/module/src/pairing/PairingController.d.ts.map +1 -1
  383. package/lib/typescript/module/src/runtime/BannerHost.d.ts.map +1 -1
  384. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts +3 -0
  385. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts.map +1 -1
  386. package/lib/typescript/module/src/runtime/UserflowOverlay.d.ts.map +1 -1
  387. package/lib/typescript/module/src/runtime/UserflowProvider.d.ts.map +1 -1
  388. package/lib/typescript/module/src/runtime/bannerEngine.d.ts +5 -1
  389. package/lib/typescript/module/src/runtime/bannerEngine.d.ts.map +1 -1
  390. package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts +15 -0
  391. package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
  392. package/lib/typescript/module/src/runtime/flowEngine.d.ts.map +1 -1
  393. package/lib/typescript/module/src/runtime/previewStart.d.ts +13 -0
  394. package/lib/typescript/module/src/runtime/previewStart.d.ts.map +1 -0
  395. package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts +22 -0
  396. package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
  397. package/lib/typescript/module/src/screenTracker.d.ts +6 -0
  398. package/lib/typescript/module/src/screenTracker.d.ts.map +1 -1
  399. package/lib/typescript/module/src/surfaces/BannerBar.d.ts +3 -1
  400. package/lib/typescript/module/src/surfaces/BannerBar.d.ts.map +1 -1
  401. package/lib/typescript/module/src/surfaces/BannerSurface.d.ts +6 -5
  402. package/lib/typescript/module/src/surfaces/BannerSurface.d.ts.map +1 -1
  403. package/lib/typescript/module/src/surfaces/ProgressBar.d.ts.map +1 -1
  404. package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts +1 -1
  405. package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts.map +1 -1
  406. package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts +17 -0
  407. package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts.map +1 -1
  408. package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
  409. package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
  410. package/lib/typescript/module/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts +3 -12
  411. package/lib/typescript/module/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts.map +1 -1
  412. package/lib/typescript/module/src/surfaces/bannerWebView/bannerThemeStyles.d.ts.map +1 -1
  413. package/lib/typescript/module/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts +13 -0
  414. package/lib/typescript/module/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts.map +1 -0
  415. package/lib/typescript/module/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
  416. package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
  417. package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
  418. package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts +4 -1
  419. package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
  420. package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
  421. package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
  422. package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
  423. package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
  424. package/lib/typescript/module/src/version.d.ts +1 -1
  425. package/package.json +1 -1
  426. package/src/anchors/AutoAnchorRegistry.ts +166 -35
  427. package/src/anchors/animationFrame.ts +31 -1
  428. package/src/anchors/appActive.ts +63 -0
  429. package/src/anchors/elementConditionEvaluator.ts +29 -12
  430. package/src/anchors/elementTapMonitor.ts +68 -10
  431. package/src/anchors/elementTargetMatch.ts +34 -7
  432. package/src/anchors/fiber/FiberScanRootStore.ts +8 -0
  433. package/src/anchors/fiber/detectAppFontFamily.ts +400 -0
  434. package/src/anchors/fiber/fiberInternals.ts +68 -0
  435. package/src/anchors/fiber/indexHostFibers.ts +8 -3
  436. package/src/anchors/fiber/resolveFiberPath.ts +25 -16
  437. package/src/anchors/fiber/visibleScreens.ts +5 -0
  438. package/src/anchors/fiberAnchorCache.ts +19 -0
  439. package/src/anchors/gestureHandlerHandoff.ts +356 -0
  440. package/src/anchors/resolveAnchorHost.ts +2 -0
  441. package/src/anchors/resolveAutoAnchorHost.ts +18 -8
  442. package/src/anchors/resolveElementTargets.ts +64 -7
  443. package/src/anchors/semanticMatcher.ts +48 -27
  444. package/src/anchors/tapSlop.ts +18 -0
  445. package/src/anchors/targetPressMonitor.ts +56 -19
  446. package/src/authoring/fingerprintFromInstance.ts +4 -5
  447. package/src/content/BannerStepButton.tsx +2 -1
  448. package/src/content/RichContentRenderer.tsx +19 -13
  449. package/src/content/StepButton.tsx +2 -1
  450. package/src/content/openSafeUrl.ts +3 -1
  451. package/src/content/resolveContentFontFamily.ts +119 -0
  452. package/src/expo-router/useUserflowExpoRouter.ts +10 -1
  453. package/src/index.ts +22 -9
  454. package/src/navigation/navigateUrlUtils.ts +100 -0
  455. package/src/navigation/openExternalNavigateUrl.ts +9 -0
  456. package/src/navigation/openFlowNavigateUrl.ts +36 -36
  457. package/src/pairing/PairingController.ts +9 -1
  458. package/src/runtime/BannerHost.tsx +41 -23
  459. package/src/runtime/TargetPressBridge.tsx +66 -9
  460. package/src/runtime/UserflowOverlay.tsx +7 -9
  461. package/src/runtime/UserflowProvider.tsx +56 -32
  462. package/src/runtime/bannerEngine.ts +10 -2
  463. package/src/runtime/bannerFlowSpacer.tsx +70 -0
  464. package/src/runtime/flowEngine.ts +11 -0
  465. package/src/runtime/previewStart.ts +49 -0
  466. package/src/runtime/pushBannerLayoutContext.tsx +126 -0
  467. package/src/screenTracker.ts +11 -0
  468. package/src/surfaces/BannerBar.tsx +93 -55
  469. package/src/surfaces/BannerSurface.tsx +61 -9
  470. package/src/surfaces/ProgressBar.tsx +2 -1
  471. package/src/surfaces/TooltipSurface.tsx +78 -53
  472. package/src/surfaces/bannerBarLayout.ts +80 -7
  473. package/src/surfaces/bannerWebView/BannerWebViewBar.tsx +151 -57
  474. package/src/surfaces/bannerWebView/bannerNeedsWebView.ts +4 -36
  475. package/src/surfaces/bannerWebView/bannerThemeStyles.ts +2 -1
  476. package/src/surfaces/bannerWebView/bannerWebViewHeight.ts +32 -0
  477. package/src/surfaces/bannerWebView/buildCustomBannerHtml.ts +111 -23
  478. package/src/surfaces/hostAccessibilityTrap.ts +25 -0
  479. package/src/surfaces/resolveBannerTheme.ts +14 -3
  480. package/src/surfaces/tooltip/TooltipBubble.tsx +8 -1
  481. package/src/surfaces/tooltip/targetSearchSchedule.ts +140 -0
  482. package/src/version.ts +1 -1
  483. package/vendor/core/dist/engine/BannerSessionEngine.d.ts +29 -2
  484. package/vendor/core/dist/engine/BannerSessionEngine.d.ts.map +1 -1
  485. package/vendor/core/dist/engine/BannerSessionEngine.js +87 -6
  486. package/vendor/core/dist/engine/BannerSessionEngine.js.map +1 -1
  487. package/vendor/core/dist/engine/ClientConditionEngine.d.ts.map +1 -1
  488. package/vendor/core/dist/engine/ClientConditionEngine.js +30 -7
  489. package/vendor/core/dist/engine/ClientConditionEngine.js.map +1 -1
  490. package/vendor/core/dist/engine/PairingEngine.d.ts +6 -1
  491. package/vendor/core/dist/engine/PairingEngine.d.ts.map +1 -1
  492. package/vendor/core/dist/engine/PairingEngine.js +23 -3
  493. package/vendor/core/dist/engine/PairingEngine.js.map +1 -1
  494. package/vendor/core/dist/engine/handleActions.d.ts.map +1 -1
  495. package/vendor/core/dist/engine/handleActions.js +67 -2
  496. package/vendor/core/dist/engine/handleActions.js.map +1 -1
  497. package/vendor/core/dist/version.d.ts +1 -1
  498. package/vendor/core/dist/version.js +1 -1
  499. package/vendor/core/package.json +1 -1
  500. package/vendor/protocol/dist/flows.d.ts +2 -0
  501. package/vendor/protocol/dist/flows.d.ts.map +1 -1
  502. package/vendor/protocol/package.json +1 -1
package/README.md CHANGED
@@ -354,6 +354,30 @@ watches navigation state, so overlays that do not change the pathname are
354
354
  skipped too). Returning from background past the lifecycle grace window
355
355
  re-fires the current screen.
356
356
 
357
+ ### Current screen auto-start
358
+
359
+ A React Native flow can auto-start when the current screen matches or does not
360
+ match a pattern. The pattern is compared to the same `screenName` this section
361
+ already sends. Matching is case-sensitive. A screen that has not been reported,
362
+ or an empty name, never matches — including "does not match".
363
+
364
+ - Expo Router: match the pathname (`/settings`, `/projects/123`). Route groups
365
+ are omitted, so `app/(tabs)/settings.tsx` is `/settings` and a pattern of
366
+ `/(tabs)/settings` never matches. Dynamic segments are filled in; `*` crosses
367
+ them (`/projects/*` matches `/projects/123` and `/projects/123/edit`, and does
368
+ not match `/projects`). `:name` matches exactly one segment
369
+ (`/projects/:id/edit` matches `/projects/123/edit`, not `/projects/123`).
370
+ - React Navigation and `Userflow.updateScreen`: match the route name
371
+ (`BillingSettings`). `Settings*` matches `SettingsProfile`.
372
+ - An app reports one of those values, not both. Write the pattern for the value
373
+ your integration sends.
374
+ - Modal and sheet presentations are not reported, so a pattern cannot target
375
+ them.
376
+ - The condition is offered on flow auto-start only. Banners, step triggers,
377
+ button conditions, and "hide flow when" do not use it.
378
+ - Leaving the screen does not stop a flow that already started. A "once"
379
+ frequency does not start it again.
380
+
357
381
  ### Expo Router
358
382
 
359
383
  Mount `UserflowExpoRouterScreenTracker` from the `@userflow-tech/react-native/expo-router`
@@ -524,12 +548,17 @@ heartbeat or foreground return.
524
548
 
525
549
  ## NAVIGATE actions
526
550
 
527
- Flow NAVIGATE buttons open URLs in this order:
551
+ Flow and banner **Navigate to page** button actions (and in-content links) open
552
+ URLs in this order:
528
553
 
529
554
  1. Host `onNavigate` from `Userflow.init({ onNavigate })` / `Userflow.setOnNavigate` (wins)
530
555
  2. http(s) / mailto / tel → Linking
531
556
  3. Path-like in-app URLs → Expo Router `push` or React Navigation `navigate`
532
- 4. Otherwise best-effort Linking
557
+ 4. Otherwise allowlisted http(s) / mailto / tel via Linking
558
+
559
+ In the builder **Navigate to page** action, use a full URL such as
560
+ `https://example.com` to open the system browser, a React Navigation screen
561
+ name such as `Profile`, or an Expo Router path such as `/settings`.
533
562
 
534
563
  Screen tracking ≠ action routing. React Navigation apps need
535
564
  `WithUserflowReactNavigation` for in-app NAVIGATE. Expo Router apps need
package/docs/anchoring.md CHANGED
@@ -354,7 +354,7 @@ When a tooltip cannot resolve / measure its target:
354
354
 
355
355
  | Behavior | After tolerance |
356
356
  | ---------------- | ------------------------------------------------------------------------------ |
357
- | `FLAG` (default) | Centered “Target not found” card; keeps remeasuring slowly for recovery |
357
+ | `FLAG` (default) | Centered “Target not found” card; keeps looking for the target to recover |
358
358
  | `ERROR` | Same missing UI as `FLAG` |
359
359
  | `BUBBLE` | Centered card with normal step content (modal-like fallback) |
360
360
  | `END` | Hides the flow UI (`null`); in draft/preview mode shows the missing UI instead |
@@ -362,6 +362,11 @@ When a tooltip cannot resolve / measure its target:
362
362
  Ambiguous ids, missing hosts, and zero-width/height measures all count as
363
363
  missing.
364
364
 
365
+ While the target is missing, the SDK keeps looking with a backoff (up to every
366
+ 4 s), looks again right away when the screen changes or the app returns to the
367
+ foreground, and within ~500 ms when a registered element mounts. Nothing runs
368
+ while the app is in the background.
369
+
365
370
  ## ELEMENT client conditions
366
371
 
367
372
  `PRESENT` / `NOT_PRESENT` / `CLICK` / `NOT_CLICK` resolve through
@@ -0,0 +1,36 @@
1
+ # Custom fonts (investigation)
2
+
3
+ Part 1 makes SDK content use the font the host app is already drawing when the theme is still on Userflow's default stack. This note is how a later ticket could let a customer choose a font the app does not already use. No loader is implemented here.
4
+
5
+ ## Where it would be configured
6
+
7
+ The Builder theme, the same place web already configures fonts:
8
+
9
+ - **System font** — the default CSS stack. On React Native this is the Part 1 behavior: the detected app font, or the platform font when nothing is detected.
10
+ - **Google font** (`builtinFontFamily`) — the family web loads from `fonts.googleapis.com`.
11
+ - **Custom family** — a family name the customer installs with theme custom CSS (`@font-face`). `fontCssUrl` is the legacy locked field for that stylesheet.
12
+
13
+ SDK init is only an escape hatch for a face already linked in the app binary, for example `fontFamily` passed at `Userflow.init` when the file cannot be downloaded. It is not the customer-facing control. The dashboard does not run on device, so a builder-only name still has to be resolved by the SDK.
14
+
15
+ ## How the SDK would load a face the app does not have
16
+
17
+ React Native `fontFamily` is one family name, not a CSS stack, and it only resolves a face registered in the process.
18
+
19
+ - **Already registered in the app.** Pass the PostScript name (iOS) or the file name without extension (Android). Part 1 detects this from host `Text` and does not download anything.
20
+ - **Bundled in the SDK.** Not viable for arbitrary customer fonts. There is nothing to ship ahead of time except faces Userflow itself hosts.
21
+ - **Hosted `ttf` or `otf`.** Download the file and register it the way `expo-font` does: `CTFontManager` on iOS, `ReactFontManager` on Android. The registered name has to match the font's internal family name. Web Google CSS is `woff2` and cannot be assigned to RN `fontFamily`. A follow-up should host the `ttf`/`otf` files, not reuse the Google CSS URL. Standard faces in the builder list (Arial, Georgia, and the rest in `backend/lib/userflow/videos/font_family.ex`) exist as web fallbacks and generally do not exist on iOS or Android, so they are not a mobile default.
22
+ - **WebView banners.** Native registration is not enough on Android. The banner HTML needs its own `@font-face` (file URL or a data URI). iOS `WKWebView` often sees fonts registered with `CTFontManager`, but that should not be the only path.
23
+
24
+ ## Platform constraints
25
+
26
+ - iOS and Android both require the font file to be registered before `Text` can use the name. A missing name logs an unrecognized-font warning and falls back to the platform face.
27
+ - RN does not synthesize bold or italic for a custom face. A follow-up must register the weight files the theme actually uses (`fontWeightNormal`, `fontWeightBold`, and the button weights). Part 1 does not copy the app's weight or style; size, weight, and color stay on the theme.
28
+ - Family names differ by platform for the same file. The loader has to record the name each platform registered, not assume the Google family string matches both.
29
+
30
+ ## Recommended follow-up
31
+
32
+ Medium effort, and it is a backend-then-SDK change if the theme gains a font-file URL.
33
+
34
+ 1. Host `ttf`/`otf` for the builtin Google families (the name list already lives in `backend/lib/userflow/videos/font_family.ex`), including the weights the theme uses.
35
+ 2. When `builtinFontFamily` is set, the SDK downloads and registers those files, then sets `fontFamily` to the registered name. Until that load finishes, keep the Part 1 app font so text never renders with a missing face.
36
+ 3. Leave custom `@font-face` CSS web-only until the theme has a real file URL the SDK can download. Do not parse arbitrary customer CSS for font files.
@@ -78,6 +78,32 @@ evaluated. `DISABLED`, `NOT_DISABLED`, and `MOUSEDOWN` are not.
78
78
  the four supported states, and tag the target with matching `userflowId`,
79
79
  `testID`, or `nativeID` (or `useUserflowAnchor('…')`). See [anchoring.md](anchoring.md).
80
80
 
81
+ ### Click conditions and gesture-handler controls
82
+
83
+ `RectButton`, `BorderlessButton`, `BaseButton`, the older gesture-handler
84
+ touchables, and a `GestureDetector` gesture with `.runOnJS(true)` still count
85
+ as a tap, including when they cancel React Native's touch. A plain React Native
86
+ `Pressable`, including one inside a `Modal`, counts through the normal touch
87
+ stream. A manual id on the view touched at the start of the press still matches
88
+ after that press navigates away, once a live scan no longer finds that id.
89
+
90
+ On-device checks of these controls (iOS 26, Android API 35) saw a normal touch
91
+ end, so that is the path those runs exercised. A control that instead cancels
92
+ the touch is counted when its handler later ends from `ACTIVE`. That hand-off
93
+ is covered by unit tests.
94
+
95
+ These do **not** count. `CLICK` stays false and `NOT_CLICK` stays true:
96
+
97
+ | Control | Why |
98
+ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
99
+ | A scroll in a gesture-handler `ScrollView`, `FlatList`, or `RefreshControl` | Those handlers set `disallowInterruption` and report no finger position, so a scroll must not latch the row it started on. A button inside the container still counts. |
100
+ | A worklet `GestureDetector` gesture that also cancels React Native's touch | The end stays on the UI thread and never arrives as `onGestureHandlerStateChange`. Add `.runOnJS(true)` if you can. A worklet gesture that leaves the touch stream alone still counts through the normal touch end. |
101
+ | The same controls on the old architecture (Paper) | That architecture does not deliver the state-change event this watches. React Native 0.86 is new-architecture only. |
102
+
103
+ A drag that starts on the control, a long press, and a finger that slides off
104
+ it are not taps. A tap in the first half-second after a flow closes can also
105
+ miss: the server has not re-tracked the condition yet.
106
+
81
107
  ### 2. Anchor / tooltip placement
82
108
 
83
109
  | Symptom | Likely cause |
@@ -94,12 +120,13 @@ Id matching: dashboard `#invite-teammates` ↔ `userflowId="invite-teammates"`,
94
120
 
95
121
  ### 3. Screen / provider
96
122
 
97
- | Symptom | Likely cause |
98
- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
99
- | No overlay at all | Missing `UserflowProvider` above the tree |
100
- | Wrong screen / flow never qualifies | Screen not reported — Expo Router needs `UserflowExpoRouterScreenTracker` under the provider; React Navigation needs `WithUserflowReactNavigation`; or call `updateScreen` / `useUserflowScreen` |
101
- | Works only after identify | Expected for server-driven sessions; `updateScreen` before identify only buffers |
102
- | No `screen_viewed` events | Identify has not run, or an overlay (modal/sheet) is focused — overlays are not screen views |
123
+ | Symptom | Likely cause |
124
+ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
125
+ | No overlay at all | Missing `UserflowProvider` above the tree |
126
+ | Wrong screen / flow never qualifies | Screen not reported — Expo Router needs `UserflowExpoRouterScreenTracker` under the provider; React Navigation needs `WithUserflowReactNavigation`; or call `updateScreen` / `useUserflowScreen` |
127
+ | "Current screen" auto-start never matches | Pattern does not equal the reported value: route groups are dropped (`/(tabs)/settings` is `/settings`), Expo Router sends a path while React Navigation sends a route name, or the focused route is a modal/sheet (not reported). `*` or `:name` covers dynamic segments (`/projects/*`, `/projects/:id`). An unreported or empty screen never matches, including "does not match". Matching is case-sensitive |
128
+ | Works only after identify | Expected for server-driven sessions; `updateScreen` before identify only buffers |
129
+ | No `screen_viewed` events | Identify has not run, or an overlay (modal/sheet) is focused — overlays are not screen views |
103
130
 
104
131
  ### 4. Connection
105
132
 
@@ -50,6 +50,9 @@ function contentSignature(inst) {
50
50
  const parts = [inst.childText, inst.accessibilityLabel, inst.iconName, inst.imageSrc].filter(part => !!part);
51
51
  return parts.length > 0 ? parts.join('\u0000') : undefined;
52
52
  }
53
+
54
+ /** Twin evidence for one registry group, computed once per settle. */
55
+
53
56
  class AutoAnchorRegistry {
54
57
  instances = new Map();
55
58
  byRegistryKey = new Map();
@@ -58,6 +61,22 @@ class AutoAnchorRegistry {
58
61
  liveContent = new Map();
59
62
  listeners = new Set();
60
63
  notifyScheduled = false;
64
+ /** Settled {@link AutoAnchorInstance.ambiguous} verdicts by instance id. */
65
+ ambiguity = new Map();
66
+ /**
67
+ * Groups whose verdicts are out of date: `r:` registry key, `t:` template
68
+ * path, `m:` manual id. Mounting a list or reading changed row labels marks
69
+ * a group once; it is settled once, on the next read of a verdict, instead
70
+ * of being recomputed for every member that changed.
71
+ */
72
+ staleGroups = new Set();
73
+ /**
74
+ * Set instead of {@link staleGroups} once that outgrows the registry: with
75
+ * no flow or element condition reading verdicts, marks from list mounts
76
+ * would otherwise pile up for the whole session.
77
+ */
78
+ allStale = false;
79
+ settling = false;
61
80
  registerInstance(input) {
62
81
  const instanceId = mintInstanceId();
63
82
  const hints = input.hints ?? undefined;
@@ -126,6 +145,7 @@ class AutoAnchorRegistry {
126
145
  childInstanceIds: [],
127
146
  ambiguous: false
128
147
  };
148
+ this.defineAmbiguity(instance);
129
149
  this.instances.set(instanceId, instance);
130
150
  this.addIndex(this.byRegistryKey, input.registryKey, instanceId);
131
151
  this.addIndex(this.byTemplatePath, templatePath, instanceId);
@@ -136,7 +156,7 @@ class AutoAnchorRegistry {
136
156
  const parent = this.instances.get(input.parentInstanceId);
137
157
  if (parent) parent.childInstanceIds.push(instanceId);
138
158
  }
139
- this.recomputeAmbiguity(input.registryKey, templatePath, manualId);
159
+ this.markStale(instance);
140
160
  this.notify();
141
161
  return {
142
162
  instanceId,
@@ -163,7 +183,7 @@ class AutoAnchorRegistry {
163
183
  if (nextManual) inst.manualId = nextManual;else delete inst.manualId;
164
184
  }
165
185
  this.refreshManualIndexes(inst, prevIds);
166
- this.recomputeAmbiguity(inst.registryKey, inst.templatePath, inst.manualId);
186
+ this.markStale(inst, prevIds.manualId, prevIds.userflowId, prevIds.testID);
167
187
  this.notify();
168
188
  }
169
189
  getInstance(instanceId) {
@@ -224,24 +244,27 @@ class AutoAnchorRegistry {
224
244
  *
225
245
  * Direct fiber pointers are preferred; the scan-root index is built lazily
226
246
  * and only if some instance cannot reach its fiber that way (Paper release
227
- * builds, mainly), then reused for the rest of the pass.
247
+ * builds, mainly), then reused for the rest of the pass. Finding which fiber
248
+ * of each pair is committed walks to the root; the pass shares one walk per
249
+ * ancestor across every instance.
228
250
  *
229
251
  * Silent — does not notify listeners.
230
252
  */
231
253
  refreshLiveContent(instances) {
232
254
  const list = instances ?? this.allInstances();
233
255
  const getIndex = (0, _indexHostFibers.createLazyHostFiberIndex)();
256
+ const resolveCurrent = (0, _fiberInternals.createCurrentFiberResolver)();
234
257
  const seen = new Set();
235
258
  for (const inst of list) {
236
259
  if (seen.has(inst.instanceId)) continue;
237
260
  seen.add(inst.instanceId);
238
- this.refreshOneLiveContent(inst, getIndex);
261
+ this.refreshOneLiveContent(inst, getIndex, resolveCurrent);
239
262
  }
240
263
  }
241
- refreshOneLiveContent(inst, getIndex) {
264
+ refreshOneLiveContent(inst, getIndex, resolveCurrent) {
242
265
  let fiber = null;
243
266
  try {
244
- fiber = (0, _indexHostFibers.lookupHostFiber)(getIndex, inst.ref.current);
267
+ fiber = (0, _indexHostFibers.lookupHostFiber)(getIndex, inst.ref.current, resolveCurrent);
245
268
  } catch {
246
269
  fiber = null;
247
270
  }
@@ -252,12 +275,18 @@ class AutoAnchorRegistry {
252
275
  } catch {
253
276
  props = undefined;
254
277
  }
278
+
279
+ // Same committed fiber and same props object means nothing was committed
280
+ // here since the last read, so the subtree walk would return what we
281
+ // already have. A commit that re-renders this host or anything inside it
282
+ // makes the other fiber of the pair current, even when the host keeps its
283
+ // props object. Both only change at commit, unlike Fabric's
284
+ // `canonical.currentProps`, which is written during render and stays the
285
+ // same object when only a child changed. Matters because resolution polls
286
+ // this for every registered instance.
255
287
  const cached = this.liveContent.get(inst.instanceId);
256
- // Same fiber and same props object means no re-render since the last read,
257
- // so the subtree walk would return what we already have. Matters because
258
- // resolution polls this for every registered instance.
259
288
  if (cached && cached.fiber === fiber && props !== undefined && cached.props === props) {
260
- inst.childText = cached.childText;
289
+ if (cached.childText !== undefined) inst.childText = cached.childText;
261
290
  return;
262
291
  }
263
292
  if (props) this.applyLiveIdentity(inst, props);
@@ -267,21 +296,19 @@ class AutoAnchorRegistry {
267
296
  } catch {
268
297
  live = undefined;
269
298
  }
270
- if (live) {
271
- const changed = inst.childText !== live;
299
+
300
+ // A host with no readable text is cached too, so it is not walked again
301
+ // until it re-renders; its build-time hint stays.
302
+ this.liveContent.set(inst.instanceId, {
303
+ fiber,
304
+ props,
305
+ childText: live
306
+ });
307
+ if (live && inst.childText !== live) {
272
308
  inst.childText = live;
273
- this.liveContent.set(inst.instanceId, {
274
- fiber,
275
- props,
276
- childText: live
277
- });
278
309
  // Text is what separates helper-rendered twins, so the group's ambiguity
279
310
  // verdict is only trustworthy once it has been read.
280
- if (changed) this.recomputeAmbiguity(inst.registryKey, inst.templatePath, inst.manualId);
281
- return;
282
- }
283
- if (cached && cached.fiber !== fiber) {
284
- this.liveContent.delete(inst.instanceId);
311
+ this.markStale(inst);
285
312
  }
286
313
  }
287
314
 
@@ -304,7 +331,7 @@ class AutoAnchorRegistry {
304
331
  inst.manualId = liveTestID;
305
332
  }
306
333
  this.refreshManualIndexes(inst, prev);
307
- this.recomputeAmbiguity(inst.registryKey, inst.templatePath, inst.manualId);
334
+ this.markStale(inst, prev.manualId, prev.userflowId, prev.testID);
308
335
  }
309
336
  subscribe(listener) {
310
337
  this.listeners.add(listener);
@@ -340,6 +367,9 @@ class AutoAnchorRegistry {
340
367
  this.byManualId.clear();
341
368
  this.byTemplatePath.clear();
342
369
  this.liveContent.clear();
370
+ this.ambiguity.clear();
371
+ this.staleGroups.clear();
372
+ this.allStale = false;
343
373
  this.notifyScheduled = false;
344
374
  nextInstanceSeq = 1;
345
375
  }
@@ -358,12 +388,13 @@ class AutoAnchorRegistry {
358
388
  }
359
389
  this.instances.delete(instanceId);
360
390
  this.liveContent.delete(instanceId);
391
+ this.ambiguity.delete(instanceId);
361
392
  this.removeIndex(this.byRegistryKey, inst.registryKey, instanceId);
362
393
  this.removeIndex(this.byTemplatePath, inst.templatePath, instanceId);
363
394
  if (inst.manualId) this.removeIndex(this.byManualId, inst.manualId, instanceId);
364
395
  if (inst.userflowId) this.removeIndex(this.byManualId, inst.userflowId, instanceId);
365
396
  if (inst.testID) this.removeIndex(this.byManualId, inst.testID, instanceId);
366
- this.recomputeAmbiguity(inst.registryKey, inst.templatePath, inst.manualId);
397
+ this.markStale(inst);
367
398
  this.notify();
368
399
  }
369
400
  refreshManualIndexes(inst, prev) {
@@ -395,25 +426,104 @@ class AutoAnchorRegistry {
395
426
  return false;
396
427
  }
397
428
 
429
+ /**
430
+ * Back {@link AutoAnchorInstance.ambiguous} with a verdict that is settled on
431
+ * read, so callers holding an instance always see the current value.
432
+ */
433
+ defineAmbiguity(inst) {
434
+ const id = inst.instanceId;
435
+ Object.defineProperty(inst, 'ambiguous', {
436
+ configurable: true,
437
+ enumerable: true,
438
+ get: () => {
439
+ this.settleAmbiguity();
440
+ return this.ambiguity.get(id) ?? false;
441
+ },
442
+ set: value => {
443
+ this.ambiguity.set(id, value);
444
+ }
445
+ });
446
+ }
447
+
448
+ /** Every group `inst` belongs to, plus ids it was indexed under before a change. */
449
+ markStale(inst, ...previousIds) {
450
+ if (this.allStale) return;
451
+ this.staleGroups.add(`r:${inst.registryKey}`);
452
+ this.staleGroups.add(`t:${inst.templatePath}`);
453
+ for (const id of [inst.manualId, inst.userflowId, inst.testID, ...previousIds]) {
454
+ if (id) this.staleGroups.add(`m:${id}`);
455
+ }
456
+ // Settling every instance is linear in the registry, so past this size
457
+ // tracking groups no longer saves work.
458
+ if (this.staleGroups.size > this.instances.size) {
459
+ this.allStale = true;
460
+ this.staleGroups.clear();
461
+ }
462
+ }
463
+ groupIds(groupKey) {
464
+ const value = groupKey.slice(2);
465
+ if (groupKey.startsWith('r:')) return this.byRegistryKey.get(value);
466
+ if (groupKey.startsWith('t:')) return this.byTemplatePath.get(value);
467
+ return this.byManualId.get(value);
468
+ }
469
+
398
470
  /**
399
471
  * Instances sharing a template path are only twins while they look alike.
400
472
  * Four rows from one `field()` helper are indistinguishable at register time
401
473
  * and separate once their labels are read, so ambiguity is decided on
402
474
  * content, not on the shared path alone. An instance stays ambiguous when it
403
475
  * carries no content of its own, or when a peer carries the same content.
476
+ * An instance with a manual id is ambiguous only when another shares the id.
477
+ *
478
+ * Each stale group is settled once, in time linear in its size: recomputing
479
+ * a whole group for every member that changed made a list whose labels all
480
+ * changed cost the cube of its length.
404
481
  */
405
- recomputeAmbiguity(registryKey, templatePath, manualId) {
406
- const mark = list => {
407
- for (const i of list) {
408
- i.ambiguous = this.isTwinWithin(i, list) || (i.manualId ? this.getInstancesByManualId(i.manualId).length > 1 : false);
482
+ settleAmbiguity() {
483
+ if (this.staleGroups.size === 0 && !this.allStale || this.settling) return;
484
+ this.settling = true;
485
+ try {
486
+ const affected = new Set(this.allStale ? this.instances.keys() : []);
487
+ for (const groupKey of this.staleGroups) {
488
+ const ids = this.groupIds(groupKey);
489
+ if (ids) for (const id of ids) affected.add(id);
409
490
  }
410
- };
411
- mark(this.getInstancesByRegistryKey(registryKey));
412
- mark(this.getInstancesByTemplatePath(templatePath));
413
- if (manualId) {
414
- const list = this.getInstancesByManualId(manualId);
415
- for (const i of list) i.ambiguous = list.length > 1;
491
+ this.staleGroups.clear();
492
+ this.allStale = false;
493
+ const twinGroups = new Map();
494
+ for (const id of affected) {
495
+ const inst = this.instances.get(id);
496
+ if (!inst) continue;
497
+ this.ambiguity.set(id, this.computeAmbiguous(inst, twinGroups));
498
+ }
499
+ } finally {
500
+ this.settling = false;
501
+ }
502
+ }
503
+ computeAmbiguous(inst, twinGroups) {
504
+ if (inst.manualId) return (this.byManualId.get(inst.manualId)?.size ?? 0) > 1;
505
+ return this.isTwinInGroup(inst, `r:${inst.registryKey}`, twinGroups) || this.isTwinInGroup(inst, `t:${inst.templatePath}`, twinGroups);
506
+ }
507
+
508
+ /** {@link isTwinWithin} against a whole registry group, with the group's evidence memoized. */
509
+ isTwinInGroup(inst, groupKey, twinGroups) {
510
+ let group = twinGroups.get(groupKey);
511
+ if (!group) {
512
+ const members = this.idsToInstances(this.groupIds(groupKey));
513
+ const signatures = new Map();
514
+ for (const member of members) {
515
+ const sig = contentSignature(member);
516
+ if (sig) signatures.set(sig, (signatures.get(sig) ?? 0) + 1);
517
+ }
518
+ group = {
519
+ unlabelled: members.length > 1 && members.every(member => !member.manualId),
520
+ signatures
521
+ };
522
+ twinGroups.set(groupKey, group);
416
523
  }
524
+ if (!group.unlabelled) return false;
525
+ const sig = contentSignature(inst);
526
+ return !sig || (group.signatures.get(sig) ?? 0) > 1;
417
527
  }
418
528
  addIndex(map, key, instanceId) {
419
529
  let set = map.get(key);
@@ -1 +1 @@
1
- {"version":3,"names":["_fiberInternals","require","_indexHostFibers","_readHostContent","PRESSABLE_KINDS","Set","roleForKind","kind","has","nextInstanceSeq","mintInstanceId","id","toString","siblingGroupKey","inst","path","templatePath","structuralPath","idx","lastIndexOf","slice","contentSignature","parts","childText","accessibilityLabel","iconName","imageSrc","filter","part","length","join","undefined","AutoAnchorRegistry","instances","Map","byRegistryKey","byManualId","byTemplatePath","liveContent","listeners","notifyScheduled","registerInstance","input","instanceId","hints","role","ufid","registryKey","runtime","manualId","userflowId","literalUserflowId","testID","literalTestId","nativeID","startsWith","nativeId","literalLabel","instance","ref","isPressable","instanceScope","childShape","ancestors","ordinal","siblingIndex","parentInstanceId","childInstanceIds","ambiguous","set","addIndex","parent","get","push","recomputeAmbiguity","notify","dispose","unregisterInstance","updateInstance","patch","keys","Object","every","key","is","prevIds","assign","nextManual","refreshManualIndexes","getInstance","getInstancesByRegistryKey","idsToInstances","getInstancesByManualId","getInstancesByTemplatePath","allInstances","Array","from","values","orderedSiblingsIncludingSelf","group","i","sort","a","b","map","siblingWindow","windowSize","ordered","findIndex","previous","next","toDesc","text","Math","max","refreshLiveContent","list","getIndex","createLazyHostFiberIndex","seen","add","refreshOneLiveContent","fiber","lookupHostFiber","current","props","getLiveHostProps","cached","applyLiveIdentity","live","readHostPlaceholder","readHostText","changed","delete","raw","liveTestID","trim","prev","subscribe","listener","isAmbiguousKey","byKey","some","byManual","isAmbiguousAmong","include","peers","isTwinWithin","clear","childId","child","removeIndex","prevKeys","k","nextKeys","unlabelled","sig","count","peer","mark","size","out","flush","l","queueMicrotask","Promise","resolve","then","exports","autoAnchorRegistry"],"sourceRoot":"../../../src","sources":["anchors/AutoAnchorRegistry.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_fiberInternals","require","_indexHostFibers","_readHostContent","PRESSABLE_KINDS","Set","roleForKind","kind","has","nextInstanceSeq","mintInstanceId","id","toString","siblingGroupKey","inst","path","templatePath","structuralPath","idx","lastIndexOf","slice","contentSignature","parts","childText","accessibilityLabel","iconName","imageSrc","filter","part","length","join","undefined","AutoAnchorRegistry","instances","Map","byRegistryKey","byManualId","byTemplatePath","liveContent","listeners","notifyScheduled","ambiguity","staleGroups","allStale","settling","registerInstance","input","instanceId","hints","role","ufid","registryKey","runtime","manualId","userflowId","literalUserflowId","testID","literalTestId","nativeID","startsWith","nativeId","literalLabel","instance","ref","isPressable","instanceScope","childShape","ancestors","ordinal","siblingIndex","parentInstanceId","childInstanceIds","ambiguous","defineAmbiguity","set","addIndex","parent","get","push","markStale","notify","dispose","unregisterInstance","updateInstance","patch","keys","Object","every","key","is","prevIds","assign","nextManual","refreshManualIndexes","getInstance","getInstancesByRegistryKey","idsToInstances","getInstancesByManualId","getInstancesByTemplatePath","allInstances","Array","from","values","orderedSiblingsIncludingSelf","group","i","sort","a","b","map","siblingWindow","windowSize","ordered","findIndex","previous","next","toDesc","text","Math","max","refreshLiveContent","list","getIndex","createLazyHostFiberIndex","resolveCurrent","createCurrentFiberResolver","seen","add","refreshOneLiveContent","fiber","lookupHostFiber","current","props","getLiveHostProps","cached","applyLiveIdentity","live","readHostPlaceholder","readHostText","raw","liveTestID","trim","prev","subscribe","listener","delete","isAmbiguousKey","byKey","some","byManual","isAmbiguousAmong","include","peers","isTwinWithin","clear","childId","child","removeIndex","prevKeys","k","nextKeys","unlabelled","sig","count","peer","defineProperty","configurable","enumerable","settleAmbiguity","value","previousIds","size","groupIds","groupKey","affected","ids","twinGroups","computeAmbiguous","isTwinInGroup","members","signatures","member","out","flush","l","queueMicrotask","Promise","resolve","then","exports","autoAnchorRegistry"],"sourceRoot":"../../../src","sources":["anchors/AutoAnchorRegistry.ts"],"mappings":"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","ignoreList":[]}
@@ -7,14 +7,22 @@ exports.addAnimationFrameCallback = addAnimationFrameCallback;
7
7
  exports.animationFrameSubscriberCount = animationFrameSubscriberCount;
8
8
  exports.removeAnimationFrameCallback = removeAnimationFrameCallback;
9
9
  exports.resetAnimationFrameForTests = resetAnimationFrameForTests;
10
+ var _appActive = require("./appActive.js");
10
11
  /**
11
12
  * Shared requestAnimationFrame hub so multiple surfaces never stack loops.
12
13
  * Mirrors web userflowjs `util/animation-frame.tsx`.
14
+ *
15
+ * Paused while the app is not active. In bridgeless React Native,
16
+ * `requestAnimationFrame` is a 0 ms timer, and once the app is backgrounded
17
+ * iOS fires timers from an NSTimer instead of the display link, so a loop that
18
+ * kept going would spin as fast as the JS thread allows.
13
19
  */
14
20
 
15
21
  const callbacks = [];
16
22
  let rafHandle = null;
17
23
  let active = false;
24
+ let appActive = true;
25
+ let unsubscribeAppActive = null;
18
26
 
19
27
  /**
20
28
  * `callback` runs on every animation frame. Starts the shared loop when the
@@ -25,6 +33,7 @@ function addAnimationFrameCallback(callback) {
25
33
  callbacks.push(callback);
26
34
  if (callbacks.length === 1) {
27
35
  active = true;
36
+ watchAppState();
28
37
  requestNext();
29
38
  }
30
39
  }
@@ -40,6 +49,7 @@ function removeAnimationFrameCallback(callback) {
40
49
  if (callbacks.length === 0) {
41
50
  active = false;
42
51
  cancelPending();
52
+ unwatchAppState();
43
53
  }
44
54
  }
45
55
 
@@ -48,6 +58,7 @@ function resetAnimationFrameForTests() {
48
58
  callbacks.length = 0;
49
59
  active = false;
50
60
  cancelPending();
61
+ unwatchAppState();
51
62
  }
52
63
 
53
64
  /** Test helper — number of active subscribers. */
@@ -67,8 +78,25 @@ function onAnimationFrame() {
67
78
  }
68
79
  requestNext();
69
80
  }
81
+ function watchAppState() {
82
+ if (unsubscribeAppActive) return;
83
+ appActive = (0, _appActive.isAppActive)();
84
+ unsubscribeAppActive = (0, _appActive.subscribeAppActive)(next => {
85
+ appActive = next;
86
+ if (!next) {
87
+ cancelPending();
88
+ } else if (rafHandle == null) {
89
+ requestNext();
90
+ }
91
+ });
92
+ }
93
+ function unwatchAppState() {
94
+ unsubscribeAppActive?.();
95
+ unsubscribeAppActive = null;
96
+ appActive = true;
97
+ }
70
98
  function requestNext() {
71
- if (!active) return;
99
+ if (!active || !appActive) return;
72
100
  const raf = typeof globalThis.requestAnimationFrame === 'function' ? globalThis.requestAnimationFrame.bind(globalThis) : null;
73
101
  if (raf) {
74
102
  rafHandle = raf(onAnimationFrame);