Préparer l’avenir avec les pré-versions de React
Afin de partager les évolutions à venir avec nos partenaires de l’écosystème React, nous mettons en place des canaux de sortie officiels. Nous espérons que ce processus nous aidera à gagner en confiance lors de nos modifications à React, et donnera aux développeur·se·s l’opportunité d’essayer des fonctionnalités expérimentales.
Cet article sera surtout pertinent pour les développeur·se·s qui travaillent sur des frameworks, des bibliothèques ou de l’outillage de développement. Les personnes qui utilisent React principalement pour construire des applications destinées à des utilisateurs finaux ne devraient pas avoir à se préoccuper de nos canaux de sortie.
React dépend d’une communauté open source florissante pour signaler des bugs, ouvrir des pull requests et soumettre des RFC. Afin d’encourager des retours efficaces nous partageons parfois des builds spéciaux de React qui comportent des fonctionnalités encore officieuses.
Dans la mesure où la source de vérité pour React est notre dépôt GitHub public, il a toujours été possible de construire une version de React qui incluerait les toutes dernières évolutions. Cependant, il est nettement plus simple pour les développeur·se·s d’installer React à partir de npm, raison pour laquelle nous publions de temps à autre des builds de pré-version disponibles dans le référentiel npm. La version 16.7 alpha est un exemple récent, qui incluait un embryon de l’API des Hooks.
Nous souhaitons permettre aux développeur·se·s de tester encore plus facilement des pré-versions de React, c’est pourquoi nous formalisons notre process avec trois canaux de sortie séparés.
Canaux de sortie
Les informations de cet article sont également disponibles dans notre page Canaux de sortie page. Nous mettrons à jour ce document-là si nous ajustons notre processus de publication de versions.
Chaque canal de sortie React est conçu pour des cas d’usages bien spécifiques :
- Latest fournit les versions stables de React, conformes à semver. C’est ce que vous obtenez en installant React depuis npm. C’est le canal que vous utilisez déjà aujourd’hui. Utilisez ce canal pour toute application React visant des utilisateurs finaux.
- Next est basée sur la branche
master
du dépôt de code source de React. Considérez-le comme des versions candidates de la prochaine version semver mineure. Utilisez-le pour faire des tests d’intégration entre React et des projets tiers. - Experimental comprend les API et fonctionnalités expérimentales qu’on ne trouve pas dans les versions stables. C’est là aussi basé sur la branche
master
, mais des drapeaux de fonctionnalités supplémentaires ont été activés. Utilisez ce canal pour essayer des fonctionnalités à venir en amont de leur sortie officielle.
Toutes ces versions sont publiées sur npm, mais seul Latest utilise une gestion sémantique des versions. Les pré-versions (celles des canaux Next et Experimental) ont des versions dont l’identifiant est un hash basé sur leur contenu, par exemple 0.0.0-1022ee0ec
pour Next et 0.0.0-experimental-1022ee0ec
pour Experimental.
Latest est le seul canal de sortie officiellement autorisé pour des applications visant les utilisateurs finaux. Les sorties des canaux Next et Experimental sont fournies dans une optique de tests uniquement, et leur comportement est susceptible de varier d’une sortie à l’autre. Elles ne respectent pas le protocole semver que nous utilisons pour les sorties du canal Latest.
En publiant les pré-versions sur le même référentiel que pour les versions stables, nous pouvons tirer parti des nombreux outils qui se basent sur npm pour fonctionner, tels que unpkg et CodeSandbox.
Canal Latest
Le canal Latest est utilisé pour les versions stables de React. Il correspond à l’étiquette latest
sur npm. C’est le canal recommandé pour toute appli React proposée à de véritables utilisateurs.
Si vous n’êtes pas sûr·e du canal que vous devriez utiliser, alors c’est Latest. Si vous développez avec React, c’est ce que vous utilisez déjà.
Vous pouvez vous attendre à ce que les mises à jour sur Latest soient extrêmement stables. On y suit un protocole sémantique de gestion des versions. Vous pouvez en apprendre davantage sur nos engagements en termes de stabilité et de migration incrémentielle en consultant notre politique de gestion des versions.
Canal Next
Le canal Next est un canal de pré-version qui piste la branche master
du dépôt React. Nous utilisons les pré-versions du canal Next comme des versions candidates pour le canal Latest. Vous pouvez imaginer Next comme un sur-ensemble de Latest, mis à jour plus fréquemment.
L’ampleur des changements entre la version Next la plus récente et la dernière version Latest est à peu près du même ordre que ce que vous trouveriez entre deux versions semver mineures. En revanche, le canal Next ne respecte pas la gestion sémantique des versions. Vous êtes susceptible d’y rencontrer des ruptures de compatibilité ascendante d’une version à la suivante.
N’utilisez pas les pré-versions dans des applications pour utilisateurs finaux.
Les sorties de Next sont publiées avec l’étiquette next
sur npm. Les numéros de versions sont générés sur la base d’un hash de leur contenu, par exemple 0.0.0-1022ee0ec
.
Utiliser le canal Next pour des tests d’intégration
Le canal Next est conçu pour permettre des tests d’intégration entre React et d’autres projets qui se basent dessus.
Toutes les modifications apportées à React passent par une phase poussée de tests internes avant d’être publiées. Cependant, l’écosystème React recèle une myriade d’environnements et de configurations, et il nous est parfaitement impossible de tester chaque combinaison.
Si vous êtes l’auteur·e d’une solution tierce pour React (framework, bibliothèque, outil de développement ou d’autres projets de type infrastructurel), vous pouvez nous aider à préserver la stabilité de React pour vos utilisateurs et la communauté React toute entière en exécutant régulièrement votre suite de tests avec les dernières modifications en date. Si cela vous intéresse, suivez ces étapes :
- Mettez en place une tâche périodique au sein de votre plate-forme préférée d’intégration continue. On trouve ce type d’exécutions périodiques tant dans CircleCI que dans Travis CI.
-
Dans la tâche, mettez à jour les modules React à partir de la version la plus récente du canal Next, grâce à l’étiquette
next
sur npm. Avec la CLI de npm :npm update react@next react-dom@next
Ou avec Yarn :
yarn upgrade react@next react-dom@next
- Exécutez votre suite de tests avec les modules ainsi mis à jour.
- Si tout fonctione, super ! Vous pouvez vous attendre à ce que votre projet continue à fonctionner avec la prochaine version mineure de React.
- Si quelque chose casse de façon inattendue, merci de nous le signaler en créant un ticket.
Le projet Next.js (promis, on n’a pas fait exprès !) utilise cette approche. Vous pouvez consulter leur configuration CircleCI à titre d’exemple.
Canal Experimental
Tout comme Next, le canal Experimental est un canal de pré-versions qui piste la branche master
du dépôt React. Mais contrairement à Next, les sorties sur Experimental comportent des fonctionnalités et API qui ne sont pas encore prêtes à être diffusées plus largement.
En général, une mise à jour sur Next est accompagnée par une mise à jour correspondante sur Experimental. Elles sont basées sur la même révision de source, mais sont construites avec des jeux distincts de drapeaux de fonctionnalités.
Les versions sur Experimental peuvent différer considérablement de celles sur Next et Latest. N’utilisez pas les pré-versions Experimental dans les applications pour utilisateurs finaux. Vous pouvez vous attendre à des ruptures fréquentes de compatibilité ascendante dans les sorties du canal Experimental.
Les sorties de Experimental sont publiées avec l’étiquette experimental
sur npm. Les numéros de versions sont générés sur la base d’un hash de leur contenu, par exemple 0.0.0-experimental-1022ee0ec
.
Que trouve-t-on dans une sortie Experimental ?
Les fonctionnalités expérimentales ne sont pas encore prêtes à être livrées à un large public, et sont susceptibles de changer radicalement d’ici leur finalisation. Certaines expériences n’aboutiront peut-être même jamais—c’est justement pour tester la viabilité de changements proposés que nous avons ces expériences.
Par exemple, si le canal Experimental avait existé quand nous avons annoncé les Hooks, nous aurions sorti les Hooks sur le canal Experimental plusieurs semaines avant qu’ils deviennent disponibles dans Latest.
Vous trouverez peut-être utile de lancer des tests d‘intégration avec Experimental. Libre à vous. Ceci dit, gardez bien à l’esprit que Experimental est encore moins stable que Next. Nous ne garantissons aucune stabilité d’une version de Experimental à une autre.
Comment en apprendre davantage sur les fonctionnalités expérimentales ?
Les fonctionnalités expérimentales ne sont pas nécessairement documentées. Le plus souvent, les expériences ne sont documentées qu’une fois qu’elles sont sur le point d’être livrées dans Next ou Latest.
Si une fonctionnalité n’est pas documentée, elle peut toutefois être accompagnée d’une RFC.
Lorsque nous sommes prêts à annoncer de nouvelles expériences, nous en parlons sur le blog React, mais ça ne veut pas dire que nous annonçons chaque expérience.
Vous pouvez toujours vous référer à l’historique de notre dépôt public sur GitHub pour une liste exhaustive des modifications.