<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gabriel Jordan</title>
    <description>The latest articles on DEV Community by Gabriel Jordan (@jrdan_dev).</description>
    <link>https://dev.to/jrdan_dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3799358%2F64d4b575-fe9b-456f-bacb-2745f1b3964e.jpg</url>
      <title>DEV Community: Gabriel Jordan</title>
      <link>https://dev.to/jrdan_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jrdan_dev"/>
    <language>en</language>
    <item>
      <title>Did Your Project Really Need Next.js?</title>
      <dc:creator>Gabriel Jordan</dc:creator>
      <pubDate>Sun, 01 Mar 2026 05:14:26 +0000</pubDate>
      <link>https://dev.to/jrdan_dev/did-your-project-really-need-nextjs-dk7</link>
      <guid>https://dev.to/jrdan_dev/did-your-project-really-need-nextjs-dk7</guid>
      <description>&lt;p&gt;Recently, I’ve been seeing more and more teams migrating projects from &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; to &lt;a href="https://tanstack.com/start/latest" rel="noopener noreferrer"&gt;TanStack&lt;/a&gt;. Cases like &lt;a href="https://www.inngest.com/blog/migrating-off-nextjs-tanstack-start" rel="noopener noreferrer"&gt;Inngest&lt;/a&gt;, which reduced local dev time by 83%, &lt;a href="https://dev.to/lindesvard/why-we-ditched-nextjs-for-tanstack-start-4bp7"&gt;OpenPanel&lt;/a&gt;, and &lt;a href="https://documenso.com/blog/why-we-moved-off-next-js" rel="noopener noreferrer"&gt;Documenso&lt;/a&gt; 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?&lt;/p&gt;

&lt;p&gt;Don’t get me wrong. I’m aware of the challenges since the &lt;a href="https://www.reddit.com/r/nextjs/comments/1gdxcg5/why_do_you_still_prefer_page_router_over_app/" rel="noopener noreferrer"&gt;Pages Router to App Router migration&lt;/a&gt;, the &lt;a href="https://dev.to/yugjadvani/why-we-finally-moved-out-of-nextjs-a-developers-perspective-3cna"&gt;impact this had on the developer experience&lt;/a&gt;, discussions around &lt;a href="https://medium.com/@ss-tech/the-next-js-vendor-lock-in-architecture-a0035e66dc18" rel="noopener noreferrer"&gt;Vercel lock-in&lt;/a&gt;, and even some &lt;a href="https://nextjs.org/blog/CVE-2025-66478" rel="noopener noreferrer"&gt;security concerns&lt;/a&gt; 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?&lt;/p&gt;

&lt;h2&gt;
  
  
  What Next.js Really Is
&lt;/h2&gt;

&lt;p&gt;Next is primarily, an &lt;strong&gt;opinionated framework&lt;/strong&gt; for building React applications, with a huge focus on server-side rendering. It was designed for &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/SSR" rel="noopener noreferrer"&gt;SSR&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://nextjs.org/docs/pages/guides/incremental-static-regeneration" rel="noopener noreferrer"&gt;ISR&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/SSG" rel="noopener noreferrer"&gt;SSG&lt;/a&gt;&lt;/strong&gt;, and all those letters Vercel helped popularize.&lt;/p&gt;

&lt;p&gt;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 &lt;strong&gt;after&lt;/strong&gt; the build. Ideally, you generate static pages, invalidate caches when needed, and deliver faster pages.&lt;/p&gt;

&lt;p&gt;Almost perfect use cases for this include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blogs
&lt;/li&gt;
&lt;li&gt;News portals
&lt;/li&gt;
&lt;li&gt;Landing pages
&lt;/li&gt;
&lt;li&gt;Marketplaces with public catalogs
&lt;/li&gt;
&lt;li&gt;SEO-focused e-commerce
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words: products where content can be pre-rendered, and SEO is critical for success.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the Choice Doesn’t Make Sense
&lt;/h2&gt;

&lt;p&gt;The problem arises when we take a tool designed for the server side and apply it to fully dynamic, client-dependent systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal systems with heavy interactivity
&lt;/li&gt;
&lt;li&gt;Applications with multiple filters, modals, complex local states, and frequent data updates
&lt;/li&gt;
&lt;li&gt;Products where almost everything depends on who’s logged in and what they just did
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these cases, almost nothing can be statically generated. SEO isn’t a priority. Pre-rendered HTML doesn’t matter. What really matters is state management and interactivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where TanStack Fits In
&lt;/h2&gt;

&lt;p&gt;And this is where TanStack comes in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tanstack.com/start/latest/docs/framework/react/start-vs-nextjs" rel="noopener noreferrer"&gt;TanStack&lt;/a&gt; follows a model closer to a traditional &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/SPA" rel="noopener noreferrer"&gt;SPA&lt;/a&gt;, with SSR as an opt-in feature rather than an architectural premise. The standard workflow is simple: route, query, mutation, invalidation.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;I’ve just started writing and sharing my thoughts on my personal blog. I’m open to new ideas and feedback! Visit: &lt;a href="https://jrdan.dev" rel="noopener noreferrer"&gt;jrdan.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
