Next or TanStack? That's not the question
I use both. My portfolio runs on Next, my SaaS on TanStack, and both are in production. What matters is what ships.
Every six months, Tech Twitter catches fire trying to crown "the ultimate framework you absolutely must use". Every six months, the same loop restarts on the same threads, with the exact same arguments. Meanwhile, how many projects actually get shipped? Usually: zero.
I decided not to choose. I use both.
This portfolio you're reading runs on Next.js. Alongside it, I'm building Prospect Tracker, the tool I use to manage my freelance business, and that runs on TanStack Start. Both work flawlessly. Neither is waiting for the debate to settle to hit production.
What framework wars cost
The problem with these debates isn't the time wasted reading benchmarks. It's the project you never start because you haven't decided which stack to use yet.
The symptom
You can spot analysis paralysis by one specific phrase: "I'm waiting to see how v15 evolves before I commit". It sounds reasonable and professional. It’s also the absolute best way to ship nothing for a year, then start over with whatever new framework is trending next.
What actually decides
On both of my projects, the choice wasn't settled by pointless performance benchmarks. It was settled by dull, concrete business constraints:
| Constraint | Portfolio | Prospect Tracker |
|---|---|---|
| Static content, SEO critical | Yes | No |
| App behind a login | No | Yes |
| Highly dynamic data | No | Yes |
| Ecosystem I already knew | Yes | Yes |
A portfolio is a content site: pages must be generated at build time, indexed by Google, and load instantly. A SaaS behind a login has absolutely zero SEO needs, but demands heavy client-side state management. These are two radically different problems.
Where Next excels
Static rendering by default. Every page on this site that can be generated at build time is, including the articles, in both languages.
export function generateStaticParams() {
return routing.locales.flatMap((locale) =>
getPosts(locale).map((post) => ({ locale, slug: post.slug })),
)
}This isn't about raw performance; it's about predictability. A static page doesn't crash at 3 AM because the database hiccupped. The SEO of a content site is won exactly there.
The right framework is the one whose pitfalls you already know. Experience transfers poorly between ecosystems, and experience is what makes you code fast.
Where TanStack excels
Prospect Tracker is a real web app: lists that filter, prospecting statuses that change, data that has to stay in sync across multiple views in real-time. End-to-end typed routing and surgical server cache management are worth way more here than any build-time gain.
SEO? Nonexistent. Nobody indexes a private dashboard. All the energy Next spends on static rendering would be entirely wasted here.
Build for users, not devs
Today, coding a SaaS is almost the easy part. The real war, the thing that kills 90% of projects, is acquisition.
That's why I'm building Prospect Tracker in public. I refuse to wait for the product to be "perfect" before showing it. My goal is to build it based on actual user feedback.
In fact, before I even typed my first npm create command with TanStack, I validated the market need. How? With a simple Tally form shared on my socials.

Shameless plug: If you're a freelancer managing your prospecting on a clunky old Notion board and want to help shape the tool (and get early free access), the form is still open right here: Share your thoughts on Tally.
In practice
Both projects are in production. That's the only criterion that stands the test of time: Ship first.
A project shipped with an "average" framework will teach you infinitely more than a perfect project rotting on your localhost. User feedback, edge cases, real performance issues: none of it shows up before you go live. And remember: your stack choice is reversible. The core of your business logic doesn't depend on the framework.
If you're torn between two techs for your next side-project, ask yourself the useful questions:
- Which one do I know well enough to ship this month?
- Does my project need SEO, or is it hidden behind a login?
- Will I be able to debug a prod issue at 10 PM with this tool?
The answers point to the same stack almost every time. And spoiler alert: it's almost never the one everyone is hyping up today.
More posts

Startup to Enterprise: what 5 countries taught me
After 5 years coding from startups to enterprise, scaling taught me one thing: the real nightmare isn't the code, it's the blast radius.
5 min read
The Tailwind class that never applied
Tailwind generated it, TypeScript validated it, ESLint said nothing. It simply had no effect. A reminder that the only proof lives in the browser.
3 min read