Skip to content
Technologies · Languages & frameworks

Next.js development for fast, maintainable React apps

Server-rendered React that loads quickly, ranks well and stays patched: new Next.js 16 builds, upgrades from 14 and 15, and honest advice on where to host.

Streams of code on a dark screen
At a glance
  • Next.js 16.4 · React 19.3Current stable lines, as of October 2026
  • Core Web Vitals budgetsLCP, INP and CLS targets agreed before the build
  • 14 and 15 → 16Async request APIs, proxy.ts and Turbopack handled
  • Patching on a scheduleSecurity releases applied in agreed windows on support plans
Next.js & React

A strong default for React apps that must be fast and findable

Next.js adds routing, server rendering, caching and a build pipeline to React. For marketing sites with an app behind them, online shops, dashboards and SaaS products, that saves months of plumbing. As a Next.js development company we reach for it when pages need to load quickly, rank in search and still behave like an application once they have loaded.

It is also a framework that moves quickly. Next.js 16 reworked caching, renamed middleware to proxy.ts and made Turbopack the default bundler, and the project now ships security releases roughly once a month. Choosing it means committing to keep up. We build new apps on it, upgrade older ones, and, for clients who want it, keep production patched on an agreed schedule through managed services.

For small sites the framework matters less than people assume; for large apps it matters more. The tables below show when we would pick Next.js, plain React with Vite, or Astro.

What we build

Next.js development services

From a first build to rescuing an app that has outgrown its caching. Everything is written in TypeScript, with tests and a pipeline in your own repository.

New Next.js 16 applications

The problem

You are starting a product or replacing a slow single-page app, and you want server rendering, good Core Web Vitals and a codebase a new hire can follow.

How we build it

We start from the App Router with Server Components by default, add client components deliberately, agree budgets for LCP, INP and CLS, and choose the caching approach per route before writing pages. Data access lives in a server-only layer, so secrets never reach the browser.

What you get

  • App Router structure and conventions
  • Performance budgets checked in CI
  • Server-only data layer
  • Preview deployment for every pull request

Next.js in 2026: what to know before you build or upgrade

This guide covers the decisions that shape cost and risk on a Next.js project: whether to use it at all, how Server Components and caching work, performance targets, hosting, upgrades and security. Everything here reflects the state of the framework in October 2026.

Next.js, plain React (Vite) or Astro?

If you are looking for a React.js development company in India or anywhere else, settle this question first, because it decides hosting, SEO and who you can hire.

Next.js 16React + Vite 8Astro 7
Best forApps that need SEO and interactivity: SaaS, commerce, portalsInternal tools and apps behind a loginContent sites, documentation, marketing pages
RenderingServer, static and streaming, chosen per routeIn the browserStatic or server HTML, with interactive “islands”
JavaScript shippedModerate; depends on client-component disciplineAll of the appMinimal by default
HostingA Node.js server, Vercel or an adapter-based platformAny static host or CDNStatic host, or a server for dynamic routes
Main riskFramework churn and caching complexityWeak SEO and slow first load if used for public pagesAwkward for highly interactive apps

Server Components, in plain terms

A Server Component runs only on the server. It can read the database directly, and none of its code is sent to the browser. A Client Component, marked with "use client", ships JavaScript and handles clicks and state. Well-built apps keep most of the tree on the server and push client components to the leaves. Two mistakes cause most trouble: marking a high-level layout as a client component, which drags everything below it into the bundle, and forgetting that Server Functions (Server Actions) are public HTTP endpoints. Every one needs input validation and an authorisation check of its own.

Caching: the part most teams get wrong

Caching in the App Router has changed twice. Next.js 15 stopped caching fetch requests and GET route handlers by default. Next.js 16 introduced Cache Components: you opt in explicitly with the "use cache" directive and a cacheLife profile, revalidateTag() now takes a profile as its second argument, and updateTag() gives read-your-writes behaviour inside Server Functions. Since 16.4, new apps get Cache Components by default, and the Next.js team has said it becomes the default model in Next.js 17. Our rule is to decide per route what may be stale, and for how long, before writing it. If you self-host on more than one instance, the cache must be shared, or users will see different versions of the same page.

Core Web Vitals targets

Google measures three Core Web Vitals at the 75th percentile of real visits, per web.dev:

  • Largest Contentful Paint (LCP): 2.5 seconds or less.
  • Interaction to Next Paint (INP): 200 milliseconds or less. INP replaced First Input Delay as a Core Web Vital in March 2024.
  • Cumulative Layout Shift (CLS): 0.1 or less.

In Next.js apps, poor INP usually comes from large client bundles and heavy hydration, poor LCP from hero images without priority or slow server responses, and poor CLS from fonts, banners and embeds without reserved space. Judge progress with field data from Search Console or real-user monitoring, not a single lab score.

Hosting: Vercel, other platforms or self-hosting

OptionGood forWatch out for
VercelThe least operational work, on the platform built by the Next.js teamUsage-based billing that grows with traffic, function time and image optimisation; model it against your real traffic
Other managed platformsTeams already on Netlify, Cloudflare, AWS Amplify or Google Cloud. Next.js 16.2 introduced a stable Adapter API and a shared test suite, designed with those providers and OpenNextCheck the adapter’s support for the features you use, such as streaming, revalidation and Cache Components
Self-hosting in containersData residency, private networks, steady high trafficYou own the shared cache, CDN, image optimisation, scaling and patching

Upgrade checklist: Next.js 14 or 15 to 16

  1. Move to Node.js 24 or 26 first. Next.js 16 requires at least 20.9, and Node 20 itself is out of support.
  2. Upgrade React to 19 and fix warnings before touching Next.js.
  3. Run npx @next/codemod@canary upgrade latest, then the async request API codemod if any synchronous params, searchParams, cookies() or headers() calls remain.
  4. Rename middleware.ts to proxy.ts. Proxy runs on the Node.js runtime; middleware remains only for edge use and is deprecated.
  5. Check custom webpack configuration. Turbopack is now the default, and --webpack is a temporary escape hatch, not a plan.
  6. Add a cacheLife profile to every revalidateTag() call, and replace experimental.ppr with Cache Components.
  7. Replace next lint with ESLint or Biome run directly, and swap images.domains for remotePatterns. Note the new image defaults, including a four-hour minimum cache time.
  8. Compare screenshots and end-to-end tests before and after, then release behind a staged rollout.

Security patching: what we commit to

Next.js has had serious vulnerabilities. CVE-2025-29927, published in March 2025 and rated critical (CVSS 9.1), let attackers bypass authorisation checks done in middleware by sending a crafted x-middleware-subrequest header; it was fixed in 12.3.5, 13.5.9, 14.2.25 and 15.2.3. In December 2025, CVE-2025-55182, a pre-authentication remote-code-execution flaw in React Server Components rated 10.0, was added to CISA’s Known Exploited Vulnerabilities catalogue within two days of disclosure. Since July 2026 Next.js has run a formal security release programme, announcing scheduled releases roughly once a month and still shipping urgent fixes out of band.

For clients on a support plan we agree patch windows by severity, apply scheduled releases inside them, apply critical fixes faster, test before every deploy and keep a log. We also never rely on proxy.ts alone for access control: authorisation is checked again where the data is read.

When not to use Next.js

  • A brochure or blog site that a CMS or Astro would serve with less code and cheaper hosting.
  • An internal dashboard with no SEO needs, where a Vite single-page app is simpler.
  • A team with no capacity to upgrade at least twice a year.
  • Heavy back-end processing, which belongs in a separate API rather than route handlers.

What drives the cost of a Next.js project

  • Distinct page types and how much of each is personalised rather than cacheable.
  • Integrations: headless CMS, commerce, search, authentication, payments.
  • Performance targets and how far the current app is from them.
  • Hosting model: self-hosting needs more infrastructure work up front.
  • Upgrade debt: an app on 13 or 14 with custom webpack takes longer than one already on 15.
  • Ongoing patching under a support plan.

We do not publish prices; a written proposal follows a short discovery.

How to choose a Next.js agency

  • Ask what they would build your project in if not Next.js, and why.
  • Ask how they decide caching per route and how they handle multi-instance self-hosting.
  • Ask for their patching routine and how quickly they applied the 2025 fixes.
  • Look for performance budgets in CI, not a one-off Lighthouse screenshot.
  • If you plan to hire Next.js developers through them, talk to those developers before signing.
  • Make sure the repository, hosting account and domain are yours.
Built and run by us

Next.js in production at Radiatus

One of our own platforms runs on the stack described on this page, so its upgrades and patches are our problem too.

How we start

A typical first engagement: Next.js audit and upgrade plan

Two to four weeks, fixed scope, for a planned build or an app already in production.

Week 1

Access & baseline

Repository and hosting access, field Core Web Vitals from Search Console or your monitoring tool, and current Next.js, React and Node.js versions.

Weeks 1–2

Architecture review

Rendering and caching per route, client bundle size, Server Function security, dependency health and hosting cost.

Weeks 2–3

Proof on one route

We upgrade or rebuild one representative route in a branch and measure the change in bundle size and vitals.

Weeks 3–4

Roadmap & proposal

A ranked plan for the upgrade, performance fixes and a patching routine, with a written proposal if you want us to deliver it.

Senior engineers firstYour first call is with someone who will write the code, not a sales script.
You own everythingCode in your repository, infrastructure in your cloud account, documentation handed over.
We run our own products15 live platforms we build and operate, so we feel production pain too.
Honest about fitIf another stack or an off-the-shelf tool suits you better, we will say so.
FAQ

Questions about Next.js projects

Yes if you are on 14, which no longer receives security fixes. Next.js 15 is in maintenance and receives security releases until 31 January 2027, so plan the move to 16 before then. Most apps upgrade in stages: runtime and React first, then async request APIs and proxy.ts, then caching and Turbopack.

No. Next.js runs on any Node.js server with next start, in containers on AWS, Azure or Google Cloud, or on platforms that build on the stable Adapter API introduced in Next.js 16.2. Vercel needs the least operational work. Self-hosting gives more control and can cost less at steady traffic, but you take on caching, the CDN and patching.

It can be. Server rendering and static generation give search engines complete HTML, and the Metadata API handles titles, canonical tags and structured data. What usually hurts rankings is performance: heavy client bundles push INP above 200 milliseconds and slow hero images push LCP past 2.5 seconds. We set those budgets at the start of a project.

Next.js now announces scheduled security releases in advance, roughly once a month, and still ships urgent patches out of band. For clients on a support plan we agree patch windows by severity, apply and test releases within them, and log each deployment. We also never rely on proxy or middleware alone for authorisation, which is what made the 2025 bypass so damaging.

Yes. For internal tools behind a login, a plain React app built with Vite is often simpler and cheaper to host. For content-heavy sites with little interactivity, Astro ships less JavaScript. We recommend the lighter option when it fits.

The main drivers are the number of distinct page types, how much is personalised rather than cacheable, integrations such as CMS, commerce and authentication, performance targets, the hosting model and whether you want ongoing patching. We do not publish prices. A free consultation and a short discovery come first, then a written proposal that sets out scope, milestones and the price.

Building with Next.js, or stuck on version 14?

Share the repository or the URL. A senior engineer will come back with a plain assessment of upgrade effort, performance and hosting cost.

Discuss your Next.js project

Other technologies we build with

Last updated