diff --git a/.changeset/spotty-moons-repeat.md b/.changeset/spotty-moons-repeat.md new file mode 100644 index 000000000..daa950dc4 --- /dev/null +++ b/.changeset/spotty-moons-repeat.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Restore the optional `routerLoad` third argument to `createHandler`, which primes custom routers (e.g. TanStack Router) on the server before SSR rendering. It was accidentally dropped in the v2 rewrite. diff --git a/packages/start/src/server/handler.ts b/packages/start/src/server/handler.ts index e195d42c7..c1fea4b4c 100644 --- a/packages/start/src/server/handler.ts +++ b/packages/start/src/server/handler.ts @@ -21,6 +21,7 @@ export function createBaseHandler( createPageEvent: (e: FetchEvent) => Promise, fn: (context: PageEvent) => JSX.Element, options: HandlerOptions | ((context: PageEvent) => HandlerOptions | Promise) = {}, + routerLoad?: (event: FetchEvent) => Promise, ): H3 { const handler = defineHandler({ middleware: middleware.length ? middleware.map(decorateMiddleware) : undefined, @@ -64,6 +65,8 @@ export function createBaseHandler( } } + if (routerLoad) await routerLoad(event); + const context = await createPageEvent(event); const resolvedOptions = @@ -134,8 +137,9 @@ export function createBaseHandler( export function createHandler( fn: (context: PageEvent) => JSX.Element, options: HandlerOptions | ((context: PageEvent) => HandlerOptions | Promise) = {}, + routerLoad?: (event: FetchEvent) => Promise, ): H3 { - return createBaseHandler(createPageEvent, fn, options); + return createBaseHandler(createPageEvent, fn, options, routerLoad); } export async function createPageEvent(ctx: FetchEvent) { diff --git a/packages/start/src/server/spa/handler.ts b/packages/start/src/server/spa/handler.ts index 6bec714cf..855f02c5f 100644 --- a/packages/start/src/server/spa/handler.ts +++ b/packages/start/src/server/spa/handler.ts @@ -12,8 +12,9 @@ import type { FetchEvent, HandlerOptions, PageEvent } from "../types.ts"; export function createHandler( fn: (context: PageEvent) => JSX.Element, options?: HandlerOptions | ((context: PageEvent) => HandlerOptions), + routerLoad?: (event: FetchEvent) => Promise, ): H3 { - return createBaseHandler(createPageEvent, fn, options); + return createBaseHandler(createPageEvent, fn, options, routerLoad); } async function createPageEvent(ctx: FetchEvent) {