Platform / Next.js
Next.js development for sites that are really applications.
When a marketing site crosses into application territory, auth, dashboards, server-rendered dynamic data, Next.js is the right tool. We build it without the bundle bloat that usually comes with it.
Request a fit checkOverview
How Next.js actually works
Next.js is a React framework that spans the full spectrum from static pages to fully server-rendered applications. Its App Router and React Server Components let you render on the server by default and ship client JavaScript only where interactivity genuinely requires it, a model that, used with discipline, produces fast applications.
That flexibility is also its trap. Next.js makes it easy to build a heavy single-page application where a static site would have been faster, cheaper, and more reliable. The framework will let you ship a marketing homepage that boots a megabyte of JavaScript, and most teams do.
The opportunity is real when the site is genuinely an application: gated content, personalised dashboards, authenticated flows, server-rendered dynamic data. Next.js handles those in a way a static framework can't. The discipline is knowing when you've crossed that line, and building server-first, with tight bundles, when you have.
We reach for Next.js deliberately, for the application-shaped parts of a site, and keep the content-shaped parts static.
Challenges
Where Next.js builds go wrong
Client components everywhere
Marking everything a client component defeats React Server Components and reintroduces the bundle weight you wanted to avoid.
Unbudgeted JavaScript
Next.js makes it trivial to ship a heavy SPA for a page that should have been static HTML. LCP and TBT pay the price.
Rendering strategy confusion
Mixing static, server, and client rendering without a clear model produces slow pages and cache bugs.
Over-engineering the simple
Using Next.js for a plain marketing site is choosing complexity and hosting cost you don't need.
What we build
Production Next.js, done properly
Server-first architecture
React Server Components by default, client JS only where interaction is real.
Tight bundle budgets
Enforced JavaScript budgets so the app stays fast as it grows.
Correct rendering strategy
A deliberate per-route choice of static, server, or dynamic rendering, and caching that matches.
Auth & gated flows
Authenticated, personalised, and gated experiences that a static site genuinely can't deliver.
Headless CMS integration
Content from Payload or Sanity where the site is content-led, apps where it isn't.
Edge-ready deployment
Deployment tuned for edge and serverless so dynamic routes stay fast globally.
Our approach
How we ship a Next.js project
Draw the static/dynamic line
We separate content-shaped pages from application-shaped ones and pick rendering per route.
Build server-first
Server components by default; client islands only where interaction demands them.
Budget the bundle
JavaScript budgets are set and enforced so performance doesn't erode over time.
Deploy for the edge
Caching and deployment tuned so both static and dynamic routes are fast everywhere.
FAQ
Next.js, questions we get asked
Should we use Next.js or Astro? +
Use Next.js when the site is genuinely an application: authentication, dashboards, personalised or server-rendered dynamic data. Use Astro when it's a content-led marketing site, where Astro ships far less JavaScript and is simpler to keep fast. Many projects are best served by Astro for the marketing surface and Next.js only for the app.
Is Next.js bad for performance? +
Next.js is not inherently slow, but it makes shipping too much JavaScript easy, so many Next.js sites are slow in practice. Built server-first with React Server Components and enforced bundle budgets, it performs well. The performance problem is almost always discipline, not the framework.
Can Next.js be static like Astro? +
Next.js can statically generate pages, but even static Next.js pages ship a React runtime that Astro's do not. For purely static content, Astro produces lighter output; Next.js earns its weight when you need its server and application capabilities.
Start here
Ready to build on Next.js?
A short conversation to understand your goals and determine if there's a fit. No sales pressure, no obligation.
Payload · Astro · Sanity · Next.js
Related