Next.js - Next.js (Framework React Fullstack pour la production)

Par Guillermo Rauch & l’équipe Vercel · 2016 · Sources officielles vérifiées

Frontend & FullstackDonnée vérifiée & sourcéeReactFullstackSSRVercelRSCTypeScript

En résumé

Framework open-source React créé par Vercel permettant de concevoir des applications web fullstack performantes grâce aux React Server Components, au rendu hybride (SSR, SSG, ISR) et aux Server Actions.

1. Définition détaillée & Contexte d'émergence

Next.js est devenu le standard de l'industrie pour créer des applications React modernes en production. Introduisant l'App Router basé sur l'architecture des React Server Components (RSC), Next.js permet d'exécuter des composants exclusivement sur le serveur pour réduire drastiquement la taille du bundle JavaScript envoyé au navigateur, tout en offrant un système de routage par fichiers (file-system routing), des optimisations automatiques d'images et de polices, ainsi que le compilateur Turbopack.

Pourquoi ce concept a été créé : Conçu pour remédier aux faiblesses SEO et aux temps de chargement initiaux lents des Single Page Applications (SPA) React rendues exclusivement côté client (Client-Side Rendering).

2. Architectures Clés de Next.js (App Router)

L'App Router repose sur une séparation stricte entre composants serveurs et clients pour maximiser le rendu et la sécurité.

1. React Server Components (RSC)

Par défaut, tous les composants du dossier `app/` s'exécutent côté serveur. Ils peuvent accéder directement aux bases de données et secrets d'API sans exposer de code sensible ni envoyer de JavaScript inutile au client.

2. Rendu Hybride (SSR, SSG, ISR)

Flexibilité totale : pages pré-rendues statiquement à la compilation (SSG), générées à la demande pour chaque requête (SSR), ou régénérées en arrière-plan à intervalles programmés (ISR).

3. Server Actions

Fonctions asynchrones exécutées sur le serveur et invocables directement depuis des formulaires ou composants clients sans devoir configurer manuellement d'endpoints API dédiés.

3. Caractéristiques fondamentales

  • App Router basé sur la structure des dossiers et conventions (`page.tsx`, `layout.tsx`, `loading.tsx`, `not-found.tsx`).
  • Optimisation automatique des assets : composants `<Image>`, polices Google intégrées avec `next/font`, et scripts tiers.
  • Turbopack : moteur de build ultra-rapide écrit en Rust remplaçant Webpack.
  • Support natif de TypeScript, ESLint et Tailwind CSS dès l’initialisation.
  • API Routes & Route Handlers pour exposer des endpoints REST ou Webhooks standardisés.

4. Exemple concret d'implémentation

Exemple typique d’un React Server Component Next.js avec accès direct aux données

app/articles/page.tsxtypescript
// Ce composant s'exécute exclusivement sur le serveur
import { db } from "@/lib/db";
import Link from "next/link";

export default async function ArticlesPage() {
  // Requête directe en base de données sans passer par fetch() ni exposer d'API publique
  const articles = await db.article.findMany({
    where: { published: true },
    orderBy: { createdAt: "desc" },
  });

  return (
    <main className="max-w-4xl mx-auto py-12 px-4">
      <h1 className="text-3xl font-bold mb-6">Derniers Articles Tech</h1>
      <ul className="space-y-4">
        {articles.map((item) => (
          <li key={item.id} className="p-4 border rounded-xl">
            <Link href={`/article/${item.slug}`} className="hover:underline">
              <h2 className="text-xl font-semibold">{item.title}</h2>
            </Link>
          </li>
        ))}
      </ul>
    </main>
  );
}

5. Avantages et limites techniques

Points forts

  • ✓Excellentes performances SEO et Core Web Vitals grâce au pré-rendu serveur.
  • ✓Productivité maximale avec le routage par fichiers et les layouts imbriqués.
  • ✓Bundle client ultra-léger grâce aux React Server Components.
  • ✓Écosystème géant et déploiement zero-config sur Vercel, Docker ou serveurs Node.js.

Points de vigilance

  • ⚠Courbe d’apprentissage exigeante pour maîtriser les frontières Server/Client (`"use client"`).
  • ⚠Verrouillage subtil vers les fonctionnalités cloud Vercel pour certaines optimisations avancées.
  • ⚠Évolution rapide nécessitant des montées de version attentives.

6. Recommandations : Quand l'utiliser ?

Idéal pour :

  • Vous construisez un site e-commerce, un SaaS, un blog, ou une application web exigeant du bon SEO.
  • Vous voulez coder l’interface et les traitements backend au sein d’un seul projet unifié.

À éviter pour :

  • Pour une application web purement interne (dashboard admin derrière login lourd) où une SPA Vite classique suffit.
  • Pour des systèmes microservices backend complexes nécessitant des sockets temps réel distribués à grande échelle.

7. Comparatif : Next.js vs Vite + React (SPA classique)

Next.js fournit un rendu serveur complet et du SEO natif, tandis que Vite produit une SPA statique rendue dans le navigateur.

CritèreNext.jsVite + React (SPA classique)
Rendu initialHTML généré sur le serveur, immédiat et indexable par les moteurs de recherche.Page blanche initiale (`<div id="root">`), le navigateur télécharge le JS puis monte le DOM.
BackendFullstack intégré : Route Handlers, Server Actions, middleware.Frontend uniquement, nécessite un serveur backend séparé (Express, Fastify).
ComplexitéPlus élevée, gestion des états serveurs vs clients.Plus simple, modèle de programmation React standard purement client.

8. Sources officielles vérifiées

Données techniques vérifiées auprès des documentations officielles, des RFCs et des spécifications standards.

Articles & Tutoriels associés sur Coderoe

Tous les articles →