Skip to content

Commit 00d960b

Browse files
brenelzclaude
andcommitted
fix: restore routerLoad argument to createHandler
The optional 3rd argument to createHandler, introduced in #1840 to enable TanStack Router SSR, was accidentally dropped in the v2 rewrite (#1942). The client half (StartClientTanstack) survived, so apps using the with-tanstack-router pattern crashed with a 500 from an uninitialized router store. Restores routerLoad on both createHandler variants and threads it through createBaseHandler, invoked before createPageEvent so it only runs for page renders (not server functions or API routes). Fixes #2221 Co-Authored-By: Claude Fable 5 <[email protected]>
1 parent eeff49a commit 00d960b

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

‎.changeset/spotty-moons-repeat.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/start": patch
3+
---
4+
5+
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.

‎packages/start/src/server/handler.ts‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export function createBaseHandler(
2121
createPageEvent: (e: FetchEvent) => Promise<PageEvent>,
2222
fn: (context: PageEvent) => JSX.Element,
2323
options: HandlerOptions | ((context: PageEvent) => HandlerOptions | Promise<HandlerOptions>) = {},
24+
routerLoad?: (event: FetchEvent) => Promise<void>,
2425
): H3 {
2526
const handler = defineHandler({
2627
middleware: middleware.length ? middleware.map(decorateMiddleware) : undefined,
@@ -64,6 +65,8 @@ export function createBaseHandler(
6465
}
6566
}
6667

68+
if (routerLoad) await routerLoad(event);
69+
6770
const context = await createPageEvent(event);
6871

6972
const resolvedOptions =
@@ -134,8 +137,9 @@ export function createBaseHandler(
134137
export function createHandler(
135138
fn: (context: PageEvent) => JSX.Element,
136139
options: HandlerOptions | ((context: PageEvent) => HandlerOptions | Promise<HandlerOptions>) = {},
140+
routerLoad?: (event: FetchEvent) => Promise<void>,
137141
): H3 {
138-
return createBaseHandler(createPageEvent, fn, options);
142+
return createBaseHandler(createPageEvent, fn, options, routerLoad);
139143
}
140144

141145
export async function createPageEvent(ctx: FetchEvent) {

‎packages/start/src/server/spa/handler.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import type { FetchEvent, HandlerOptions, PageEvent } from "../types.ts";
1212
export function createHandler(
1313
fn: (context: PageEvent) => JSX.Element,
1414
options?: HandlerOptions | ((context: PageEvent) => HandlerOptions),
15+
routerLoad?: (event: FetchEvent) => Promise<void>,
1516
): H3 {
16-
return createBaseHandler(createPageEvent, fn, options);
17+
return createBaseHandler(createPageEvent, fn, options, routerLoad);
1718
}
1819

1920
async function createPageEvent(ctx: FetchEvent) {

0 commit comments

Comments
 (0)