Next.js is a React framework. That sentence sells it short. What it actually is, in 2026, is the single best tool I have for building business websites that need to be fast, rank well on Google, and handle real dynamic content without falling over.
Here is why it is my default pick for most client projects, and where I push back and use something simpler.
What Next.js actually does for you
React on its own is a library for building user interfaces. It does not care about routing, server rendering, data fetching, or deployment. Those pieces you have to assemble yourself. Next.js is the assembly — an opinionated framework that wraps React with the missing 80% of what a real website needs.
The features that matter most for business sites:
- Server-side rendering and static generation. Every page can be prerendered to HTML at build time or rendered on the server on each request. Google gets a fully-formed page in milliseconds.
- File-system routing. You create a file, you get a URL. No router config to maintain.
- Automatic code splitting. Each route only loads its own JS.
- Built-in image optimization.
next/imageserves the right size in the right format automatically. - API routes. You can build a backend in the same project — forms, webhooks, CMS integrations — without standing up a separate server.
- Incremental static regeneration. The fastest possible delivery (static HTML) combined with the ability to update individual pages without a full rebuild.
These are not nice-to-haves. They are the things that separate a fast, well-ranked business site from a slow React SPA that Google cannot read.
The rendering strategy that matters most
Next.js lets you pick, per page, how it should render:
- Static Site Generation (SSG): The page is built at deploy time and served as plain HTML. Use this for almost everything — homepages, about pages, service pages, blog posts.
- Server-side rendering (SSR): The page is rendered on every request. Use this for dashboards and account pages that depend on who is logged in.
- Incremental Static Regeneration (ISR): The page is static but regenerates in the background on a schedule or when content changes. Use this for product pages and blog indexes where content changes but you want static-level speed.
- Client-rendered components: Use this for interactive widgets inside an otherwise static page.
Most business websites end up 90% SSG, 10% ISR. That combination gives you the speed of a static site with the content flexibility of a CMS-backed dynamic one.
SEO benefits
Traditional React SPAs (using Vite or CRA) serve an empty HTML shell and let JavaScript build the page after load. Google can usually still crawl them, but slowly, unreliably, and without the benefit of the meta tags you set at runtime. Social media crawlers (Facebook, LinkedIn, Twitter) often fail entirely on SPA content.
A Next.js site serves a fully-rendered page on the first byte. Every <title>, <meta description>, Open Graph tag, and schema block is in the HTML when Googlebot parses it. The difference in indexing speed and reliability is significant — I have seen client sites rank within days of launch after a Next.js rebuild, after months of struggling on a Vite SPA. I wrote more about the SEO fundamentals in Why Every Business Website Needs Proper SEO From Day One.
When I do NOT use Next.js
Next.js is great, but it is not always the right answer. For some projects I reach for simpler tools:
- Static marketing sites with no CMS and no dynamic content. Plain React + Vite, or even Astro, is simpler to build and deploy. The portfolio you are reading is a Vite SPA because every "page" is an overlay on the same canvas — adding a framework would be overkill.
- Pure-static blogs. Astro or Eleventy ship less JavaScript and score slightly higher on Lighthouse for pure content sites.
- Huge e-commerce catalogs. Shopify's Hydrogen framework or a headless Shopify setup often fits better once you are past a few thousand SKUs.
I pick the tool that fits the project, not the other way around. See my reasoning in React vs Next.js for Small Business Websites in 2026.
Real project example
White Sail Split is a Next.js site with a Supabase backend. Customers browse tours, check live availability, and book online. The public-facing pages are statically generated (fast, SEO-friendly). Availability and booking are rendered on the server against the database. The admin panel is a separate Next.js route tree protected by Supabase Auth.
The site exports to static HTML for preview inside this portfolio, and to a full Next.js server deployment for production. Same codebase, two build modes, zero code duplication. That kind of flexibility is exactly why I reach for Next.js on client projects.
Work with me
If you are planning a business website or replatforming an existing one and want to know whether Next.js is the right choice, email info@tonibarisic.com or message me via the contact form. I give honest recommendations — sometimes that means pointing you at a simpler tool.