one 1.10.6 → 1.11.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 (828) hide show
  1. package/dist/cjs/Root.cjs +11 -2
  2. package/dist/cjs/Root.js +5 -2
  3. package/dist/cjs/Root.js.map +1 -1
  4. package/dist/cjs/Root.native.js +18 -18
  5. package/dist/cjs/Root.native.js.map +1 -1
  6. package/dist/cjs/babel-plugins/inline-one-server-url.cjs +41 -0
  7. package/dist/cjs/babel-plugins/inline-one-server-url.js +34 -0
  8. package/dist/cjs/babel-plugins/inline-one-server-url.js.map +6 -0
  9. package/dist/cjs/babel-plugins/inline-one-server-url.native.js +48 -0
  10. package/dist/cjs/babel-plugins/inline-one-server-url.native.js.map +1 -0
  11. package/dist/cjs/cli/build.cjs +88 -29
  12. package/dist/cjs/cli/build.js +85 -28
  13. package/dist/cjs/cli/build.js.map +1 -1
  14. package/dist/cjs/cli/build.native.js +105 -35
  15. package/dist/cjs/cli/build.native.js.map +1 -1
  16. package/dist/cjs/cli/buildPage.cjs +24 -12
  17. package/dist/cjs/cli/buildPage.js +20 -14
  18. package/dist/cjs/cli/buildPage.js.map +1 -1
  19. package/dist/cjs/cli/buildPage.native.js +29 -18
  20. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  21. package/dist/cjs/cli/buildPageWorker.cjs +9 -15
  22. package/dist/cjs/cli/buildPageWorker.js +11 -12
  23. package/dist/cjs/cli/buildPageWorker.js.map +1 -1
  24. package/dist/cjs/cli/buildPageWorker.native.js +5 -16
  25. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  26. package/dist/cjs/cli/patch.cjs +3 -3
  27. package/dist/cjs/cli/patch.js +3 -3
  28. package/dist/cjs/cli/patch.js.map +1 -1
  29. package/dist/cjs/cli/patch.native.js +3 -3
  30. package/dist/cjs/cli/patch.native.js.map +1 -1
  31. package/dist/cjs/cli/securityScan.cjs +123 -0
  32. package/dist/cjs/cli/securityScan.js +134 -0
  33. package/dist/cjs/cli/securityScan.js.map +6 -0
  34. package/dist/cjs/cli/securityScan.native.js +205 -0
  35. package/dist/cjs/cli/securityScan.native.js.map +1 -0
  36. package/dist/cjs/cli/workerPool.cjs +4 -3
  37. package/dist/cjs/cli/workerPool.js +3 -3
  38. package/dist/cjs/cli/workerPool.js.map +1 -1
  39. package/dist/cjs/cli/workerPool.native.js +4 -3
  40. package/dist/cjs/cli/workerPool.native.js.map +1 -1
  41. package/dist/cjs/cli.cjs +13 -2
  42. package/dist/cjs/cli.js +12 -2
  43. package/dist/cjs/cli.js.map +1 -1
  44. package/dist/cjs/cli.native.js +13 -2
  45. package/dist/cjs/cli.native.js.map +1 -1
  46. package/dist/cjs/createApp.cjs +130 -64
  47. package/dist/cjs/createApp.js +97 -24
  48. package/dist/cjs/createApp.js.map +1 -1
  49. package/dist/cjs/createHandleRequest.cjs +58 -35
  50. package/dist/cjs/createHandleRequest.js +29 -18
  51. package/dist/cjs/createHandleRequest.js.map +1 -1
  52. package/dist/cjs/createHandleRequest.native.js +66 -41
  53. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  54. package/dist/cjs/daemon/tui.js.map +1 -1
  55. package/dist/cjs/fork/NavigationContainer.cjs +26 -3
  56. package/dist/cjs/fork/NavigationContainer.js +12 -4
  57. package/dist/cjs/fork/NavigationContainer.js.map +1 -1
  58. package/dist/cjs/fork/NavigationContainer.native.js +25 -2
  59. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  60. package/dist/cjs/fork/SSRNavigationContainer.cjs +105 -0
  61. package/dist/cjs/fork/SSRNavigationContainer.js +66 -0
  62. package/dist/cjs/fork/SSRNavigationContainer.js.map +6 -0
  63. package/dist/cjs/fork/SSRNavigationContainer.native.js +119 -0
  64. package/dist/cjs/fork/SSRNavigationContainer.native.js.map +1 -0
  65. package/dist/cjs/fork/getPathFromState.cjs +10 -5
  66. package/dist/cjs/fork/getPathFromState.js +5 -5
  67. package/dist/cjs/fork/getPathFromState.js.map +1 -1
  68. package/dist/cjs/fork/getPathFromState.native.js +10 -5
  69. package/dist/cjs/fork/getPathFromState.native.js.map +1 -1
  70. package/dist/cjs/fork/getStateFromPath-mods.cjs +1 -1
  71. package/dist/cjs/fork/getStateFromPath-mods.js +1 -1
  72. package/dist/cjs/fork/getStateFromPath-mods.js.map +1 -1
  73. package/dist/cjs/fork/getStateFromPath-mods.native.js +1 -1
  74. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
  75. package/dist/cjs/fork/navigationThemes.cjs +84 -0
  76. package/dist/cjs/fork/navigationThemes.js +54 -0
  77. package/dist/cjs/fork/navigationThemes.js.map +6 -0
  78. package/dist/cjs/fork/navigationThemes.native.js +87 -0
  79. package/dist/cjs/fork/navigationThemes.native.js.map +1 -0
  80. package/dist/cjs/fork/useLinking.cjs +11 -1
  81. package/dist/cjs/fork/useLinking.js +10 -1
  82. package/dist/cjs/fork/useLinking.js.map +1 -1
  83. package/dist/cjs/fork/useLinking.native.js +1 -1
  84. package/dist/cjs/fork/useLinking.native.js.map +1 -1
  85. package/dist/cjs/getReactNavigationConfig.cjs +3 -1
  86. package/dist/cjs/getReactNavigationConfig.js +2 -2
  87. package/dist/cjs/getReactNavigationConfig.js.map +1 -1
  88. package/dist/cjs/getReactNavigationConfig.native.js +3 -1
  89. package/dist/cjs/getReactNavigationConfig.native.js.map +1 -1
  90. package/dist/cjs/index.cjs +2 -0
  91. package/dist/cjs/index.js +2 -1
  92. package/dist/cjs/index.js.map +1 -1
  93. package/dist/cjs/index.native.js +2 -0
  94. package/dist/cjs/index.native.js.map +1 -1
  95. package/dist/cjs/layouts/stack-utils/StackScreen.cjs +15 -1
  96. package/dist/cjs/layouts/stack-utils/StackScreen.js +27 -1
  97. package/dist/cjs/layouts/stack-utils/StackScreen.js.map +1 -1
  98. package/dist/cjs/layouts/stack-utils/StackScreen.native.js +18 -1
  99. package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
  100. package/dist/cjs/layouts/stack-utils/index.cjs +2 -1
  101. package/dist/cjs/layouts/stack-utils/index.js +2 -1
  102. package/dist/cjs/layouts/stack-utils/index.js.map +1 -1
  103. package/dist/cjs/layouts/stack-utils/index.native.js +2 -1
  104. package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
  105. package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +3 -1
  106. package/dist/cjs/metro-config/getViteMetroPluginOptions.js +3 -1
  107. package/dist/cjs/metro-config/getViteMetroPluginOptions.js.map +1 -1
  108. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +3 -1
  109. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  110. package/dist/cjs/reactNavigationImports.cjs +33 -0
  111. package/dist/cjs/reactNavigationImports.js +28 -0
  112. package/dist/cjs/reactNavigationImports.js.map +6 -0
  113. package/dist/cjs/reactNavigationImports.native.js +36 -0
  114. package/dist/cjs/reactNavigationImports.native.js.map +1 -0
  115. package/dist/cjs/reactNavigationImports.server.cjs +51 -0
  116. package/dist/cjs/reactNavigationImports.server.js +42 -0
  117. package/dist/cjs/reactNavigationImports.server.js.map +6 -0
  118. package/dist/cjs/reactNavigationImports.server.native.js +56 -0
  119. package/dist/cjs/reactNavigationImports.server.native.js.map +1 -0
  120. package/dist/cjs/router/findRouteNode.cjs +4 -4
  121. package/dist/cjs/router/findRouteNode.js +4 -4
  122. package/dist/cjs/router/findRouteNode.js.map +1 -1
  123. package/dist/cjs/router/findRouteNode.native.js +4 -4
  124. package/dist/cjs/router/findRouteNode.native.js.map +1 -1
  125. package/dist/cjs/router/isIndexPath.cjs +1 -0
  126. package/dist/cjs/router/isIndexPath.js +2 -0
  127. package/dist/cjs/router/isIndexPath.js.map +1 -1
  128. package/dist/cjs/router/isIndexPath.native.js +3 -2
  129. package/dist/cjs/router/isIndexPath.native.js.map +1 -1
  130. package/dist/cjs/router/linkingConfig.cjs +19 -2
  131. package/dist/cjs/router/linkingConfig.js +18 -2
  132. package/dist/cjs/router/linkingConfig.js.map +1 -1
  133. package/dist/cjs/router/linkingConfig.native.js +21 -2
  134. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  135. package/dist/cjs/router/router.cjs +30 -24
  136. package/dist/cjs/router/router.js +23 -20
  137. package/dist/cjs/router/router.js.map +2 -2
  138. package/dist/cjs/router/router.native.js +21 -14
  139. package/dist/cjs/router/router.native.js.map +1 -1
  140. package/dist/cjs/router/useInitializeOneRouter.cjs +25 -9
  141. package/dist/cjs/router/useInitializeOneRouter.js +21 -8
  142. package/dist/cjs/router/useInitializeOneRouter.js.map +1 -1
  143. package/dist/cjs/router/useInitializeOneRouter.native.js +23 -7
  144. package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
  145. package/dist/cjs/router/useScreens.cjs +30 -11
  146. package/dist/cjs/router/useScreens.js +47 -21
  147. package/dist/cjs/router/useScreens.js.map +1 -1
  148. package/dist/cjs/router/useScreens.native.js +25 -10
  149. package/dist/cjs/router/useScreens.native.js.map +1 -1
  150. package/dist/cjs/screensFeatureFlags.cjs +37 -0
  151. package/dist/cjs/screensFeatureFlags.js +31 -0
  152. package/dist/cjs/screensFeatureFlags.js.map +6 -0
  153. package/dist/cjs/screensFeatureFlags.native.js +40 -0
  154. package/dist/cjs/screensFeatureFlags.native.js.map +1 -0
  155. package/dist/cjs/serve.cjs +27 -3
  156. package/dist/cjs/serve.js +26 -3
  157. package/dist/cjs/serve.js.map +1 -1
  158. package/dist/cjs/serve.native.js +36 -4
  159. package/dist/cjs/serve.native.js.map +1 -1
  160. package/dist/cjs/server/ServerContextScript.cjs +14 -5
  161. package/dist/cjs/server/ServerContextScript.js +12 -6
  162. package/dist/cjs/server/ServerContextScript.js.map +1 -1
  163. package/dist/cjs/server/ServerContextScript.native.js +18 -6
  164. package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
  165. package/dist/cjs/server/oneServe.cjs +279 -182
  166. package/dist/cjs/server/oneServe.js +105 -30
  167. package/dist/cjs/server/oneServe.js.map +1 -1
  168. package/dist/cjs/server/oneServe.native.js +334 -215
  169. package/dist/cjs/server/oneServe.native.js.map +1 -1
  170. package/dist/cjs/server/ssrLoaderData.cjs +30 -0
  171. package/dist/cjs/server/ssrLoaderData.js +25 -0
  172. package/dist/cjs/server/ssrLoaderData.js.map +6 -0
  173. package/dist/cjs/server/ssrLoaderData.native.js +33 -0
  174. package/dist/cjs/server/ssrLoaderData.native.js.map +1 -0
  175. package/dist/cjs/server-render.cjs +22 -22
  176. package/dist/cjs/server-render.js +11 -15
  177. package/dist/cjs/server-render.js.map +1 -1
  178. package/dist/cjs/server-render.native.js +18 -38
  179. package/dist/cjs/server-render.native.js.map +1 -1
  180. package/dist/cjs/ui/Slot.cjs +1 -0
  181. package/dist/cjs/ui/Slot.js +4 -0
  182. package/dist/cjs/ui/Slot.js.map +1 -1
  183. package/dist/cjs/ui/Slot.native.js +1 -0
  184. package/dist/cjs/ui/Slot.native.js.map +1 -1
  185. package/dist/cjs/ui/TabRouter.cjs +32 -19
  186. package/dist/cjs/ui/TabRouter.js +18 -2
  187. package/dist/cjs/ui/TabRouter.js.map +1 -1
  188. package/dist/cjs/ui/TabRouter.native.js +13 -0
  189. package/dist/cjs/ui/TabRouter.native.js.map +1 -1
  190. package/dist/cjs/ui/TabTrigger.cjs +2 -2
  191. package/dist/cjs/ui/TabTrigger.js +1 -1
  192. package/dist/cjs/ui/TabTrigger.js.map +1 -1
  193. package/dist/cjs/ui/TabTrigger.native.js +2 -2
  194. package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
  195. package/dist/cjs/useLoader.cjs +39 -9
  196. package/dist/cjs/useLoader.js +33 -9
  197. package/dist/cjs/useLoader.js.map +2 -2
  198. package/dist/cjs/useLoader.native.js +48 -11
  199. package/dist/cjs/useLoader.native.js.map +1 -1
  200. package/dist/cjs/utils/isRolldown.cjs +8 -24
  201. package/dist/cjs/utils/isRolldown.js +6 -20
  202. package/dist/cjs/utils/isRolldown.js.map +1 -1
  203. package/dist/cjs/utils/isRolldown.native.js +8 -25
  204. package/dist/cjs/utils/isRolldown.native.js.map +1 -1
  205. package/dist/cjs/utils/removeParams.cjs +52 -0
  206. package/dist/cjs/utils/removeParams.js +40 -0
  207. package/dist/cjs/utils/removeParams.js.map +6 -0
  208. package/dist/cjs/utils/removeParams.native.js +71 -0
  209. package/dist/cjs/utils/removeParams.native.js.map +1 -0
  210. package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +7 -5
  211. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +7 -5
  212. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  213. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +7 -4
  214. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  215. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +2 -2
  216. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +2 -2
  217. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
  218. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +2 -1
  219. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  220. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +3 -2
  221. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +2 -2
  222. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  223. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +3 -2
  224. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  225. package/dist/cjs/views/Navigator.cjs +1 -0
  226. package/dist/cjs/views/Navigator.js +2 -0
  227. package/dist/cjs/views/Navigator.js.map +1 -1
  228. package/dist/cjs/views/Navigator.native.js +1 -0
  229. package/dist/cjs/views/Navigator.native.js.map +1 -1
  230. package/dist/cjs/vite/one-server-only.cjs +6 -3
  231. package/dist/cjs/vite/one-server-only.js +3 -3
  232. package/dist/cjs/vite/one-server-only.js.map +1 -1
  233. package/dist/cjs/vite/one-server-only.native.js +6 -0
  234. package/dist/cjs/vite/one-server-only.native.js.map +1 -1
  235. package/dist/cjs/vite/one.cjs +75 -29
  236. package/dist/cjs/vite/one.js +93 -24
  237. package/dist/cjs/vite/one.js.map +2 -2
  238. package/dist/cjs/vite/one.native.js +143 -34
  239. package/dist/cjs/vite/one.native.js.map +1 -1
  240. package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
  241. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  242. package/dist/cjs/vite/plugins/criticalCSSPlugin.cjs +59 -0
  243. package/dist/cjs/vite/plugins/criticalCSSPlugin.js +52 -0
  244. package/dist/cjs/vite/plugins/criticalCSSPlugin.js.map +6 -0
  245. package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js +78 -0
  246. package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -0
  247. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.cjs +160 -0
  248. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.js +126 -0
  249. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.js.map +6 -0
  250. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js +165 -0
  251. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -0
  252. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +2 -2
  253. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +2 -2
  254. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  255. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +2 -2
  256. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  257. package/dist/cjs/vite/plugins/fixDependenciesPlugin.cjs +2 -8
  258. package/dist/cjs/vite/plugins/fixDependenciesPlugin.js +2 -8
  259. package/dist/cjs/vite/plugins/fixDependenciesPlugin.js.map +1 -1
  260. package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js +2 -8
  261. package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
  262. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.cjs +6 -14
  263. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.js +8 -11
  264. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.js.map +1 -1
  265. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js +6 -18
  266. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
  267. package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +11 -6
  268. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js +12 -7
  269. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js.map +1 -1
  270. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +12 -7
  271. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  272. package/dist/cjs/vite/plugins/warmRoutesPlugin.cjs +98 -0
  273. package/dist/cjs/vite/plugins/warmRoutesPlugin.js +95 -0
  274. package/dist/cjs/vite/plugins/warmRoutesPlugin.js.map +6 -0
  275. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js +134 -0
  276. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -0
  277. package/dist/cjs/vite/replaceLoader.cjs +1 -1
  278. package/dist/cjs/vite/replaceLoader.js +1 -1
  279. package/dist/cjs/vite/replaceLoader.js.map +1 -1
  280. package/dist/cjs/vite/replaceLoader.native.js +1 -1
  281. package/dist/cjs/vite/replaceLoader.native.js.map +1 -1
  282. package/dist/cjs/vite/resolveResponse.cjs +20 -8
  283. package/dist/cjs/vite/resolveResponse.js +22 -7
  284. package/dist/cjs/vite/resolveResponse.js.map +1 -1
  285. package/dist/cjs/vite/resolveResponse.native.js +20 -8
  286. package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
  287. package/dist/cjs/vite-auto-warm.cjs +26 -0
  288. package/dist/cjs/vite-auto-warm.js +21 -0
  289. package/dist/cjs/vite-auto-warm.js.map +6 -0
  290. package/dist/cjs/vite-auto-warm.native.js +29 -0
  291. package/dist/cjs/vite-auto-warm.native.js.map +1 -0
  292. package/dist/cjs/vite.cjs +3 -1
  293. package/dist/cjs/vite.js +2 -1
  294. package/dist/cjs/vite.js.map +1 -1
  295. package/dist/cjs/vite.native.js +3 -1
  296. package/dist/cjs/vite.native.js.map +1 -1
  297. package/dist/esm/Root.js +7 -2
  298. package/dist/esm/Root.js.map +1 -1
  299. package/dist/esm/Root.mjs +12 -3
  300. package/dist/esm/Root.mjs.map +1 -1
  301. package/dist/esm/Root.native.js +19 -19
  302. package/dist/esm/Root.native.js.map +1 -1
  303. package/dist/esm/babel-plugins/inline-one-server-url.js +18 -0
  304. package/dist/esm/babel-plugins/inline-one-server-url.js.map +6 -0
  305. package/dist/esm/babel-plugins/inline-one-server-url.mjs +18 -0
  306. package/dist/esm/babel-plugins/inline-one-server-url.mjs.map +1 -0
  307. package/dist/esm/babel-plugins/inline-one-server-url.native.js +22 -0
  308. package/dist/esm/babel-plugins/inline-one-server-url.native.js.map +1 -0
  309. package/dist/esm/cli/build.js +86 -27
  310. package/dist/esm/cli/build.js.map +1 -1
  311. package/dist/esm/cli/build.mjs +87 -28
  312. package/dist/esm/cli/build.mjs.map +1 -1
  313. package/dist/esm/cli/build.native.js +104 -34
  314. package/dist/esm/cli/build.native.js.map +1 -1
  315. package/dist/esm/cli/buildPage.js +20 -13
  316. package/dist/esm/cli/buildPage.js.map +1 -1
  317. package/dist/esm/cli/buildPage.mjs +24 -12
  318. package/dist/esm/cli/buildPage.mjs.map +1 -1
  319. package/dist/esm/cli/buildPage.native.js +29 -18
  320. package/dist/esm/cli/buildPage.native.js.map +1 -1
  321. package/dist/esm/cli/buildPageWorker.js +11 -12
  322. package/dist/esm/cli/buildPageWorker.js.map +1 -1
  323. package/dist/esm/cli/buildPageWorker.mjs +9 -15
  324. package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
  325. package/dist/esm/cli/buildPageWorker.native.js +5 -16
  326. package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
  327. package/dist/esm/cli/patch.js +3 -3
  328. package/dist/esm/cli/patch.js.map +1 -1
  329. package/dist/esm/cli/patch.mjs +3 -3
  330. package/dist/esm/cli/patch.mjs.map +1 -1
  331. package/dist/esm/cli/patch.native.js +3 -3
  332. package/dist/esm/cli/patch.native.js.map +1 -1
  333. package/dist/esm/cli/securityScan.js +119 -0
  334. package/dist/esm/cli/securityScan.js.map +6 -0
  335. package/dist/esm/cli/securityScan.mjs +99 -0
  336. package/dist/esm/cli/securityScan.mjs.map +1 -0
  337. package/dist/esm/cli/securityScan.native.js +178 -0
  338. package/dist/esm/cli/securityScan.native.js.map +1 -0
  339. package/dist/esm/cli/workerPool.js +3 -3
  340. package/dist/esm/cli/workerPool.js.map +1 -1
  341. package/dist/esm/cli/workerPool.mjs +4 -3
  342. package/dist/esm/cli/workerPool.mjs.map +1 -1
  343. package/dist/esm/cli/workerPool.native.js +4 -3
  344. package/dist/esm/cli/workerPool.native.js.map +1 -1
  345. package/dist/esm/cli.js +12 -2
  346. package/dist/esm/cli.js.map +1 -1
  347. package/dist/esm/cli.mjs +13 -2
  348. package/dist/esm/cli.mjs.map +1 -1
  349. package/dist/esm/cli.native.js +13 -2
  350. package/dist/esm/cli.native.js.map +1 -1
  351. package/dist/esm/createApp.js +97 -25
  352. package/dist/esm/createApp.js.map +1 -1
  353. package/dist/esm/createApp.mjs +130 -64
  354. package/dist/esm/createApp.mjs.map +1 -1
  355. package/dist/esm/createHandleRequest.js +29 -18
  356. package/dist/esm/createHandleRequest.js.map +1 -1
  357. package/dist/esm/createHandleRequest.mjs +58 -35
  358. package/dist/esm/createHandleRequest.mjs.map +1 -1
  359. package/dist/esm/createHandleRequest.native.js +66 -41
  360. package/dist/esm/createHandleRequest.native.js.map +1 -1
  361. package/dist/esm/daemon/tui.js.map +1 -1
  362. package/dist/esm/daemon/tui.mjs.map +1 -1
  363. package/dist/esm/fork/NavigationContainer.js +12 -3
  364. package/dist/esm/fork/NavigationContainer.js.map +1 -1
  365. package/dist/esm/fork/NavigationContainer.mjs +26 -3
  366. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  367. package/dist/esm/fork/NavigationContainer.native.js +24 -1
  368. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  369. package/dist/esm/fork/SSRNavigationContainer.js +55 -0
  370. package/dist/esm/fork/SSRNavigationContainer.js.map +6 -0
  371. package/dist/esm/fork/SSRNavigationContainer.mjs +82 -0
  372. package/dist/esm/fork/SSRNavigationContainer.mjs.map +1 -0
  373. package/dist/esm/fork/SSRNavigationContainer.native.js +93 -0
  374. package/dist/esm/fork/SSRNavigationContainer.native.js.map +1 -0
  375. package/dist/esm/fork/getPathFromState.js +5 -5
  376. package/dist/esm/fork/getPathFromState.js.map +1 -1
  377. package/dist/esm/fork/getPathFromState.mjs +10 -5
  378. package/dist/esm/fork/getPathFromState.mjs.map +1 -1
  379. package/dist/esm/fork/getPathFromState.native.js +11 -6
  380. package/dist/esm/fork/getPathFromState.native.js.map +1 -1
  381. package/dist/esm/fork/getStateFromPath-mods.js +1 -1
  382. package/dist/esm/fork/getStateFromPath-mods.js.map +1 -1
  383. package/dist/esm/fork/getStateFromPath-mods.mjs +1 -1
  384. package/dist/esm/fork/getStateFromPath-mods.mjs.map +1 -1
  385. package/dist/esm/fork/getStateFromPath-mods.native.js +1 -1
  386. package/dist/esm/fork/getStateFromPath-mods.native.js.map +1 -1
  387. package/dist/esm/fork/navigationThemes.js +38 -0
  388. package/dist/esm/fork/navigationThemes.js.map +6 -0
  389. package/dist/esm/fork/navigationThemes.mjs +60 -0
  390. package/dist/esm/fork/navigationThemes.mjs.map +1 -0
  391. package/dist/esm/fork/navigationThemes.native.js +60 -0
  392. package/dist/esm/fork/navigationThemes.native.js.map +1 -0
  393. package/dist/esm/fork/useLinking.js +10 -1
  394. package/dist/esm/fork/useLinking.js.map +1 -1
  395. package/dist/esm/fork/useLinking.mjs +11 -1
  396. package/dist/esm/fork/useLinking.mjs.map +1 -1
  397. package/dist/esm/fork/useLinking.native.js +1 -1
  398. package/dist/esm/fork/useLinking.native.js.map +1 -1
  399. package/dist/esm/getReactNavigationConfig.js +2 -2
  400. package/dist/esm/getReactNavigationConfig.js.map +1 -1
  401. package/dist/esm/getReactNavigationConfig.mjs +3 -1
  402. package/dist/esm/getReactNavigationConfig.mjs.map +1 -1
  403. package/dist/esm/getReactNavigationConfig.native.js +3 -1
  404. package/dist/esm/getReactNavigationConfig.native.js.map +1 -1
  405. package/dist/esm/index.js +2 -0
  406. package/dist/esm/index.js.map +1 -1
  407. package/dist/esm/index.mjs +2 -1
  408. package/dist/esm/index.mjs.map +1 -1
  409. package/dist/esm/index.native.js +2 -1
  410. package/dist/esm/index.native.js.map +1 -1
  411. package/dist/esm/layouts/stack-utils/StackScreen.js +27 -1
  412. package/dist/esm/layouts/stack-utils/StackScreen.js.map +1 -1
  413. package/dist/esm/layouts/stack-utils/StackScreen.mjs +14 -1
  414. package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
  415. package/dist/esm/layouts/stack-utils/StackScreen.native.js +17 -1
  416. package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
  417. package/dist/esm/layouts/stack-utils/index.js +4 -2
  418. package/dist/esm/layouts/stack-utils/index.js.map +1 -1
  419. package/dist/esm/layouts/stack-utils/index.mjs +2 -2
  420. package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
  421. package/dist/esm/layouts/stack-utils/index.native.js +2 -2
  422. package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
  423. package/dist/esm/metro-config/getViteMetroPluginOptions.js +3 -1
  424. package/dist/esm/metro-config/getViteMetroPluginOptions.js.map +1 -1
  425. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +3 -1
  426. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
  427. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +3 -1
  428. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  429. package/dist/esm/reactNavigationImports.js +21 -0
  430. package/dist/esm/reactNavigationImports.js.map +6 -0
  431. package/dist/esm/reactNavigationImports.mjs +3 -0
  432. package/dist/esm/reactNavigationImports.mjs.map +1 -0
  433. package/dist/esm/reactNavigationImports.native.js +3 -0
  434. package/dist/esm/reactNavigationImports.native.js.map +1 -0
  435. package/dist/esm/reactNavigationImports.server.js +32 -0
  436. package/dist/esm/reactNavigationImports.server.js.map +6 -0
  437. package/dist/esm/reactNavigationImports.server.mjs +20 -0
  438. package/dist/esm/reactNavigationImports.server.mjs.map +1 -0
  439. package/dist/esm/reactNavigationImports.server.native.js +22 -0
  440. package/dist/esm/reactNavigationImports.server.native.js.map +1 -0
  441. package/dist/esm/router/findRouteNode.js +4 -4
  442. package/dist/esm/router/findRouteNode.js.map +1 -1
  443. package/dist/esm/router/findRouteNode.mjs +4 -4
  444. package/dist/esm/router/findRouteNode.mjs.map +1 -1
  445. package/dist/esm/router/findRouteNode.native.js +4 -4
  446. package/dist/esm/router/findRouteNode.native.js.map +1 -1
  447. package/dist/esm/router/isIndexPath.js +2 -0
  448. package/dist/esm/router/isIndexPath.js.map +1 -1
  449. package/dist/esm/router/isIndexPath.mjs +1 -0
  450. package/dist/esm/router/isIndexPath.mjs.map +1 -1
  451. package/dist/esm/router/isIndexPath.native.js +3 -2
  452. package/dist/esm/router/isIndexPath.native.js.map +1 -1
  453. package/dist/esm/router/linkingConfig.js +18 -2
  454. package/dist/esm/router/linkingConfig.js.map +1 -1
  455. package/dist/esm/router/linkingConfig.mjs +18 -3
  456. package/dist/esm/router/linkingConfig.mjs.map +1 -1
  457. package/dist/esm/router/linkingConfig.native.js +20 -3
  458. package/dist/esm/router/linkingConfig.native.js.map +1 -1
  459. package/dist/esm/router/router.js +23 -20
  460. package/dist/esm/router/router.js.map +2 -2
  461. package/dist/esm/router/router.mjs +30 -25
  462. package/dist/esm/router/router.mjs.map +1 -1
  463. package/dist/esm/router/router.native.js +21 -15
  464. package/dist/esm/router/router.native.js.map +1 -1
  465. package/dist/esm/router/useInitializeOneRouter.js +21 -7
  466. package/dist/esm/router/useInitializeOneRouter.js.map +1 -1
  467. package/dist/esm/router/useInitializeOneRouter.mjs +23 -8
  468. package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
  469. package/dist/esm/router/useInitializeOneRouter.native.js +23 -8
  470. package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
  471. package/dist/esm/router/useScreens.js +47 -21
  472. package/dist/esm/router/useScreens.js.map +1 -1
  473. package/dist/esm/router/useScreens.mjs +30 -11
  474. package/dist/esm/router/useScreens.mjs.map +1 -1
  475. package/dist/esm/router/useScreens.native.js +25 -10
  476. package/dist/esm/router/useScreens.native.js.map +1 -1
  477. package/dist/esm/screensFeatureFlags.js +15 -0
  478. package/dist/esm/screensFeatureFlags.js.map +6 -0
  479. package/dist/esm/screensFeatureFlags.mjs +14 -0
  480. package/dist/esm/screensFeatureFlags.mjs.map +1 -0
  481. package/dist/esm/screensFeatureFlags.native.js +14 -0
  482. package/dist/esm/screensFeatureFlags.native.js.map +1 -0
  483. package/dist/esm/serve.js +26 -3
  484. package/dist/esm/serve.js.map +1 -1
  485. package/dist/esm/serve.mjs +27 -3
  486. package/dist/esm/serve.mjs.map +1 -1
  487. package/dist/esm/serve.native.js +36 -4
  488. package/dist/esm/serve.native.js.map +1 -1
  489. package/dist/esm/server/ServerContextScript.js +12 -6
  490. package/dist/esm/server/ServerContextScript.js.map +1 -1
  491. package/dist/esm/server/ServerContextScript.mjs +14 -5
  492. package/dist/esm/server/ServerContextScript.mjs.map +1 -1
  493. package/dist/esm/server/ServerContextScript.native.js +18 -6
  494. package/dist/esm/server/ServerContextScript.native.js.map +1 -1
  495. package/dist/esm/server/oneServe.js +105 -29
  496. package/dist/esm/server/oneServe.js.map +1 -1
  497. package/dist/esm/server/oneServe.mjs +279 -182
  498. package/dist/esm/server/oneServe.mjs.map +1 -1
  499. package/dist/esm/server/oneServe.native.js +334 -215
  500. package/dist/esm/server/oneServe.native.js.map +1 -1
  501. package/dist/esm/server/ssrLoaderData.js +9 -0
  502. package/dist/esm/server/ssrLoaderData.js.map +6 -0
  503. package/dist/esm/server/ssrLoaderData.mjs +6 -0
  504. package/dist/esm/server/ssrLoaderData.mjs.map +1 -0
  505. package/dist/esm/server/ssrLoaderData.native.js +6 -0
  506. package/dist/esm/server/ssrLoaderData.native.js.map +1 -0
  507. package/dist/esm/server-render.js +11 -15
  508. package/dist/esm/server-render.js.map +1 -1
  509. package/dist/esm/server-render.mjs +21 -22
  510. package/dist/esm/server-render.mjs.map +1 -1
  511. package/dist/esm/server-render.native.js +17 -38
  512. package/dist/esm/server-render.native.js.map +1 -1
  513. package/dist/esm/ui/Slot.js +4 -0
  514. package/dist/esm/ui/Slot.js.map +1 -1
  515. package/dist/esm/ui/Slot.mjs +1 -0
  516. package/dist/esm/ui/Slot.mjs.map +1 -1
  517. package/dist/esm/ui/Slot.native.js +1 -0
  518. package/dist/esm/ui/Slot.native.js.map +1 -1
  519. package/dist/esm/ui/TabRouter.js +18 -2
  520. package/dist/esm/ui/TabRouter.js.map +1 -1
  521. package/dist/esm/ui/TabRouter.mjs +32 -19
  522. package/dist/esm/ui/TabRouter.mjs.map +1 -1
  523. package/dist/esm/ui/TabRouter.native.js +13 -0
  524. package/dist/esm/ui/TabRouter.native.js.map +1 -1
  525. package/dist/esm/ui/TabTrigger.js +1 -1
  526. package/dist/esm/ui/TabTrigger.js.map +1 -1
  527. package/dist/esm/ui/TabTrigger.mjs +2 -2
  528. package/dist/esm/ui/TabTrigger.mjs.map +1 -1
  529. package/dist/esm/ui/TabTrigger.native.js +2 -2
  530. package/dist/esm/ui/TabTrigger.native.js.map +1 -1
  531. package/dist/esm/useLoader.js +37 -8
  532. package/dist/esm/useLoader.js.map +1 -1
  533. package/dist/esm/useLoader.mjs +38 -9
  534. package/dist/esm/useLoader.mjs.map +1 -1
  535. package/dist/esm/useLoader.native.js +47 -11
  536. package/dist/esm/useLoader.native.js.map +1 -1
  537. package/dist/esm/utils/isRolldown.js +4 -10
  538. package/dist/esm/utils/isRolldown.js.map +1 -1
  539. package/dist/esm/utils/isRolldown.mjs +4 -9
  540. package/dist/esm/utils/isRolldown.mjs.map +1 -1
  541. package/dist/esm/utils/isRolldown.native.js +4 -10
  542. package/dist/esm/utils/isRolldown.native.js.map +1 -1
  543. package/dist/esm/utils/removeParams.js +24 -0
  544. package/dist/esm/utils/removeParams.js.map +6 -0
  545. package/dist/esm/utils/removeParams.mjs +29 -0
  546. package/dist/esm/utils/removeParams.mjs.map +1 -0
  547. package/dist/esm/utils/removeParams.native.js +45 -0
  548. package/dist/esm/utils/removeParams.native.js.map +1 -0
  549. package/dist/esm/vercel/build/buildVercelOutputDirectory.js +7 -5
  550. package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  551. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +7 -5
  552. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
  553. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +7 -4
  554. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  555. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +2 -2
  556. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
  557. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +2 -2
  558. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -1
  559. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +2 -1
  560. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  561. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +2 -2
  562. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  563. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +3 -2
  564. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
  565. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +3 -2
  566. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  567. package/dist/esm/views/Navigator.js +2 -0
  568. package/dist/esm/views/Navigator.js.map +1 -1
  569. package/dist/esm/views/Navigator.mjs +1 -0
  570. package/dist/esm/views/Navigator.mjs.map +1 -1
  571. package/dist/esm/views/Navigator.native.js +1 -0
  572. package/dist/esm/views/Navigator.native.js.map +1 -1
  573. package/dist/esm/vite/one-server-only.js +3 -3
  574. package/dist/esm/vite/one-server-only.js.map +1 -1
  575. package/dist/esm/vite/one-server-only.mjs +6 -3
  576. package/dist/esm/vite/one-server-only.mjs.map +1 -1
  577. package/dist/esm/vite/one-server-only.native.js +4 -1
  578. package/dist/esm/vite/one-server-only.native.js.map +1 -1
  579. package/dist/esm/vite/one.js +94 -24
  580. package/dist/esm/vite/one.js.map +1 -1
  581. package/dist/esm/vite/one.mjs +75 -29
  582. package/dist/esm/vite/one.mjs.map +1 -1
  583. package/dist/esm/vite/one.native.js +143 -34
  584. package/dist/esm/vite/one.native.js.map +1 -1
  585. package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
  586. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  587. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  588. package/dist/esm/vite/plugins/criticalCSSPlugin.js +36 -0
  589. package/dist/esm/vite/plugins/criticalCSSPlugin.js.map +6 -0
  590. package/dist/esm/vite/plugins/criticalCSSPlugin.mjs +34 -0
  591. package/dist/esm/vite/plugins/criticalCSSPlugin.mjs.map +1 -0
  592. package/dist/esm/vite/plugins/criticalCSSPlugin.native.js +50 -0
  593. package/dist/esm/vite/plugins/criticalCSSPlugin.native.js.map +1 -0
  594. package/dist/esm/vite/plugins/criticalCSSPlugin.test.js +107 -0
  595. package/dist/esm/vite/plugins/criticalCSSPlugin.test.js.map +6 -0
  596. package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs +139 -0
  597. package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs.map +1 -0
  598. package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js +141 -0
  599. package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -0
  600. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +2 -2
  601. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  602. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +2 -2
  603. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  604. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +2 -2
  605. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  606. package/dist/esm/vite/plugins/fixDependenciesPlugin.js +3 -9
  607. package/dist/esm/vite/plugins/fixDependenciesPlugin.js.map +1 -1
  608. package/dist/esm/vite/plugins/fixDependenciesPlugin.mjs +3 -9
  609. package/dist/esm/vite/plugins/fixDependenciesPlugin.mjs.map +1 -1
  610. package/dist/esm/vite/plugins/fixDependenciesPlugin.native.js +3 -9
  611. package/dist/esm/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
  612. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.js +8 -11
  613. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.js.map +1 -1
  614. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.mjs +6 -14
  615. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.mjs.map +1 -1
  616. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js +6 -18
  617. package/dist/esm/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
  618. package/dist/esm/vite/plugins/sourceInspectorPlugin.js +12 -7
  619. package/dist/esm/vite/plugins/sourceInspectorPlugin.js.map +1 -1
  620. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +11 -6
  621. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -1
  622. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +12 -7
  623. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  624. package/dist/esm/vite/plugins/warmRoutesPlugin.js +80 -0
  625. package/dist/esm/vite/plugins/warmRoutesPlugin.js.map +6 -0
  626. package/dist/esm/vite/plugins/warmRoutesPlugin.mjs +74 -0
  627. package/dist/esm/vite/plugins/warmRoutesPlugin.mjs.map +1 -0
  628. package/dist/esm/vite/plugins/warmRoutesPlugin.native.js +107 -0
  629. package/dist/esm/vite/plugins/warmRoutesPlugin.native.js.map +1 -0
  630. package/dist/esm/vite/replaceLoader.js +1 -1
  631. package/dist/esm/vite/replaceLoader.js.map +1 -1
  632. package/dist/esm/vite/replaceLoader.mjs +1 -1
  633. package/dist/esm/vite/replaceLoader.mjs.map +1 -1
  634. package/dist/esm/vite/replaceLoader.native.js +1 -1
  635. package/dist/esm/vite/replaceLoader.native.js.map +1 -1
  636. package/dist/esm/vite/resolveResponse.js +23 -7
  637. package/dist/esm/vite/resolveResponse.js.map +1 -1
  638. package/dist/esm/vite/resolveResponse.mjs +21 -9
  639. package/dist/esm/vite/resolveResponse.mjs.map +1 -1
  640. package/dist/esm/vite/resolveResponse.native.js +21 -9
  641. package/dist/esm/vite/resolveResponse.native.js.map +1 -1
  642. package/dist/esm/vite-auto-warm.js +5 -0
  643. package/dist/esm/vite-auto-warm.js.map +6 -0
  644. package/dist/esm/vite-auto-warm.mjs +3 -0
  645. package/dist/esm/vite-auto-warm.mjs.map +1 -0
  646. package/dist/esm/vite-auto-warm.native.js +3 -0
  647. package/dist/esm/vite-auto-warm.native.js.map +1 -0
  648. package/dist/esm/vite.js +2 -0
  649. package/dist/esm/vite.js.map +1 -1
  650. package/dist/esm/vite.mjs +2 -1
  651. package/dist/esm/vite.mjs.map +1 -1
  652. package/dist/esm/vite.native.js +2 -1
  653. package/dist/esm/vite.native.js.map +1 -1
  654. package/package.json +44 -35
  655. package/src/Root.tsx +17 -13
  656. package/src/babel-plugins/inline-one-server-url.ts +26 -0
  657. package/src/cli/build.ts +130 -28
  658. package/src/cli/buildPage.ts +46 -20
  659. package/src/cli/buildPageWorker.ts +6 -18
  660. package/src/cli/patch.ts +3 -3
  661. package/src/cli/securityScan.ts +189 -0
  662. package/src/cli/workerPool.ts +5 -5
  663. package/src/cli.ts +11 -0
  664. package/src/createApp.tsx +165 -56
  665. package/src/createHandleRequest.ts +75 -18
  666. package/src/daemon/tui.ts +3 -3
  667. package/src/fork/NavigationContainer.tsx +38 -16
  668. package/src/fork/SSRNavigationContainer.tsx +94 -0
  669. package/src/fork/getPathFromState.ts +15 -5
  670. package/src/fork/getStateFromPath-mods.ts +1 -1
  671. package/src/fork/useLinking.native.ts +15 -13
  672. package/src/fork/useLinking.ts +22 -1
  673. package/src/getReactNavigationConfig.ts +3 -0
  674. package/src/index.ts +1 -0
  675. package/src/interfaces/router.ts +2 -3
  676. package/src/layouts/stack-utils/StackScreen.tsx +47 -0
  677. package/src/layouts/stack-utils/index.tsx +1 -0
  678. package/src/metro-config/getViteMetroPluginOptions.ts +2 -0
  679. package/src/router/findRouteNode.ts +4 -4
  680. package/src/router/isIndexPath.ts +4 -0
  681. package/src/router/linkingConfig.ts +53 -2
  682. package/src/router/router.ts +71 -45
  683. package/src/router/useInitializeOneRouter.ts +47 -15
  684. package/src/router/useScreens.tsx +56 -20
  685. package/src/screensFeatureFlags.ts +23 -0
  686. package/src/serve.ts +65 -5
  687. package/src/server/ServerContextScript.tsx +15 -8
  688. package/src/server/oneServe.ts +184 -47
  689. package/src/server/ssrLoaderData.ts +8 -0
  690. package/src/server-render.tsx +25 -28
  691. package/src/ui/Slot.tsx +7 -0
  692. package/src/ui/TabRouter.tsx +18 -0
  693. package/src/ui/TabTrigger.tsx +3 -0
  694. package/src/useLoader.ts +69 -11
  695. package/src/utils/isRolldown.ts +4 -14
  696. package/src/utils/removeParams.ts +40 -0
  697. package/src/vercel/build/buildVercelOutputDirectory.ts +12 -7
  698. package/src/vercel/build/generate/createApiServerlessFunction.ts +3 -2
  699. package/src/vercel/build/generate/createSsrServerlessFunction.ts +3 -2
  700. package/src/views/Navigator.tsx +4 -0
  701. package/src/vite/one-server-only.native.ts +3 -0
  702. package/src/vite/one-server-only.tsx +13 -5
  703. package/src/vite/one.ts +134 -28
  704. package/src/vite/plugins/SSRCSSPlugin.ts +2 -2
  705. package/src/vite/plugins/criticalCSSPlugin.test.ts +166 -0
  706. package/src/vite/plugins/criticalCSSPlugin.ts +74 -0
  707. package/src/vite/plugins/fileSystemRouterPlugin.tsx +3 -2
  708. package/src/vite/plugins/fixDependenciesPlugin.ts +7 -19
  709. package/src/vite/plugins/removeReactNativeWebAnimatedPlugin.ts +10 -17
  710. package/src/vite/plugins/sourceInspectorPlugin.ts +28 -23
  711. package/src/vite/plugins/warmRoutesPlugin.ts +156 -0
  712. package/src/vite/replaceLoader.ts +2 -1
  713. package/src/vite/resolveResponse.ts +25 -9
  714. package/src/vite/types.ts +54 -10
  715. package/src/vite-auto-warm.ts +1 -0
  716. package/src/vite.ts +1 -0
  717. package/types/Root.d.ts.map +1 -1
  718. package/types/babel-plugins/inline-one-server-url.d.ts +10 -0
  719. package/types/babel-plugins/inline-one-server-url.d.ts.map +1 -0
  720. package/types/cli/build.d.ts.map +1 -1
  721. package/types/cli/buildPage.d.ts +1 -1
  722. package/types/cli/buildPage.d.ts.map +1 -1
  723. package/types/cli/securityScan.d.ts +16 -0
  724. package/types/cli/securityScan.d.ts.map +1 -0
  725. package/types/cli/workerPool.d.ts +2 -1
  726. package/types/cli/workerPool.d.ts.map +1 -1
  727. package/types/createApp.d.ts +2 -1
  728. package/types/createApp.d.ts.map +1 -1
  729. package/types/createHandleRequest.d.ts +2 -1
  730. package/types/createHandleRequest.d.ts.map +1 -1
  731. package/types/fork/NavigationContainer.d.ts.map +1 -1
  732. package/types/fork/SSRNavigationContainer.d.ts +16 -0
  733. package/types/fork/SSRNavigationContainer.d.ts.map +1 -0
  734. package/types/fork/getPathFromState.d.ts.map +1 -1
  735. package/types/fork/navigationThemes.d.ts.map +1 -0
  736. package/types/fork/useLinking.d.ts.map +1 -1
  737. package/types/fork/useLinking.native.d.ts.map +1 -1
  738. package/types/getReactNavigationConfig.d.ts.map +1 -1
  739. package/types/index.d.ts +1 -0
  740. package/types/index.d.ts.map +1 -1
  741. package/types/interfaces/router.d.ts +2 -1
  742. package/types/interfaces/router.d.ts.map +1 -1
  743. package/types/layouts/Stack.d.ts +15 -11
  744. package/types/layouts/Stack.d.ts.map +1 -1
  745. package/types/layouts/Tabs.d.ts +15 -11
  746. package/types/layouts/Tabs.d.ts.map +1 -1
  747. package/types/layouts/stack-utils/StackScreen.d.ts +2 -0
  748. package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
  749. package/types/layouts/stack-utils/index.d.ts +1 -1
  750. package/types/layouts/stack-utils/index.d.ts.map +1 -1
  751. package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
  752. package/types/reactNavigationImports.d.ts.map +1 -0
  753. package/types/reactNavigationImports.server.d.ts.map +1 -0
  754. package/types/router/isIndexPath.d.ts.map +1 -1
  755. package/types/router/linkingConfig.d.ts +10 -0
  756. package/types/router/linkingConfig.d.ts.map +1 -1
  757. package/types/router/router.d.ts +8 -3
  758. package/types/router/router.d.ts.map +1 -1
  759. package/types/router/useInitializeOneRouter.d.ts +1 -0
  760. package/types/router/useInitializeOneRouter.d.ts.map +1 -1
  761. package/types/router/useScreens.d.ts.map +1 -1
  762. package/types/screensFeatureFlags.d.ts +2 -0
  763. package/types/screensFeatureFlags.d.ts.map +1 -0
  764. package/types/serve.d.ts +2 -0
  765. package/types/serve.d.ts.map +1 -1
  766. package/types/server/ServerContextScript.d.ts.map +1 -1
  767. package/types/server/oneServe.d.ts.map +1 -1
  768. package/types/server/ssrLoaderData.d.ts +3 -0
  769. package/types/server/ssrLoaderData.d.ts.map +1 -0
  770. package/types/server-render.d.ts +10 -7
  771. package/types/server-render.d.ts.map +1 -1
  772. package/types/ui/Slot.d.ts.map +1 -1
  773. package/types/ui/TabRouter.d.ts.map +1 -1
  774. package/types/ui/TabTrigger.d.ts.map +1 -1
  775. package/types/useLoader.d.ts +1 -0
  776. package/types/useLoader.d.ts.map +1 -1
  777. package/types/utils/isRolldown.d.ts +1 -1
  778. package/types/utils/isRolldown.d.ts.map +1 -1
  779. package/types/utils/removeParams.d.ts +8 -0
  780. package/types/utils/removeParams.d.ts.map +1 -0
  781. package/types/vercel/build/buildVercelOutputDirectory.d.ts +2 -2
  782. package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
  783. package/types/vercel/build/generate/createApiServerlessFunction.d.ts +1 -1
  784. package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -1
  785. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
  786. package/types/views/Navigator.d.ts.map +1 -1
  787. package/types/vite/one-server-only.d.ts.map +1 -1
  788. package/types/vite/one-server-only.native.d.ts +3 -0
  789. package/types/vite/one-server-only.native.d.ts.map +1 -1
  790. package/types/vite/one.d.ts.map +1 -1
  791. package/types/vite/plugins/criticalCSSPlugin.d.ts +12 -0
  792. package/types/vite/plugins/criticalCSSPlugin.d.ts.map +1 -0
  793. package/types/vite/plugins/criticalCSSPlugin.test.d.ts +2 -0
  794. package/types/vite/plugins/criticalCSSPlugin.test.d.ts.map +1 -0
  795. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  796. package/types/vite/plugins/fixDependenciesPlugin.d.ts.map +1 -1
  797. package/types/vite/plugins/removeReactNativeWebAnimatedPlugin.d.ts.map +1 -1
  798. package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -1
  799. package/types/vite/plugins/warmRoutesPlugin.d.ts +17 -0
  800. package/types/vite/plugins/warmRoutesPlugin.d.ts.map +1 -0
  801. package/types/vite/replaceLoader.d.ts.map +1 -1
  802. package/types/vite/resolveResponse.d.ts +2 -2
  803. package/types/vite/resolveResponse.d.ts.map +1 -1
  804. package/types/vite/types.d.ts +51 -10
  805. package/types/vite/types.d.ts.map +1 -1
  806. package/types/vite-auto-warm.d.ts +2 -0
  807. package/types/vite-auto-warm.d.ts.map +1 -0
  808. package/types/vite.d.ts +1 -0
  809. package/types/vite.d.ts.map +1 -1
  810. package/vendor/react-dom/package.json +1 -1
  811. package/dist/cjs/cli/easPrebuild.cjs +0 -117
  812. package/dist/cjs/cli/easPrebuild.js +0 -94
  813. package/dist/cjs/cli/easPrebuild.js.map +0 -6
  814. package/dist/cjs/cli/easPrebuild.native.js +0 -135
  815. package/dist/cjs/cli/easPrebuild.native.js.map +0 -1
  816. package/dist/esm/cli/easPrebuild.js +0 -73
  817. package/dist/esm/cli/easPrebuild.js.map +0 -6
  818. package/dist/esm/cli/easPrebuild.mjs +0 -83
  819. package/dist/esm/cli/easPrebuild.mjs.map +0 -1
  820. package/dist/esm/cli/easPrebuild.native.js +0 -98
  821. package/dist/esm/cli/easPrebuild.native.js.map +0 -1
  822. package/types/cli/easPrebuild.d.ts.map +0 -1
  823. package/types/cli/findClientManifestEntry.d.ts.map +0 -1
  824. package/types/cli/findClientManifestEntry.test.d.ts.map +0 -1
  825. package/types/env.d.ts.map +0 -1
  826. package/types/router/routeMask.d.ts.map +0 -1
  827. package/types/server/PreloadScripts.d.ts.map +0 -1
  828. /package/types/vercel/build/generate/{createSSRServerlessFunction.d.ts → createSsrServerlessFunction.d.ts} +0 -0
@@ -18,18 +18,19 @@ import { getPathFromLoaderPath } from '../utils/cleanUrl'
18
18
  import { toAbsolute } from '../utils/toAbsolute'
19
19
  import type { One } from '../vite/types'
20
20
  import type { RouteInfoCompiled } from './createRoutesManifest'
21
+ import { setSSRLoaderData } from './ssrLoaderData'
21
22
  import { getFetchStaticHtml } from './staticHtmlFetcher'
22
23
 
23
24
  const debugRouter = process.env.ONE_DEBUG_ROUTER
24
25
 
25
- async function readStaticHtml(htmlPath: string): Promise<string | null> {
26
+ async function readStaticHtml(htmlPath: string, outDir = 'dist'): Promise<string | null> {
26
27
  const fetchStaticHtml = getFetchStaticHtml()
27
28
  if (fetchStaticHtml) {
28
29
  const html = await fetchStaticHtml(htmlPath)
29
30
  if (html) return html
30
31
  }
31
32
  try {
32
- return await readFile(join('dist/client', htmlPath), 'utf-8')
33
+ return await readFile(join(`${outDir}/client`, htmlPath), 'utf-8')
33
34
  } catch {
34
35
  return null
35
36
  }
@@ -55,6 +56,7 @@ export async function oneServe(
55
56
  lazyRoutes?: LazyRoutes
56
57
  }
57
58
  ) {
59
+ const outDir = buildInfo.outDir || 'dist'
58
60
  const { resolveAPIRoute, resolveLoaderRoute, resolvePageRoute } =
59
61
  await import('../createHandleRequest')
60
62
  const { isResponse } = await import('../utils/isResponse')
@@ -115,6 +117,55 @@ export async function oneServe(
115
117
 
116
118
  const apiCJS = oneOptions.build?.api?.outputFormat === 'cjs'
117
119
 
120
+ // cache resolved loader functions directly (not just modules)
121
+ const loaderCache = new Map<string, Function | null>()
122
+ const moduleImportCache = new Map<string, any>()
123
+
124
+ // loader coalescing via static loaderCache export
125
+ // when a route exports loaderCache, concurrent requests with the same key share one execution
126
+ const loaderCacheFnMap = new Map<string, Function | null>()
127
+ const pendingLoaderResults = new Map<
128
+ string,
129
+ { promise: Promise<any>; expires: number }
130
+ >()
131
+
132
+ // resolve a route module's loader - sync on cache hit, async on cold start
133
+ function resolveLoaderSync(
134
+ serverPath: string | undefined,
135
+ lazyKey: string | undefined
136
+ ): Function | null | Promise<Function | null> {
137
+ const cacheKey = lazyKey || serverPath || ''
138
+ const cached = loaderCache.get(cacheKey)
139
+ if (cached !== undefined) return cached // sync!
140
+
141
+ // cold path - async import
142
+ return (async () => {
143
+ const pathToResolve = serverPath || lazyKey || ''
144
+ const resolvedPath = pathToResolve.includes(`${outDir}/server`)
145
+ ? pathToResolve
146
+ : join('./', `${outDir}/server`, pathToResolve)
147
+
148
+ let routeExported: any
149
+ if (moduleImportCache.has(cacheKey)) {
150
+ routeExported = moduleImportCache.get(cacheKey)
151
+ } else {
152
+ routeExported = lazyKey
153
+ ? options?.lazyRoutes?.pages?.[lazyKey]
154
+ ? await options.lazyRoutes.pages[lazyKey]()
155
+ : await import(toAbsolute(resolvedPath))
156
+ : await import(toAbsolute(serverPath!))
157
+ moduleImportCache.set(cacheKey, routeExported)
158
+ }
159
+
160
+ const loader = routeExported?.loader || null
161
+ loaderCache.set(cacheKey, loader)
162
+ // also cache loaderCache export for coalescing
163
+ const loaderCacheFn = routeExported?.loaderCache ?? null
164
+ loaderCacheFnMap.set(cacheKey, loaderCacheFn)
165
+ return loader
166
+ })()
167
+ }
168
+
118
169
  // shared helper to import a route module and run its loader
119
170
  async function importAndRunLoader(
120
171
  routeId: string,
@@ -126,19 +177,60 @@ export async function oneServe(
126
177
  return { loaderData: undefined, routeId }
127
178
  }
128
179
 
180
+ // check loaderCache BEFORE resolving the loader (fast path for coalesced requests)
181
+ const cacheMapKey = lazyKey || serverPath || ''
182
+ const loaderCacheFn = loaderCacheFnMap.get(cacheMapKey)
183
+ let coalFullKey: string | undefined
184
+ let coalTtl = 0
185
+
186
+ if (loaderCacheFn) {
187
+ const cacheResult = loaderCacheFn(loaderProps?.params, loaderProps?.request)
188
+ const cacheKey = typeof cacheResult === 'string' ? cacheResult : cacheResult?.key
189
+ coalTtl = typeof cacheResult === 'string' ? 0 : (cacheResult?.ttl ?? 0)
190
+
191
+ if (cacheKey != null) {
192
+ coalFullKey = routeId + '\0' + cacheKey
193
+ const existing = pendingLoaderResults.get(coalFullKey)
194
+ // expires=0 means pending or no-TTL (coalesce-only), so !0 is true
195
+ if (existing && (!existing.expires || Date.now() < existing.expires)) {
196
+ // coalesce: reuse pending/cached result (never even resolves the loader fn)
197
+ const loaderData = await existing.promise
198
+ return { loaderData, routeId }
199
+ }
200
+ }
201
+ }
202
+
129
203
  try {
130
- const pathToResolve = serverPath || lazyKey || ''
131
- const resolvedPath = pathToResolve.includes('dist/server')
132
- ? pathToResolve
133
- : join('./', 'dist/server', pathToResolve)
204
+ const loaderOrPromise = resolveLoaderSync(serverPath, lazyKey)
205
+ const loader =
206
+ loaderOrPromise instanceof Promise ? await loaderOrPromise : loaderOrPromise
207
+ if (!loader) {
208
+ return { loaderData: undefined, routeId }
209
+ }
134
210
 
135
- const routeExported = lazyKey
136
- ? options?.lazyRoutes?.pages?.[lazyKey]
137
- ? await options.lazyRoutes.pages[lazyKey]()
138
- : await import(toAbsolute(resolvedPath))
139
- : await import(toAbsolute(serverPath!))
211
+ // first caller with loaderCache: execute and register for coalescing
212
+ if (coalFullKey) {
213
+ const promise = loader(loaderProps)
214
+ const entry = { promise, expires: 0 }
215
+ pendingLoaderResults.set(coalFullKey, entry)
216
+ promise.then(
217
+ () => {
218
+ entry.expires = coalTtl > 0 ? Date.now() + coalTtl : 0
219
+ if (coalTtl <= 0) {
220
+ Promise.resolve().then(() => pendingLoaderResults.delete(coalFullKey!))
221
+ }
222
+ },
223
+ () => {
224
+ pendingLoaderResults.delete(coalFullKey!)
225
+ }
226
+ )
227
+
228
+ const loaderData = await promise
229
+ return { loaderData, routeId }
230
+ }
140
231
 
141
- const loaderData = await routeExported?.loader?.(loaderProps)
232
+ // no coalescing: run loader directly
233
+ const loaderData = await loader(loaderProps)
142
234
  return { loaderData, routeId }
143
235
  } catch (err) {
144
236
  if (isResponse(err)) {
@@ -152,25 +244,47 @@ export async function oneServe(
152
244
  }
153
245
  }
154
246
 
155
- // Lazy load server entry only when needed for SSR
247
+ // lazy load server entry - sync on cache hit
156
248
  let render: ((props: RenderAppProps) => any) | null = null
157
- async function getRender() {
158
- if (!render) {
159
- // Use lazy import if available (workers), otherwise dynamic import (Node.js)
249
+ let renderStream: ((props: RenderAppProps) => Promise<ReadableStream>) | null = null
250
+ let renderLoading: Promise<void> | null = null
251
+
252
+ function ensureRenderLoaded(): void | Promise<void> {
253
+ if (render) return // sync!
254
+ if (renderLoading) return renderLoading
255
+ renderLoading = (async () => {
160
256
  const entry = options?.lazyRoutes?.serverEntry
161
257
  ? await options.lazyRoutes.serverEntry()
162
258
  : await import(
163
259
  resolve(
164
260
  process.cwd(),
165
- `${serverOptions.root}/dist/server/_virtual_one-entry.${typeof oneOptions.build?.server === 'object' && oneOptions.build.server.outputFormat === 'cjs' ? 'c' : ''}js`
261
+ `${serverOptions.root}/${outDir}/server/_virtual_one-entry.${typeof oneOptions.build?.server === 'object' && oneOptions.build.server.outputFormat === 'cjs' ? 'c' : ''}js`
166
262
  )
167
263
  )
168
264
  render = entry.default.render as (props: RenderAppProps) => any
169
- }
170
- return render
265
+ renderStream = entry.default.renderStream as
266
+ | ((props: RenderAppProps) => Promise<ReadableStream>)
267
+ | null
268
+ })()
269
+ return renderLoading
171
270
  }
172
271
 
272
+ const clientDir = join(process.cwd(), outDir, 'client')
273
+
173
274
  const requestHandlers: RequestHandlers = {
275
+ async handleStaticFile(filePath: string) {
276
+ try {
277
+ // filePath is like /assets/index_123_vxrn_loader.native.js
278
+ const fullPath = join(clientDir, filePath)
279
+ const content = await readFile(fullPath, 'utf-8')
280
+ return new Response(content, {
281
+ headers: { 'Content-Type': 'text/javascript' },
282
+ })
283
+ } catch {
284
+ return null
285
+ }
286
+ },
287
+
174
288
  async handleAPI({ route }) {
175
289
  // Use lazy import if available (workers), otherwise dynamic import (Node.js)
176
290
  if (options?.lazyRoutes?.api?.[route.page]) {
@@ -180,7 +294,7 @@ export async function oneServe(
180
294
  const fileName = route.page.slice(1).replace(/\[/g, '_').replace(/\]/g, '_')
181
295
  const apiFile = join(
182
296
  process.cwd(),
183
- 'dist',
297
+ outDir,
184
298
  'api',
185
299
  fileName + (apiCJS ? '.cjs' : '.js')
186
300
  )
@@ -196,30 +310,22 @@ export async function oneServe(
196
310
  },
197
311
 
198
312
  async handleLoader({ route, loaderProps }) {
199
- // Use lazy import if available (workers), otherwise dynamic import (Node.js)
200
- // For workers, look up by routeFile (original file path like "./dynamic/[id]+ssr.tsx")
201
- // For Node.js, use route.file which may be loaderServerPath (already includes dist/server)
202
313
  const routeFile = (route as any).routeFile || route.file
203
- // route.file may already include dist/server if it came from loaderServerPath
204
- const serverPath = route.file.includes('dist/server')
314
+ const serverPath = route.file.includes(`${outDir}/server`)
205
315
  ? route.file
206
- : join('./', 'dist/server', route.file)
316
+ : join('./', `${outDir}/server`, route.file)
207
317
 
208
- let exports
318
+ let loader: Function | null
209
319
  try {
210
- exports = options?.lazyRoutes?.pages?.[routeFile]
211
- ? await options.lazyRoutes.pages[routeFile]()
212
- : await import(toAbsolute(serverPath))
320
+ const loaderResult = resolveLoaderSync(serverPath, routeFile)
321
+ loader = loaderResult instanceof Promise ? await loaderResult : loaderResult
213
322
  } catch (err) {
214
- // module doesn't exist (e.g., dynamic route with slug not in generateStaticParams)
215
323
  if ((err as any)?.code === 'ERR_MODULE_NOT_FOUND') {
216
324
  return null
217
325
  }
218
326
  throw err
219
327
  }
220
328
 
221
- const { loader } = exports
222
-
223
329
  if (!loader) {
224
330
  return null
225
331
  }
@@ -309,7 +415,7 @@ export async function oneServe(
309
415
  if (nfHtml) {
310
416
  try {
311
417
  const html = await readFile(
312
- join(process.cwd(), 'dist/client', nfHtml),
418
+ join(process.cwd(), `${outDir}/client`, nfHtml),
313
419
  'utf-8'
314
420
  )
315
421
  return new Response(html, {
@@ -340,28 +446,55 @@ export async function oneServe(
340
446
  // for backwards compat, loaderData is still the page's loader data
341
447
  const loaderData = pageResult.loaderData
342
448
 
449
+ // populate per-loader WeakMap so layout useLoader gets correct data
450
+ for (const layout of layoutRoutes) {
451
+ const key = layout.contextKey
452
+ const loaderFn = loaderCache.get(key)
453
+ if (loaderFn) {
454
+ const result = layoutResults.find((r) => r.routeId === key)
455
+ if (result) {
456
+ setSSRLoaderData(loaderFn, result.loaderData)
457
+ }
458
+ }
459
+ }
460
+ const pageLoaderFn = loaderCache.get(route.file)
461
+ if (pageLoaderFn) {
462
+ setSSRLoaderData(pageLoaderFn, pageResult.loaderData)
463
+ }
464
+
343
465
  const headers = new Headers()
344
466
  headers.set('content-type', 'text/html')
345
467
 
346
- // Reset router state for each SSR request to ensure correct routing
347
- // TODO: Consider using AsyncLocalStorage to isolate router state per request
348
- // instead of using global reset, for better concurrency handling
468
+ // prepare router for this SSR render (lightweight version bump)
349
469
  globalThis['__vxrnresetState']?.()
350
470
 
351
- const rendered = await (
352
- await getRender()
353
- )({
471
+ const renderProps = {
354
472
  mode: route.type,
355
473
  loaderData,
356
474
  loaderProps,
357
475
  path: loaderProps?.path || '/',
358
- // Use separated preloads for optimal loading
359
476
  preloads: buildInfo.criticalPreloads || buildInfo.preloads,
360
477
  deferredPreloads: buildInfo.deferredPreloads,
361
478
  css: buildInfo.css,
362
479
  cssContents: buildInfo.cssContents,
363
480
  matches,
364
- })
481
+ }
482
+
483
+ // streaming SSR by default, fall back to buffered with ONE_BUFFERED_SSR=1
484
+ const _rl = ensureRenderLoaded()
485
+ if (_rl) await _rl
486
+
487
+ const streamFn = !process.env.ONE_BUFFERED_SSR ? renderStream : null
488
+ if (streamFn) {
489
+ const stream = await streamFn(renderProps)
490
+ return new Response(stream, {
491
+ headers,
492
+ status: route.isNotFound ? 404 : 200,
493
+ })
494
+ }
495
+
496
+ // render is guaranteed loaded after ensureRenderLoaded above
497
+ const rendered = await render!(renderProps)
365
498
 
366
499
  return new Response(rendered, {
367
500
  headers,
@@ -417,9 +550,9 @@ url: ${url}`)
417
550
 
418
551
  globalThis['__vxrnresetState']?.()
419
552
 
420
- const rendered = await (
421
- await getRender()
422
- )({
553
+ const _rl3 = ensureRenderLoaded()
554
+ if (_rl3) await _rl3
555
+ const rendered = await render!({
423
556
  mode: 'spa-shell',
424
557
  // don't pass loaderData for spa-shell - the page loader runs on client
425
558
  // passing {} here would make useLoaderState think data is preloaded
@@ -467,7 +600,7 @@ url: ${url}`)
467
600
  : routeMap[url.pathname] || routeMap[buildInfo?.cleanPath]
468
601
 
469
602
  if (htmlPath) {
470
- const html = await readStaticHtml(htmlPath)
603
+ const html = await readStaticHtml(htmlPath, outDir)
471
604
 
472
605
  if (html) {
473
606
  const headers = new Headers()
@@ -486,7 +619,7 @@ url: ${url}`)
486
619
  const notFoundHtmlPath = routeMap[notFoundRoute]
487
620
 
488
621
  if (notFoundHtmlPath) {
489
- const notFoundHtml = await readStaticHtml(notFoundHtmlPath)
622
+ const notFoundHtml = await readStaticHtml(notFoundHtmlPath, outDir)
490
623
 
491
624
  if (notFoundHtml) {
492
625
  // inject 404 marker so client knows this is a 404 response
@@ -571,6 +704,8 @@ url: ${url}`)
571
704
  }
572
705
 
573
706
  const finalUrl = new URL(originalUrl, url.origin)
707
+ // preserve query params (platform=ios, etc.) for native CJS conversion
708
+ finalUrl.search = url.search
574
709
  const cleanedRequest = new Request(finalUrl, request)
575
710
  return resolveLoaderRoute(requestHandlers, cleanedRequest, finalUrl, route)
576
711
  }
@@ -742,6 +877,8 @@ url: ${url}`)
742
877
  }
743
878
 
744
879
  const finalUrl = new URL(originalUrl, url.origin)
880
+ // preserve query params (platform=ios, etc.) for native CJS conversion
881
+ finalUrl.search = url.search
745
882
  const cleanedRequest = new Request(finalUrl, request)
746
883
 
747
884
  try {
@@ -0,0 +1,8 @@
1
+ // shared weakmap for SSR loader data
2
+ // kept in a separate server-safe module to avoid pulling in client-side
3
+ // dependencies (like @react-navigation/native) into the serve runtime
4
+ export const ssrLoaderData = new WeakMap<Function, any>()
5
+
6
+ export function setSSRLoaderData(loaderFn: Function, data: any) {
7
+ ssrLoaderData.set(loaderFn, data)
8
+ }
@@ -4,50 +4,47 @@ export type RenderToStringOptions = {
4
4
  /**
5
5
  * Critical scripts that need to execute immediately (will use async).
6
6
  * These are added to bootstrapModules and generate both modulepreload links and async script tags.
7
- * Keep this list minimal (typically: setupClient, one-entry, page entry).
8
7
  */
9
8
  preloads?: string[]
10
-
11
- /**
12
- * Non-critical scripts that can wait (will only be modulepreload hints).
13
- * These only generate <link rel="modulepreload"> tags and are loaded when imported.
14
- * Use this for component libraries, utilities, and other non-essential modules.
15
- */
16
- deferredPreloads?: string[]
17
9
  }
18
10
 
11
+ /**
12
+ * Buffered SSR - renders to full HTML string.
13
+ * Deferred preloads and server data are rendered in the React tree
14
+ * (React 19 hoists <link> to <head>).
15
+ */
19
16
  export const renderToString = async (
20
17
  app: React.ReactElement,
21
18
  options: RenderToStringOptions
22
19
  ) => {
23
20
  const readableStream = await ReactDOMServer.renderToReadableStream(app, {
24
- // Only pass critical scripts to bootstrapModules
25
- // These generate both modulepreload links AND async script tags
26
21
  bootstrapModules: options.preloads,
27
22
  })
28
23
  await readableStream.allReady
29
- let out = await streamToString(readableStream)
30
24
 
31
- // Add non-critical modulepreload links to head (just hints, no script execution)
32
- if (options.deferredPreloads?.length) {
33
- const modulepreloadLinks = options.deferredPreloads
34
- .map((src) => `<link rel="modulepreload" fetchPriority="low" href="${src}"/>`)
35
- .join('')
36
- out = out.replace('</head>', `${modulepreloadLinks}</head>`)
25
+ const reader = readableStream.getReader()
26
+ const decoder = new TextDecoder('utf-8')
27
+ let out = ''
28
+
29
+ while (true) {
30
+ const { done, value } = await reader.read()
31
+ if (done) break
32
+ out += decoder.decode(value, { stream: true })
37
33
  }
34
+ out += decoder.decode()
38
35
 
39
36
  return out
40
37
  }
41
38
 
42
- async function streamToString(stream: ReadableStream<Uint8Array>): Promise<string> {
43
- const decoder = new TextDecoder('utf-8', { fatal: true })
44
- let result = ''
45
-
46
- // @ts-expect-error TS is wrong, see https://nodejs.org/api/webstreams.html#async-iteration
47
- for await (const chunk of stream) {
48
- result += decoder.decode(chunk, { stream: true })
49
- }
50
-
51
- result += decoder.decode()
52
- return result
39
+ /**
40
+ * Streaming SSR - returns ReadableStream directly.
41
+ * Skips allReady wait for faster TTFB.
42
+ */
43
+ export const renderToStream = async (
44
+ app: React.ReactElement,
45
+ options: RenderToStringOptions
46
+ ): Promise<ReadableStream> => {
47
+ return ReactDOMServer.renderToReadableStream(app, {
48
+ bootstrapModules: options.preloads,
49
+ })
53
50
  }
package/src/ui/Slot.tsx CHANGED
@@ -23,6 +23,13 @@ import { StyleSheet, type ViewProps } from 'react-native'
23
23
  */
24
24
  function ShimSlotForReactNative(Component: typeof RUISlot): typeof RUISlot {
25
25
  return forwardRef(function RNSlotHOC({ style, ...props }, ref) {
26
+ if (process.env.NODE_ENV !== 'production') {
27
+ if (Array.isArray(style)) {
28
+ throw new Error(
29
+ 'Slot does not support array styles. Use StyleSheet.flatten() or an object style instead.'
30
+ )
31
+ }
32
+ }
26
33
  style = useMemo(() => StyleSheet.flatten(style), [style])
27
34
  return <Component ref={ref} {...props} style={style} />
28
35
  })
@@ -37,6 +37,24 @@ export function ExpoTabRouter(options: ExpoTabRouterOptions) {
37
37
  > = {
38
38
  ...rnTabRouter,
39
39
  getStateForAction(state, action, options) {
40
+ // convert REPLACE to JUMP_TO so tab navigators handle it as a tab switch
41
+ if ((action as any).type === 'REPLACE') {
42
+ const payload = (action as any).payload
43
+ return router.getStateForAction(
44
+ state,
45
+ {
46
+ type: 'JUMP_TO' as const,
47
+ source: (action as any).source,
48
+ target: (action as any).target,
49
+ payload: {
50
+ name: payload?.name ?? '',
51
+ params: payload?.params,
52
+ },
53
+ },
54
+ options
55
+ )
56
+ }
57
+
40
58
  if (action.type !== 'JUMP_TO') {
41
59
  return rnTabRouter.getStateForAction(state, action, options)
42
60
  }
@@ -251,6 +251,9 @@ export function useTabTrigger(options: TabTriggerProps): UseTabTriggerResult {
251
251
 
252
252
  if (!shouldHandleMouseEvent(event)) return
253
253
 
254
+ // skip dispatch if this trigger's tab is already focused
255
+ if (trigger.isFocused) return
256
+
254
257
  switchTab(name, { resetOnFocus })
255
258
  },
256
259
  [onPress, name, resetOnFocus, trigger, navigation, switchTab]
package/src/useLoader.ts CHANGED
@@ -2,14 +2,18 @@ import { useCallback, useSyncExternalStore } from 'react'
2
2
  import { registerDevtoolsFunction } from './devtools/registry'
3
3
  import { useParams, usePathname } from './hooks'
4
4
  import { findNearestNotFoundRoute, setNotFoundState } from './notFoundState'
5
+ import { useContextKey } from './router/Route'
6
+ import { getContextKey } from './router/matchers'
5
7
  import { router } from './router/imperative-api'
6
8
  import { preloadedLoaderData, preloadingLoader, routeNode } from './router/router'
9
+ import { ssrLoaderData } from './server/ssrLoaderData'
7
10
  import {
8
11
  subscribeToClientMatches,
9
12
  getClientMatchesSnapshot,
10
13
  updateMatchLoaderData,
11
14
  } from './useMatches'
12
15
  import { getLoaderPath } from './utils/cleanUrl'
16
+ import { LOADER_JS_POSTFIX_UNCACHED } from './constants'
13
17
  import { dynamicImport } from './utils/dynamicImport'
14
18
  import { weakKey } from './utils/weakKey'
15
19
  import { useServerContext } from './vite/one-server-only'
@@ -311,16 +315,46 @@ export function useLoaderState<
311
315
  // (the pathname is already resolved like /docs/getting-started, not /docs/[slug])
312
316
  const currentPath = pathname.replace(/\/index$/, '').replace(/\/$/, '') || '/'
313
317
 
314
- // server-side only - typeof window check ensures this never runs on client
315
- if (typeof window === 'undefined' && loader) {
316
- const serverData = useAsyncFn(
317
- loader,
318
- loaderPropsFromServerContext || {
319
- path: pathname,
320
- params,
318
+ // server-side only — use pre-resolved loader data so dev and prod behave identically
319
+ // (no re-running loaders during render, data comes from the same source the client gets)
320
+ if (typeof window === 'undefined') {
321
+ if (loader) {
322
+ // 1) prod: WeakMap keyed by loader function (set by oneServe)
323
+ if (ssrLoaderData.has(loader)) {
324
+ return {
325
+ data: ssrLoaderData.get(loader),
326
+ refetch: async () => {},
327
+ state: 'idle',
328
+ } as any
329
+ }
330
+ // 2) dev/fallback: look up this route's data from the matches array in server context
331
+ // matches are built with per-route loaderData by both dev and prod handlers
332
+ // this avoids re-running loaders during render and keeps dev/prod identical
333
+ const serverContext = useServerContext()
334
+ if (serverContext?.matches) {
335
+ const contextKey = useContextKey()
336
+ const match = serverContext.matches.find(
337
+ (m: any) => getContextKey(m.routeId) === contextKey
338
+ )
339
+ if (match && match.loaderData !== undefined) {
340
+ return { data: match.loaderData, refetch: async () => {}, state: 'idle' } as any
341
+ }
321
342
  }
322
- )
323
- return { data: serverData, refetch: async () => {}, state: 'idle' } as any
343
+ // 3) last resort fallback: run the loader
344
+ const serverData = useAsyncFn(
345
+ loader,
346
+ loaderPropsFromServerContext || { path: pathname, params }
347
+ )
348
+ return { data: serverData, refetch: async () => {}, state: 'idle' } as any
349
+ }
350
+ // no loader function (useLoaderState without loader arg) — use page-level data
351
+ if (loaderDataFromServerContext !== undefined) {
352
+ return {
353
+ data: loaderDataFromServerContext,
354
+ refetch: async () => {},
355
+ state: 'idle',
356
+ } as any
357
+ }
324
358
  }
325
359
 
326
360
  // detect if the loader stub returns a routeId string (set by clientTreeShakePlugin)
@@ -446,8 +480,22 @@ export function useLoaderState<
446
480
 
447
481
  try {
448
482
  if (process.env.TAMAGUI_TARGET === 'native') {
449
- const loaderJSUrl = getLoaderPath(currentPath, true)
450
- const nativeLoaderJSUrl = `${loaderJSUrl}?platform=ios`
483
+ let nativeLoaderJSUrl: string
484
+ if (process.env.NODE_ENV === 'development') {
485
+ // dev: ?platform=native tells vite plugin to return CJS
486
+ nativeLoaderJSUrl = `${getLoaderPath(currentPath, true)}?platform=native`
487
+ } else {
488
+ // prod: request the .native.js static file directly
489
+ // use uncached postfix since metro can't inline ONE_CACHE_KEY
490
+ const { getURL } = require('./getURL')
491
+ const base = getURL()
492
+ const cleanedPath = currentPath
493
+ .slice(1)
494
+ .replace(/\/$/, '')
495
+ .replaceAll('_', '__')
496
+ .replaceAll('/', '_')
497
+ nativeLoaderJSUrl = `${base}/assets/${cleanedPath}${LOADER_JS_POSTFIX_UNCACHED.replace('.js', '.native.js')}`
498
+ }
451
499
 
452
500
  try {
453
501
  const moduleLoadStart = performance.now()
@@ -526,6 +574,11 @@ export function useLoaderState<
526
574
  })
527
575
  return
528
576
  } catch (e) {
577
+ console.error(
578
+ `[one] native loader error for ${currentPath}:`,
579
+ e instanceof Error ? e.message : e,
580
+ `url: ${nativeLoaderJSUrl}`
581
+ )
529
582
  const totalTime = performance.now() - startTime
530
583
  updateState(currentPath, {
531
584
  data: {},
@@ -691,6 +744,11 @@ export function useLoader<
691
744
  const results = new Map()
692
745
  const started = new Map()
693
746
 
747
+ // maps loader function → its route's loaderData for SSR
748
+ // populated before render in oneServe.ts, cleared after
749
+ // re-export for backwards compat
750
+ export { setSSRLoaderData } from './server/ssrLoaderData'
751
+
694
752
  export function resetLoaderState() {
695
753
  results.clear()
696
754
  started.clear()
@@ -1,17 +1,7 @@
1
- let _isRolldown: boolean | undefined
1
+ import { version } from 'vite'
2
2
 
3
- export async function isRolldown(): Promise<boolean> {
4
- if (_isRolldown !== undefined) {
5
- return _isRolldown
6
- }
3
+ const majorVersion = parseInt(version.split('.')[0], 10)
7
4
 
8
- try {
9
- const vite = await import('vite')
10
- // withFilter only exists in rolldown-vite
11
- _isRolldown = 'withFilter' in vite
12
- } catch {
13
- _isRolldown = false
14
- }
15
-
16
- return _isRolldown
5
+ export function isRolldown(): boolean {
6
+ return majorVersion >= 8
17
7
  }