react-router 7.15.1 → 8.0.0-pre.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 (369) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/dist/development/dom-export.d.ts +6 -172
  3. package/dist/development/dom-export.js +12 -1007
  4. package/dist/development/index-react-server-client.d.ts +7 -4
  5. package/dist/development/index-react-server-client.js +8 -52
  6. package/dist/development/index-react-server.d.ts +1645 -1635
  7. package/dist/development/index-react-server.js +2880 -3642
  8. package/dist/development/index.d.ts +43 -1469
  9. package/dist/development/index.js +37 -2621
  10. package/dist/development/lib/actions.js +62 -0
  11. package/dist/development/lib/components.d.ts +1022 -0
  12. package/dist/development/lib/components.js +835 -0
  13. package/dist/development/lib/context.d.ts +83 -0
  14. package/dist/development/lib/context.js +41 -0
  15. package/dist/development/lib/dom/dom.d.ts +119 -0
  16. package/dist/development/lib/dom/dom.js +143 -0
  17. package/dist/development/lib/dom/lib.d.ts +2042 -0
  18. package/dist/development/lib/dom/lib.js +1259 -0
  19. package/dist/development/lib/dom/server.d.ts +138 -0
  20. package/dist/development/lib/dom/server.js +301 -0
  21. package/dist/development/lib/dom/ssr/components.d.ts +196 -0
  22. package/dist/development/lib/dom/ssr/components.js +579 -0
  23. package/dist/development/lib/dom/ssr/data.js +29 -0
  24. package/dist/development/lib/dom/ssr/entry.d.ts +59 -0
  25. package/dist/development/lib/dom/ssr/errorBoundaries.d.ts +27 -0
  26. package/dist/development/lib/dom/ssr/errorBoundaries.js +83 -0
  27. package/dist/development/lib/dom/ssr/errors.d.ts +7 -0
  28. package/dist/development/lib/dom/ssr/errors.js +36 -0
  29. package/dist/development/lib/dom/ssr/fallback.js +28 -0
  30. package/dist/development/lib/dom/ssr/fog-of-war.d.ts +12 -0
  31. package/dist/development/lib/dom/ssr/fog-of-war.js +170 -0
  32. package/dist/development/lib/dom/ssr/hydration.d.ts +32 -0
  33. package/dist/development/lib/dom/ssr/hydration.js +29 -0
  34. package/dist/development/lib/dom/ssr/invariant.js +16 -0
  35. package/dist/development/lib/dom/ssr/links.js +170 -0
  36. package/dist/development/lib/dom/ssr/markup.js +24 -0
  37. package/dist/development/lib/dom/ssr/routeModules.d.ts +206 -0
  38. package/dist/development/lib/dom/ssr/routeModules.js +31 -0
  39. package/dist/development/lib/dom/ssr/routes-test-stub.d.ts +62 -0
  40. package/dist/development/lib/dom/ssr/routes-test-stub.js +108 -0
  41. package/dist/development/lib/dom/ssr/routes.d.ts +33 -0
  42. package/dist/development/lib/dom/ssr/routes.js +303 -0
  43. package/dist/development/lib/dom/ssr/server.d.ts +45 -0
  44. package/dist/development/lib/dom/ssr/server.js +68 -0
  45. package/dist/development/lib/dom/ssr/single-fetch.d.ts +14 -0
  46. package/dist/development/lib/dom/ssr/single-fetch.js +346 -0
  47. package/dist/development/lib/dom-export/dom-router-provider.d.ts +9 -0
  48. package/dist/development/lib/dom-export/dom-router-provider.js +22 -0
  49. package/dist/development/lib/dom-export/hydrated-router.d.ts +125 -0
  50. package/dist/development/lib/dom-export/hydrated-router.js +153 -0
  51. package/dist/development/lib/errors.js +29 -0
  52. package/dist/development/lib/hooks.d.ts +947 -0
  53. package/dist/development/lib/hooks.js +1386 -0
  54. package/dist/development/lib/href.d.ts +20 -0
  55. package/dist/development/lib/href.js +50 -0
  56. package/dist/development/lib/router/history.d.ts +258 -0
  57. package/dist/development/lib/router/history.js +371 -0
  58. package/dist/development/lib/router/instrumentation.d.ts +86 -0
  59. package/dist/development/lib/router/instrumentation.js +213 -0
  60. package/dist/development/lib/router/links.d.ts +113 -0
  61. package/dist/development/lib/router/router.d.ts +663 -0
  62. package/dist/development/lib/router/router.js +2981 -0
  63. package/dist/development/lib/router/utils.d.ts +942 -0
  64. package/dist/development/lib/router/utils.js +791 -0
  65. package/dist/development/lib/rsc/browser.d.ts +137 -0
  66. package/dist/development/lib/rsc/browser.js +599 -0
  67. package/dist/development/lib/rsc/errorBoundaries.d.ts +11 -0
  68. package/dist/development/lib/rsc/errorBoundaries.js +90 -0
  69. package/dist/development/lib/rsc/html-stream/browser.d.ts +48 -0
  70. package/dist/development/lib/rsc/html-stream/browser.js +74 -0
  71. package/dist/development/lib/rsc/html-stream/server.js +78 -0
  72. package/dist/development/lib/rsc/route-modules.js +27 -0
  73. package/dist/development/lib/rsc/server.rsc.d.ts +219 -0
  74. package/dist/development/lib/rsc/server.ssr.d.ts +129 -0
  75. package/dist/development/lib/rsc/server.ssr.js +388 -0
  76. package/dist/development/lib/server-runtime/build.d.ts +66 -0
  77. package/dist/development/lib/server-runtime/cookies.d.ts +66 -0
  78. package/dist/development/lib/server-runtime/cookies.js +139 -0
  79. package/dist/development/lib/server-runtime/crypto.js +43 -0
  80. package/dist/development/lib/server-runtime/data.d.ts +13 -0
  81. package/dist/development/lib/server-runtime/data.js +25 -0
  82. package/dist/development/lib/server-runtime/dev.d.ts +9 -0
  83. package/dist/development/lib/server-runtime/dev.js +26 -0
  84. package/dist/development/lib/server-runtime/entry.js +20 -0
  85. package/dist/development/lib/server-runtime/errors.js +95 -0
  86. package/dist/development/lib/server-runtime/headers.js +73 -0
  87. package/dist/development/lib/server-runtime/invariant.js +19 -0
  88. package/dist/development/lib/server-runtime/mode.d.ts +12 -0
  89. package/dist/development/lib/server-runtime/mode.js +25 -0
  90. package/dist/development/lib/server-runtime/routeMatching.js +28 -0
  91. package/dist/development/lib/server-runtime/routes.d.ts +13 -0
  92. package/dist/development/lib/server-runtime/routes.js +74 -0
  93. package/dist/development/lib/server-runtime/server.d.ts +10 -0
  94. package/dist/development/lib/server-runtime/server.js +351 -0
  95. package/dist/development/lib/server-runtime/serverHandoff.js +17 -0
  96. package/dist/development/lib/server-runtime/sessions/cookieStorage.d.ts +25 -0
  97. package/dist/development/lib/server-runtime/sessions/cookieStorage.js +45 -0
  98. package/dist/development/lib/server-runtime/sessions/memoryStorage.d.ts +23 -0
  99. package/dist/development/lib/server-runtime/sessions/memoryStorage.js +52 -0
  100. package/dist/development/lib/server-runtime/sessions.d.ts +145 -0
  101. package/dist/development/lib/server-runtime/sessions.js +98 -0
  102. package/dist/development/lib/server-runtime/single-fetch.d.ts +7 -0
  103. package/dist/development/lib/server-runtime/single-fetch.js +215 -0
  104. package/dist/development/lib/server-runtime/urls.js +31 -0
  105. package/dist/development/lib/server-runtime/warnings.js +20 -0
  106. package/dist/development/lib/types/future.d.ts +9 -0
  107. package/dist/development/lib/types/internal.d.ts +26 -177
  108. package/dist/development/lib/types/internal.js +3 -2
  109. package/dist/{production/register-Bsscfj79.d.ts → development/lib/types/register.d.ts} +9 -15
  110. package/dist/development/lib/types/route-data.d.ts +113 -0
  111. package/dist/development/lib/types/route-module-annotations.d.ts +149 -0
  112. package/dist/development/lib/types/route-module.d.ts +19 -0
  113. package/dist/development/lib/types/serializes-to.d.ts +13 -0
  114. package/dist/development/lib/types/utils.d.ts +11 -0
  115. package/dist/development/vendor/turbo-stream-v2/flatten.js +159 -0
  116. package/dist/development/vendor/turbo-stream-v2/turbo-stream.js +178 -0
  117. package/dist/development/vendor/turbo-stream-v2/unflatten.js +198 -0
  118. package/dist/development/vendor/turbo-stream-v2/utils.js +47 -0
  119. package/dist/production/dom-export.d.ts +6 -172
  120. package/dist/production/dom-export.js +12 -1007
  121. package/dist/production/index-react-server-client.d.ts +7 -4
  122. package/dist/production/index-react-server-client.js +8 -52
  123. package/dist/production/index-react-server.d.ts +1645 -1635
  124. package/dist/production/index-react-server.js +2871 -3642
  125. package/dist/production/index.d.ts +43 -1469
  126. package/dist/production/index.js +37 -2621
  127. package/dist/production/lib/actions.js +62 -0
  128. package/dist/production/lib/components.d.ts +1022 -0
  129. package/dist/production/lib/components.js +835 -0
  130. package/dist/production/lib/context.d.ts +83 -0
  131. package/dist/production/lib/context.js +41 -0
  132. package/dist/production/lib/dom/dom.d.ts +119 -0
  133. package/dist/production/lib/dom/dom.js +143 -0
  134. package/dist/production/lib/dom/lib.d.ts +2042 -0
  135. package/dist/production/lib/dom/lib.js +1259 -0
  136. package/dist/production/lib/dom/server.d.ts +138 -0
  137. package/dist/production/lib/dom/server.js +301 -0
  138. package/dist/production/lib/dom/ssr/components.d.ts +196 -0
  139. package/dist/production/lib/dom/ssr/components.js +579 -0
  140. package/dist/production/lib/dom/ssr/data.js +29 -0
  141. package/dist/production/lib/dom/ssr/entry.d.ts +59 -0
  142. package/dist/production/lib/dom/ssr/errorBoundaries.d.ts +27 -0
  143. package/dist/production/lib/dom/ssr/errorBoundaries.js +83 -0
  144. package/dist/production/lib/dom/ssr/errors.d.ts +7 -0
  145. package/dist/production/lib/dom/ssr/errors.js +36 -0
  146. package/dist/production/lib/dom/ssr/fallback.js +21 -0
  147. package/dist/production/lib/dom/ssr/fog-of-war.d.ts +12 -0
  148. package/dist/production/lib/dom/ssr/fog-of-war.js +170 -0
  149. package/dist/production/lib/dom/ssr/hydration.d.ts +32 -0
  150. package/dist/production/lib/dom/ssr/hydration.js +29 -0
  151. package/dist/production/lib/dom/ssr/invariant.js +16 -0
  152. package/dist/production/lib/dom/ssr/links.js +170 -0
  153. package/dist/production/lib/dom/ssr/markup.js +24 -0
  154. package/dist/production/lib/dom/ssr/routeModules.d.ts +206 -0
  155. package/dist/production/lib/dom/ssr/routeModules.js +31 -0
  156. package/dist/production/lib/dom/ssr/routes-test-stub.d.ts +62 -0
  157. package/dist/production/lib/dom/ssr/routes-test-stub.js +108 -0
  158. package/dist/production/lib/dom/ssr/routes.d.ts +33 -0
  159. package/dist/production/lib/dom/ssr/routes.js +303 -0
  160. package/dist/production/lib/dom/ssr/server.d.ts +45 -0
  161. package/dist/production/lib/dom/ssr/server.js +68 -0
  162. package/dist/production/lib/dom/ssr/single-fetch.d.ts +14 -0
  163. package/dist/production/lib/dom/ssr/single-fetch.js +346 -0
  164. package/dist/production/lib/dom-export/dom-router-provider.d.ts +9 -0
  165. package/dist/production/lib/dom-export/dom-router-provider.js +22 -0
  166. package/dist/production/lib/dom-export/hydrated-router.d.ts +125 -0
  167. package/dist/production/lib/dom-export/hydrated-router.js +153 -0
  168. package/dist/production/lib/errors.js +29 -0
  169. package/dist/production/lib/hooks.d.ts +947 -0
  170. package/dist/production/lib/hooks.js +1371 -0
  171. package/dist/production/lib/href.d.ts +20 -0
  172. package/dist/production/lib/href.js +50 -0
  173. package/dist/production/lib/router/history.d.ts +258 -0
  174. package/dist/production/lib/router/history.js +371 -0
  175. package/dist/production/lib/router/instrumentation.d.ts +86 -0
  176. package/dist/production/lib/router/instrumentation.js +213 -0
  177. package/dist/production/lib/router/links.d.ts +113 -0
  178. package/dist/production/lib/router/router.d.ts +663 -0
  179. package/dist/production/lib/router/router.js +2981 -0
  180. package/dist/production/lib/router/utils.d.ts +942 -0
  181. package/dist/production/lib/router/utils.js +782 -0
  182. package/dist/production/lib/rsc/browser.d.ts +137 -0
  183. package/dist/production/lib/rsc/browser.js +599 -0
  184. package/dist/production/lib/rsc/errorBoundaries.d.ts +11 -0
  185. package/dist/production/lib/rsc/errorBoundaries.js +90 -0
  186. package/dist/production/lib/rsc/html-stream/browser.d.ts +48 -0
  187. package/dist/production/lib/rsc/html-stream/browser.js +74 -0
  188. package/dist/production/lib/rsc/html-stream/server.js +78 -0
  189. package/dist/production/lib/rsc/route-modules.js +27 -0
  190. package/dist/production/lib/rsc/server.rsc.d.ts +219 -0
  191. package/dist/production/lib/rsc/server.ssr.d.ts +129 -0
  192. package/dist/production/lib/rsc/server.ssr.js +388 -0
  193. package/dist/production/lib/server-runtime/build.d.ts +66 -0
  194. package/dist/production/lib/server-runtime/cookies.d.ts +66 -0
  195. package/dist/production/lib/server-runtime/cookies.js +139 -0
  196. package/dist/production/lib/server-runtime/crypto.js +43 -0
  197. package/dist/production/lib/server-runtime/data.d.ts +13 -0
  198. package/dist/production/lib/server-runtime/data.js +25 -0
  199. package/dist/production/lib/server-runtime/dev.d.ts +9 -0
  200. package/dist/production/lib/server-runtime/dev.js +26 -0
  201. package/dist/production/lib/server-runtime/entry.js +20 -0
  202. package/dist/production/lib/server-runtime/errors.js +95 -0
  203. package/dist/production/lib/server-runtime/headers.js +73 -0
  204. package/dist/production/lib/server-runtime/invariant.js +19 -0
  205. package/dist/production/lib/server-runtime/mode.d.ts +12 -0
  206. package/dist/production/lib/server-runtime/mode.js +25 -0
  207. package/dist/production/lib/server-runtime/routeMatching.js +28 -0
  208. package/dist/production/lib/server-runtime/routes.d.ts +13 -0
  209. package/dist/production/lib/server-runtime/routes.js +74 -0
  210. package/dist/production/lib/server-runtime/server.d.ts +10 -0
  211. package/dist/production/lib/server-runtime/server.js +351 -0
  212. package/dist/production/lib/server-runtime/serverHandoff.js +17 -0
  213. package/dist/production/lib/server-runtime/sessions/cookieStorage.d.ts +25 -0
  214. package/dist/production/lib/server-runtime/sessions/cookieStorage.js +45 -0
  215. package/dist/production/lib/server-runtime/sessions/memoryStorage.d.ts +23 -0
  216. package/dist/production/lib/server-runtime/sessions/memoryStorage.js +52 -0
  217. package/dist/production/lib/server-runtime/sessions.d.ts +145 -0
  218. package/dist/production/lib/server-runtime/sessions.js +98 -0
  219. package/dist/production/lib/server-runtime/single-fetch.d.ts +7 -0
  220. package/dist/production/lib/server-runtime/single-fetch.js +215 -0
  221. package/dist/production/lib/server-runtime/urls.js +31 -0
  222. package/dist/production/lib/server-runtime/warnings.js +20 -0
  223. package/dist/production/lib/types/future.d.ts +9 -0
  224. package/dist/production/lib/types/internal.d.ts +26 -177
  225. package/dist/production/lib/types/internal.js +3 -2
  226. package/dist/{development/register-Bsscfj79.d.ts → production/lib/types/register.d.ts} +9 -15
  227. package/dist/production/lib/types/route-data.d.ts +113 -0
  228. package/dist/production/lib/types/route-module-annotations.d.ts +149 -0
  229. package/dist/production/lib/types/route-module.d.ts +19 -0
  230. package/dist/production/lib/types/serializes-to.d.ts +13 -0
  231. package/dist/production/lib/types/utils.d.ts +11 -0
  232. package/dist/production/vendor/turbo-stream-v2/flatten.js +159 -0
  233. package/dist/production/vendor/turbo-stream-v2/turbo-stream.js +178 -0
  234. package/dist/production/vendor/turbo-stream-v2/unflatten.js +198 -0
  235. package/dist/production/vendor/turbo-stream-v2/utils.js +47 -0
  236. package/docs/explanation/backend-for-frontend.md +50 -0
  237. package/docs/explanation/code-splitting.md +77 -0
  238. package/docs/explanation/concurrency.md +135 -0
  239. package/docs/explanation/form-vs-fetcher.md +292 -0
  240. package/docs/explanation/hot-module-replacement.md +137 -0
  241. package/docs/explanation/hydration.md +14 -0
  242. package/docs/explanation/index-query-param.md +86 -0
  243. package/docs/explanation/index.md +4 -0
  244. package/docs/explanation/lazy-route-discovery.md +78 -0
  245. package/docs/explanation/location.md +6 -0
  246. package/docs/explanation/progressive-enhancement.md +150 -0
  247. package/docs/explanation/race-conditions.md +88 -0
  248. package/docs/explanation/react-transitions.md +160 -0
  249. package/docs/explanation/route-matching.md +7 -0
  250. package/docs/explanation/server-client-execution.md +4 -0
  251. package/docs/explanation/sessions-and-cookies.md +465 -0
  252. package/docs/explanation/special-files.md +16 -0
  253. package/docs/explanation/state-management.md +524 -0
  254. package/docs/explanation/styling.md +87 -0
  255. package/docs/explanation/type-safety.md +82 -0
  256. package/docs/how-to/accessibility.md +44 -0
  257. package/docs/how-to/client-data.md +199 -0
  258. package/docs/how-to/data-strategy.md +317 -0
  259. package/docs/how-to/error-boundary.md +231 -0
  260. package/docs/how-to/error-reporting.md +134 -0
  261. package/docs/how-to/fetchers.md +307 -0
  262. package/docs/how-to/file-route-conventions.md +410 -0
  263. package/docs/how-to/file-uploads.md +217 -0
  264. package/docs/how-to/form-validation.md +120 -0
  265. package/docs/how-to/headers.md +164 -0
  266. package/docs/how-to/index.md +4 -0
  267. package/docs/how-to/instrumentation.md +556 -0
  268. package/docs/how-to/meta.md +40 -0
  269. package/docs/how-to/middleware.md +728 -0
  270. package/docs/how-to/navigation-blocking.md +233 -0
  271. package/docs/how-to/optimize-revalidation.md +12 -0
  272. package/docs/how-to/pre-rendering.md +225 -0
  273. package/docs/how-to/presets.md +103 -0
  274. package/docs/how-to/react-server-components.md +899 -0
  275. package/docs/how-to/resource-routes.md +126 -0
  276. package/docs/how-to/route-module-type-safety.md +100 -0
  277. package/docs/how-to/search-params.md +4 -0
  278. package/docs/how-to/security.md +30 -0
  279. package/docs/how-to/server-bundles.md +66 -0
  280. package/docs/how-to/spa.md +120 -0
  281. package/docs/how-to/status.md +63 -0
  282. package/docs/how-to/suspense.md +132 -0
  283. package/docs/how-to/using-handle.md +117 -0
  284. package/docs/how-to/view-transitions.md +237 -0
  285. package/docs/how-to/webhook.md +50 -0
  286. package/docs/index.md +39 -0
  287. package/docs/start/data/actions.md +138 -0
  288. package/docs/start/data/custom.md +198 -0
  289. package/docs/start/data/data-loading.md +44 -0
  290. package/docs/start/data/index.md +4 -0
  291. package/docs/start/data/installation.md +52 -0
  292. package/docs/start/data/navigating.md +12 -0
  293. package/docs/start/data/pending-ui.md +12 -0
  294. package/docs/start/data/route-object.md +248 -0
  295. package/docs/start/data/routing.md +281 -0
  296. package/docs/start/data/testing.md +8 -0
  297. package/docs/start/declarative/index.md +4 -0
  298. package/docs/start/declarative/installation.md +43 -0
  299. package/docs/start/declarative/navigating.md +133 -0
  300. package/docs/start/declarative/routing.md +237 -0
  301. package/docs/start/declarative/url-values.md +65 -0
  302. package/docs/start/framework/actions.md +175 -0
  303. package/docs/start/framework/data-loading.md +201 -0
  304. package/docs/start/framework/deploying.md +96 -0
  305. package/docs/start/framework/index.md +4 -0
  306. package/docs/start/framework/installation.md +42 -0
  307. package/docs/start/framework/navigating.md +182 -0
  308. package/docs/start/framework/pending-ui.md +142 -0
  309. package/docs/start/framework/rendering.md +59 -0
  310. package/docs/start/framework/route-module.md +527 -0
  311. package/docs/start/framework/routing.md +362 -0
  312. package/docs/start/framework/testing.md +133 -0
  313. package/docs/start/index.md +4 -0
  314. package/docs/start/modes.md +201 -0
  315. package/docs/upgrading/component-routes.md +363 -0
  316. package/docs/upgrading/future.md +31 -0
  317. package/docs/upgrading/index.md +4 -0
  318. package/docs/upgrading/remix.md +403 -0
  319. package/docs/upgrading/router-provider.md +442 -0
  320. package/docs/upgrading/v6.md +379 -0
  321. package/package.json +44 -87
  322. package/dist/development/browser-3AnU12UI.d.mts +0 -318
  323. package/dist/development/browser-BOdXz9dK.d.ts +0 -318
  324. package/dist/development/chunk-4N6VE7H7.mjs +0 -11528
  325. package/dist/development/chunk-4YRVXM2U.js +0 -188
  326. package/dist/development/chunk-66UKHEGQ.js +0 -1362
  327. package/dist/development/chunk-D6LUOGOQ.js +0 -10229
  328. package/dist/development/chunk-RJYABSBD.mjs +0 -2585
  329. package/dist/development/context-ByvtofY2.d.mts +0 -1771
  330. package/dist/development/data-BVUf681J.d.mts +0 -1732
  331. package/dist/development/data-BqZ2x964.d.ts +0 -1732
  332. package/dist/development/dom-export.d.mts +0 -172
  333. package/dist/development/dom-export.mjs +0 -1008
  334. package/dist/development/index-react-server-client-BS5F89FR.d.ts +0 -3655
  335. package/dist/development/index-react-server-client-DY04-103.d.mts +0 -2600
  336. package/dist/development/index-react-server-client.d.mts +0 -4
  337. package/dist/development/index-react-server-client.mjs +0 -59
  338. package/dist/development/index-react-server.d.mts +0 -2703
  339. package/dist/development/index-react-server.mjs +0 -3780
  340. package/dist/development/index.d.mts +0 -1472
  341. package/dist/development/index.mjs +0 -277
  342. package/dist/development/instrumentation-cRWWLfsU.d.ts +0 -715
  343. package/dist/development/lib/types/internal.d.mts +0 -184
  344. package/dist/development/lib/types/internal.mjs +0 -10
  345. package/dist/development/register-Df8okEea.d.mts +0 -30
  346. package/dist/production/browser-3AnU12UI.d.mts +0 -318
  347. package/dist/production/browser-BOdXz9dK.d.ts +0 -318
  348. package/dist/production/chunk-6S4627ZB.mjs +0 -2585
  349. package/dist/production/chunk-HUBUW7R3.js +0 -10229
  350. package/dist/production/chunk-JAKZPQZC.mjs +0 -11528
  351. package/dist/production/chunk-PNZCCTKT.js +0 -1362
  352. package/dist/production/chunk-Y6IFXO7V.js +0 -188
  353. package/dist/production/context-ByvtofY2.d.mts +0 -1771
  354. package/dist/production/data-BVUf681J.d.mts +0 -1732
  355. package/dist/production/data-BqZ2x964.d.ts +0 -1732
  356. package/dist/production/dom-export.d.mts +0 -172
  357. package/dist/production/dom-export.mjs +0 -1008
  358. package/dist/production/index-react-server-client-BS5F89FR.d.ts +0 -3655
  359. package/dist/production/index-react-server-client-DY04-103.d.mts +0 -2600
  360. package/dist/production/index-react-server-client.d.mts +0 -4
  361. package/dist/production/index-react-server-client.mjs +0 -59
  362. package/dist/production/index-react-server.d.mts +0 -2703
  363. package/dist/production/index-react-server.mjs +0 -3780
  364. package/dist/production/index.d.mts +0 -1472
  365. package/dist/production/index.mjs +0 -277
  366. package/dist/production/instrumentation-cRWWLfsU.d.ts +0 -715
  367. package/dist/production/lib/types/internal.d.mts +0 -184
  368. package/dist/production/lib/types/internal.mjs +0 -10
  369. package/dist/production/register-Df8okEea.d.mts +0 -30
@@ -0,0 +1,198 @@
1
+ ---
2
+ title: Custom Framework
3
+ order: 8
4
+ ---
5
+
6
+ # Custom Framework
7
+
8
+ [MODES: data]
9
+
10
+ ## Introduction
11
+
12
+ Instead of using `@react-router/dev`, you can integrate React Router's framework features (like loaders, actions, fetchers, etc.) into your own bundler and server abstractions with Data Mode.
13
+
14
+ ## Client Rendering
15
+
16
+ ### 1. Create a Router
17
+
18
+ The browser runtime API that enables route module APIs (loaders, actions, etc.) is `createBrowserRouter`.
19
+
20
+ It takes an array of route objects that support loaders, actions, error boundaries and more. The React Router Vite plugin creates one of these from `routes.ts`, but you can create one manually (or with an abstraction) and use your own bundler.
21
+
22
+ ```tsx
23
+ import { createBrowserRouter } from "react-router";
24
+
25
+ let router = createBrowserRouter([
26
+ {
27
+ path: "/",
28
+ Component: Root,
29
+ children: [
30
+ {
31
+ path: "shows/:showId",
32
+ Component: Show,
33
+ loader: ({ request, params }) =>
34
+ fetch(`/api/show/${params.showId}.json`, {
35
+ signal: request.signal,
36
+ }),
37
+ },
38
+ ],
39
+ },
40
+ ]);
41
+ ```
42
+
43
+ ### 2. Render the Router
44
+
45
+ To render the router in the browser, use `<RouterProvider>`.
46
+
47
+ ```tsx
48
+ import {
49
+ createBrowserRouter,
50
+ RouterProvider,
51
+ } from "react-router";
52
+ import { createRoot } from "react-dom/client";
53
+
54
+ createRoot(document.getElementById("root")).render(
55
+ <RouterProvider router={router} />,
56
+ );
57
+ ```
58
+
59
+ ### 3. Lazy Loading
60
+
61
+ Routes can take most of their definition lazily with the `lazy` property.
62
+
63
+ ```tsx
64
+ createBrowserRouter([
65
+ {
66
+ path: "/show/:showId",
67
+ lazy: {
68
+ loader: async () =>
69
+ (await import("./show.loader.js")).loader,
70
+ action: async () =>
71
+ (await import("./show.action.js")).action,
72
+ Component: async () =>
73
+ (await import("./show.component.js")).Component,
74
+ },
75
+ },
76
+ ]);
77
+ ```
78
+
79
+ ## Server Rendering
80
+
81
+ To server render a custom setup, there are a few server APIs available for rendering and data loading.
82
+
83
+ This guide simply gives you some ideas about how it works. For deeper understanding, please see the [Custom Framework Example Repo](https://github.com/remix-run/custom-react-router-framework-example)
84
+
85
+ ### 1. Define Your Routes
86
+
87
+ Routes are the same kinds of objects on the server as the client.
88
+
89
+ ```tsx
90
+ export default [
91
+ {
92
+ path: "/",
93
+ Component: Root,
94
+ children: [
95
+ {
96
+ path: "shows/:showId",
97
+ Component: Show,
98
+ loader: ({ params }) => {
99
+ return db.loadShow(params.id);
100
+ },
101
+ },
102
+ ],
103
+ },
104
+ ];
105
+ ```
106
+
107
+ ### 2. Create a static handler
108
+
109
+ Turn your routes into a request handler with `createStaticHandler`:
110
+
111
+ ```tsx
112
+ import { createStaticHandler } from "react-router";
113
+ import routes from "./some-routes";
114
+
115
+ let { query, dataRoutes } = createStaticHandler(routes);
116
+ ```
117
+
118
+ ### 3. Get Routing Context and Render
119
+
120
+ React Router works with web fetch [Requests](https://developer.mozilla.org/en-US/docs/Web/API/Request), so if your server doesn't, you'll need to adapt whatever objects it uses to a web fetch `Request` object.
121
+
122
+ This step assumes your server receives `Request` objects.
123
+
124
+ ```tsx
125
+ import { renderToString } from "react-dom/server";
126
+ import {
127
+ createStaticHandler,
128
+ createStaticRouter,
129
+ StaticRouterProvider,
130
+ } from "react-router";
131
+
132
+ import routes from "./some-routes.js";
133
+
134
+ let { query, dataRoutes } = createStaticHandler(routes);
135
+
136
+ export async function handler(request: Request) {
137
+ // 1. run actions/loaders to get the routing context with `query`
138
+ let context = await query(request);
139
+
140
+ // If `query` returns a Response, send it raw (a route probably a redirected)
141
+ if (context instanceof Response) {
142
+ return context;
143
+ }
144
+
145
+ // 2. Create a static router for SSR
146
+ let router = createStaticRouter(dataRoutes, context);
147
+
148
+ // 3. Render everything with StaticRouterProvider
149
+ let html = renderToString(
150
+ <StaticRouterProvider
151
+ router={router}
152
+ context={context}
153
+ />,
154
+ );
155
+
156
+ // Setup headers from action and loaders from deepest match
157
+ let leaf = context.matches[context.matches.length - 1];
158
+ let actionHeaders = context.actionHeaders[leaf.route.id];
159
+ let loaderHeaders = context.loaderHeaders[leaf.route.id];
160
+ let headers = new Headers(actionHeaders);
161
+ if (loaderHeaders) {
162
+ for (let [key, value] of loaderHeaders.entries()) {
163
+ headers.append(key, value);
164
+ }
165
+ }
166
+
167
+ headers.set("Content-Type", "text/html; charset=utf-8");
168
+
169
+ // 4. send a response
170
+ return new Response(`<!DOCTYPE html>${html}`, {
171
+ status: context.statusCode,
172
+ headers,
173
+ });
174
+ }
175
+ ```
176
+
177
+ ### 4. Hydrate in the browser
178
+
179
+ Hydration data is embedded onto `window.__staticRouterHydrationData`, use that to initialize your client side router and render a `<RouterProvider>`.
180
+
181
+ ```tsx
182
+ import { StrictMode } from "react";
183
+ import { hydrateRoot } from "react-dom/client";
184
+ import { RouterProvider } from "react-router/dom";
185
+ import routes from "./app/routes.js";
186
+ import { createBrowserRouter } from "react-router";
187
+
188
+ let router = createBrowserRouter(routes, {
189
+ hydrationData: window.__staticRouterHydrationData,
190
+ });
191
+
192
+ hydrateRoot(
193
+ document,
194
+ <StrictMode>
195
+ <RouterProvider router={router} />
196
+ </StrictMode>,
197
+ );
198
+ ```
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: Data Loading
3
+ order: 4
4
+ ---
5
+
6
+ # Data Loading
7
+
8
+ [MODES: data]
9
+
10
+ ## Providing Data
11
+
12
+ Data is provided to route components from route loaders:
13
+
14
+ ```tsx
15
+ createBrowserRouter([
16
+ {
17
+ path: "/",
18
+ loader: async () => {
19
+ // return data from here
20
+ return { records: await getSomeRecords() };
21
+ },
22
+ Component: MyRoute,
23
+ },
24
+ ]);
25
+ ```
26
+
27
+ ## Accessing Data
28
+
29
+ The data is available in route components with `useLoaderData`.
30
+
31
+ ```tsx
32
+ import { useLoaderData } from "react-router";
33
+
34
+ function MyRoute() {
35
+ const { records } = useLoaderData();
36
+ return <div>{records.length}</div>;
37
+ }
38
+ ```
39
+
40
+ As the user navigates between routes, the loaders are called before the route component is rendered.
41
+
42
+ ---
43
+
44
+ Next: [Actions](./actions)
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Data Mode
3
+ order: 3
4
+ ---
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Installation
3
+ order: 1
4
+ ---
5
+
6
+ # Installation
7
+
8
+ [MODES: data]
9
+
10
+ ## Bootstrap with a Bundler Template
11
+
12
+ You can start with a React template from Vite and choose "React", otherwise bootstrap your application however you prefer (Parcel, Webpack, etc).
13
+
14
+ ```shellscript nonumber
15
+ npx create-vite@latest
16
+ ```
17
+
18
+ ## Install React Router
19
+
20
+ Next install React Router from npm:
21
+
22
+ ```shellscript nonumber
23
+ npm i react-router
24
+ ```
25
+
26
+ ## Create a Router and Render
27
+
28
+ Create a router and pass it to `RouterProvider`:
29
+
30
+ ```tsx lines=[3-4,6-11,16]
31
+ import React from "react";
32
+ import ReactDOM from "react-dom/client";
33
+ import { createBrowserRouter } from "react-router";
34
+ import { RouterProvider } from "react-router/dom";
35
+
36
+ const router = createBrowserRouter([
37
+ {
38
+ path: "/",
39
+ element: <div>Hello World</div>,
40
+ },
41
+ ]);
42
+
43
+ const root = document.getElementById("root");
44
+
45
+ ReactDOM.createRoot(root).render(
46
+ <RouterProvider router={router} />,
47
+ );
48
+ ```
49
+
50
+ ---
51
+
52
+ Next: [Routing](./routing)
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Navigating
3
+ order: 6
4
+ ---
5
+
6
+ # Navigating
7
+
8
+ Navigating in Data Mode is the same as Framework Mode, please see the [Navigating](../framework/navigating) guide for more information.
9
+
10
+ ---
11
+
12
+ Next: [Pending UI](./pending-ui)
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Pending UI
3
+ order: 7
4
+ ---
5
+
6
+ # Pending UI
7
+
8
+ Pending UI is the same as Framework Mode, please see the [Pending UI](../framework/pending-ui) guide for more information.
9
+
10
+ ---
11
+
12
+ Next: [Custom Framework](./custom)
@@ -0,0 +1,248 @@
1
+ ---
2
+ title: Route Object
3
+ order: 3
4
+ ---
5
+
6
+ # Route Object
7
+
8
+ [MODES: data]
9
+
10
+ ## Introduction
11
+
12
+ The objects passed to `createBrowserRouter` are called Route Objects.
13
+
14
+ ```tsx lines=[2-5]
15
+ createBrowserRouter([
16
+ {
17
+ path: "/",
18
+ Component: App,
19
+ },
20
+ ]);
21
+ ```
22
+
23
+ Route modules are the foundation of React Router's data features, they define:
24
+
25
+ - data loading
26
+ - actions
27
+ - revalidation
28
+ - error boundaries
29
+ - and more
30
+
31
+ This guide is a quick overview of every route object feature.
32
+
33
+ ## Component
34
+
35
+ The `Component` property in a route object defines the component that will render when the route matches.
36
+
37
+ ```tsx lines=[4]
38
+ createBrowserRouter([
39
+ {
40
+ path: "/",
41
+ Component: MyRouteComponent,
42
+ },
43
+ ]);
44
+
45
+ function MyRouteComponent() {
46
+ return (
47
+ <div>
48
+ <h1>Look ma!</h1>
49
+ <p>
50
+ I'm still using React Router after like 10 years.
51
+ </p>
52
+ </div>
53
+ );
54
+ }
55
+ ```
56
+
57
+ ## `middleware`
58
+
59
+ Route [middleware][middleware] runs sequentially before and after navigations. This gives you a singular place to do things like logging and authentication. The `next` function continues down the chain, and on the leaf route the `next` function executes the loaders/actions for the navigation.
60
+
61
+ ```tsx
62
+ createBrowserRouter([
63
+ {
64
+ path: "/",
65
+ middleware: [loggingMiddleware],
66
+ loader: rootLoader,
67
+ Component: Root,
68
+ children: [{
69
+ path: 'auth',
70
+ middleware: [authMiddleware],
71
+ loader: authLoader,
72
+ Component: Auth,
73
+ children: [...]
74
+ }]
75
+ },
76
+ ]);
77
+
78
+ async function loggingMiddleware({ request }, next) {
79
+ let url = new URL(request.url);
80
+ console.log(`Starting navigation: ${url.pathname}${url.search}`);
81
+ const start = performance.now();
82
+ await next();
83
+ const duration = performance.now() - start;
84
+ console.log(`Navigation completed in ${duration}ms`);
85
+ }
86
+
87
+ const userContext = createContext<User>();
88
+
89
+ async function authMiddleware ({ context }) {
90
+ const userId = getUserId();
91
+
92
+ if (!userId) {
93
+ throw redirect("/login");
94
+ }
95
+
96
+ context.set(userContext, await getUserById(userId));
97
+ };
98
+ ```
99
+
100
+ See also:
101
+
102
+ - [Middleware][middleware]
103
+
104
+ ## `loader`
105
+
106
+ Route loaders provide data to route components before they are rendered.
107
+
108
+ ```tsx
109
+ import {
110
+ useLoaderData,
111
+ createBrowserRouter,
112
+ } from "react-router";
113
+
114
+ createBrowserRouter([
115
+ {
116
+ path: "/",
117
+ loader: loader,
118
+ Component: MyRoute,
119
+ },
120
+ ]);
121
+
122
+ async function loader({ params }) {
123
+ return { message: "Hello, world!" };
124
+ }
125
+
126
+ function MyRoute() {
127
+ let data = useLoaderData();
128
+ return <h1>{data.message}</h1>;
129
+ }
130
+ ```
131
+
132
+ See also:
133
+
134
+ - [`loader` params][loader-params]
135
+
136
+ ## `action`
137
+
138
+ Route actions allow server-side data mutations with automatic revalidation of all loader data on the page when called from `<Form>`, `useFetcher`, and `useSubmit`.
139
+
140
+ ```tsx
141
+ import {
142
+ createBrowserRouter,
143
+ useLoaderData,
144
+ useActionData,
145
+ Form,
146
+ } from "react-router";
147
+ import { TodoList } from "~/components/TodoList";
148
+
149
+ createBrowserRouter([
150
+ {
151
+ path: "/items",
152
+ action: action,
153
+ loader: loader,
154
+ Component: Items,
155
+ },
156
+ ]);
157
+
158
+ async function action({ request }) {
159
+ const data = await request.formData();
160
+ const todo = await fakeDb.addItem({
161
+ title: data.get("title"),
162
+ });
163
+ return { ok: true };
164
+ }
165
+
166
+ // this data will be revalidated after the action completes...
167
+ async function loader() {
168
+ const items = await fakeDb.getItems();
169
+ return { items };
170
+ }
171
+
172
+ // ...so that the list here is updated automatically
173
+ export default function Items() {
174
+ let data = useLoaderData();
175
+ return (
176
+ <div>
177
+ <List items={data.items} />
178
+ <Form method="post" navigate={false}>
179
+ <input type="text" name="title" />
180
+ <button type="submit">Create Todo</button>
181
+ </Form>
182
+ </div>
183
+ );
184
+ }
185
+ ```
186
+
187
+ ## `shouldRevalidate`
188
+
189
+ Loader data is automatically revalidated after certain events like navigations and form submissions.
190
+
191
+ This hook enables you to opt in or out of the default revalidation behavior. The default behavior is nuanced to avoid calling loaders unnecessarily.
192
+
193
+ A route loader is revalidated when:
194
+
195
+ - its own route params change
196
+ - any change to URL search params
197
+ - after an action is called and returns a non-error status code
198
+
199
+ By defining this function, you opt out of the default behavior completely and can manually control when loader data is revalidated for navigations and form submissions.
200
+
201
+ ```tsx
202
+ import type { ShouldRevalidateFunctionArgs } from "react-router";
203
+
204
+ function shouldRevalidate(
205
+ arg: ShouldRevalidateFunctionArgs,
206
+ ) {
207
+ return true; // false
208
+ }
209
+
210
+ createBrowserRouter([
211
+ {
212
+ path: "/",
213
+ shouldRevalidate: shouldRevalidate,
214
+ Component: MyRoute,
215
+ },
216
+ ]);
217
+ ```
218
+
219
+ [`ShouldRevalidateFunctionArgs` Reference Documentation ↗](https://api.reactrouter.com/v7/interfaces/react-router.ShouldRevalidateFunctionArgs.html)
220
+
221
+ Please note the default behavior is different in [Framework Mode](../modes).
222
+
223
+ ## `lazy`
224
+
225
+ Most properties can be lazily imported to reduce the initial bundle size.
226
+
227
+ ```tsx
228
+ createBrowserRouter([
229
+ {
230
+ path: "/app",
231
+ lazy: async () => {
232
+ // load component and loader in parallel before rendering
233
+ const [Component, loader] = await Promise.all([
234
+ import("./app"),
235
+ import("./app-loader"),
236
+ ]);
237
+ return { Component, loader };
238
+ },
239
+ },
240
+ ]);
241
+ ```
242
+
243
+ ---
244
+
245
+ Next: [Data Loading](./data-loading)
246
+
247
+ [loader-params]: https://api.reactrouter.com/v7/interfaces/react-router.LoaderFunctionArgs
248
+ [middleware]: ../../how-to/middleware