返回博客
对比与选型
10 分钟

Next.js 还是 TanStack Start?独立开发者出海项目的选型建议

从 SSR 心智、部署灵活度、Cloudflare 兼容性、类型安全、生态成熟度五个维度对比 Next.js 与 TanStack Start,给独立开发者出海项目的明确建议。

「我下一个项目要不要直接上 TanStack Start,还是继续用 Next.js?」

这是 2025 年下半年开始在前端独立开发者圈里高频出现的问题。下面是 EasyStarter 团队在用过两套栈、各自上线过若干个 SaaS 项目后的实战对比。

TL;DR

  • Next.js:生态最大、招聘信号最强、Vercel 上一切默认开箱即用——但 App Router + RSC 的复杂度对一人项目来说是过度工程。
  • TanStack Start:心智更纯粹(Vite + React Router 风格 + type-safe loader),部署灵活,跟 Cloudflare Workers 配合极佳——但生态年轻,组件库适配少。

如果你是独立开发者做出海 SaaS,只要不强依赖某个只支持 Next.js 的库(Auth.js、Vercel AI SDK 等),优先选 TanStack Start

1. SSR / SSG 心智

Next.js App Router

async 服务端组件 + 'use client' 边界 + revalidatePath + dynamic = 'force-dynamic' + Suspense streaming——好处是能力强,坏处是排查 bug 时你得问自己:

  • 这是 RSC 还是 Client Component?
  • 缓存策略是 SSG 还是 ISR 还是 dynamic?
  • 我这次部署的 build 输出到底是 edge runtime 还是 nodejs runtime?

对中大型团队这是必要的复杂度。对一人项目,这是「为了用 RSC 而用 RSC」的税。

TanStack Start

每个路由就是 loader + component,loader 在服务端跑,组件在客户端 hydrate——和你之前写 React Router 没区别,只是 loader 端到端类型安全。

export const Route = createFileRoute("/posts/$slug")({
  loader: ({ params }) => fetchPost(params.slug),
  component: PostPage,
});

没有 RSC 边界、没有「这一段到底跑在哪儿」的困惑。

2. 部署灵活度

部署目标Next.jsTanStack Start
Vercel一等公民支持
Cloudflare WorkersOpenNext 适配,有坑官方一等公民
Cloudflare Pages部分支持支持
Netlify支持支持
Docker / VPS支持支持

Next.js 离开 Vercel 之后处处是坑:image optimization 要自己换、middleware 行为不一致、ISR 在非 Vercel 平台几乎不可用。TanStack Start 用 Nitro 做适配层,对 Cloudflare Workers 的支持是官方一等公民——这点对想用 Workers 把月成本压到 $0 的独立开发者非常关键。

3. Cloudflare Workers 兼容性

Workers 的限制:

  • 50ms CPU 时间(付费版 30s)
  • 不支持 Node.js 原生模块(除非开 nodejs_compat)
  • 文件系统、子进程都没有
  • 包大小 1MB(压缩前)

Next.js 在 Workers 上跑,本质是把 SSR 输出拆成 edge runtime 函数,但很多 Next.js 生态库(Sharp、bcrypt、puppeteer)直接不可用

TanStack Start 因为没有 RSC 这层,加上路由级别 splitting 的颗粒度更细,生产构建 bundle 通常比同等 Next.js 应用小 30-50%,离 1MB 上限远得多。

4. 类型安全

维度Next.js (App Router)TanStack Start
路由参数类型typedRoutes 实验性默认强类型
Loader 返回值类型手动默认推断
Search params手动 parse + 校验Zod schema 内置
Server functionServer Actions(弱类型)createServerFn + Zod

TanStack Start 是当前 React 全栈框架里类型安全最强的——useLoaderData() 自动推断、search params 用 Zod 定义即可、createServerFn 端到端类型贯穿。

5. 生态成熟度(劣势项)

诚实地说,TanStack Start 在这些点上落后:

  • 认证库:NextAuth / Auth.js 几乎只为 Next.js 设计。TanStack Start 用 Better Auth 或自己接 oAuth。
  • shadcn/ui:完美适配,无问题。
  • Vercel AI SDK:可以用,但例子全是 Next.js。
  • 招聘市场:Next.js 是默认项,TanStack Start 还没被大量公司采用。
  • 教程数量:Next.js 文章数量是 TanStack Start 的 50 倍以上。

6. 一个具体的取舍场景

场景 A:你要做一个面向 C 端的内容站(博客、SEO、营销页) → Next.js。它的 ISR、image optimization、metadata API 是最成熟的。

场景 B:你要做一个 SaaS 应用(dashboard、CRUD、订阅) → TanStack Start。loader + Zod + Cloudflare Workers 这套组合在「类型安全 + 月成本 $0 + 快速迭代」上更有优势。

场景 C:你要做混合站点(营销页 + 应用) → 取决于团队习惯。TanStack Start 的 SSR 也完全够用做营销页,但你需要自己实现一些 Next.js 默认有的东西(sitemap、robots、og image 生成)。EasyStarter 已经把这些都默认包好了。

7. EasyStarter 为什么选 TanStack Start

我们做 EasyStarter 时面临的取舍是「让独立开发者用 Cloudflare Workers 把月成本做到 $0」。这个目标下:

  • Next.js 在 Workers 上的坑太多,每次 Next.js 大版本升级都要担心 OpenNext 适配
  • TanStack Start 官方就是「跑在 Nitro 上,原生支持 Workers」
  • TanStack Start 的类型安全程度更高,对 AI Coding(Cursor / Claude Code)更友好

实际效果:EasyStarter 用 TanStack Start + Hono + Workers,端到端冷启动 < 50ms,10k MAU 下月费 $0。

什么时候继续选 Next.js

  • 你强依赖 Vercel 生态(AI SDK、Edge Config、KV)
  • 你的核心功能依赖 RSC(如复杂数据流分片)
  • 你的团队招人主要看 Next.js 经验
  • 你的项目是 SEO 重度依赖的内容站(不是 SaaS)

写在最后

框架本身的差异,在「能不能上线」面前永远是次要的。两套栈都能做出能赚钱的 SaaS——区别只是「让你少写多少胶水代码」「让你 AI 编辑器少出多少错」。

如果你想直接看 TanStack Start + Cloudflare Workers 的端到端工程化样板,可以参考 EasyStarter Web 快速开始

EasyStarter 是面向 Web、API 与移动端团队的生产级 SaaS 起步模板。

© 1970 easystarter.dev. 保留所有权利。