React & Next.js — High-performance web applications
We use React 19 and Next.js 15 (App Router) for the entire 4webagency platform: the public pages, the projects and deliverables panel, the client file, the domain portfolio and the agency 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 platform’s public pages — zero client JS, instant crawling
- Streaming SSR with Suspense for project lists and live time tracking
- Incremental Static Regeneration (ISR) for large catalogs of service pages 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
| Capability | Limit / threshold | Typical use | |
|---|---|---|---|
| Rendering | SSR, SSG, ISR, CSR | Server Components limit browser APIs | Static marketing + dynamic dashboard |
| Performance | LCP < 2.5s, Lighthouse 95+ | Hydration JS grows with interactivity | High-traffic, SEO-critical sites |
| Scaling | Tens of thousands of users, edge CDN | Needs Node or serverless hosting | SaaS, portals, management platforms |
| Typical cost | Open-source, hosting from ~€0 | Serverless functions billed per use | From small projects to enterprise |
Next.js vs alternatives
| Criterion | Next.js | Nuxt / Astro / Vite |
|---|---|---|
| SSR + SSG in one framework | Yes, native | Partial (Nuxt yes, Vite no) |
| React ecosystem | Full | Vue (Nuxt) or multi-framework (Astro) |
| Best for pure static site | Good | Astro 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.