diff --git a/.changeset/update-docs.md b/.changeset/update-docs.md
new file mode 100644
index 00000000000..4f329c4b8cf
--- /dev/null
+++ b/.changeset/update-docs.md
@@ -0,0 +1,5 @@
+---
+"@remix-run/dev": patch
+---
+
+Update links printed to the console by the Remix CLI/Dev Server to point to updated docs locations
diff --git a/docs/discussion/server-vs-client.md b/docs/discussion/server-vs-client.md
index 6f30d56a027..173a6fa352f 100644
--- a/docs/discussion/server-vs-client.md
+++ b/docs/discussion/server-vs-client.md
@@ -182,8 +182,8 @@ export const PostPreview = ({ title, description }) => {
[file_convention_client]: ../file-conventions/-client
[file_convention_server]: ../file-conventions/-server
[window_global]: https://developer.mozilla.org/en-US/docs/Web/API/Window/window
-[server-bundles]: ../future/server-bundles
+[server-bundles]: ../guides/server-bundles
[vite-config]: ../file-conventions/vite-configuration
[vite-env-only]: /~https://github.com/pcattori/vite-env-only
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
diff --git a/docs/file-conventions/-client.md b/docs/file-conventions/-client.md
index 6a4a5f76536..cbf812d8426 100644
--- a/docs/file-conventions/-client.md
+++ b/docs/file-conventions/-client.md
@@ -28,5 +28,5 @@ console.log(supportsVibrationAPI);
Refer to the Route Module section in the sidebar for more information.
[use_effect]: https://react.dev/reference/react/useEffect
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
diff --git a/docs/file-conventions/-server.md b/docs/file-conventions/-server.md
index 57530879e99..9c51eb0a9ac 100644
--- a/docs/file-conventions/-server.md
+++ b/docs/file-conventions/-server.md
@@ -27,5 +27,5 @@ Refer to the Route Module section in the sidebar for more information.
When using the [Classic Remix Compiler][classic-remix-compiler], `.server` modules are replaced with empty modules and will not result in a compilation error. Note that this can result in runtime errors.
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
diff --git a/docs/file-conventions/remix-config.md b/docs/file-conventions/remix-config.md
index ac38745c5cc..6905cabb2d0 100644
--- a/docs/file-conventions/remix-config.md
+++ b/docs/file-conventions/remix-config.md
@@ -74,14 +74,7 @@ relative to `remix.config.js`. Defaults to `".cache"`.
## future
-The `future` config lets you opt-into future breaking changes via [Future Flags][future-flags]. The following future flags currently exist in Remix v2 and will become the default behavior in Remix v3:
-
-- **`v3_fetcherPersist`**: Change fetcher persistence/cleanup behavior in 2 ways ([RFC][fetcherpersist-rfc]):
- - Fetchers are no longer removed on unmount, and remain exposed via [`useFetchers`][use-fetchers] until they return to an `idle` state
- - Fetchers that complete while still mounted no longer persist in [`useFetchers`][use-fetchers] since you can access those fetchers via [`useFetcher`][use-fetcher]
-- **`v3_relativeSplatPath`**: Fixes buggy relative path resolution in splat routes. Please see the [React Router docs][relativesplatpath] for more information.
-- **`v3_throwAbortReason`**: When a server-side request is aborted, Remix will throw the `request.signal.reason` instead of an error such as `new Error("query() call aborted...")`
-- **`unstable_singleFetch`**: Opt into [Single Fetch][single-fetch] behavior
+The `future` config lets you opt-into future breaking changes via [Future Flags][future-flags]. Please see the [Current Future Flags][current-future-flags] section for a list of all available Future Flags.
## ignoredRouteFiles
@@ -282,11 +275,7 @@ There are a few conventions that Remix uses you should be aware of.
[browser-node-builtins-polyfill]: #browsernodebuiltinspolyfill
[server-node-builtins-polyfill]: #servernodebuiltinspolyfill
[future-flags]: ../start/future-flags
-[fetcherpersist-rfc]: /~https://github.com/remix-run/remix/discussions/7698
-[use-fetchers]: ../hooks/use-fetchers
-[use-fetcher]: ../hooks/use-fetcher
-[relativesplatpath]: https://reactrouter.com/en/main/hooks/use-resolved-path#splat-paths
-[single-fetch]: ../guides/single-fetch
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vite-config]: ./vite-configuration
+[current-future-flags]: ../start/future-flags#current-future-flags
diff --git a/docs/file-conventions/vite-config.md b/docs/file-conventions/vite-config.md
index 396e8eae8ae..aa9900d2a4d 100644
--- a/docs/file-conventions/vite-config.md
+++ b/docs/file-conventions/vite-config.md
@@ -52,14 +52,7 @@ The path to the `app` directory, relative to the project root. Defaults to
#### future
-The `future` config lets you opt-into future breaking changes via [Future Flags][future-flags]. The following future flags currently exist in Remix v2 and will become the default behavior in Remix v3:
-
-- **`v3_fetcherPersist`**: Change fetcher persistence/cleanup behavior in 2 ways ([RFC][fetcherpersist-rfc]):
- - Fetchers are no longer removed on unmount, and remain exposed via [`useFetchers`][use-fetchers] until they return to an `idle` state
- - Fetchers that complete while still mounted no longer persist in [`useFetchers`][use-fetchers] since you can access those fetchers via [`useFetcher`][use-fetcher]
-- **`v3_relativeSplatPath`**: Fixes buggy relative path resolution in splat routes. Please see the [React Router docs][relativesplatpath] for more information.
-- **`v3_throwAbortReason`**: When a server-side request is aborted, Remix will throw the `request.signal.reason` instead of an error such as `new Error("query() call aborted...")`
-- **`unstable_singleFetch`**: Opt into [Single Fetch][single-fetch] behavior
+The `future` config lets you opt-into future breaking changes via [Future Flags][future-flags]. Please see the [Current Future Flags][current-future-flags] section for a list of all available Future Flags.
#### ignoredRouteFiles
@@ -140,18 +133,14 @@ A function for assigning addressable routes to [server bundles][server-bundles].
You may also want to enable the `manifest` option since, when server bundles are enabled, it contains mappings between routes and server bundles.
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
[remix-config]: ./remix-config
[vite]: https://vitejs.dev
[future-flags]: ../start/future-flags
-[fetcherpersist-rfc]: /~https://github.com/remix-run/remix/discussions/7698
-[use-fetchers]: ../hooks/use-fetchers
-[use-fetcher]: ../hooks/use-fetcher
-[relativesplatpath]: https://reactrouter.com/en/main/hooks/use-resolved-path#splat-paths
[minimatch]: https://npm.im/minimatch
-[presets]: ../future/presets
-[server-bundles]: ../future/server-bundles
+[presets]: ../guides/presets
+[server-bundles]: ../guides/server-bundles
[rr-basename]: https://reactrouter.com/routers/create-browser-router#basename
[vite-public-base-path]: https://vitejs.dev/config/shared-options.html#base
[vite-base]: https://vitejs.dev/config/shared-options.html#base
-[single-fetch]: ../guides/single-fetch
+[current-future-flags]: ../start/future-flags#current-future-flags
diff --git a/docs/future/index.md b/docs/future/index.md
deleted file mode 100644
index ff789c6d3c4..00000000000
--- a/docs/future/index.md
+++ /dev/null
@@ -1,3 +0,0 @@
----
-title: Future
----
diff --git a/docs/guides/contributing.md b/docs/guides/contributing.md
index f2a5c3ee9d1..c2a8dbf7902 100644
--- a/docs/guides/contributing.md
+++ b/docs/guides/contributing.md
@@ -1,7 +1,6 @@
---
title: Contributing
description: Thank you for contributing to Remix! Here's everything you need to know before you open a pull request.
-order: 6
---
# Contributing to Remix
diff --git a/docs/guides/gotchas.md b/docs/guides/gotchas.md
index 4bc42abd0e6..2e7ae4b208c 100644
--- a/docs/guides/gotchas.md
+++ b/docs/guides/gotchas.md
@@ -206,4 +206,4 @@ Note that, even if this issue didn't exist, we'd still recommend using named re-
[fetch]: https://developer.mozilla.org/en-US/docs/Web/API/fetch
[set_cookie_header]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
[cookie_header]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/guides/local-tls.md b/docs/guides/local-tls.md
index 474c51f6247..501a68980c8 100644
--- a/docs/guides/local-tls.md
+++ b/docs/guides/local-tls.md
@@ -118,4 +118,4 @@ remix dev --tls-key=key.pem --tls-cert=cert.pem -c "node ./server.js"
Your app should now be running with local TLS!
[mkcert]: /~https://github.com/FiloSottile/mkcert#installation
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/guides/manual-mode.md b/docs/guides/manual-mode.md
index b201c089018..ec6d48d409e 100644
--- a/docs/guides/manual-mode.md
+++ b/docs/guides/manual-mode.md
@@ -310,4 +310,4 @@ There is also a handy [`remember` utility][remember] that can help out here if y
[templates]: /~https://github.com/remix-run/remix/blob/main/templates
[community_examples]: /~https://github.com/xHomu/remix-v2-server
[remember]: https://npm.im/@epic-web/remember
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/guides/mdx.md b/docs/guides/mdx.md
index 8bc2b01f96d..a7b9ba78a18 100644
--- a/docs/guides/mdx.md
+++ b/docs/guides/mdx.md
@@ -204,9 +204,8 @@ exports.mdx = async (filename) => {
};
```
-[remix-vite]: ../future//vite
[mdx-plugin]: https://mdxjs.com/packages/rollup
[mdx]: https://mdxjs.com
[yaml]: https://yaml.org
[mdx-bundler]: /~https://github.com/kentcdodds/mdx-bundler
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/guides/migrating-react-router-app.md b/docs/guides/migrating-react-router-app.md
index 3ada2dfd318..14d1f4a5dc5 100644
--- a/docs/guides/migrating-react-router-app.md
+++ b/docs/guides/migrating-react-router-app.md
@@ -727,5 +727,5 @@ Now then, go off and _remix your app_. We think you'll like what you build along
[css-side-effect-imports]: ./styling#css-side-effect-imports
[css-bundling]: ./styling#css-bundling
[open-graph-protocol]: https://ogp.me
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ./vite
diff --git a/docs/guides/performance.md b/docs/guides/performance.md
index 99c30c745ab..2c5cc11f0b3 100644
--- a/docs/guides/performance.md
+++ b/docs/guides/performance.md
@@ -69,4 +69,4 @@ Here are some other technologies to help speed up your servers:
[lru-cache]: https://www.npmjs.com/package/lru-cache
[redis]: https://www.npmjs.com/package/redis
[https-esbuild-github-io-analyze]: https://esbuild.github.io/analyze
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[classic-remix-compiler]: ./vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/future/presets.md b/docs/guides/presets.md
similarity index 100%
rename from docs/future/presets.md
rename to docs/guides/presets.md
diff --git a/docs/future/server-bundles.md b/docs/guides/server-bundles.md
similarity index 100%
rename from docs/future/server-bundles.md
rename to docs/guides/server-bundles.md
diff --git a/docs/future/spa-mode.md b/docs/guides/spa-mode.md
similarity index 99%
rename from docs/future/spa-mode.md
rename to docs/guides/spa-mode.md
index d3dec43c7bd..fe7088e63bf 100644
--- a/docs/future/spa-mode.md
+++ b/docs/guides/spa-mode.md
@@ -294,7 +294,7 @@ Once you've got all your routes living in their own files, you can:
[meta]: ../components/meta
[links]: ../components/links
[migrating-rr]: https://remix.run/docs/en/main/guides/migrating-react-router-app
-[remix-vite]: ../future/vite
+[remix-vite]: ./vite
[migrate-rr]: #migrating-from-react-router
[react-lazy]: https://react.dev/reference/react/lazy
[client-only]: /~https://github.com/sergiodxa/remix-utils?tab=readme-ov-file#clientonly
diff --git a/docs/guides/templates.md b/docs/guides/templates.md
index 6dafaf65e89..96928197c3b 100644
--- a/docs/guides/templates.md
+++ b/docs/guides/templates.md
@@ -1,7 +1,6 @@
---
title: Templates
description: The quickest way to get rocking and rolling with Remix
-order: 3
---
# Templates and Stacks
diff --git a/docs/future/vite.md b/docs/guides/vite.md
similarity index 99%
rename from docs/future/vite.md
rename to docs/guides/vite.md
index 49e3f6bbd45..841b7f68c29 100644
--- a/docs/future/vite.md
+++ b/docs/guides/vite.md
@@ -487,7 +487,8 @@ export const onRequest = createPagesFunctionHandler({
👉 **Access Bindings and Environment Variables through `context.cloudflare.env` instead of `context.env`**
While you'll mostly use Vite during development, you can also use Wrangler to preview and deploy your app.
-To learn more, see [_Cloudflare > Vite & Wrangler_][cloudflare-vite-and-wrangler].
+
+To learn more, see the [_Cloudflare_][cloudflare-vite] section of this document.
👉 **Update your `package.json` scripts**
@@ -1126,14 +1127,12 @@ Finally, we were inspired by how other frameworks implemented Vite support:
[server-dependencies-to-bundle]: https://remix.run/docs/en/main/file-conventions/remix-config#serverdependenciestobundle
[blues-stack]: /~https://github.com/remix-run/blues-stack
[global-node-polyfills]: ../other-api/node#polyfills
-[server-bundles]: ./server-bundles
[vite-plugin-inspect]: /~https://github.com/antfu/vite-plugin-inspect
[vite-perf]: https://vitejs.dev/guide/performance.html
[node-options]: https://nodejs.org/api/cli.html#node_optionsoptions
[rollup-plugin-visualizer]: /~https://github.com/btd/rollup-plugin-visualizer
[debugging]: #debugging
[performance]: #performance
-[vite-env-only]: /~https://github.com/pcattori/vite-env-only
[explicitly-isolate-server-only-code]: #splitting-up-client-and-server-code
[route-component]: ../route/component
[error-boundary]: ../route/error-boundary
@@ -1152,12 +1151,9 @@ Finally, we were inspired by how other frameworks implemented Vite support:
[wrangler-getplatformproxy]: https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy
[wrangler-getplatformproxy-return]: https://developers.cloudflare.com/workers/wrangler/api/#return-type-1
[remix-config-server]: https://remix.run/docs/en/main/file-conventions/remix-config#server
-[cloudflare-vite-and-wrangler]: #vite--wrangler
-[rr-basename]: https://reactrouter.com/routers/create-browser-router#basename
-[vite-public-base-path]: https://vitejs.dev/config/shared-options.html#base
+[cloudflare-vite]: #cloudflare
[vite-base]: https://vitejs.dev/config/shared-options.html#base
[how-fix-cjs-esm]: https://www.youtube.com/watch?v=jmNuEEtwkD4
-[presets]: ./presets
[fix-up-css-imports-referenced-in-links]: #fix-up-css-imports-referenced-in-links
[vite-plugin-react]: /~https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react
[splitting-up-client-and-server-code]: ../discussion/server-vs-client
diff --git a/docs/other-api/dev.md b/docs/other-api/dev.md
index 5709f6f3cf6..098c729f2ef 100644
--- a/docs/other-api/dev.md
+++ b/docs/other-api/dev.md
@@ -369,5 +369,5 @@ While the initial build slowdown is inherently a cost for HDR, we plan to optimi
[bundle_analysis]: ../guides/performance
[manual_mode]: ../guides/manual-mode
[hmr]: ../discussion/hot-module-replacement
-[remix-vite]: ../future/vite
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
diff --git a/docs/start/future-flags.md b/docs/start/future-flags.md
index cb4c1a14179..4dd92a036df 100644
--- a/docs/start/future-flags.md
+++ b/docs/start/future-flags.md
@@ -12,7 +12,7 @@ In our approach to software development, we aim to achieve the following goals f
## Unstable APIs and Future Flags
-We introduce new features into the current release with a future flag that looks something like `unstable_someFeature`.
+We introduce new features into the current release with a future flag that looks something like `unstable_someFeature`. You can specify these flags in the Remix Vite Plugin `future` option in your [`vite.config.ts`][vite-config-future] file:
```ts filename=vite.config.ts lines=[7-9]
import { vitePlugin as remix } from "@remix-run/dev";
@@ -29,6 +29,8 @@ export default defineConfig({
});
```
+If you are not yet using Vite, you can provide Future Flags via the [`remix.config.js` `future`][remix-config-future] option
+
- Once an unstable feature reaches a stable state, we remove the special prefix and include the feature in the next minor release. At this point, the API's structure remains consistent throughout subsequent minor releases.
- This approach allows us to refine the API collaboratively with early adopters, incorporating necessary changes in the unstable phase without affecting all users. The stable releases then benefit from these improvements without disruptions.
@@ -59,10 +61,25 @@ export default defineConfig({
- If all the `v3_*` future flags are enabled, transitioning to `v3` should ideally not necessitate any changes to your codebase.
- Some future flags that bring about breaking changes initially start as `unstable_*` flags. These might undergo modifications during minor releases. Once they become `v3_*` future flags, the corresponding API is set and won't change further.
+## Current Future Flags
+
+The following future flags currently exist in Remix v2 and will become the default behavior in Remix v3:
+
+- **`v3_fetcherPersist`**: Change fetcher persistence/cleanup behavior in 2 ways ([RFC][fetcherpersist-rfc]):
+ - Fetchers are no longer removed on unmount, and remain exposed via [`useFetchers`][use-fetchers] until they return to an `idle` state
+ - Fetchers that complete while still mounted no longer persist in [`useFetchers`][use-fetchers] since you can access those fetchers via [`useFetcher`][use-fetcher]
+- **`v3_relativeSplatPath`**: Fixes buggy relative path resolution in splat routes. Please see the [React Router docs][relativesplatpath] for more information.
+- **`v3_throwAbortReason`**: When a server-side request is aborted, Remix will throw the `request.signal.reason` instead of an error such as `new Error("query() call aborted...")`
+- **`unstable_singleFetch`**: Opt into [Single Fetch][single-fetch] behavior
+
## Summary
Our development strategy focuses on gradual feature adoption and seamless version upgrades for major releases. This empowers developers to selectively integrate new features, avoiding the need for extensive code adjustments during version transitions. By introducing features through `unstable_*` flags, we refine the API collaboratively with early adopters while ensuring stable releases benefit from enhancements. Through careful management of breaking changes using `v3_*` flags, we provide the flexibility to adopt changes incrementally, facilitating a smoother transition between major versions. While this increases the complexity for developing Remix the framework, this developer-centric approach greatly simplifies application development with Remix, ultimately leading to improved software quality and (hopefully!) developer satisfaction.
-For a list of currently available Future Flags, please see the [`future`][remix-config-future] section in the `vite.config.ts` documentation.
-
-[remix-config-future]: ../file-conventions/vite-config#future
+[vite-config-future]: ../file-conventions/vite-config#future
+[remix-config-future]: ../file-conventions/remix-config#future
+[fetcherpersist-rfc]: /~https://github.com/remix-run/remix/discussions/7698
+[use-fetchers]: ../hooks/use-fetchers
+[use-fetcher]: ../hooks/use-fetcher
+[relativesplatpath]: https://reactrouter.com/en/main/hooks/use-resolved-path#splat-paths
+[single-fetch]: ../guides/single-fetch
diff --git a/docs/start/v2.md b/docs/start/v2.md
index 95dc0af306a..caaf3076507 100644
--- a/docs/start/v2.md
+++ b/docs/start/v2.md
@@ -1110,8 +1110,8 @@ module.exports = {
Please see the [`serverModuleFormat`][server-module-format] section.
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[future-flags]: ./future-flags
[remix_config]: ../file-conventions/remix-config
[pass_through_class]: https://nodejs.org/api/stream.html#class-streampassthrough
diff --git a/docs/styling/bundling.md b/docs/styling/bundling.md
index e695de54cb5..085c7d54030 100644
--- a/docs/styling/bundling.md
+++ b/docs/styling/bundling.md
@@ -49,6 +49,6 @@ Avoid using `export *` due to an [issue with `esbuild`'s CSS tree shaking][esbui
[css-modules]: ./css-modules
[vanilla-extract]: ./vanilla-extract
[regular-stylesheet-imports]: ./css
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vite-css]: https://vitejs.dev/guide/features#css
diff --git a/docs/styling/css-imports.md b/docs/styling/css-imports.md
index 4c0cf49c94a..0f92747ffa4 100644
--- a/docs/styling/css-imports.md
+++ b/docs/styling/css-imports.md
@@ -34,4 +34,4 @@ module.exports = {
[css-bundling]: ./bundling
[server-dependencies-to-bundle]: ../file-conventions/remix-config#serverdependenciestobundle
-[remix-vite]: ../future/vite
+[remix-vite]: ../guides/vite
diff --git a/docs/styling/css-modules.md b/docs/styling/css-modules.md
index 8003688da76..da845d46786 100644
--- a/docs/styling/css-modules.md
+++ b/docs/styling/css-modules.md
@@ -37,6 +37,6 @@ Button.displayName = "Button";
[css-bundling]: ./bundling
[css-modules]: /~https://github.com/css-modules/css-modules
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vite-css-modules]: https://vitejs.dev/guide/features#css-modules
diff --git a/docs/styling/css.md b/docs/styling/css.md
index 494f8f96a10..02df370b322 100644
--- a/docs/styling/css.md
+++ b/docs/styling/css.md
@@ -332,5 +332,5 @@ export const links: LinksFunction = () => {
[links]: ../route/links
[custom-properties]: https://developer.mozilla.org/en-US/docs/Web/CSS/--*
[link]: ../components/link
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
diff --git a/docs/styling/postcss.md b/docs/styling/postcss.md
index 3d3e7e08e9b..7ae63320558 100644
--- a/docs/styling/postcss.md
+++ b/docs/styling/postcss.md
@@ -105,6 +105,6 @@ An example using SASS.
[css-bundling]: ./bundling
[postcss-preset-env]: https://preset-env.cssdb.org
[esbuild-css-tree-shaking-issue]: /~https://github.com/evanw/esbuild/issues/1370
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vite-postcss]: https://vitejs.dev/guide/features#postcss
diff --git a/docs/styling/tailwind.md b/docs/styling/tailwind.md
index fb0475f3ccb..e41dddb56c0 100644
--- a/docs/styling/tailwind.md
+++ b/docs/styling/tailwind.md
@@ -83,6 +83,6 @@ Alternatively, you can use [PostCSS][built-in-post-css-support] with the [postcs
[built-in-post-css-support]: ./postcss
[tailwind-intelli-sense-extension]: https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss
[postcss-import]: /~https://github.com/postcss/postcss-import
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vite-postcss]: https://vitejs.dev/guide/features#postcss
diff --git a/docs/styling/vanilla-extract.md b/docs/styling/vanilla-extract.md
index f28a50609d8..3d742f31bcb 100644
--- a/docs/styling/vanilla-extract.md
+++ b/docs/styling/vanilla-extract.md
@@ -48,6 +48,6 @@ Button.displayName = "Button";
[vanilla-extract]: https://vanilla-extract.style
[sprinkles]: https://vanilla-extract.style/documentation/packages/sprinkles
[css-bundling]: ./bundling
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[vanilla-extract-vite]: https://vanilla-extract.style/documentation/integrations/vite
diff --git a/docs/tutorials/jokes.md b/docs/tutorials/jokes.md
index 8c38a8dee03..2e991e87fcd 100644
--- a/docs/tutorials/jokes.md
+++ b/docs/tutorials/jokes.md
@@ -7784,8 +7784,8 @@ Any time you make a change, simply run `fly deploy` again to redeploy.
Phew! And there we have it. If you made it through this whole thing then I'm really impressed ([tweet your success][tweet-your-success])! There's a lot to Remix, and we've only gotten you started. Good luck on the rest of your Remix journey!
-[classic-remix-compiler]: ../future/vite#classic-remix-compiler-vs-remix-vite
-[remix-vite]: ../future/vite
+[classic-remix-compiler]: ../guides/vite#classic-remix-compiler-vs-remix-vite
+[remix-vite]: ../guides/vite
[remix-jokes]: https://remix-jokes.lol
[mdn]: https://developer.mozilla.org/en-US
[prisma]: https://www.prisma.io
diff --git a/integration/vite-dot-server-test.ts b/integration/vite-dot-server-test.ts
index 67ca42fc89b..b21edc3d606 100644
--- a/integration/vite-dot-server-test.ts
+++ b/integration/vite-dot-server-test.ts
@@ -148,7 +148,7 @@ test.describe("Vite / route / server-only module referenced by client", () => {
` But other route exports in 'app/routes/_index.tsx' depend on '${specifier}'.`,
- " See https://remix.run/docs/en/main/future/vite#splitting-up-client-and-server-code",
+ " See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
].forEach(expect(stderr).toMatch);
});
}
@@ -208,7 +208,7 @@ test.describe("Vite / non-route / server-only module referenced by client", () =
` '${specifier}' imported by 'app/reexport-server-only.ts'`,
- " See https://remix.run/docs/en/main/future/vite#splitting-up-client-and-server-code",
+ " See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
].forEach(expect(stderr).toMatch);
});
}
diff --git a/integration/vite-spa-mode-test.ts b/integration/vite-spa-mode-test.ts
index d7d6adc87ac..6bccd256a4f 100644
--- a/integration/vite-spa-mode-test.ts
+++ b/integration/vite-spa-mode-test.ts
@@ -44,7 +44,7 @@ test.describe("SPA Mode", () => {
let stderr = result.stderr.toString("utf8");
expect(stderr).toMatch(
"SPA Mode: 3 invalid route export(s) in `routes/invalid-exports.tsx`: " +
- "`headers`, `loader`, `action`. See https://remix.run/future/spa-mode " +
+ "`headers`, `loader`, `action`. See https://remix.run/guides/spa-mode " +
"for more information."
);
});
@@ -74,7 +74,7 @@ test.describe("SPA Mode", () => {
expect(stderr).toMatch(
"SPA Mode: Invalid `HydrateFallback` export found in `routes/invalid-exports.tsx`. " +
"`HydrateFallback` is only permitted on the root route in SPA Mode. " +
- "See https://remix.run/future/spa-mode for more information."
+ "See https://remix.run/guides/spa-mode for more information."
);
});
diff --git a/packages/remix-dev/vite/plugin.ts b/packages/remix-dev/vite/plugin.ts
index 2160bcf7edf..0366cec8f08 100644
--- a/packages/remix-dev/vite/plugin.ts
+++ b/packages/remix-dev/vite/plugin.ts
@@ -1548,7 +1548,7 @@ export const remixVitePlugin: RemixVitePlugin = (remixUserConfig = {}) => {
"",
` But other route exports in '${importerShort}' depend on '${id}'.`,
"",
- " See https://remix.run/docs/en/main/future/vite#splitting-up-client-and-server-code",
+ " See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
"",
].join("\n")
);
@@ -1560,7 +1560,7 @@ export const remixVitePlugin: RemixVitePlugin = (remixUserConfig = {}) => {
"",
` '${id}' imported by '${importerShort}'`,
"",
- " See https://remix.run/docs/en/main/future/vite#splitting-up-client-and-server-code",
+ " See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
"",
].join("\n")
);
@@ -1603,7 +1603,7 @@ export const remixVitePlugin: RemixVitePlugin = (remixUserConfig = {}) => {
let str = serverOnlyExports.map((e) => `\`${e}\``).join(", ");
let message =
`SPA Mode: ${serverOnlyExports.length} invalid route export(s) in ` +
- `\`${route.file}\`: ${str}. See https://remix.run/future/spa-mode ` +
+ `\`${route.file}\`: ${str}. See https://remix.run/guides/spa-mode ` +
`for more information.`;
throw Error(message);
}
@@ -1616,7 +1616,7 @@ export const remixVitePlugin: RemixVitePlugin = (remixUserConfig = {}) => {
let message =
`SPA Mode: Invalid \`HydrateFallback\` export found in ` +
`\`${route.file}\`. \`HydrateFallback\` is only permitted on ` +
- `the root route in SPA Mode. See https://remix.run/future/spa-mode ` +
+ `the root route in SPA Mode. See https://remix.run/guides/spa-mode ` +
`for more information.`;
throw Error(message);
}
diff --git a/templates/cloudflare/README.md b/templates/cloudflare/README.md
index 22cba04fe8f..ecb7e19d5a4 100644
--- a/templates/cloudflare/README.md
+++ b/templates/cloudflare/README.md
@@ -1,6 +1,6 @@
# Welcome to Remix + Vite!
-📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features.
+📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/guides/vite) for details on supported features.
## Typegen
diff --git a/templates/express/README.md b/templates/express/README.md
index ec619a8eb45..89422e2f556 100644
--- a/templates/express/README.md
+++ b/templates/express/README.md
@@ -1,6 +1,6 @@
# Welcome to Remix + Vite!
-📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features.
+📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/guides/vite) for details on supported features.
## Development
diff --git a/templates/remix-javascript/README.md b/templates/remix-javascript/README.md
index c05e097d923..6417d506d2f 100644
--- a/templates/remix-javascript/README.md
+++ b/templates/remix-javascript/README.md
@@ -1,6 +1,6 @@
# Welcome to Remix + Vite!
-📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features.
+📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/guides/vite) for details on supported features.
## Development
diff --git a/templates/remix/README.md b/templates/remix/README.md
index c05e097d923..6417d506d2f 100644
--- a/templates/remix/README.md
+++ b/templates/remix/README.md
@@ -1,6 +1,6 @@
# Welcome to Remix + Vite!
-📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features.
+📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/guides/vite) for details on supported features.
## Development
diff --git a/templates/spa/README.md b/templates/spa/README.md
index 033f096723a..b033ca4adbc 100644
--- a/templates/spa/README.md
+++ b/templates/spa/README.md
@@ -1,6 +1,6 @@
# templates/spa
-This template leverages [Remix SPA Mode](https://remix.run/docs/en/main/future/spa-mode) and the [Remix Vite Plugin](https://remix.run/docs/en/main/future/vite) to build your app as a Single-Page Application using [Client Data](https://remix.run/docs/en/main/guides/client-data) for all of your data loads and mutations.
+This template leverages [Remix SPA Mode](https://remix.run/docs/en/main/guides/spa-mode) and the [Remix Vite Plugin](https://remix.run/docs/en/main/guides/vite) to build your app as a Single-Page Application using [Client Data](https://remix.run/docs/en/main/guides/client-data) for all of your data loads and mutations.
## Setup
diff --git a/templates/spa/app/routes/_index.tsx b/templates/spa/app/routes/_index.tsx
index 04198afc36e..a7884796d47 100644
--- a/templates/spa/app/routes/_index.tsx
+++ b/templates/spa/app/routes/_index.tsx
@@ -15,7 +15,7 @@ export default function Index() {
SPA Mode Guide
diff --git a/templates/vite/README.md b/templates/vite/README.md
index c05e097d923..6417d506d2f 100644
--- a/templates/vite/README.md
+++ b/templates/vite/README.md
@@ -1,6 +1,6 @@
# Welcome to Remix + Vite!
-📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features.
+📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/guides/vite) for details on supported features.
## Development