From 1a67f1780b2ec2bba8a497707f3bbe9a0ed8da89 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 18 May 2026 11:15:21 +1200 Subject: [PATCH 01/10] refactor(start-client-core): make Start register augmentable via react-start Add a Start-owned Register interface that extends router-core's Register, then export and consume it from `start-client-core`. This lets declarations against `@tanstack/react-start`, including `server.requestContext`, flow into Start-specific type consumers instead of requiring users to augment `@tanstack/router-core` or `@tanstack/react-router` directly. Router-core Register augmentations remain compatible because Start's Register extends the core Register. --- packages/start-client-core/src/createMiddleware.ts | 2 +- packages/start-client-core/src/createStart.ts | 2 +- packages/start-client-core/src/index.tsx | 2 +- packages/start-client-core/src/register.ts | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 packages/start-client-core/src/register.ts diff --git a/packages/start-client-core/src/createMiddleware.ts b/packages/start-client-core/src/createMiddleware.ts index 8f4ff474fc..af54b5bdcd 100644 --- a/packages/start-client-core/src/createMiddleware.ts +++ b/packages/start-client-core/src/createMiddleware.ts @@ -12,11 +12,11 @@ import type { Constrain, Expand, IntersectAssign, - Register, ResolveValidatorInput, ResolveValidatorOutput, ValidateSerializableInput, } from '@tanstack/router-core' +import type { Register } from './register' export type CreateMiddlewareFn = ( options?: { diff --git a/packages/start-client-core/src/createStart.ts b/packages/start-client-core/src/createStart.ts index e59adb452b..39113beab0 100644 --- a/packages/start-client-core/src/createStart.ts +++ b/packages/start-client-core/src/createStart.ts @@ -1,5 +1,6 @@ import { createMiddleware } from './createMiddleware' import type { TSS_SERVER_FUNCTION } from './constants' +import type { Register } from './register' import type { AnyFunctionMiddleware, AnyRequestMiddleware, @@ -8,7 +9,6 @@ import type { import type { CustomFetch } from './createServerFn' import type { AnySerializationAdapter, - Register, SSROption, } from '@tanstack/router-core' diff --git a/packages/start-client-core/src/index.tsx b/packages/start-client-core/src/index.tsx index 5bf09c4440..ac83ff177c 100644 --- a/packages/start-client-core/src/index.tsx +++ b/packages/start-client-core/src/index.tsx @@ -126,7 +126,7 @@ export type { StartInstance, StartInstanceOptions, } from './createStart' -export type { Register } from '@tanstack/router-core' +export type { Register } from './register' export { getRouterInstance } from './getRouterInstance' export { getDefaultSerovalPlugins } from './getDefaultSerovalPlugins' diff --git a/packages/start-client-core/src/register.ts b/packages/start-client-core/src/register.ts new file mode 100644 index 0000000000..1821c69c6c --- /dev/null +++ b/packages/start-client-core/src/register.ts @@ -0,0 +1,3 @@ +import type { Register as RouterCoreRegister } from '@tanstack/router-core' + +export interface Register extends RouterCoreRegister {} From 65cc325314656c57448e7aa4163a9d149559d092 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 18 May 2026 11:16:25 +1200 Subject: [PATCH 02/10] refactor(start-server-core): use Start register in start handler types Import Register from `@tanstack/start-client-core` in `createStartHandler` instead of `@tanstack/router-core`. This makes the server handler default to Start's augmentation surface, allowing `@tanstack/react-start` Register declarations such as `server.requestContext` to flow into RequestHandler typing. --- packages/start-server-core/src/createStartHandler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/start-server-core/src/createStartHandler.ts b/packages/start-server-core/src/createStartHandler.ts index 378ed50d2d..4c100b1e75 100644 --- a/packages/start-server-core/src/createStartHandler.ts +++ b/packages/start-server-core/src/createStartHandler.ts @@ -40,6 +40,7 @@ import type { AnyFunctionMiddleware, AnyRequestMiddleware, AnyStartInstanceOptions, + Register, RouteMethod, RouteMethodHandlerFn, RouterEntry, @@ -50,7 +51,6 @@ import type { AnyRoute, AnyRouter, AnySerializationAdapter, - Register, } from '@tanstack/router-core' import type { HandlerCallback, From 560940f247e027a0105ef9cff2eb15328deee122 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 18 May 2026 11:18:50 +1200 Subject: [PATCH 03/10] refactor(react-start,solid-start,vue-start): default entry to use Start's Register type --- packages/react-start/src/default-entry/server.ts | 2 +- packages/solid-start/src/default-entry/server.ts | 2 +- packages/vue-start/src/default-entry/server.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-start/src/default-entry/server.ts b/packages/react-start/src/default-entry/server.ts index 8e734a7e49..32e023fe92 100644 --- a/packages/react-start/src/default-entry/server.ts +++ b/packages/react-start/src/default-entry/server.ts @@ -2,7 +2,7 @@ import { createStartHandler, defaultStreamHandler, } from '@tanstack/react-start/server' -import type { Register } from '@tanstack/react-router' +import type { Register } from '@tanstack/react-start' import type { RequestHandler } from '@tanstack/react-start/server' const fetch = createStartHandler(defaultStreamHandler) diff --git a/packages/solid-start/src/default-entry/server.ts b/packages/solid-start/src/default-entry/server.ts index b8f3105c6a..0b452ada3c 100644 --- a/packages/solid-start/src/default-entry/server.ts +++ b/packages/solid-start/src/default-entry/server.ts @@ -2,7 +2,7 @@ import { createStartHandler, defaultStreamHandler, } from '@tanstack/solid-start/server' -import type { Register } from '@tanstack/solid-router' +import type { Register } from '@tanstack/solid-start' import type { RequestHandler } from '@tanstack/solid-start/server' const fetch = createStartHandler(defaultStreamHandler) diff --git a/packages/vue-start/src/default-entry/server.ts b/packages/vue-start/src/default-entry/server.ts index 5729a469d3..94ac3011ec 100644 --- a/packages/vue-start/src/default-entry/server.ts +++ b/packages/vue-start/src/default-entry/server.ts @@ -2,7 +2,7 @@ import { createStartHandler, defaultStreamHandler, } from '@tanstack/vue-start/server' -import type { Register } from '@tanstack/vue-router' +import type { Register } from '@tanstack/vue-start' import type { RequestHandler } from '@tanstack/vue-start/server' const fetch = createStartHandler(defaultStreamHandler) From f2211f4d8da5b20387d30882ebb7176790785918 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 18 May 2026 11:21:38 +1200 Subject: [PATCH 04/10] test(e2e): add checks for this type declaration to the build of basic e2e sandboxes --- e2e/react-start/basic/src/server.ts | 15 ++++++++++++++- e2e/solid-start/basic/src/server.ts | 15 ++++++++++++++- e2e/vue-start/basic/src/server.ts | 15 ++++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/e2e/react-start/basic/src/server.ts b/e2e/react-start/basic/src/server.ts index 00d13b4d17..c89ad5e942 100644 --- a/e2e/react-start/basic/src/server.ts +++ b/e2e/react-start/basic/src/server.ts @@ -4,8 +4,21 @@ import handler from '@tanstack/react-start/server-entry' console.log("[server-entry]: using custom server entry in 'src/server.ts'") +declare module '@tanstack/react-start' { + interface Register { + server: { + /** + * This is just a test to make sure that the typing of the request context is working correctly in the custom server entry. + */ + requestContext: { + foo: string + } + } + } +} + export default { fetch(request: Request) { - return handler.fetch(request) + return handler.fetch(request, { context: { foo: 'bar' } }) }, } diff --git a/e2e/solid-start/basic/src/server.ts b/e2e/solid-start/basic/src/server.ts index d48e6df349..a6095893b6 100644 --- a/e2e/solid-start/basic/src/server.ts +++ b/e2e/solid-start/basic/src/server.ts @@ -4,8 +4,21 @@ import handler from '@tanstack/solid-start/server-entry' console.log("[server-entry]: using custom server entry in 'src/server.ts'") +declare module '@tanstack/solid-start' { + interface Register { + server: { + /** + * This is just a test to make sure that the typing of the request context is working correctly in the custom server entry. + */ + requestContext: { + foo: string + } + } + } +} + export default { fetch(request: Request) { - return handler.fetch(request) + return handler.fetch(request, { context: { foo: 'bar' } }) }, } diff --git a/e2e/vue-start/basic/src/server.ts b/e2e/vue-start/basic/src/server.ts index 8195b0ae95..249f259356 100644 --- a/e2e/vue-start/basic/src/server.ts +++ b/e2e/vue-start/basic/src/server.ts @@ -4,8 +4,21 @@ import handler from '@tanstack/vue-start/server-entry' console.log("[server-entry]: using custom server entry in 'src/server.ts'") +declare module '@tanstack/vue-start' { + interface Register { + server: { + /** + * This is just a test to make sure that the typing of the request context is working correctly in the custom server entry. + */ + requestContext: { + foo: string + } + } + } +} + export default { fetch(request: Request) { - return handler.fetch(request) + return handler.fetch(request, { context: { foo: 'bar' } }) }, } From 6445330a82836900d5131f930732c3671b5fe2a8 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 18 May 2026 11:22:14 +1200 Subject: [PATCH 05/10] revert: docs(start): use router package for module declaration to type the request context (#7427) This reverts commit 2506478fa81f8603eb69d7ce4b17d3280dececfb since these changes now can infer the types off of Start's Register interface --- docs/start/framework/react/guide/server-entry-point.md | 4 ++-- docs/start/framework/solid/guide/server-entry-point.md | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/start/framework/react/guide/server-entry-point.md b/docs/start/framework/react/guide/server-entry-point.md index 5acc8ee550..90d6b2270c 100644 --- a/docs/start/framework/react/guide/server-entry-point.md +++ b/docs/start/framework/react/guide/server-entry-point.md @@ -64,7 +64,7 @@ export default createServerEntry({ When your server needs to pass additional, typed data into request handlers (for example, authenticated user info, a database connection, or per-request flags), register a request context type via TypeScript module augmentation. The registered context is delivered as the second argument to the server `fetch` handler and is available throughout the server-side middleware chain — including global middleware, request/function middleware, server routes, server functions, and the router itself. -To add types for your request context, augment the `Register` interface from `@tanstack/react-router` with a `server.requestContext` property. The runtime `context` you pass to `handler.fetch` will then match that type. Example: +To add types for your request context, augment the `Register` interface from `@tanstack/react-start` with a `server.requestContext` property. The runtime `context` you pass to `handler.fetch` will then match that type. Example: ```tsx import handler, { createServerEntry } from '@tanstack/react-start/server-entry' @@ -74,7 +74,7 @@ type MyRequestContext = { foo: number } -declare module '@tanstack/react-router' { +declare module '@tanstack/react-start' { interface Register { server: { requestContext: MyRequestContext diff --git a/docs/start/framework/solid/guide/server-entry-point.md b/docs/start/framework/solid/guide/server-entry-point.md index 80c226eaae..ef261fe9b6 100644 --- a/docs/start/framework/solid/guide/server-entry-point.md +++ b/docs/start/framework/solid/guide/server-entry-point.md @@ -1,9 +1,5 @@ --- ref: docs/start/framework/react/guide/server-entry-point.md replace: - { - '@tanstack/react-start': '@tanstack/solid-start', - '@tanstack/react-router': '@tanstack/solid-router', - 'React': 'SolidJS', - } + { '@tanstack/react-start': '@tanstack/solid-start', 'React': 'SolidJS' } --- From 46a7f9c361c6af1569c17d8ba312c07f82d7beec Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 22 May 2026 11:43:23 +1200 Subject: [PATCH 06/10] fix(start): align request handler types with registered server context Use the shared router-core Register for Start request handler types while preserving the documented custom server entry shape. Request options now derive required context from Register.server.requestContext, but framework ServerEntry wrappers still accept the universal fetch handler form with optional request options. --- .../react-start/src/default-entry/server.ts | 14 ++++++---- .../solid-start/src/default-entry/server.ts | 14 ++++++---- .../start-client-core/src/createMiddleware.ts | 2 +- packages/start-client-core/src/createStart.ts | 2 +- packages/start-client-core/src/index.tsx | 2 +- packages/start-client-core/src/register.ts | 3 --- .../src/createStartHandler.ts | 10 +++---- packages/start-server-core/src/index.tsx | 5 +++- .../start-server-core/src/request-handler.ts | 26 ++++++------------- .../start-server-core/src/request-response.ts | 10 ++++--- .../vue-start/src/default-entry/server.ts | 14 ++++++---- 11 files changed, 54 insertions(+), 48 deletions(-) delete mode 100644 packages/start-client-core/src/register.ts diff --git a/packages/react-start/src/default-entry/server.ts b/packages/react-start/src/default-entry/server.ts index 32e023fe92..155194f9e9 100644 --- a/packages/react-start/src/default-entry/server.ts +++ b/packages/react-start/src/default-entry/server.ts @@ -3,17 +3,21 @@ import { defaultStreamHandler, } from '@tanstack/react-start/server' import type { Register } from '@tanstack/react-start' -import type { RequestHandler } from '@tanstack/react-start/server' +import type { RequestOptions } from '@tanstack/react-start/server' const fetch = createStartHandler(defaultStreamHandler) -// Providing `RequestHandler` from `@tanstack/react-start/server` is required so that the output types don't import it from `@tanstack/start-server-core` -export type ServerEntry = { fetch: RequestHandler } +export type ServerEntry = { + fetch: ( + request: Request, + opts?: RequestOptions, + ) => Promise | Response +} export function createServerEntry(entry: ServerEntry): ServerEntry { return { - async fetch(...args) { - return await entry.fetch(...args) + async fetch(request, opts) { + return await entry.fetch(request, opts) }, } } diff --git a/packages/solid-start/src/default-entry/server.ts b/packages/solid-start/src/default-entry/server.ts index 0b452ada3c..aefdc14702 100644 --- a/packages/solid-start/src/default-entry/server.ts +++ b/packages/solid-start/src/default-entry/server.ts @@ -3,17 +3,21 @@ import { defaultStreamHandler, } from '@tanstack/solid-start/server' import type { Register } from '@tanstack/solid-start' -import type { RequestHandler } from '@tanstack/solid-start/server' +import type { RequestOptions } from '@tanstack/solid-start/server' const fetch = createStartHandler(defaultStreamHandler) -// Providing `RequestHandler` from `@tanstack/solid-start/server` is required so that the output types don't import it from `@tanstack/start-server-core` -export type ServerEntry = { fetch: RequestHandler } +export type ServerEntry = { + fetch: ( + request: Request, + opts?: RequestOptions, + ) => Promise | Response +} export function createServerEntry(entry: ServerEntry): ServerEntry { return { - async fetch(...args) { - return await entry.fetch(...args) + async fetch(request, opts) { + return await entry.fetch(request, opts) }, } } diff --git a/packages/start-client-core/src/createMiddleware.ts b/packages/start-client-core/src/createMiddleware.ts index af54b5bdcd..8f4ff474fc 100644 --- a/packages/start-client-core/src/createMiddleware.ts +++ b/packages/start-client-core/src/createMiddleware.ts @@ -12,11 +12,11 @@ import type { Constrain, Expand, IntersectAssign, + Register, ResolveValidatorInput, ResolveValidatorOutput, ValidateSerializableInput, } from '@tanstack/router-core' -import type { Register } from './register' export type CreateMiddlewareFn = ( options?: { diff --git a/packages/start-client-core/src/createStart.ts b/packages/start-client-core/src/createStart.ts index 39113beab0..e59adb452b 100644 --- a/packages/start-client-core/src/createStart.ts +++ b/packages/start-client-core/src/createStart.ts @@ -1,6 +1,5 @@ import { createMiddleware } from './createMiddleware' import type { TSS_SERVER_FUNCTION } from './constants' -import type { Register } from './register' import type { AnyFunctionMiddleware, AnyRequestMiddleware, @@ -9,6 +8,7 @@ import type { import type { CustomFetch } from './createServerFn' import type { AnySerializationAdapter, + Register, SSROption, } from '@tanstack/router-core' diff --git a/packages/start-client-core/src/index.tsx b/packages/start-client-core/src/index.tsx index ac83ff177c..5bf09c4440 100644 --- a/packages/start-client-core/src/index.tsx +++ b/packages/start-client-core/src/index.tsx @@ -126,7 +126,7 @@ export type { StartInstance, StartInstanceOptions, } from './createStart' -export type { Register } from './register' +export type { Register } from '@tanstack/router-core' export { getRouterInstance } from './getRouterInstance' export { getDefaultSerovalPlugins } from './getDefaultSerovalPlugins' diff --git a/packages/start-client-core/src/register.ts b/packages/start-client-core/src/register.ts deleted file mode 100644 index 1821c69c6c..0000000000 --- a/packages/start-client-core/src/register.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Register as RouterCoreRegister } from '@tanstack/router-core' - -export interface Register extends RouterCoreRegister {} diff --git a/packages/start-server-core/src/createStartHandler.ts b/packages/start-server-core/src/createStartHandler.ts index 4c100b1e75..51d5558538 100644 --- a/packages/start-server-core/src/createStartHandler.ts +++ b/packages/start-server-core/src/createStartHandler.ts @@ -46,7 +46,7 @@ import type { RouterEntry, StartEntry, } from '@tanstack/start-client-core' -import type { RequestHandler } from './request-handler' +import type { RequestHandler, RequestOptions } from './request-handler' import type { AnyRoute, AnyRouter, @@ -374,7 +374,7 @@ function handlerToMiddleware( * }) * ``` */ -export function createStartHandler( +export function createStartHandler( cbOrOptions: HandlerCallback | CreateStartHandlerOptions, ): RequestHandler { const handlerOptions: FinalManifestOptions = @@ -397,8 +397,8 @@ export function createStartHandler( } const startRequestResolver: RequestHandler = async ( - request, - requestOpts, + request: Request, + requestOpts?: RequestOptions, ) => { let router: AnyRouter | null = null as AnyRouter | null let responseOwnsCleanup = false as boolean @@ -673,7 +673,7 @@ export function createStartHandler( } } - return requestHandler(startRequestResolver) + return requestHandler(startRequestResolver) as RequestHandler } async function handleRedirectResponse( diff --git a/packages/start-server-core/src/index.tsx b/packages/start-server-core/src/index.tsx index ee818e0cf1..e7a6d235c4 100644 --- a/packages/start-server-core/src/index.tsx +++ b/packages/start-server-core/src/index.tsx @@ -28,7 +28,10 @@ export * from './virtual-modules' export { HEADERS } from './constants' -export type { RequestHandler, RequestOptions } from './request-handler' +export type { + RequestHandler, + RequestOptions, +} from './request-handler' export type { SessionConfig } from './session' diff --git a/packages/start-server-core/src/request-handler.ts b/packages/start-server-core/src/request-handler.ts index 0c491e00c9..6eeb231766 100644 --- a/packages/start-server-core/src/request-handler.ts +++ b/packages/start-server-core/src/request-handler.ts @@ -1,4 +1,5 @@ import type { OnEarlyHints, ResponseLinkHeaderOptions } from './early-hints' +import type { Register } from '@tanstack/start-client-core' type BaseContext = { nonce?: string @@ -67,22 +68,11 @@ export type RequestOptions = EarlyHintsOptions & : { context: TRequestContext & BaseContext } : { context?: BaseContext }) -// Utility type: true if T has any required keys, else false -type HasRequired = keyof T extends never - ? false - : { - [K in keyof T]-?: undefined extends T[K] ? never : K - }[keyof T] extends never - ? false - : true +export type RequestHandlerParameters = + {} extends RequestOptions + ? [request: Request, opts?: RequestOptions] + : [request: Request, opts: RequestOptions] -export type RequestHandler = - HasRequired> extends true - ? ( - request: Request, - opts: RequestOptions, - ) => Promise | Response - : ( - request: Request, - opts?: RequestOptions, - ) => Promise | Response +export type RequestHandler = ( + ...args: RequestHandlerParameters +) => Promise | Response diff --git a/packages/start-server-core/src/request-response.ts b/packages/start-server-core/src/request-response.ts index e0ad8a336a..4f0b87d786 100644 --- a/packages/start-server-core/src/request-response.ts +++ b/packages/start-server-core/src/request-response.ts @@ -37,6 +37,7 @@ import type { SessionUpdate, } from './session' import type { StandardSchemaV1 } from '@standard-schema/spec' +import type { Register } from '@tanstack/start-client-core' import type { RequestHandler } from './request-handler' interface StartEvent { @@ -118,10 +119,13 @@ function attachResponseHeaders( return value } -export function requestHandler( +export function requestHandler( handler: RequestHandler, ) { - return (request: Request, requestOpts: any): Promise | Response => { + return (( + request: Request, + requestOpts?: any, + ): Promise | Response => { let h3Event: H3Event try { h3Event = new H3Event(request) @@ -139,7 +143,7 @@ export function requestHandler( handler(request, requestOpts), ) return h3_toResponse(attachResponseHeaders(response, h3Event), h3Event) - } + }) as RequestHandler } function getH3Event() { diff --git a/packages/vue-start/src/default-entry/server.ts b/packages/vue-start/src/default-entry/server.ts index 94ac3011ec..6bc0b0c415 100644 --- a/packages/vue-start/src/default-entry/server.ts +++ b/packages/vue-start/src/default-entry/server.ts @@ -3,17 +3,21 @@ import { defaultStreamHandler, } from '@tanstack/vue-start/server' import type { Register } from '@tanstack/vue-start' -import type { RequestHandler } from '@tanstack/vue-start/server' +import type { RequestOptions } from '@tanstack/vue-start/server' const fetch = createStartHandler(defaultStreamHandler) -// Providing `RequestHandler` from `@tanstack/vue-start/server` is required so that the output types don't import it from `@tanstack/start-server-core` -export type ServerEntry = { fetch: RequestHandler } +export type ServerEntry = { + fetch: ( + request: Request, + opts?: RequestOptions, + ) => Promise | Response +} export function createServerEntry(entry: ServerEntry): ServerEntry { return { - async fetch(...args) { - return await entry.fetch(...args) + async fetch(request, opts) { + return await entry.fetch(request, opts) }, } } From f43d99d24a3b5b2bc97827131fc263eb5097725d Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 22 May 2026 11:43:30 +1200 Subject: [PATCH 07/10] chore: add changeset --- .changeset/thick-sloths-write.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/thick-sloths-write.md diff --git a/.changeset/thick-sloths-write.md b/.changeset/thick-sloths-write.md new file mode 100644 index 0000000000..de7726c728 --- /dev/null +++ b/.changeset/thick-sloths-write.md @@ -0,0 +1,9 @@ +--- +'@tanstack/start-client-core': patch +'@tanstack/start-server-core': patch +'@tanstack/react-start': patch +'@tanstack/solid-start': patch +'@tanstack/vue-start': patch +--- + +fix(start): align request handler types with registered server context From 907e4bb80a57a732162b1c75d3c8f45173a0dae8 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Fri, 22 May 2026 12:37:37 +1200 Subject: [PATCH 08/10] test(e2e): update type-only request handler import --- .../src/routes/type-only-protected-import.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/e2e/react-start/import-protection/src/routes/type-only-protected-import.tsx b/e2e/react-start/import-protection/src/routes/type-only-protected-import.tsx index 8f20802637..75c4b38945 100644 --- a/e2e/react-start/import-protection/src/routes/type-only-protected-import.tsx +++ b/e2e/react-start/import-protection/src/routes/type-only-protected-import.tsx @@ -1,9 +1,10 @@ import { createFileRoute } from '@tanstack/react-router' -import { type RequestHandler } from '@tanstack/react-start/server' +import type { Register } from '@tanstack/react-start' +import type { RequestHandler } from '@tanstack/react-start/server' import type { TypeOnlySecret } from '../violations/type-only.server' type TypeOnlyStatus = TypeOnlySecret & { - requestHandler?: RequestHandler> + requestHandler?: RequestHandler } const status: TypeOnlyStatus = { From bfdf4bbf2588d6bbf478554ca77724cc3571593e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 00:39:22 +0000 Subject: [PATCH 09/10] ci: apply automated fixes --- packages/start-server-core/src/index.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/start-server-core/src/index.tsx b/packages/start-server-core/src/index.tsx index e7a6d235c4..ee818e0cf1 100644 --- a/packages/start-server-core/src/index.tsx +++ b/packages/start-server-core/src/index.tsx @@ -28,10 +28,7 @@ export * from './virtual-modules' export { HEADERS } from './constants' -export type { - RequestHandler, - RequestOptions, -} from './request-handler' +export type { RequestHandler, RequestOptions } from './request-handler' export type { SessionConfig } from './session' From df02acb18afdc867caf1e38a87d7ba57e2774e75 Mon Sep 17 00:00:00 2001 From: SeanCassiere <33615041+SeanCassiere@users.noreply.github.com> Date: Mon, 1 Jun 2026 10:43:23 +1200 Subject: [PATCH 10/10] add start.ts to the basic sandbox --- e2e/react-start/basic/src/start.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 e2e/react-start/basic/src/start.ts diff --git a/e2e/react-start/basic/src/start.ts b/e2e/react-start/basic/src/start.ts new file mode 100644 index 0000000000..88cf6ab9aa --- /dev/null +++ b/e2e/react-start/basic/src/start.ts @@ -0,0 +1,12 @@ +import { createMiddleware, createStart } from '@tanstack/react-start' + +const globalMiddleware = createMiddleware().server( + async ({ next, context }) => { + console.debug('[server-entry]: global middleware', context) + return next() + }, +) + +export const startInstance = createStart(() => ({ + requestMiddleware: [globalMiddleware], +}))