diff --git a/apps/cloud/src/router.tsx b/apps/cloud/src/router.tsx index 4c74669727..2ce679a7c4 100644 --- a/apps/cloud/src/router.tsx +++ b/apps/cloud/src/router.tsx @@ -1,10 +1,10 @@ import { createRouter } from "@tanstack/react-router"; +import { sharedConsoleRouterOptions } from "@executor-js/react/console-router-options"; import { routeTree } from "./routeTree.gen"; export const getRouter = () => { return createRouter({ routeTree, - scrollRestoration: true, - defaultPreloadStaleTime: 0, + ...sharedConsoleRouterOptions, }); }; diff --git a/apps/host-cloudflare/web/router.tsx b/apps/host-cloudflare/web/router.tsx index 0d1f426510..d98c640b2a 100644 --- a/apps/host-cloudflare/web/router.tsx +++ b/apps/host-cloudflare/web/router.tsx @@ -1,10 +1,10 @@ import { createRouter } from "@tanstack/react-router"; +import { sharedConsoleRouterOptions } from "@executor-js/react/console-router-options"; import { routeTree } from "./routeTree.gen"; export const getRouter = () => createRouter({ routeTree, - scrollRestoration: true, - defaultPreloadStaleTime: 0, + ...sharedConsoleRouterOptions, }); diff --git a/apps/host-selfhost/web/router.tsx b/apps/host-selfhost/web/router.tsx index 0d1f426510..d98c640b2a 100644 --- a/apps/host-selfhost/web/router.tsx +++ b/apps/host-selfhost/web/router.tsx @@ -1,10 +1,10 @@ import { createRouter } from "@tanstack/react-router"; +import { sharedConsoleRouterOptions } from "@executor-js/react/console-router-options"; import { routeTree } from "./routeTree.gen"; export const getRouter = () => createRouter({ routeTree, - scrollRestoration: true, - defaultPreloadStaleTime: 0, + ...sharedConsoleRouterOptions, }); diff --git a/packages/app/src/router.tsx b/packages/app/src/router.tsx index 4c74669727..2ce679a7c4 100644 --- a/packages/app/src/router.tsx +++ b/packages/app/src/router.tsx @@ -1,10 +1,10 @@ import { createRouter } from "@tanstack/react-router"; +import { sharedConsoleRouterOptions } from "@executor-js/react/console-router-options"; import { routeTree } from "./routeTree.gen"; export const getRouter = () => { return createRouter({ routeTree, - scrollRestoration: true, - defaultPreloadStaleTime: 0, + ...sharedConsoleRouterOptions, }); }; diff --git a/packages/react/package.json b/packages/react/package.json index 62e41b5c4b..12c1c28144 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -9,6 +9,7 @@ "bun": "./src/console-routes.ts", "default": "./dist/console-routes.js" }, + "./console-router-options": "./src/console-router-options.ts", "./api/oauth-popup": "./src/api/oauth-popup.ts", "./api/shell-host": "./src/api/shell-host.ts", "./api/*": "./src/api/*.tsx", diff --git a/packages/react/src/console-router-options.ts b/packages/react/src/console-router-options.ts new file mode 100644 index 0000000000..ba2e565b88 --- /dev/null +++ b/packages/react/src/console-router-options.ts @@ -0,0 +1,11 @@ +// Shared TanStack Router options for every Executor console host (desktop app, +// cloud, self-host, Cloudflare). Keep navigation snappy: code-split route +// chunks preload on link hover so clicking a sidebar tab does not suspend on +// an empty outlet while the chunk downloads. + +export const sharedConsoleRouterOptions = { + scrollRestoration: true, + defaultPreload: "intent" as const, + // Effect atoms own their own cache; we do not use route loaders for data. + defaultPreloadStaleTime: 0, +};