Edited by humans. Written by AI. How our editing works
All articles

Navigating Framework Shifts: From Next.js to TanStack

Exploring the migration from Next.js to TanStack Start in T3 Chat for scalability and performance.

Bob Reynolds

Written by AI. Bob Reynolds

January 7, 20263 min read
Share:
Man with skeptical expression next to arrow pointing from Next.js logo to tropical island scene icon

Photo: Theo - t3․gg / YouTube

Navigating Framework Shifts: From Next.js to TanStack

In the ever-evolving landscape of web development, Theo from t3.gg made the bold move to transition T3 Chat from Next.js to TanStack Start. This is not just a tale of changing frameworks but a deeper reflection on the intricate dance of balancing innovation with reliability.

Why Move Away from Next.js?

Theo's decision to pivot away from Next.js wasn't born out of dissatisfaction with the framework itself. In fact, Next.js has been a reliable workhorse for many large-scale applications. However, T3 Chat's unique needs called for more than what Next.js could offer. The goal was to create an application that was not only fast but maintained a synchronized server-client architecture—a crucial factor to avoid data discrepancies.

“I wanted it to be as fast as possible... you click things, they happen immediately,” Theo said, underscoring the importance of speed and synchronization.

While Next.js offered a robust platform, it required significant workarounds to achieve client-side performance goals. Theo's team had to employ hacks to make React Router work effectively, hinting at a misalignment between the tool's intentions and the project's requirements.

Enter TanStack Start

TanStack Start came into play as a solution tailor-made for T3 Chat's needs. It allowed for a more seamless integration of client-side rendering, aligning with Theo's vision for a snappy, reactive user experience. The decision was not without its challenges. As Theo noted, “We’re patching TanStack Start to add things we need... it was worth it though.”

This move highlights a critical aspect of technology choices: the need to adapt tools to fit specific project goals rather than bending the project to fit the tool. It’s a lesson many developers have learned the hard way.

Implications for the Developer Community

For those who have weathered the storms of past technological shifts, Theo's migration story resonates. It serves as a reminder that while frameworks evolve, the fundamental challenge remains the same: choosing technology that supports long-term scalability and developer happiness.

Developers often face the temptation to chase new trends without considering whether these technologies align with their project’s core needs. Theo’s experience underscores the value of 'boring tech'—tools that are stable, reliable, and perhaps a bit old-fashioned but get the job done efficiently.

The Bigger Picture

Theo's journey from Next.js to TanStack Start is more than just a technical migration; it’s a reflection on strategic decision-making in software development. It encourages developers to look beyond the surface-level features of a framework and consider how it fits into the larger ecosystem of their application.

As we look to the future, this story serves as a call to action for developers: evaluate your tech stack not just for its current capabilities but for its potential to grow with your ambitions. In Theo's words, “I wanted to bet on boring tech... super reliable.” Sometimes, the most innovative move is to embrace the tried and true.


By Bob Reynolds

More Like This

James Garbutt with a concerned expression next to a dependency diagram illustrating JavaScript bloat sources

JavaScript's Bloat Problem Is Worse Than You Think

Why your web app downloads millions of lines of unnecessary JavaScript—and who's responsible for the mess we're in.

Bob Reynolds·5 months ago·6 min read
Man with surprised expression reacting to GitHub pull request showing Node.js performance improvements including 50% memory…

How Node.js Cut Memory Usage in Half With One Change

A year-long collaboration between Cloudflare and the V8 team enabled pointer compression in Node.js, halving memory usage with minimal performance cost.

Bob Reynolds·6 months ago·5 min read
Daniel Rosenwasser announces TypeScript 6.0 beta release with an excited expression against a dark background with npm…

TypeScript Is Getting Rewritten in Go. Here's Why That Matters

Microsoft is porting TypeScript to Go for TypeScript 7, promising 10x speed improvements. Here's what developers need to know about versions 6 and 7.

Yuki Okonkwo·6 months ago·6 min read
Laravel Cloud logo and branding on a blue gradient background with white text celebrating the platform's first anniversary…

Laravel Cloud Turns One With Dad Jokes and Giveaways

Laravel celebrated its cloud platform's first anniversary with a 12-hour livestream mixing technical discussion, community engagement, and relentless dad jokes.

Bob Reynolds·5 months ago·5 min read
Tech stack logos for Next.js, AI SDK, and deployment tools above four fantasy creature cards showcasing a dark, mystical…

Unleashing Creativity: Build a Fantasy GitHub App

Explore building a fantasy creature app with GitHub stats, combining creativity and tech.

Rachel "Rach" Kovacs·8 months ago·3 min read
A man with a surprised expression stands next to a colorful 3D "CSS WRAPPED 2025" graphic featuring a blue character…

CSS Revolution: 2025's Game-Changing Features

Explore 2025's CSS advancements reshaping web dev with new features, APIs, and customization options.

Yuki Okonkwo·8 months ago·3 min read
A man wearing a headset gestures while speaking, with "syntactic SUGAR DADDY" text and JavaScript/coding logos on a dark…

The Developer Who Fixed JavaScript Before Anyone Tried

Jeremy Ashkenas built the tools that made modern JavaScript possible — then watched the language absorb them and move on. Here's why that story matters.

Bob Reynolds·3 months ago·8 min read
Large bold "12 KB TERMINAL" text with yellow highlight pointing to a terminal window displaying code output and system…

wterm: A Smarter Web Terminal or Too Soon to Tell?

wterm renders terminal output as HTML instead of canvas, fixing xterm.js's oldest problem. Here's what that means for teams evaluating it today.

Bob Reynolds·3 months ago·6 min read

RAG·vector embedding

2026-04-15
683 tokens1536-dimmodel text-embedding-3-small

This article is indexed as a 1536-dimensional vector for semantic retrieval. Crawlers that parse structured data can use the embedded payload below.