Version 13
Mise à jour de la version 12 à la version 13
Pour mettre à jour vers Next.js version 13, exécutez la commande suivante avec votre gestionnaire de paquets préféré :
npm i next@latest react@latest react-dom@latest eslint-config-next@latest
# ou
yarn add next@latest react@latest react-dom@latest eslint-config-next@latest
# ou
pnpm up next react react-dom eslint-config-next --latest
# ou
bun add next@latest react@latest react-dom@latest eslint-config-next@latestRésumé de la version 13
- Les navigateurs pris en charge ont été modifiés pour abandonner Internet Explorer et cibler les navigateurs modernes.
- La version minimale de Node.js a été augmentée de 12.22.0 à 16.14.0, car les versions 12.x et 14.x ont atteint leur fin de vie.
- La version minimale de React a été augmentée de 17.0.2 à 18.2.0.
- La propriété de configuration
swcMinifya été changée defalseàtrue. Voir Next.js Compiler pour plus d'informations. - L'import
next/imagea été renommé ennext/legacy/image. L'importnext/future/imagea été renommé ennext/image. Un codemod est disponible pour renommer automatiquement et en toute sécurité vos imports. - L'enfant de
next/linkne peut plus être<a>. Ajoutez la proplegacyBehaviorpour utiliser l'ancien comportement ou supprimez le<a>pour effectuer la mise à niveau. Un codemod est disponible pour mettre à jour automatiquement votre code. - La propriété de configuration
targeta été supprimée et remplacée par Output File Tracing.
Migration des fonctionnalités partagées
Next.js 13 introduit un nouveau répertoire app avec de nouvelles fonctionnalités et conventions. Cependant, la mise à niveau vers Next.js 13 ne nécessite pas d'utiliser le nouveau répertoire app.
Vous pouvez continuer à utiliser pages avec les nouvelles fonctionnalités qui fonctionnent dans les deux répertoires, comme le composant Image mis à jour, le composant Link, le composant Script et l'optimisation des polices.
Composant <Image/>
Next.js 12 a introduit de nombreuses améliorations au composant Image avec un import temporaire : next/future/image. Ces améliorations incluaient moins de JavaScript côté client, des moyens plus simples d'étendre et de styliser les images, une meilleure accessibilité et un chargement différé natif par le navigateur.
À partir de Next.js 13, ce nouveau comportement est maintenant celui par défaut pour next/image.
Deux codemods sont disponibles pour vous aider à migrer vers le nouveau composant Image :
- next-image-to-legacy-image : Ce codemod renommera automatiquement et en toute sécurité les imports
next/imageennext/legacy/imagepour maintenir le même comportement que Next.js 12. Nous recommandons d'exécuter ce codemod pour mettre à jour rapidement et automatiquement vers Next.js 13. - next-image-experimental : Après avoir exécuté le codemod précédent, vous pouvez optionnellement exécuter ce codemod expérimental pour mettre à niveau
next/legacy/imagevers le nouveaunext/image, ce qui supprimera les props inutilisées et ajoutera des styles en ligne. Veuillez noter que ce codemod est expérimental et ne couvre que les utilisations statiques (comme<Image src={img} layout="responsive" />) mais pas les utilisations dynamiques (comme<Image {...props} />).
Alternativement, vous pouvez effectuer la mise à jour manuellement en suivant le guide de migration et consulter également la comparaison avec l'ancienne version.
Composant <Link>
Le composant <Link> ne nécessite plus d'ajouter manuellement une balise <a> comme enfant. Ce comportement avait été ajouté comme option expérimentale dans la version 12.2 et est maintenant celui par défaut. Dans Next.js 13, <Link> rend toujours <a> et vous permet de transmettre des props à la balise sous-jacente.
Par exemple :
import Link from 'next/link'
// Next.js 12 : `<a>` doit être imbriquée sinon elle est exclue
<Link href="/about">
<a>À propos</a>
</Link>
// Next.js 13 : `<Link>` rend toujours `<a>` en arrière-plan
<Link href="/about">
À propos
</Link>Pour mettre à niveau vos liens vers Next.js 13, vous pouvez utiliser le codemod new-link.
Composant <Script>
Le comportement de next/script a été mis à jour pour prendre en charge à la fois pages et app. Si vous adoptez progressivement app, consultez le guide de mise à niveau.
Optimisation des polices
Auparavant, Next.js vous aidait à optimiser les polices en intégrant le CSS des polices. La version 13 introduit le nouveau module next/font qui vous donne la possibilité de personnaliser votre expérience de chargement des polices tout en garantissant des performances et une confidentialité optimales.
Voir Optimisation des polices pour apprendre à utiliser next/font.