
Le débat Next.js vs React est mal posé. Next.js est React -- c'est un framework construit dessus. La vraie question en 2026 est de savoir si ton projet a besoin de toute la machinerie d'un framework de rendu serveur, ou si une SPA légère Vite + React + React Router v7 est le choix le plus judicieux. Cet article propose du code TypeScript côte à côte, de vraies données de performance et des verdicts clairs -- pas une liste de fonctionnalités floue.
Résumé rapide -- Next.js vs React + Vite en un coup d'œil
Choisis Next.js si tes pages doivent apparaître sur Google. Le HTML rendu côté serveur, l'optimisation d'images intégrée et le routage basé sur les fichiers en font le choix par défaut pour les sites publics.
Choisis React + Vite si ton application est derrière un login. Les tableaux de bord, panneaux d'administration et outils internes n'ont pas besoin de SSR -- une SPA est plus simple à construire, moins chère à héberger et plus rapide à développer.
| Catégorie | Next.js | React + Vite (SPA) |
|---|---|---|
| Ce que c'est | Framework React full-stack | React + outil de build (SPA) |
| Rendu | SSR, SSG, ISR, CSR | CSR uniquement |
| Routage | Basé sur les fichiers (App Router) | React Router v7 ou TanStack Router |
| SEO | Excellent (HTML pré-rendu) | Mauvais sans solutions de contournement |
| Chargement initial (LCP) | 1,1–1,8s (SSG) | 2,8–3,5s (CSR) |
| Taille du bundle (runtime) | ~92 Ko | ~42 Ko |
| Vitesse HMR | 100–300 ms (Turbopack) | Moins de 50 ms (Vite) |
| Récupération de données | Server Components, server actions | Côté client (TanStack Query, SWR) |
| Hébergement | Serveur Node.js ou Vercel | N'importe quel CDN statique (tier gratuit disponible) |
| Courbe d'apprentissage | Plus élevée (RSC, conventions de fichiers) | Plus basse (patterns React standard) |
| Idéal pour | Sites publics nécessitant le SEO | Tableaux de bord, panneaux admin, apps protégées |
| Verdict | Projets SEO-critiques et full-stack | Tableaux de bord, apps protégées, prototypes |
Décomposons maintenant chacune de ces différences avec du code et des données.
La vraie question -- Framework vs SPA
"Next.js vs React" implique qu'ils sont des alternatives. Ce n'est pas le cas. Chaque composant Next.js est un composant React. La décision réelle est entre deux approches pour construire avec React :
- L'approche framework -- Next.js gère le routage, le rendu, la récupération de données, l'optimisation d'images et les conventions de déploiement. Tu obtiens beaucoup out-of-the-box, mais tu suis ses règles.
- L'approche SPA -- Tu démarres avec Vite comme outil de build, tu ajoutes React Router v7 (ou TanStack Router pour un routage typé), et tu gères tout toi-même. Moins d'opinions, plus de flexibilité.
À quoi ressemble vraiment la stack React SPA en 2026
Create React App est mort. Il a été officiellement déprécié, et l'équipe React pointe désormais les développeurs vers Vite pour les projets SPA. La stack SPA moderne ressemble à ceci :
- Outil de build : Vite (
npm create vite@latest my-app -- --template react-ts) - Routage :
react-router-domv7 ou@tanstack/react-router - Récupération de données :
@tanstack/react-query(TanStack Query) - Gestion du head :
react-helmet-asyncou la fonctionmetade React Router
C'est une SPA prête pour la production. Pas besoin de framework.
Ce que l'équipe React dit vraiment
La documentation React recommande d'utiliser un framework comme point de départ par défaut -- mais elle liste explicitement Vite comme outil de build recommandé pour les projets qui ne correspondent pas aux hypothèses d'un framework. La nuance est importante : la recommandation de l'équipe React n'est pas "utilisez toujours Next.js." C'est "utilisez un framework si vous pouvez, et Vite pour les SPA quand ce n'est pas applicable."
Verdict : Les deux approches utilisent React. La question est de savoir si ton projet a besoin de ce que Next.js ajoute par-dessus.
Routage -- Basé sur les fichiers vs configuration explicite
Le routage est là où tu ressens la différence architecturale en premier. Next.js te donne le routage gratuitement via la structure des fichiers. Une SPA Vite exige que tu configures les routes explicitement.
Voici une application simple avec trois routes dans les deux approches :
Next.js (App Router) :
Ta structure de fichiers est ta configuration de routage :
app/
page.tsx -> /
about/page.tsx -> /about
dashboard/page.tsx -> /dashboard
layout.tsx -> layout partagéUne route n'est qu'un fichier :
// app/about/page.tsx
export default function AboutPage() {
return (
<main>
<h1>About Us</h1>
<p>We build things with React.</p>
</main>
);
}React + Vite (React Router v7) :
Tu définis les routes dans une configuration centrale :
// src/App.tsx
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { Home } from './pages/Home';
import { About } from './pages/About';
import { Dashboard } from './pages/Dashboard';
import { Layout } from './components/Layout';
export default function App() {
return (
<BrowserRouter>
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/dashboard" element={<Dashboard />} />
</Route>
</Routes>
</BrowserRouter>
);
}Le compromis est simple. Next.js élimine le boilerplate -- crée un fichier, obtiens une route. Mais le routage basé sur les fichiers a ses opinions. Si tu as besoin de layouts imbriqués complexes, de routes parallèles ou de patterns d'URL non standard, tu travailles dans les conventions de Next.js. React Router te donne un contrôle total, mais tu écris et maintiens la configuration toi-même.
Pour un regard plus approfondi sur la comparaison de l'App Router avec d'autres systèmes de routage de frameworks, consulte notre comparaison Next.js vs Remix.
Verdict : Égalité. Next.js est moins de boilerplate pour les applications standard. React Router et TanStack Router offrent plus de contrôle pour les besoins de routage complexes. Choisis en fonction de la valeur que tu accordes à la convention plutôt qu'à la configuration.
Récupération de données -- Serveur vs client
C'est là que la différence architecturale devient la plus concrète. Next.js récupère les données sur le serveur avant qu'un HTML n'atteigne le navigateur. Une SPA Vite récupère les données dans le navigateur après le chargement de la page.
Voici la même opération -- récupérer une liste d'utilisateurs -- dans les deux approches :
Next.js (Server Component) :
// app/users/page.tsx -- s'exécute sur le serveur
import { db } from '@/lib/db';
export default async function UsersPage() {
const users = await db.user.findMany();
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}Pas de spinner de chargement. Pas de useEffect. Les données arrivent en HTML -- l'utilisateur voit immédiatement le contenu.
React + Vite (TanStack Query) :
// src/pages/Users.tsx -- s'exécute dans le navigateur
import { useQuery } from '@tanstack/react-query';
import { Spinner } from '../components/Spinner';
export default function UsersPage() {
const { data: users, isLoading, error } = useQuery({
queryKey: ['users'],
queryFn: () => fetch('/api/users').then((res) => res.json()),
});
if (isLoading) return <Spinner />;
if (error) return <p>Failed to load users.</p>;
return (
<ul>
{users.map((user: { id: string; name: string }) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}L'utilisateur voit d'abord un spinner, puis le contenu une fois l'appel API résolu. TanStack Query gère magnifiquement le cache, le rechargement et les états d'erreur -- mais le rendu initial est toujours un état de chargement.
Le compromis pratique : Next.js élimine les spinners de chargement pour le contenu initial de la page, ce qui améliore la performance perçue et le SEO. Mais il ajoute de la complexité serveur -- tu dois comprendre la directive 'use client', la frontière composant serveur/client, et comment les données circulent entre eux. Une SPA Vite est plus simple à raisonner : tout s'exécute dans le navigateur, chaque composant suit les mêmes règles.
Verdict : Next.js gagne pour les pages publiques où les spinners de chargement nuisent au SEO et à l'expérience utilisateur. React + Vite gagne pour les pages protégées où un bref état de chargement est acceptable et la complexité serveur n'est pas justifiée.
SEO -- L'axe de décision page-split
Chaque article de comparaison dit "Next.js est meilleur pour le SEO." C'est vrai mais incomplet. La vraie question est : ton projet a-t-il même besoin de SEO ?
La question du page-split
Voici le framework qui aide vraiment à décider. Demande-toi : Quel pourcentage de mes pages doit être publiquement crawlable par Google ?
- 80%+ de pages publiques (blog, site marketing, catalogue e-commerce) -- Next.js est le choix évident. SSG et SSR livrent du HTML pré-rendu immédiatement aux crawlers. Le LCP atteint 1,1–1,8s sur les pages générées statiquement. Le composant
next/imagegénère automatiquement dessrcset, charge en lazy et convertit en WebP. L'exportmetadatade Next.js gère nativement<title>,<meta>et les tags Open Graph. - 80%+ de pages privées (tableau de bord, panneau d'administration, outils internes) -- React + Vite SPA est plus simple et suffisant. Google ne verra jamais ces pages. Le SSR ajoute de la complexité dont tu ne bénéficies pas. Une SPA livre un
<div id="root">et JavaScript gère tout -- ce qui est bien quand la crawlabilité n'a pas d'importance. - Mixte (SaaS avec pages marketing publiques + application privée) -- Next.js gère les deux. Utilise SSG pour tes pages marketing et landing pages. Utilise le rendu côté client (avec
'use client') pour la partie application authentifiée. Une seule codebase, deux stratégies de rendu.
Le cas hybride SaaS
La plupart des produits SaaS ont un site marketing (a besoin de SEO) et une application (n'en a pas besoin). Next.js gère ça élégamment -- ta page /pricing est générée statiquement, tandis que ta route /app/dashboard se rend côté client. Tu n'as pas besoin de deux codebases séparées.
L'alternative est de séparer : un site marketing Next.js sur yourproduct.com et une SPA Vite sur app.yourproduct.com. Certaines équipes préfèrent cette séparation des responsabilités. Les deux approches fonctionnent.
Oui, Googlebot peut exécuter JavaScript (il utilise une version récente de Chrome). Mais le HTML pré-rendu est plus rapide et plus fiable pour l'indexation. Tu paries sur le fait que le crawler de Google se comporte parfaitement à chaque fois -- et c'est un pari que tu n'as pas besoin de faire quand SSG est disponible.
Verdict : Next.js gagne pour le SEO. Mais si aucune de tes pages n'a besoin d'indexation Google, cet avantage t'est irrelevant. La question du page-split est le moyen le plus rapide de déterminer si le SEO doit même influencer ta décision.
Benchmarks de performance -- Chiffres réels
Les affirmations vagues comme "Next.js est plus rapide" ne t'aident pas. Voici de vrais chiffres comparant les deux approches :
| Métrique | Next.js (SSG) | React + Vite (SPA) | Gagnant |
|---|---|---|---|
| LCP (Largest Contentful Paint) | 1,1–1,8s | 2,8–3,5s | Next.js |
| TTFB (Time to First Byte) | ~50 ms (statique) | ~200 ms+ (shell SPA + API) | Next.js |
| Taille du bundle (runtime) | ~92 Ko | ~42 Ko | React + Vite |
| Time to Interactive (app auth) | Plus lent (coût d'hydratation) | Plus rapide (pas d'hydratation) | React + Vite |
| HMR (expérience de dev) | 100–300 ms | Moins de 50 ms | React + Vite |
Ce sont des plages typiques basées sur des données de benchmark d'applications en production. Les chiffres réels dépendent de la complexité de ton application, de l'effort d'optimisation et de la configuration d'hébergement.
"Next.js SSG vs React + Vite SPA"
Tableau de données
| "Métrique" | "Next.js SSG" | "React + Vite SPA" |
|---|---|---|
| "LCP (secondes)" | 1.4 | 3.1 |
| "Taille du bundle (Ko)" | 92 | 42 |
Le schéma est clair : Next.js gagne sur le chargement initial pour les pages publiques car SSG livre du HTML pré-rendu. Le navigateur n'attend pas l'exécution JavaScript avant d'afficher le contenu. Mais React + Vite gagne sur la taille du bundle et l'expérience développeur -- 42 Ko vs 92 Ko de runtime signifie moins de JavaScript à parser pour le navigateur, et le HMR sous-50ms de Vite rend le développement nettement plus réactif.
Pour un regard approfondi sur les performances de Turbopack vs Vite en termes de vitesse de build et de HMR, consulte notre comparaison Turbopack vs Webpack vs Vite.
Verdict : Aucun n'est universellement "plus rapide". Next.js gagne sur le chargement initial pour les pages publiques. React + Vite gagne sur la taille du bundle, le time-to-interactive pour les apps protégées et l'expérience développeur. Ce que tu mesures détermine qui gagne.
Vendor lock-in et hébergement
Parlons de l'éléphant dans la pièce : Next.js est développé par Vercel. Certaines fonctionnalités -- optimisation d'images à grande échelle, Edge Middleware, ISR avec revalidation à la demande -- fonctionnent mieux sur la plateforme de Vercel. Ça rend les développeurs nerveux, et honnêtement, ça devrait te faire réfléchir.
La réalité est plus nuancée que "tu es enfermé". Next.js tourne sur n'importe quel serveur Node.js. Tu peux docker build une application Next.js et la déployer sur AWS, GCP ou ta propre infrastructure. Le projet OpenNext fournit des adaptateurs open-source maintenus par AWS (SST), Cloudflare et Netlify qui permettent un auto-hébergement complet. Des utilisateurs en production comme NHS England, Udacity et Gymshark UK font tourner Next.js en dehors de Vercel.
Mais voici ce que React + Vite te donne que Next.js ne peut pas égaler : zéro dépendance serveur. Une SPA Vite se build en fichiers statiques. Déploie-les sur Cloudflare Pages, Netlify, un bucket S3 ou littéralement n'importe quel CDN. Pas de runtime Node.js. Pas de coûts serveur. Aucun fournisseur dont dépendre.
La différence de coût est réelle :
| Scénario d'hébergement | React + Vite SPA | Next.js (SSR) |
|---|---|---|
| Tier gratuit | Cloudflare Pages, Netlify, Vercel (statique) | Tier gratuit Vercel (limité) |
| Production (faible trafic) | 0 €/mois (CDN statique) | 5–20 €/mois (serveur Node.js) |
| Production (fort trafic) | Toujours ~0 € (le statique est bon marché) | 20–200+ €/mois (le serverless peut monter) |
Verdict : React + Vite gagne sur la simplicité d'hébergement et le coût. Une SPA statique est la cible de déploiement la moins chère et la plus portable du développement web. Next.js est déployable partout, mais nécessite une planification d'infrastructure -- surtout en dehors de Vercel.
Quand Next.js est excessif
La plupart des articles de comparaison sont pro-Next.js par défaut. Mais être honnête sur les cas où le framework ajoute une complexité inutile crée plus de confiance que de prétendre que c'est toujours la bonne réponse.
Next.js est excessif quand :
- Ton application est à 100% derrière l'authentification. Google ne voit jamais ces pages. SSR n'apporte aucune valeur. La frontière
'use client'/'use server'ajoute une charge cognitive sans bénéfice. - Tu construis des outils internes ou des tableaux de bord admin. Pas d'utilisateurs publics, pas de SEO, pas de raison pour le rendu serveur. Une SPA Vite est plus rapide à développer et plus facile à maintenir.
- Tu fais un prototype ou un MVP. La vitesse de développement importe plus que la performance de chargement initial. Le modèle mental plus simple de Vite signifie moins de choses à apprendre, moins de choses à casser.
- Ton équipe ne veut pas de complexité côté serveur. Les React Server Components sont puissants, mais le sondage State of React 2025 (3 700+ répondants) a montré une réception tiède pour RSC, avec des plaintes sur la complexité excessive. Si ton équipe résiste à la frontière serveur/client, forcer le framework vous ralentira.
Les données de satisfaction des développeurs le confirment. Le sondage State of JavaScript 2024 montre Vite comme l'outil de build #1 le plus aimé. Meanwhile, Next.js maintient une forte rétention à 82% mais porte 17% de sentiment négatif -- le plus élevé de tous les méta-frameworks majeurs. Les développeurs ne sont pas mécontents de Vite.
Verdict : Si ton application est entièrement derrière l'auth, Next.js ajoute de la complexité dont tu n'as pas besoin. Une SPA Vite est plus simple, plus rapide à développer et essentiellement gratuite à héberger.
Framework de décision -- Choisir la bonne approche
Voici l'antisèche. Trouve ton type de projet, obtiens une recommandation :
| Ton projet | Recommandé | Pourquoi |
|---|---|---|
| Site marketing / landing pages | Next.js | SSG pour le SEO, next/image pour la performance |
| Blog ou site riche en contenu | Next.js | SSG/ISR pour des pages rapides et crawlables |
| SaaS avec pages publiques + privées | Next.js | Gère SSR (public) et CSR (app) |
| E-commerce avec pages produit | Next.js | Les pages produit SEO-critiques ont besoin du pré-rendu |
| Tableau de bord / panneau admin | React + Vite | Pas de SEO nécessaire, stack plus simple, meilleure DX |
| Outils internes d'entreprise | React + Vite | Protégé par auth, aucune exigence SEO |
| Prototype / MVP | React + Vite | Plus rapide à démarrer, moins cher à héberger, moins de complexité |
| Application Electron / bureau | React + Vite | Pas de rendu serveur dans les applications bureau |
Un conseil qu'aucun article de comparaison ne semble donner : si tu n'es pas sûr, commence avec React + Vite. Tu peux toujours migrer vers Next.js plus tard -- le guide de migration officiel est complet et bien documenté. L'inverse -- extraire une SPA d'une application Next.js -- est plus compliqué.
Déclencheurs de migration -- Quand passer de SPA à Next.js
Commencer avec une SPA Vite ne signifie pas qu'on y est coincé. Voici trois signaux clairs qu'il est temps de migrer :
- Le SEO devient critique. Tu construis des pages publiques qui doivent se classer sur Google, et le contenu rendu par JavaScript de ta SPA n'est pas indexé de manière fiable. Le HTML pré-rendu résout ça immédiatement.
- Le temps de chargement initial nuit à la conversion. Tes landing pages affichent un écran blanc pendant 2 à 3 secondes avant que le contenu n'apparaisse. Un LCP au-dessus de 2,5s corrèle avec des taux de rebond plus élevés. SSG l'abaisse à 1,1–1,8s.
- Tu veux éliminer ton API backend séparée. Les Server Components et les server actions te permettent de requêter la base de données directement depuis les composants React, supprimant le besoin d'un serveur API Express ou Fastify séparé. Si maintenir deux codebases (frontend + API) te coûte de la vélocité, Next.js les consolide.
Ce qui change vraiment lors de la migration
Voici une checklist pratique de ce que tu toucheras :
- Routage : Fichier de configuration React Router -> routes basées sur les fichiers dans le répertoire
app/ - Récupération de données : TanStack Query pour tout -> Server Components pour les données initiales + TanStack Query pour les mutations et mises à jour en temps réel
- Composants : Ajouter
'use client'à chaque composant existant qui utilise des hooks ou des APIs navigateur - Images : Tags
<img>-> composantnext/image - Variables d'environnement : Préfixe
VITE_-> préfixeNEXT_PUBLIC_ - Configuration de build :
vite.config.ts->next.config.ts - Scripts de package :
vite dev->next dev,vite build->next build
Le guide de migration officiel Next.js depuis Vite détaille chaque étape. C'est l'un des meilleurs guides de migration de l'écosystème React.
Comment Techsy aborde la décision Framework vs SPA
Quand un client vient nous voir avec un nouveau projet, on passe par une courte checklist avant d'écrire une seule ligne de code :
- Le projet a-t-il des pages publiques nécessitant le SEO ? Si oui, Next.js est le défaut. SSG pour les pages marketing, SSR pour le contenu dynamique.
- Y a-t-il une API existante, ou faut-il en construire une ? S'il n'y a pas encore de backend, les server actions de Next.js peuvent complètement éliminer le besoin d'un serveur API séparé.
- Quelle est l'expérience de l'équipe avec les conventions Next.js ? Si l'équipe est à l'aise avec React mais nouvelle aux Server Components et à la frontière
'use client', on tient compte du temps de montée en compétence. Parfois une SPA Vite livre des semaines plus tôt. - Quel est le budget d'hébergement et la préférence ? Une SPA Vite se déploie sur un tier CDN gratuit. Next.js SSR nécessite une infrastructure serveur. Pour les startups bootstrappées qui surveillent chaque euro, cette différence compte.
La plupart de nos projets SaaS finissent sur Next.js -- la capacité à gérer à la fois les pages marketing publiques et l'application authentifiée dans une seule codebase est vraiment puissante. Mais nos outils internes et tableaux de bord clients ? Ce sont des SPA React + Vite. L'overhead du framework n'est pas justifié quand personne en dehors de l'entreprise ne verra jamais les pages.
On ne choisit pas Next.js par défaut pour tout. On a livré des SPA Vite en production pour des clients dont les projets ne justifiaient pas l'overhead du framework -- et ces projets ont livré plus vite grâce à ça.
Pas sûr de quelle approche convient à ton projet ? Obtiens une consultation gratuite -- on t'accompagnera à travers les compromis pour ton cas d'usage spécifique.
Questions fréquemment posées
Next.js est-il meilleur que React ?
Ce ne sont pas des concurrents directs. Next.js est un framework construit sur React. La question est de savoir si tu as besoin de ce que Next.js ajoute : rendu côté serveur, routage basé sur les fichiers et server components. Pour les pages publiques SEO-critiques, Next.js est le meilleur choix. Pour les applications protégées par auth, React + Vite est souvent mieux adapté car il évite une complexité serveur inutile.
Dois-je apprendre React ou Next.js en premier ?
Apprends React en premier. Next.js est construit sur React -- tu dois comprendre les composants, les hooks et la gestion d'état avant que les conventions Next.js aient du sens. Passe deux à trois semaines sur le cœur de React, puis explore Next.js si ton projet a besoin de rendu serveur ou de SSG.
Peut-on utiliser Next.js avec React ?
Next.js est React. Chaque composant Next.js est un composant React. Next.js ajoute le rendu côté serveur, le routage et les optimisations sur la bibliothèque de base de React.
Next.js remplacera-t-il React ?
Non. Next.js dépend de React -- il ne peut pas exister sans lui. React est la bibliothèque UI ; Next.js est un framework qui utilise React. Ce sont des couches différentes de la stack, toutes deux activement maintenues par des équipes différentes.
Next.js est-il bon pour le SEO ?
Excellent. Next.js pré-rend les pages en HTML, que les moteurs de recherche indexent immédiatement. Une SPA Vite envoie un <div id="root"> vide qui nécessite l'exécution JavaScript avant que le contenu soit visible. Pour les pages qui doivent se classer sur Google, Next.js a un avantage clair avec des LCP de 1,1–1,8s sur les pages générées statiquement.
Quand utiliser React sans Next.js ?
Quand ton application n'a pas besoin de SEO (tableaux de bord, panneaux admin, outils internes), quand tu veux une expérience de développement plus simple sans la frontière composant serveur/client, quand tu veux un hébergement moins cher (les fichiers statiques sur un CDN ne coûtent pratiquement rien), ou quand tu fais un prototype où la vitesse de développement importe plus que la performance de chargement initial.
Quelle est la différence entre Next.js et React ?
React est une bibliothèque JavaScript pour construire des interfaces utilisateur. Next.js est un framework full-stack construit sur React qui ajoute le rendu côté serveur, le routage basé sur les fichiers, l'optimisation d'images et les routes API. React gère la couche vue ; Next.js gère l'architecture entière de l'application incluant la stratégie de rendu, le routage et la logique côté serveur.
Next.js est-il plus rapide que React ?
Ça dépend de ce que tu mesures. Pour le chargement initial des pages publiques, Next.js SSG livre du HTML pré-rendu avec un LCP de 1,1–1,8s versus 2,8–3,5s pour une SPA typique. Pour l'interactivité runtime et l'expérience développeur, React + Vite peut être plus rapide grâce à son bundle plus petit (42 Ko vs 92 Ko) et un HMR sous-50ms.
Create React App est-il mort en 2026 ?
Oui. CRA a été officiellement déprécié depuis React 19. L'équipe React recommande Vite comme remplaçant pour les projets SPA. Si tu démarres une nouvelle React SPA, utilise npm create vite@latest my-app -- --template react-ts pour scaffolder avec Vite et TypeScript.
Next.js nécessite-t-il Vercel pour l'hébergement ?
Non. Next.js tourne sur n'importe quel serveur Node.js. Tu peux déployer avec Docker, sur AWS (via le projet OpenNext), sur Cloudflare ou chez n'importe quel hébergeur qui supporte Node.js. Certaines fonctionnalités comme Edge Middleware et l'optimisation d'images à grande échelle fonctionnent mieux sur Vercel, mais le framework lui-même n'est pas lié à une plateforme.
Next.js est-il excessif pour les petits projets ?
Souvent oui. Si ton projet est un tableau de bord, un outil interne ou un prototype sans exigences SEO, la complexité ajoutée des Server Components, des conventions de routage basées sur les fichiers et de la frontière serveur/client peut ne pas être justifiée. Une SPA Vite + React est plus simple à configurer, développer et déployer pour ces cas d'usage.
Peut-on utiliser Vite avec Next.js ?
Non. Next.js utilise son propre système de build -- Turbopack à partir de Next.js 15 et au-delà. Vite et Turbopack sont des outils de build alternatifs ; tu utilises l'un ou l'autre. Si tu veux l'expérience développeur de Vite, utilise une configuration SPA Vite + React. Si tu veux les fonctionnalités Next.js, tu utilises Turbopack.
Verdict final : Next.js vs React + Vite
| Catégorie | Gagnant | Pourquoi |
|---|---|---|
| SEO | Next.js | HTML pré-rendu, meilleurs Core Web Vitals pour les pages publiques |
| Chargement initial | Next.js | SSG livre le HTML instantanément ; la SPA nécessite l'exécution JS |
| Taille du bundle | React + Vite | 42 Ko vs 92 Ko runtime |
| Expérience développeur | React + Vite | HMR plus rapide, modèle mental plus simple, pas de frontière serveur/client |
| Simplicité d'hébergement | React + Vite | Fichiers statiques sur n'importe quel CDN, zéro coûts serveur |
| Capacité full-stack | Next.js | Server Components, server actions, routes API |
| Apps protégées par auth | React + Vite | Pas d'overhead SSR pour les pages que Google ne verra jamais |
| Flexibilité | React + Vite | Pas d'opinions vendor, déployable partout |
| Global | Dépend du SEO | Pages avec indexation Google : Next.js. Pas de pages publiques : React + Vite. |
Le tableau de scores semble équilibré -- 4 à 4 -- mais le tiebreaker est ton exigence SEO. Si tes pages ont besoin d'indexation Google, Next.js est le bon choix. Les fonctionnalités de rendu, routage et optimisation justifient la complexité ajoutée. Si ton application est derrière l'authentification et que Google ne la crawlera jamais, React + Vite est plus simple, plus rapide à développer et moins cher à héberger.
Ne te torture pas. Si tu n'es pas sûr, commence avec React + Vite. Le chemin de migration vers Next.js est bien documenté et direct. L'inverse -- extraire une SPA d'un framework -- est plus difficile. Évalue ton ratio page-split, fais un choix, et commence à construire.
Sources
- Start a New React Project -- React Official Docs
- Migrating from Vite -- Next.js Official Docs
- Getting Started -- Vite Official Docs
- OpenNext -- Self-Host Next.js Anywhere
- State of JavaScript 2024 -- Build Tools
- State of JavaScript 2024 -- Meta-Frameworks
- React Survey: TanStack Gains, Doubts Over Server Components -- devclass
- TanStack Router -- Official Docs