Repository navigation
serverFn.url used as a form action throws "forgot to return a response from your server route handler" #7745
Copy link
Copy link
Open
Description
Which project does this relate to?
Start
Describe the bug
When calling a server function directly, it works fine, but when calling a server function through .url (e.g. in a form action), it gives an HTTPError (full paths censored):
Error: It looks like you forgot to return a response from your server route handler. If you want to defer to the app router, make sure to have a component set in this route.
at throwRouteHandlerError (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-server-core@1.169.16_crossws@0.4.8_srvx@0.11.20_/node_modules/@tanstack/start-server-core/src/createStartHandler.ts:187:9)
... 5 lines matching cause stack trace ...
at async file://.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-plugin-core@1.171.19_@tanstack+react-router@1.170.17_react-dom@19.2.7_r_d72b1ab9da4814157965ad4aab276fbb/node_modules/@tanstack/start-plugin-core/dist/esm/vite/dev-server-plugin/plugin.js:79:36 {
cause: Error: It looks like you forgot to return a response from your server route handler. If you want to defer to the app router, make sure to have a component set in this route.
at throwRouteHandlerError (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-server-core@1.169.16_crossws@0.4.8_srvx@0.11.20_/node_modules/@tanstack/start-server-core/src/createStartHandler.ts:187:9)
at getFinalResponse (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-server-core@1.169.16_crossws@0.4.8_srvx@0.11.20_/node_modules/@tanstack/start-server-core/src/createStartHandler.ts:257:7)
at executeMiddleware (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-server-core@1.169.16_crossws@0.4.8_srvx@0.11.20_/node_modules/@tanstack/start-server-core/src/createStartHandler.ts:325:33)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async startRequestResolver (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-server-core@1.169.16_crossws@0.4.8_srvx@0.11.20_/node_modules/@tanstack/start-server-core/src/createStartHandler.ts:524:50)
at async Object.fetch (.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+react-start@1.168.27_crossws@0.4.8_srvx@0.11.20__esbuild@0.28.1_react-dom@19._13289cfff4aadcbbf2e856a5b2ef2e8e/node_modules/@tanstack/react-start/dist/plugin/default-entry/server.ts:16:14)
at async file://.../tanstack-http-error-repro/node_modules/.pnpm/@tanstack+start-plugin-core@1.171.19_@tanstack+react-router@1.170.17_react-dom@19.2.7_r_d72b1ab9da4814157965ad4aab276fbb/node_modules/@tanstack/start-plugin-core/dist/esm/vite/dev-server-plugin/plugin.js:79:36,
status: 500,
statusText: undefined,
headers: undefined,
data: undefined,
body: undefined,
unhandled: true
}
Complete minimal reproducer
https://github.com/sprucepad/tanstack-http-error-repro
Steps to Reproduce the Bug
- Run
pnpm install && pnpm run dev - Go to
localhost:3000,localhost:3001andlocalhost:3002 - Click the "Through button" buttons in each, see the logs
- Click the "Through form" buttons in each, see the errors and logs
Expected behavior
I expected testFn.url to work for forms, as that's what's listed in the docs. Instead, I get an HTTP error.
Screenshots or Videos
repro.mp4
Platform
- Router / Start Version: Start 1.168.27, Router 1.170.17 (from the template)
- OS:Linux
- Browser: Zen (Firefox)
- Browser Version: 1.21.4b (Firefox 152.0.3)
- Bundler: Vite
- Bundler Version: 8.0.0
Additional context
No response
Metadata
Metadata
Assignees
Labels
No labels
Activity
sprucepad commentedon Jul 8, 2026
to work around this at the moment, you need to always return a
Responsefrom the server function if you ever use it as a form. (if this is intentional, then the docs need to be updated -- they say returning anything serializable works in all cases.)