Skip to content

TanStack Start on Vercel vs Netlify

Compare running TanStack Start on Vercel Functions with Fluid compute against Netlify Functions. Learn how the compute models, storage, background jobs, pricing, and developer experience differ so you can choose the right platform.

8 min read
Last updated June 6, 2026

TanStack Start is a full-stack framework for React and Solid, built on TanStack Router, with full-document SSR, streaming, and server functions. Because it builds on Vite and Nitro, it deploys anywhere JavaScript runs, including both Vercel Functions and Netlify Functions. Your framework code stays the same on either platform. What changes is the compute your server code runs on, how you configure and deploy the project, and which storage and background-processing services you connect to.

On Vercel, TanStack Start runs on Vercel Functions with Fluid compute through the Nitro Vite plugin. On Netlify, it runs on Netlify Functions through the Netlify TanStack Start Vite plugin. Those choices lead to different trade-offs in compute model, function duration, scaling, and platform services for your app. This guide breaks down how the two platforms differ so you can decide which one fits your project, or understand what changes if you move between them.

In this comparison guide, you'll learn:

  • How TanStack Start deploys and runs on Vercel and Netlify
  • How the Vercel Functions and Netlify Functions compute models differ in duration, concurrency, and scaling
  • How storage, scheduled tasks, queues, and background work map across the two platforms
  • How each platform prices computing
  • When to choose Vercel or Netlify for your project

Both Vercel and Netlify officially support TanStack Start through a Vite plugin, and both build the same framework code. The differences start at the compute model your functions run on and flow through to configuration, scaling, and pricing.

AreaVercelNetlify
Framework supportOfficial, via the Nitro Vite pluginOfficial, via the Netlify TanStack Start Vite plugin (also a TanStack hosting partner)
Build setupVite with nitro/viteVite with @netlify/vite-plugin-tanstack-start
Server runtimeVercel Functions on Fluid computeNetlify Functions (Lambda-compatible)
Compute modelFluid compute, enabled by defaultPer-invocation serverless functions
Platform configvercel.json (optional) and nitro.config.tsnetlify.toml
DeployGit push or the vercel CLIGit push or the Netlify CLI

The largest difference between the two platforms is the compute model on which their functions run.

Vercel runs TanStack Start on Vercel Functions with Fluid compute, which is the default for new projects. Fluid compute runs multiple requests concurrently inside a warm instance, so a single instance can serve several requests rather than cold-starting a new one for each. The Standard instance provides 1 vCPU and 2 GB of memory. For work with no fixed duration, such as multi-step agents or long-running jobs, Vercel Workflows allow a function to pause, resume, and retain state for minutes to months.

Netlify runs TanStack Start server code, including SSR, server routes, server functions, and middleware, on Netlify Functions, which are Lambda-compatible serverless functions written in TypeScript, JavaScript, or Go. Each invocation runs in its own function instance, the classic per-request serverless model. For work that runs past the synchronous timeout, Background Functions handle asynchronous processing, and Async Workloads add durable, event-driven pipelines on top of the same functions.

For I/O-heavy or AI workloads that spend time waiting on external calls, Fluid compute's concurrency lets one warm Vercel instance handle other requests during the wait, while Netlify's per-invocation model handles each request in its own instance and uses Background Functions or Async Workloads for work that exceeds the synchronous timeout. For request-time logic, Vercel provides Routing Middleware, and Netlify provides Netlify Edge Functions, which run on Deno.

TanStack Start builds on Vite and Nitro, a server toolkit that compiles your app for a specific deployment target through presets. Because TanStack uses this approach instead of per-platform adapters, the same SSR, streaming, server function, and routing code runs anywhere Nitro has a preset. On Vercel, install Nitro and add its Vite plugin. Nitro detects Vercel during a Vercel build and applies the vercel preset automatically:

vite.config.ts (Vercel)
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import { defineConfig } from 'vite';
import viteReact from '@vitejs/plugin-react';
import { nitro } from 'nitro/vite';
export default defineConfig({
plugins: [tanstackStart(), nitro(), viteReact()],
});

On Netlify, install the Netlify TanStack Start Vite plugin and add a netlify.toml with the build command and publish directory:

vite.config.ts (Netlify)
import { defineConfig } from 'vite';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import netlify from '@netlify/vite-plugin-tanstack-start';
export default defineConfig({
plugins: [tanstackStart(), netlify()],
});
netlify.toml
[build]
command = "vite build"
publish = "dist/client"

Both platforms deploy from Git, with automatic deploys on push and a preview URL for each pull request. Both also detect TanStack Start when you import a repository and set the build command and output directory for you. That means the configuration above primarily applies to local builds and CLI deploys. If you're on a TanStack Start version before 1.132.0, both platforms need different settings, so check each platform's setup guide for the version-specific options.

The clearest difference in how you provision storage is where it lives. On Netlify, storage is built into the platform, and your functions read connection details and credentials from environment variables. On Vercel, storage comes from the Vercel Marketplace as native integrations, and when you connect a store to a project, Vercel adds the environment variables for you. Vercel Blob uses OIDC authentication by default, so you don't need to store a long-lived token in your code.

The table below maps common Netlify storage options to their Vercel counterparts:

NeedNetlifyVercel
Object and file storageNetlify BlobsVercel Blob
Key-valueNetlify Blobs (key/value)Redis from the Marketplace, or Edge Config for read-heavy config
SQL databaseNetlify Database (Neon-powered Postgres)Postgres from the Marketplace (e.g., Neon or Supabase)

The two platforms structure file and key-value storage differently. Netlify Blobs covers both file storage and key-value data in a single primitive, while Vercel splits them into a Vercel Blob for files and a Redis integration or Edge Config for key-value data.

Background work maps across the two platforms with a few differences in primitives. On Vercel, Nitro converts framework-level scheduled tasks and queue topics into Vercel features at build time, so you configure them in nitro.config.ts rather than writing a platform configuration by hand.

NeedNetlifyVercel
Scheduled jobsScheduled FunctionsVercel Cron Jobs
Message queuesAsync WorkloadsVercel Queues
Durable, multi-step processesBackground Functions, Async WorkloadsVercel Workflows

Netlify Scheduled Functions run on a cron schedule with a 30-second execution limit, and Background Functions run asynchronously for up to 15 minutes. On Vercel, Vercel Workflows run durable steps that can pause, resume, and retain state for minutes to months, supporting long-running processes beyond a single function's duration limit.

The two platforms meter compute differently. Vercel bills for active CPU time, so it doesn't charge full compute rates while your code waits on I/O such as database queries or model responses. Netlify uses a unified credit model, where function usage is charged against your plan's monthly credit allotment based on compute time and the number of web requests.

Vercel Functions on Fluid compute use Active CPU pricing. You pay for Active CPU at $0.128 per hour, Provisioned Memory at $0.0106 per GB-hour, and $0.60 per million invocations. CPU is billed only while your code runs, memory is billed while a request is in flight, and nothing is billed between requests. In-function concurrency allows a single instance to handle multiple requests, and predictive scaling keeps instances warm to reduce cold starts. Each plan includes a monthly allotment of these resources.

Netlify's credit-based plans draw usage from a single monthly credit allotment: 300 credits on Free ($0), 1,000 on Personal ($9), and 3,000 on Pro ($20). Function usage consumes credits from two categories. Compute is billed at 10 credits per GB-hour, with the memory allocated to your functions multiplied by how long they run, and web requests are billed at 2 credits per 10,000 requests, including requests to your functions. Form submissions are free on credit-based plans, and when a project uses up its monthly credits, it pauses until the next cycle unless you add credits or enable auto recharge.

Because the two platforms meter different resources, Vercel through active CPU, provisioned memory, and invocations, and Netlify through a single credit pool spanning compute, web requests, bandwidth, and deploys, your actual cost depends on your traffic volume, how long each invocation runs, and how much of that time is spent waiting on I/O.

The execution limits also differ, which matters when you size longer-running work.

LimitVercelNetlify
Compute time per request300s default (all plans), configurable up to 800s on Pro and Enterprise30s default for standard synchronous functions, higher on paid plans; 10s for streaming responses
Memory2 GB / 1 vCPU default, up to 4 GB / 2 vCPU on Pro and Enterprise1024 MB default, configurable up to 4096 MB
Beyond the limitVercel Workflows for minutes-to-months processesBackground Functions (up to 15 minutes), Async Workloads

Both default limits measure wall-clock duration, but Vercel's 300-second default leaves far more room for slow responses than Netlify's 30-second synchronous default. Each platform also offers a separate path for longer work, with Vercel Workflows handling durable, minutes-to-months processes and Netlify Background Functions (up to 15 minutes) and Async Workloads covering asynchronous jobs.

Both platforms offer Git-based deployments, automatic preview URLs per pull request, and framework auto-detection, so the day-to-day deploy workflow is similar. The differences are in what each platform bundles around that flow and how local development reproduces production.

Vercel includes built-in observability for tracing requests and monitoring function usage, and the Vercel Firewall for traffic protection, alongside its preview-deployment workflow. For local development, you run the Vite dev server and use vercel env pull to download your project's environment variables into a local .env file. Vercel Blob access works locally once you've pulled a VERCEL_OIDC_TOKEN, and you keep Blob calls inside server functions because, with Vite, only variables prefixed with VITE_ reach client code.

Netlify's TanStack Start Vite plugin emulates Netlify's platform primitives directly in your dev server, including serverless functions, edge functions, Blobs, the Cache API, Image CDN, redirects, headers, and environment variables. Because the plugin provides those primitives, your local environment closely matches production without the Netlify CLI.

The framework is identical on both platforms, so the decision comes down to your compute profile and which platform services you rely on.

If your project...ConsiderWhy
Runs I/O-heavy or AI workloads that wait on external callsVercelFluid compute keeps instances warm and Active CPU pricing doesn't bill idle I/O time
Needs durable, multi-step processes, such as agents or long jobsVercelVercel Workflows run steps for minutes to months
Wants local dev that emulates production primitives without a separate CLINetlifyThe Netlify Vite plugin emulates functions, blobs, edge, and more in the dev server
Needs background jobs that run past a short synchronous timeoutEitherVercel Queues and Workflows; Netlify Background Functions (15 minutes) and Async Workloads
Deploys from Git with a preview URL per pull requestEitherBoth provide Git integration and preview deployments

Many teams successfully run TanStack Start on either platform.

Choose Vercel when you want efficient pricing for I/O-bound and AI workloads, durable execution with Workflows, and integrated previews and observability. Choose Netlify when you want TanStack's official hosting partner, built-in forms and identity, or local emulation of platform primitives without a separate CLI.

Was this helpful?

supported.