← Journal

When Next.js Is the Right Choice - and When It Isn’t

Next.js is an excellent framework, but it should solve a product problem rather than become the reason a simple website gets complicated.

Next.js is one of the first tools I consider when building a modern web application.

It gives React projects a strong structure, supports server-side work and client-side interaction in the same application, and works well for everything from marketing pages to authenticated SaaS products.

But that does not mean every website should be a Next.js project.

The framework is valuable when its capabilities match the product. When they do not, using it can simply add another build system, deployment model and layer of complexity to maintain.

Start with the product, not the framework

Technology decisions get easier when the product requirements come first.

Before choosing Next.js, I want to know:

  • Is this primarily a website or an application?
  • Will users sign in?
  • Is there custom business logic?
  • Does the frontend need significant interactivity?
  • Will we need APIs, background actions or database access?
  • Who needs to edit the content?
  • How will the product be deployed and maintained?

Those answers are more useful than asking which framework is currently popular.

When Next.js is a strong choice

SaaS products and authenticated applications

Next.js is a natural fit when users log in and interact with a real product: dashboards, account areas, subscription software, internal tools and workflow applications.

You can keep interface code, server-side logic and routes in one project while still separating concerns cleanly. For a small product team, that can reduce unnecessary infrastructure.

Products that mix public pages and application features

Many modern products need both an SEO-friendly public website and a logged-in application.

Next.js handles this combination particularly well. The marketing pages can be rendered for search engines and speed, while the authenticated areas can use richer client interaction where it is actually useful.

You do not need two completely different frontend stacks just because one part of the product is public and another is private.

Custom data-driven websites

Next.js also works well when the site pulls together data from APIs, databases or several external services.

Examples include directories, comparison platforms, custom ecommerce experiences, marketplaces and sites where pages are generated from structured data rather than manually authored one by one.

Teams already working in React and TypeScript

If the team is comfortable with React, TypeScript and modern JavaScript tooling, Next.js can provide a productive foundation without introducing an entirely different way of thinking.

The framework gives the project conventions for routing, rendering, metadata and server-side code instead of requiring the team to assemble those decisions from scratch.

When Next.js may be unnecessary

A small static marketing site

If the project is five mostly static pages and changes twice a year, a full application framework may not create much value.

A lightweight static setup - or even carefully written HTML and CSS - can be faster to understand, cheaper to host and easier to keep alive for years.

There is no prize for having the most sophisticated deployment pipeline for a site that does not need one.

A content team needs a familiar CMS

If editors publish frequently and expect a traditional CMS workflow, WordPress may be a more practical decision.

You can absolutely connect Next.js to a headless CMS, but now you are maintaining two systems. Sometimes that separation is justified. Sometimes it is complexity created only to avoid using a conventional CMS.

A straightforward ecommerce store

If a business mainly needs products, checkout, inventory, discounts and common commerce integrations, Shopify can be a better starting point than building a custom Next.js commerce stack.

Custom development becomes valuable when the business has requirements that the established platform cannot serve cleanly.

Next.js does not automatically make a site fast

This is worth saying because framework choice is often confused with performance.

A Next.js site can still ship too much JavaScript, load oversized images, make slow database calls or render components inefficiently.

Likewise, a well-built WordPress site or static site can be extremely fast.

Performance is an engineering outcome, not a logo in the technology stack.

Next.js gives you useful tools for caching, rendering and asset optimization, but the architecture still needs good decisions.

Think about maintenance before launch

The best stack is not only the one that lets you build version one. It should also make version twenty easier.

Ask who will maintain the project, how often dependencies will be updated, whether the team understands the deployment environment and how difficult it will be for another developer to take over later.

A stack that saves two weeks during development but creates years of unnecessary maintenance is not automatically the simpler choice.

My rule: use Next.js when the product benefits from being an application

I reach for Next.js when I expect the project to contain meaningful product logic, data-driven interfaces, authentication, custom workflows or a close relationship between frontend and backend behaviour.

I am less interested in it when the job is simply to publish a few pages effectively.

That distinction keeps the technology proportional to the problem.

Framework choice should follow the product, not the trend.

If Next.js makes the important parts easier to build and maintain, it is a very good choice. If it only makes the technology list look more modern, a simpler solution is usually better.

If you need help choosing the architecture for a SaaS product, custom application or rebuild, see my full-stack development work. The stack decision should come after the product and operational requirements are clear.