Next.js Development

The web stack we reach for by default.

Next.js is behind more of our shipped work than any other web framework: customer portals, admin consoles, marketing sites that live or die on Core Web Vitals, and content platforms fed by a headless CMS.

We run Next.js on the App Router with React and TypeScript in strict mode. Where a project needs a CMS we reach for Prismic; where it needs a design system we build on Tailwind and shadcn/ui rather than inventing primitives nobody else will recognise.

What we build with Next.js

Authenticated portals

NextAuth and Better Auth with OAuth providers, credential flows, role guards and admin shells — the parts every portal needs and nobody wants to rebuild.

Headless CMS builds

Prismic with Slice Machine and generated TypeScript content models, so editors get real components and developers get type safety.

Design systems in the open

Tailwind CSS with shadcn/ui and Radix primitives, documented in Storybook so the component library survives the handover.

Data-heavy interfaces

Recharts dashboards, drag-and-drop with dnd-kit, Leaflet mapping and virtualised tables — interfaces that stay responsive under real data volumes.

Search that works

Algolia integration with publish and unpublish webhooks, search analytics, and dictionary-aware exact matching.

Deployed where it suits

Standalone Docker runtimes onto AWS ECS via CDK, or Vercel where the edge network earns its keep. The framework does not dictate the bill.

What is actually in our Next.js projects

Not a wish list. Every library below is running in a repository we maintain.

Core

  • Next.js
  • App Router
  • React
  • TypeScript (strict)
  • Turbopack

UI

  • Tailwind CSS
  • shadcn/ui
  • Radix UI
  • Lucide
  • Framer Motion
  • embla-carousel
  • Storybook

Forms & data

  • React Hook Form
  • Zod
  • TanStack Query
  • Recharts
  • TipTap
  • react-day-picker

Auth & content

  • NextAuth
  • Better Auth
  • Prismic
  • Sanity
  • Algolia

Quality

  • ESLint (with SonarJS)
  • Prettier
  • Stylelint
  • cspell
  • Playwright
  • Cypress

Delivery

  • Docker standalone
  • AWS CDK → ECS
  • Vercel
  • GitHub Actions
  • Sentry
  • Bugsnag

How we work in Next.js

Choosing the stack is the easy part. These are the decisions that determine whether the codebase is still maintainable after we hand it over — and they are the same on every Next.js project we run.

Our certifications
  • TypeScript runs in strict mode with path aliases on every project. No project starts with strict off and a promise to turn it on later.

  • API clients are generated from the backend OpenAPI schema into a versioned client folder and wrapped in a typed React hook, so backend and frontend cannot silently drift apart.

  • Our internal scaffolding tooling generates CRUD feature folders to a consistent shape, which means a developer moving between our projects recognises the layout immediately.

  • Component libraries are documented in Storybook so the design system is inspectable by the client's own team after handover, not just by us.

  • Linting covers spelling and styles as well as code — cspell and Stylelint alongside ESLint — because review time is better spent on architecture.

Looking for the service rather than the stack?

Next.js is how we build. If you would rather start from what you need delivered, our bespoke software development page covers scope, process and engagement.

Bespoke Software Development

Building on Next.js?

Tell us what you are building — or what you have inherited. We will come back with a straight answer on scope and approach.

Get in Touch