Broken type for useServerFn inside useMutation
Which project does this relate to?
Router
Describe the bug
Hi, I think the type is broken for the useServerFn. I've reproduced and noticed that if I need to use the onSuccess callback I loose the types
Your Example Website or App
https://github.com/Christopher96u/ts-issue-demo
Steps to Reproduce the Bug or Issue
- Go to the index/home route
Expected behavior
I expect as user, to have the onSuccess types back or improve the docs if this is the right behaviour
Screenshots or Videos
If I comment out the onSuccess callback there is no TS issues
If I leave the onSuccess callback there is a TS issue
If we use the useServerFn hook at top level (not inside the useMutation hook, we get the types back
Platform
- Router / Start Version: [e.g. 1.121.0]
- OS: [e.g. macOS, Windows, Linux]
- Browser: [e.g. Chrome, Safari, Firefox]
- Browser Version: [e.g. 91.1]
- Bundler: [e.g. vite]
- Bundler Version: [e.g. 7.0.0]
Additional context
No response
The thing is, you can't use useServerFn inside the mutation fn, it violates the rules of hooks. useServerFn is using useCallback under the hood to wrap the function you give it. Hooks can only be used at the top level of the component. So the way you're trying to use is invalid.
The solution is to do exactly what you did in your last screenshot, put useServerFn at the top-level of the component
The thing is, you can't use
useServerFninside the mutation fn, it violates the rules of hooks.useServerFnis usinguseCallbackunder the hood to wrap the function you give it. Hooks can only be used at the top level of the component. So the way you're trying to use is invalid.The solution is to do exactly what you did in your last screenshot, put
useServerFnat the top-level of the component
Should be good if we can mention it on the docs