<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>jrdan.dev</title>
    <link>https://jrdan.dev/blog</link>
    <description>Insights, tutorials, and tips for fullstack development.</description>
    <language>en</language>
    <atom:link href="https://jrdan.dev/rss" rel="self" type="application/rss+xml"/>
    <item>
      <title>Did Your Project Really Need Next.js?</title>
      <link>https://jrdan.dev/blog/did-your-project-really-need-next-js</link>
      <guid isPermaLink="true">https://jrdan.dev/blog/did-your-project-really-need-next-js</guid>
      <description>An analysis based on practical experience and what I have observed in the market.</description>
      <content:encoded><![CDATA[<p>Recently, I’ve been seeing more and more teams migrating projects from <a href="https://nextjs.org/">Next.js</a> to <a href="https://tanstack.com/start/latest">TanStack</a>. Cases like <a href="https://www.inngest.com/blog/migrating-off-nextjs-tanstack-start">Inngest</a>, which reduced local dev time by 83%, <a href="https://dev.to/lindesvard/why-we-ditched-nextjs-for-tanstack-start-4bp7">OpenPanel</a>, and <a href="https://documenso.com/blog/why-we-moved-off-next-js">Documenso</a> are becoming increasingly common. And every time I read one of these stories, I can’t help but wonder: was Next really the right choice from the start?</p>
<p>Don’t get me wrong. I’m aware of the challenges since the <a href="https://www.reddit.com/r/nextjs/comments/1gdxcg5/why_do_you_still_prefer_page_router_over_app/">Pages Router to App Router migration</a>, the <a href="https://dev.to/yugjadvani/why-we-finally-moved-out-of-nextjs-a-developers-perspective-3cna">impact this had on the developer experience</a>, discussions around <a href="https://medium.com/@ss-tech/the-next-js-vendor-lock-in-architecture-a0035e66dc18">Vercel lock-in</a>, and even some <a href="https://nextjs.org/blog/CVE-2025-66478">security concerns</a> that emerged along the way. But maybe the main point isn’t “Next is bad.” Perhaps the real question is: did most of these projects really need to use Next in the first place?</p>
<h2>What Next.js Really Is</h2>
<p>Next is primarily, an <strong>opinionated framework</strong> for building React applications, with a huge focus on server-side rendering. It was designed for <strong><a href="https://developer.mozilla.org/en-US/docs/Glossary/SSR">SSR</a></strong>, <strong><a href="https://nextjs.org/docs/pages/guides/incremental-static-regeneration">ISR</a></strong>, <strong><a href="https://developer.mozilla.org/en-US/docs/Glossary/SSG">SSG</a></strong>, and all those letters Vercel helped popularize.</p>
<p>The initial goal was very clear: pre-render as much as possible, serve HTML to optimize SEO, reduce loading times, and deliver an extremely performant experience <strong>after</strong> the build. Ideally, you generate static pages, invalidate caches when needed, and deliver faster pages.</p>
<p>Almost perfect use cases for this include:</p>
<ul>
<li>Blogs</li>
<li>News portals</li>
<li>Landing pages</li>
<li>Marketplaces with public catalogs</li>
<li>SEO-focused e-commerce</li>
</ul>
<p>In other words: products where content can be pre-rendered, and SEO is critical for success.</p>
<h2>When the Choice Doesn’t Make Sense</h2>
<p>The problem arises when we take a tool designed for the server side and apply it to fully dynamic, client-dependent systems:</p>
<ul>
<li>Internal systems with heavy interactivity</li>
<li>Applications with multiple filters, modals, complex local states, and frequent data updates</li>
<li>Products where almost everything depends on who’s logged in and what they just did</li>
</ul>
<p>In these cases, almost nothing needs to be statically generated. SEO isn’t the priority, and pre-rendered HTML adds no value. What truly matters is state management and interactivity.</p>
<h2>Where TanStack Fits In</h2>
<p>And this is where TanStack comes in.</p>
<p><a href="https://tanstack.com/start/latest/docs/framework/react/start-vs-nextjs">TanStack</a> follows a model closer to a traditional <a href="https://developer.mozilla.org/en-US/docs/Glossary/SPA">SPA</a>, with SSR as an opt-in feature rather than an architectural premise. The standard workflow is simple: route, query, mutation, invalidation.</p>
<p>There’s no constant concern about whether a component should be server or client side. The application is essentially client-first, and using server rendering is a conscious choice, not the starting point.</p>
<p>Perhaps what’s happening now isn’t a “rejection of Next.” It might just reflect choosing the framework of the moment over decisions based on architecture and product (props to React for having competitors that offer more elegant solutions, but that’s a topic for another post).</p>]]></content:encoded>
      <pubDate>Sat, 28 Feb 2026 23:08:32 GMT</pubDate>
      <category>Next.js</category>
      <category>Tanstack</category>
      <category>React</category>
      <category>Frontend Architecture</category>
      <category>Web Development</category>
    </item>
  </channel>
</rss>