From fuse-tanstack-start
Use when creating type-safe RPC server logic in TanStack Start with createServerFn — GET/POST methods, .validator() (Zod or function), .handler(), useServerFn hook, FormData input, Response output, strict serialization, throw redirect()/notFound(), server context utilities, and CSRF protection. Do NOT use for: raw external HTTP endpoints (use start-server-routes), reusable middleware chains (use start-middleware), or Next.js/Remix "use server" patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fuse-tanstack-start:start-server-functionsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Server functions are same-origin, type-safe RPC endpoints created with
Server functions are same-origin, type-safe RPC endpoints created with
createServerFn. They run only on the server but are callable from loaders,
components, hooks, and other server functions. This skill targets
@tanstack/react-start v1.166.2.
Before implementing, verify current APIs against Context7
(/websites/tanstack_start_framework_react) + Exa, then explore the target
codebase. After changes, run fuse-ai-pilot:sniper.
beforeLoad
redirect protects the route UI, NOT the RPC — an attacker can hit the
endpoint directly. Put auth inside the .handler() or in middleware for
every function touching private data."use server", getServerSideProps,
Remix loader/action, or react-router-dom. Use createServerFn
exclusively (from @tanstack/react-start).useServerFn is MANDATORY when the function does throw redirect() or
throw notFound() — the hook wires the throw into the router. Optional for
plain-data functions (a direct call or useMutation/useQuery is fine).FormData allowed as POST input, Response
allowed as output). strict: false disables only the TS check, not runtime.| When to Use | Do NOT Use |
|---|---|
| Internal type-safe RPC from your own app | Public/cross-origin API (use start-server-routes) |
| Data fetching in loaders | Raw HTTP method routing on a URL path |
| Mutations from event handlers | Composable auth/logging chains (use start-middleware) |
src/utils/
├── users.functions.ts # createServerFn wrappers — safe to import anywhere
├── users.server.ts # Server-only helpers (DB queries, secrets)
└── schemas.ts # Shared Zod schemas — client-safe
The build replaces server function bodies with RPC stubs in the client bundle,
so static imports of .functions.ts from client components are safe.
→ See crud-server-functions.md
| Topic | Reference | Load when |
|---|---|---|
| Creating functions | creating.md | Defining createServerFn, validators, serialization |
| Calling functions | calling.md | Invoking from loaders/components, useServerFn, redirect/notFound |
| Security | security.md | Enforcing auth, CSRF, caching auth'd responses |
| Template | When to Use |
|---|---|
| crud-server-functions.md | Building a full CRUD module |
| form-with-validation.md | Handling FormData submissions with Zod |
import { createServerFn } from '@tanstack/react-start'
import { z } from 'zod'
export const createUser = createServerFn({ method: 'POST' })
.validator(z.object({ name: z.string().min(1) }))
.handler(async ({ data }) => db.users.create(data))
await createUser({ data: { name: 'John' } })
import { useServerFn } from '@tanstack/react-start'
import { redirect } from '@tanstack/react-router'
const signup = createServerFn({ method: 'POST' })
.handler(async () => { throw redirect({ to: '/dashboard' }) })
// In a component:
const signupFn = useServerFn(signup)
→ See calling.md for the full redirect/notFound rules
.server.ts, wrappers into .functions.tsuseServerFn when in doubt (no-op for plain-data functions)"use server", getServerSideProps, or Remix actionimport() server functions (breaks bundler shaking)npx claudepluginhub fusengine/agents --plugin fuse-tanstack-startSets up TanStack Start full-stack React apps with SSR, streaming, server functions, API routes, and Nitro-based deployment to any platform. Covers project structure, config, and type-safe RPC.
Use when building raw HTTP API endpoints in TanStack Start — the server property on createFileRoute, method handlers (GET/POST/PUT/DELETE), the handler context (request, params, context), createHandlers for per-handler middleware, file-route conventions, dynamic/splat params, request body parsing, and Response helpers. Do NOT use for: internal type-safe RPC from your own app (use start-server-functions), reusable middleware chains (use start-middleware), or UI route rendering.
Guides setup, configuration, and usage of TanStack Start full-stack React framework with SSR, streaming, server functions, routes, middleware, and Vite. For app creation, deployment, auth, Tailwind integration, and Next.js migrations.