React & Next.js — High-performance web applications

← Home
Modern frontend

React & Next.js — High-performance web applications

We use React 18 and Next.js 15 (App Router) for the entire 4mygarage platform: the auto service presentation pages, the appointments agenda, vehicle records and the workshop dashboard. Code is strict TypeScript, tests automated, deployment zero-downtime.

Why Next.js for our projects

Next.js 15 with App Router offers a unique hybrid model: static pages (SSG) are served instantly from the CDN, dynamic pages run as Server Components that send no unnecessary JavaScript to the browser, and real-time pages use isolated Client Components. The result is a Lighthouse score of 95+ out-of-the-box, without tricks.

Images are automatically optimised via the `<Image>` component (WebP/AVIF, responsive srcSet, lazy-loading), fonts are inlined in critical CSS with `next/font`, and third-party scripts load with priority strategies. Together, these optimisations push LCP below 2.5 seconds on real 4G networks.

  • Server Components for the auto service public pages — zero client JS, instant crawling
  • Streaming SSR with Suspense for the live workshop agenda and availability
  • Incremental Static Regeneration (ISR) for large catalogs of auto services and blog articles — without a rebuild
  • Route Groups and Parallel Routes for complex layouts without re-render

Strict TypeScript — no silent bugs

All our projects use TypeScript with `strict: true`, `noImplicitAny`, `exactOptionalPropertyTypes` and `noUncheckedIndexedAccess`. These settings block entire categories of runtime bugs at compile time: undefined access, incomplete types on API responses, wrong comparisons. A typical project has 0 TypeScript errors in CI before any test.

For state management we use Zustand (lightweight, no boilerplate) or React Context for local state. Data fetching is handled via TanStack Query (auto cache, smart invalidation, stale-while-revalidate). Forms with React Hook Form + Zod schema validation — synchronous and asynchronous validation without duplicated code.

  • ESLint with custom rules for forbidden patterns (any, console.log, magic strings)
  • Prettier with uniform config — no PR rejected for formatting
  • Zod for runtime validation of data from external APIs
  • Path aliases (`@/components/...`) — clean imports without `../../..`

Automated testing and CI/CD

Unit tests with Vitest (fast, Jest-API compatible), component tests with React Testing Library, E2E with Playwright on 3 browsers (Chromium, Firefox, WebKit). The GitHub Actions pipeline runs all tests on every PR; merging is blocked if any fail. Minimum 80% coverage on business logic.

  • Lighthouse CI — score <90 blocks staging deploy
  • Automatic bundle analyser — alert if bundle grows >5% versus main
  • Storybook for UI components — living visual documentation

Pros and cons

Pros

  • Lighthouse 95+ from day one, without manual tuning.
  • Native SSR and SSG — full HTML for Google and AI engines.
  • Strict TypeScript catches bugs at compile time, not in production.
  • Mature ecosystem: Vercel, thousands of packages, huge community.

Limitations

  • The App Router and Server Components learning curve is steep.
  • Frequent breaking changes between major versions — needs maintenance.
  • For a simple static site, Next.js can be overkill versus plain HTML.
  • Large builds increase compile time and CI cost.

Quick verdict

Choose React & Next.js for websites and web apps that must be fast, indexable and scalable. For a single static landing page with no interactivity, a simpler tool is enough.

Specifications table

CapabilityLimit / thresholdTypical use
RenderingSSR, SSG, ISR, CSRServer Components limit browser APIsStatic marketing + dynamic dashboard
PerformanceLCP < 2.5s, Lighthouse 95+Hydration JS grows with interactivityHigh-traffic, SEO-critical sites
ScalingTens of thousands of users, edge CDNNeeds Node or serverless hostingSaaS, portals, auto service platforms
Typical costOpen-source, hosting from ~€0Serverless functions billed per useFrom small projects to enterprise

Next.js vs alternatives

CriterionNext.jsNuxt / Astro / Vite
SSR + SSG in one frameworkYes, nativePartial (Nuxt yes, Vite no)
React ecosystemFullVue (Nuxt) or multi-framework (Astro)
Best for pure static siteGoodAstro is lighter

Frequently asked questions

Why Next.js and not plain React (Vite)?

React with Vite renders only on the client, so the initial HTML is empty — poor for SEO and GEO. Next.js adds SSR and SSG, shipping full HTML that Google and AI engines read immediately.

Is Next.js good for SEO?

Yes. SSR/SSG ships indexable HTML, metadata and JSON-LD are generated on the server, and Core Web Vitals are green by design — all strong ranking signals.

Can I migrate an existing site to Next.js?

Yes, incrementally: pages move one by one, keeping URLs and 301 redirects so Google rankings are not lost.

What hosting does Next.js need?

Static pages run on any CDN. Dynamic features (SSR, API routes) need Node.js or a serverless runtime such as Vercel, Netlify or a Docker container.