fix: allow json literals in serializer
Closes #3157
This PR allows literal values to be passed without transformation in types. As a side effect it allows to pass branded types. See example:
import { createFileRoute } from '@tanstack/react-router'
import { createServerFn } from '@tanstack/react-start'
import { z } from 'zod'
const UserIdSchema = z
.string()
.brand('UserId') // this didn't work in the past, now works
const UserSchema = z
.object({
id: UserIdSchema,
name: z.string(),
})
.brand('User') // this worked in the past
const getUserInfo = createServerFn({ method: 'GET' })
.validator(z.number())
.handler(() => {
return UserSchema.parse({
id: '123',
name: 'asdf',
})
})
export const Route = createFileRoute('/')({
component: Home,
loader: async () => await getUserInfo({ data: 5 }),
})
function Home() {
const state = Route.useLoaderData()
const renderUser = (user: z.infer<typeof UserSchema>) => {
return (
<div>
<h1>{user.name}</h1>
<p>{user.id}</p>
</div>
)
}
return renderUser(state)
}
View your CI Pipeline Execution ↗ for commit 0bfee8ba64e9d49ced189ba5a74a4b2da57de7b6.
| Command | Status | Duration | Result |
|---|---|---|---|
nx affected --targets=test:eslint,test:unit,tes... |
✅ Succeeded | 4m 53s | View ↗ |
nx run-many --target=build --exclude=examples/*... |
✅ Succeeded | 2m 3s | View ↗ |
☁️ Nx Cloud last updated this comment at 2025-03-25 00:10:51 UTC
More templates
- tanstack-router-react-example-authenticated-routes
- tanstack-router-react-example-authenticated-routes-firebase
- tanstack-router-react-example-basic
- tanstack-router-react-example-basic-default-search-params
- tanstack-router-react-example-basic-devtools-panel
- tanstack-router-react-example-basic-file-based
- tanstack-router-react-example-basic-non-nested-devtools
- tanstack-router-react-example-react-query
- tanstack-router-react-example-basic-react-query-file-based
- tanstack-router-react-example-basic-ssr-file-based
- tanstack-router-react-example-basic-ssr-streaming-file-based
- tanstack-router-react-example-basic-virtual-file-based
- tanstack-router-react-example-basic-virtual-inside-file-based
- tanstack-router-react-example-deferred-data
- tanstack-router-react-example-kitchen-sink
- tanstack-router-react-example-kitchen-sink-file-based
- tanstack-router-react-example-kitchen-sink-react-query
- tanstack-router-react-example-kitchen-sink-react-query-file-based
- tanstack-router-react-example-large-file-based
- tanstack-router-react-example-location-masking
- tanstack-router-react-example-navigation-blocking
- tanstack-router-react-example-quickstart
- tanstack-router-react-example-quickstart-esbuild-file-based
- tanstack-router-react-example-quickstart-file-based
- tanstack-router-react-example-quickstart-rspack-file-based
- tanstack-router-react-example-quickstart-webpack-file-based
- router-monorepo-react-query
- router-mono-simple
- router-mono-simple-lazy
- tanstack-router-react-example-scroll-restoration
- tanstack-search-validator-adapters
- tanstack-start-example-bare
- tanstack-start-example-basic
- tanstack-start-example-basic-auth
- tanstack-start-example-basic-react-query
- tanstack-start-example-basic-rsc
- tanstack-start-example-basic-static
- tanstack-start-example-clerk-basic
- tanstack-start-example-convex-trellaux
- tanstack-start-example-counter
- tanstack-start-example-large
- tanstack-start-example-material-ui
- tanstack-start-example-supabase-basic
- tanstack-start-example-trellaux
- tanstack-router-react-example-view-transitions
- tanstack-router-react-example-with-framer-motion
- tanstack-router-react-example-with-trpc
- tanstack-router-react-example-with-trpc-react-query
- tanstack-router-solid-example-basic
- tanstack-router-solid-example-basic-devtools-panel
- tanstack-router-solid-example-basic-file-based
- tanstack-router-solid-example-basic-non-nested-devtools
- tanstack-router-solid-example-basic-solid-query
- tanstack-router-solid-example-basic-solid-query-file-based
- tanstack-router-solid-example-kitchen-sink-file-based
- tanstack-router-solid-example-quickstart-file-based
- tanstack-solid-start-example-bare
- tanstack-solid-start-example-basic
@tanstack/arktype-adapter
npm i https://pkg.pr.new/TanStack/router/@tanstack/arktype-adapter@3849
@tanstack/create-router
npm i https://pkg.pr.new/TanStack/router/@tanstack/create-router@3849
@tanstack/create-start
npm i https://pkg.pr.new/TanStack/router/@tanstack/create-start@3849
@tanstack/directive-functions-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/directive-functions-plugin@3849
@tanstack/eslint-plugin-router
npm i https://pkg.pr.new/TanStack/router/@tanstack/eslint-plugin-router@3849
@tanstack/history
npm i https://pkg.pr.new/TanStack/router/@tanstack/history@3849
@tanstack/react-router
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router@3849
@tanstack/react-router-devtools
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router-devtools@3849
@tanstack/react-start
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start@3849
@tanstack/react-router-with-query
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router-with-query@3849
@tanstack/react-start-client
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-client@3849
@tanstack/react-start-config
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-config@3849
@tanstack/react-start-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-plugin@3849
@tanstack/react-start-router-manifest
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-router-manifest@3849
@tanstack/react-start-server
npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-server@3849
@tanstack/router-cli
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-cli@3849
@tanstack/router-core
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-core@3849
@tanstack/router-devtools
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-devtools@3849
@tanstack/router-devtools-core
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-devtools-core@3849
@tanstack/router-generator
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-generator@3849
@tanstack/router-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-plugin@3849
@tanstack/router-utils
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-utils@3849
@tanstack/router-vite-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/router-vite-plugin@3849
@tanstack/server-functions-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/server-functions-plugin@3849
@tanstack/solid-router
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-router@3849
@tanstack/solid-router-devtools
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-router-devtools@3849
@tanstack/solid-start
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start@3849
@tanstack/solid-start-client
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-client@3849
@tanstack/solid-start-config
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-config@3849
@tanstack/solid-start-plugin
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-plugin@3849
@tanstack/solid-start-router-manifest
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-router-manifest@3849
@tanstack/solid-start-server
npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-server@3849
@tanstack/start
npm i https://pkg.pr.new/TanStack/router/@tanstack/start@3849
@tanstack/start-api-routes
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-api-routes@3849
@tanstack/start-client-core
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-client-core@3849
@tanstack/start-config
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-config@3849
@tanstack/start-server-core
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-core@3849
@tanstack/start-server-functions-client
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-client@3849
@tanstack/start-server-functions-fetcher
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-fetcher@3849
@tanstack/start-server-functions-handler
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-handler@3849
@tanstack/start-server-functions-server
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-server@3849
@tanstack/start-server-functions-ssr
npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-ssr@3849
@tanstack/valibot-adapter
npm i https://pkg.pr.new/TanStack/router/@tanstack/valibot-adapter@3849
@tanstack/virtual-file-routes
npm i https://pkg.pr.new/TanStack/router/@tanstack/virtual-file-routes@3849
@tanstack/zod-adapter
npm i https://pkg.pr.new/TanStack/router/@tanstack/zod-adapter@3849
commit: 0bfee8b
we'll migrate to seroval soon, let's revisit this PR then
Hoping this still goes through, but noting that post sevoral, this has moved to start-client-core package.
@xPapla @jvliwanag , the linked ticket appear to have been closed already - it this PR still relevant?