- Une collection de ressources curatoriales rassemblant des textes critiques sur React et les outils de son écosystème, organisée sous forme de citations issues de divers développeurs et blogueurs
- De nombreux articles pointent les limites structurelles de React, notamment la dégradation des performances, l’augmentation de la complexité et les problèmes d’hydratation
- Le choix technologique centré sur React se serait imposé davantage par inertie et par effet de réseau que par adéquation technique, au point que l’hypothèse selon laquelle « tout le monde connaît React » passerait avant les décisions d’architecture
- Les inquiétudes autour de la sécurité et de la gouvernance de React Server Components et de Next.js se sont accrues, et CVE-2025-55182 a été divulguée comme une vulnérabilité d’exécution de code à distance non authentifiée notée CVSS 10.0
- La confusion dans la conception des API, la crise de qualité et la complexité de l’écosystème React compliquent la maintenance à long terme et l’apprentissage, alimentant les débats sur l’orientation de React, des Hooks aux fonctionnalités UI modernes en passant par le rythme des releases
Présentation du site
- Un site de curation qui pose la question provocatrice : « Does anybody actually like React? »
- Une collection cherry-picked d’articles critiques sur React et les outils influencés par React
- Propose un abonnement RSS
Critiques fondamentales de React lui-même
-
The End
- React est presque toujours une mauvaise solution, et est devenu un marteau qui fait voir des clous partout
- Il est possible de bien utiliser React, mais cela arrive en pratique très rarement
-
JS-heavy approaches are not compatible with long-term performance goals
- Les projets centrés sur JavaScript au-delà d’une certaine taille sont plus lents qu’annoncé, et deviennent encore plus lents avec le temps
- Ils demandent davantage d’efforts en développement et en maintenance, et comportent autant de bugs que d’autres approches
-
React Still Feels Insane And No One Is Talking About It
- Il est facile de conclure que React est « simplement délirant », mais il faut essayer de le comprendre de manière rationnelle
-
Stop Using and Recommending React
- Fort d’une longue expérience avec React, l’auteur estime qu’il n’y a aucune raison de l’utiliser et beaucoup de raisons de s’y opposer
-
Please don't use React
- Selon cet argument, il faut cesser d’utiliser React, et il n’aurait jamais fallu l’adopter
-
Tech Founder? Entrepreneur? This is why you should avoid React.js in your app
- React n’est pas seulement lent, c’est aussi un écosystème obèse dont l’ADN est imprégné de dette technique
- D’où la question de savoir pourquoi il continue malgré tout à être choisi
Problèmes de sécurité et de gouvernance
-
Critical Security Vulnerability in React Server Components
- Le 29 novembre, Lachlan Davidson a signalé une vulnérabilité d’exécution de code à distance (RCE) non authentifiée
- Divulguée sous l’identifiant CVE-2025-55182, avec une note CVSS 10.0
-
You should know this before choosing Next.js
- Vercel a rendu publique une grave vulnérabilité de sécurité dans Next.js
- Le problème en lui-même est normal, mais la manière dont Vercel a réagi a été insuffisante et irresponsable
- Ce qui renforce les inquiétudes quant à la gouvernance du projet
-
Next.js 15.1+ is unusable outside of Vercel
- Next.js serait devenu une forme de vendor lock-in de Vercel déguisée en framework open source
Problèmes de conception d’API et de courbe d’apprentissage
-
Is it Time to Regulate React?
- L’échec central de React est aggravé par une conception d’API confuse
- La documentation manque de clarté, et les débats sur la bonne manière de l’utiliser n’en finissent pas
-
I don't have time to learn React
- Contrairement à l’idée selon laquelle React enseignerait l’UI moderne, il en couvre en réalité très peu
autofocusest cassé, et les custom elements ne fonctionnent pas hors versions expérimentales- Pour utiliser des fonctions modernes comme
dialogoupopover, il faut recourir àuseEffect - À cause du système de synthetic events, on apprend à peine le véritable fonctionnement du DOM
- Ce n’est pas une UI moderne, mais une UI au niveau de 2013
-
The React Blog Post: Reflections and Reactions
- Il est étrange de balayer tous les problèmes comme de simples « skill issues » et d’affirmer qu’ils se règlent avec des bibliothèques externes
- Une technologie devrait permettre de reprendre le travail même après trois ans d’absence, mais ce n’est pas le cas du front-end, et en particulier de React
-
React, where are you going?
- Deux problèmes rendent React moins agréable aujourd’hui : ownership et complexity
- Inquiétude que les nouveaux développeurs puissent être intimidés par React
Problèmes de performance et d’expérience utilisateur
-
Why use React?
- On se retrouve fondamentalement prisonnier du tristement célèbre schéma d’hydratation
- Une structure où tout le calcul est fait côté serveur en JavaScript, où le HTML est envoyé immédiatement, puis où le même JavaScript est renvoyé côté client
-
How React 19 (Almost) Made the Internet Slower
- Après une levée de boucliers publique et des débats virulents, l’équipe React a suspendu le changement
-
An even faster Microsoft Edge
- Passage de React à une architecture moderne Web Components + HTML-first
- Avec des bénéfices particulièrement importants pour les utilisateurs sur matériel peu puissant
-
Switching costs
- Souhait de voir davantage de plaintes sur l’expérience utilisateur terrible imposée par React côté client
- Mais en réalité, les critiques se concentrent presque uniquement sur l’expérience développeur
-
Pivoting From React to Native DOM APIs: A Real World Example
- Une équipe de développement est passée du « VDOM écrasant » de React aux API DOM modernes
- Avec une amélioration immédiate de la vitesse et des interactions
Problèmes mobiles et de plateforme
-
I Built the Same App 10 Times: Evaluating Frameworks for Mobile Performance
- La stratégie mobile de React pousse fondamentalement les équipes vers une dépendance à la plateforme (platform capture)
- Le web offre une alternative avec un déploiement direct, sans gatekeepers ni commissions de plateforme
Problèmes d’écosystème et de communauté
-
React Won by Default – And It's Killing Frontend Innovation
- Quand il faut un nouveau frontend, on ne part plus de « quelles sont les contraintes et quel outil convient », mais de « utilisons React, tout le monde le connaît »
- Un cycle auto-renforcé où ce sont les effets de réseau, et non l’adéquation technique, qui déterminent l’architecture
-
Conferences, Clarity, and Smokescreens
- D’après le travail de conseil et les données du secteur, la communauté React traverse une crise de qualité profonde et mesurable
- Les participants à React Summit n’en entendent pas parler
-
Why Silicon Valley CTOs Are Secretly Moving Away from React
- Les développeurs React sont nombreux, mais les véritables experts qui comprennent les patterns en profondeur deviennent de plus en plus rares et coûteux
- Les ingénieurs les plus expérimentés quittent d’autres stacks, épuisés par la complexité
-
Increasingly miffed about the state of React releases
- Un an et demi s’est écoulé depuis la dernière release de React, plus longtemps que dans n’importe quel cycle de release précédent
Critiques des React Server Components
-
React Server Components: the Good, the Bad, and the Ugly
- React avait presque complètement cessé d’améliorer le client side (depuis l’arrêt des expérimentations en 2019)
- Un framework legacy conçu pour résoudre des problèmes à l’échelle de Facebook avec des ressources à l’échelle de Facebook, inadapté à la plupart des cas d’usage
-
React Server Components are a bad choice (for shipping)
- Pour livrer vite, il ne faut pas utiliser React Server Components
- En revanche, c’est utilisable pour l’apprentissage, l’expérimentation ou la création de contenu
Retour aux fondamentaux et mise en avant des alternatives
-
HTML is better than React!?
- Les avantages de l’amélioration progressive (progressive enhancement) basée sur HTML
- offrir plus rapidement une expérience utilisable aux utilisateurs
- éviter qu’un site paraisse médiocre sur une connexion lente
- permettre aux utilisateurs de continuer à utiliser le site même en cas de problème
- Les avantages de l’amélioration progressive (progressive enhancement) basée sur HTML
-
How to build a counter component using the HTML Framework in just 1 line of code
- Recommandation satirique : « trouvez le dossier
node_moduleset faites-le glisser dans la corbeille »
- Recommandation satirique : « trouvez le dossier
-
Liskov's Gun: The parallel evolution of React and Web Components
- React est devenu un amas hypertrophié de fausses promesses, d’affirmations trompeuses et de couches infinies de compatibilité descendante
- Même les mises à jour cassent souvent le code
-
Removing React is just weakness leaving your codebase
- Quitter des frameworks lourds comme React pour se concentrer sur les fondamentaux du web permet de pérenniser sa carrière et sa base de code
-
Concatenating text
- Pourquoi tout le monde pense-t-il d’abord à React dès qu’il faut mettre à jour l’affichage ?
- Remise en question de la tendance à fusionner les préoccupations frontend et backend
Cas de migration et de transition
-
We Rewrote our React App in Svelte in Three Weeks
- Il avait jusque-là ignoré les gros titres présentant Svelte comme le framework « le plus aimé », mais rejoint désormais le camp Svelte
-
Moving on from React
- Après un faux départ avec React en 2023, migration vers une stack mieux adaptée au domaine métier du client
-
Moving on from React, a Year Later
- Le frontend lourd en JS de l’ère du « fat client » est en train de disparaître
- Le battage médiatique autour des edge applications est inutile pour construire de nombreux types d’entreprises
-
Replacing React: How Liveview solved our performance problems
- Exploration de LiveView à cause des problèmes de performance d’une SPA React
- Conviction acquise après deux jours d’exploration, puis remplacement de la SPA React par LiveView en quelques semaines
Tendance générale et perspectives
-
The Neverending Story
- Une trajectoire qui va de Applets, ActiveX, Flash, Flex et Silverlight à Angular puis React
- L’échec répété d’entreprises incapables de voir le tableau d’ensemble
-
If Not React, Then What?
- Le Frameworkism prêche l’adoption de davantage d’outils de framework, ou d’outils différents, comme solution pour améliorer l’expérience utilisateur
- Il pousse à s’investir dans des activités qui ressemblent à de l’ingénierie sans en être réellement
-
Reckoning: Part 4 — The Way Out
- Ne pas se rallier aux plans de construction d’un YAJSD (Yet Another JavaScript Disaster)
- Quand une proposition de réécriture en React arrive sur la table, les ingénieurs seniors ne doivent pas rester silencieux
-
After a Decade of React, Is Frontend a Post-React World Now?
- Un nouveau développeur web peut sérieusement envisager d’éviter complètement React
- Les opportunités d’emploi à court terme peuvent diminuer, mais il existe une possibilité de correspondre à des employeurs pionniers
-
React, Electron, and LLMs have a common purpose: the labour arbitrage theory of dev tool popularity
- Dans la plupart des organisations qui développent des logiciels pour le web, React est objectivement inférieur à de nombreuses alternatives
-
It feels like React is getting a bit of a kicking recently
- Évolution de l’attitude de la communauté envers React et recommandations pour la prise de décision dans les projets
-
Kind of annoyed at React
- On choisit encore React pour construire des choses complexes, mais avec le regret de ne pas être plus heureux de ce choix
-
Am I the only one that thinks that the direction of React is wrong?
- L’impression que React joue à son propre jeu avec ses propres règles
-
Client-side JavaScript and React criticism: What comes next?
- Discussion sur de meilleures pratiques d’usage de JavaScript, l’enseignement de l’amélioration progressive et des pistes de réconciliation au sein de la communauté
-
A Historical Reference of React Criticism
- Récapitulatif historique des critiques adressées aux projets React au fil des années
- Certaines ont été résolues, d’autres restent encore sans réponse
Hooks et paradigmes alternatifs
-
Why Signals Are Better Than React Hooks
- Les Hooks de React sont difficiles à bien utiliser, et encore plus à utiliser de façon performante
- Ils sont à l’origine d’une baisse de la qualité du code et des performances dans de nombreuses applications
Critiques métaphoriques
-
What Is React.js?
- Une vidéo qui compare au christianisme l’étrangeté de ses partisans, leur excès de sérieux et une documentation sans fin
2 commentaires
React, c’est juste une religion (une secte).
Avis sur Hacker News
Il y a des choses que je n’aime pas dans React. React est un framework pour afficher du HTML interactif à l’écran, pas pour faire de la programmation extraordinairement complexe
Premièrement, il repose trop sur des concepts et une terminologie compliqués. Comparé à Vue,
useEffectcorrespond àwatchetuseMemoàcomputedDeuxièmement, cette manière inutilement « intelligente » a déteint au-delà de la terminologie, jusque dans l’écosystème. L’ancien Redux demandait d’écrire beaucoup de code dans plusieurs fichiers juste pour incrémenter un nombre de 1, et on avait l’impression que c’était parce que son auteur aimait les concepts malins d’informatique théorique. À la même époque, avec VueX, il suffisait simplement d’incrémenter ce nombre. Heureusement, l’écosystème React a aujourd’hui davantage d’outils de gestion d’état raisonnables
Troisièmement, React ne fournit pas d’outils de travail CSS par défaut
Quatrièmement, React ne s’occupe pas lui-même de l’optimisation. Il faut savoir quand et comment utiliser ou ne pas utiliser
useEffectetuseMemo, et il existe tout un folklore autour de l’optimisation React. C’est problématique alors même que le rerender est au cœur du modèle. Avec Vue, le framework pousse à utiliser ses propres outils et gère la plupart des optimisations en interne, si bien que je n’ai jamais eu à me dire qu’il fallait optimiser manuellement une app VueCinquièmement, ce folklore est lui-même un problème. L’API de React et la « bonne manière d’écrire du React » ont trop souvent changé en profondeur, au point qu’il est encore très difficile de distinguer ce qui est toujours vrai de ce qui ne l’est plus
En résumé, React se concentre trop sur les idées, l’informatique théorique et les abstractions de haut niveau, et pas assez sur le fait de rendre simple l’affichage de HTML interactif à l’écran
J’utilise beaucoup React, Vue et Svelte, mais avec React je dois constamment me préoccuper de choses que Vue ou Svelte auraient déjà prises en charge. Côté performances, les trois se valent à peu près
J’avais aussi écrit un billet à ce sujet auparavant : https://www.brachkow.com/notes/what-i-like-in-vue/
En tant que personne qui a traversé tous les grands courants de JavaScript depuis environ 16 ans, j’aime React dans un certain sens
React est le pire framework JavaScript, si l’on exclut tous les autres que nous avons essayés
Je choisirais React n’importe quand plutôt qu’Angular 1. Je préférerais le MVC lourd d’Angular 1 à l’approche Backbone où il faut tout réassembler soi-même à chaque fois, et la structure MVC minimale de Backbone valait mieux que l’ancien chaos façon soupe de JQuery. À l’époque, j’aurais immédiatement choisi la manipulation du DOM et les ajouts de bibliothèque standard de JQuery plutôt que les API natives
React a aussi ses compromis, mais on en est arrivé là après avoir longtemps subi d’innombrables alternatives qui ne fonctionnaient pas
Bien sûr qu’il y a des gens qui aiment React. Ce n’est pas comme JavaScript qu’on est pratiquement obligé d’utiliser, et personne n’est non plus forcé d’utiliser React ou un autre framework web, pourtant React a gagné. On peut au moins y voir la preuve que beaucoup l’aiment suffisamment plus que la plupart des autres frameworks
Jusqu’à la fin des années 2010, la plainte récurrente dans le développement web était que tout changeait trop vite et qu’il fallait sans cesse apprendre quelque chose de nouveau, et cette plainte était légitime. Mais maintenant qu’une monoculture React s’est installée au sommet, tout le monde se plaint aussi de ça. On ne peut vraiment jamais gagner
Si React a gagné, c’est parce qu’il est devenu le choix par défaut et que les gens aiment ce qui leur est familier
Si on veut utiliser autre chose, il faut implémenter l’intégration soi-même, trouver un projet open source qui l’a déjà fait, ou demander à une IA
C’est faisable pour un projet perso, mais difficile à imaginer dans un cadre professionnel
J’aime React. J’ai aussi essayé sérieusement le camp HTMX/Hotwire.
Je voulais créer un bouton de retour qui, si l’utilisateur venait de la boîte de réception, utilise l’API du navigateur pour revenir en arrière, et sinon le renvoie vers le lien de la boîte de réception afin de préserver le défilement. Il fallait relier le comportement dans le HTML pour appeler une fonction de retour, puis, dans le contrôleur, déterminer la page précédente avant de renvoyer soit un bouton de retour JavaScript activé, soit un lien en dur. La logique était éparpillée dans 3 fichiers.
Avec React, le JavaScript dans le composant peut déterminer si la page précédente est la boîte de réception et, selon cette valeur, afficher soit le JSX du bouton de retour, soit un lien. Tout se règle dans un seul fichier. Pour moi, il suffit de modéliser une seule entité conceptuelle, alors qu’avec les autres approches il faut forcer la fonctionnalité à entrer dans 3 entités distinctes.
Est-ce que c’est plus lent ? Clairement oui. Mais ça me rend heureux. Si vous souffrez dans la base de code React désordonnée de votre entreprise, il faut blâmer vos collègues. Sans React, ce serait sûrement encore pire.
À part parfois pour améliorer les formulaires, je préférerai toujours htmx / le rendu côté serveur et le comportement natif.
Dans l’approche htmx recommandée, il suffit de relier un bouton
onclickà du JavaScript inline ou, si ça ne plaît pas, d’appeler une fonction commegoBackOrInbox.function goBackOrInbox() { if (document.referrer) { const path = new URL(document.referrer).pathname; if (path.startsWith('/inbox')) { history.back(); return; } } window.location.href = '/inbox'; }Si vous utilisez souvent ce motif, il suffit de le paramétrer en passant en argument le chemin vers lequel naviguer.
J’ai utilisé du code React pendant longtemps, et maintenant je travaille dans mon entreprise sur un gros projet Vue. Avant, tout le monde disait que Vue était le choix le plus simple et le plus accessible des deux, mais je commence à voir les choses autrement.
React a cette élégance où les composants ne sont fondamentalement que des fonctions, avec peu de choses autour. Si on met de côté l’écosystème Next.js, c’est ce que j’ai vu de plus élégant dans le développement frontend.
Vue, en revanche, donne une impression de mélange. On y voit les traces de développeurs backend qui ne voulaient pas vraiment apprendre JavaScript, qui l’ont adopté et encensé, et le résultat ressemble à un mélange maladroit qui ne s’emboîte pas proprement.
J’ai utilisé tous les principaux frameworks, et aujourd’hui je construis une grande application web Angular. Dans Angular, les composants sont exprimés sous forme de classes avec template et styles. Les écouteurs d’événements appellent généralement des méthodes de la classe, et l’état peut être aussi simple que des propriétés de classe. C’est bien plus naturel et il y a beaucoup moins de pièges. Bien sûr, pas zéro.
Le ressenti à l’usage est un peu différent. Il y a des choses plus simples avec React et d’autres plus simples avec Vue, mais le fait que Vue utilise des signaux est pour moi un gros avantage.
Plus que par React lui-même, je m’intéresse surtout à la question de la meilleure façon d’écrire des interfaces en code
Je suis fan de React et je l’utilise dans presque toutes les applications web que je crée, mais le problème le plus grand et le plus évident, c’est qu’écrire une UI avec React ne semble pas aussi naturel que d’écrire un outil en ligne de commande en Go ou une application temps réel en Elixir
Certains langages sont étonnamment naturels et sans friction pour des tâches précises. Mais pour l’UI, personne n’a encore vraiment résolu le problème. Swift, JSX/HTML, Svelte, ou n’importe quel framework populaire du genre donnent tous l’impression de contourner partiellement le problème. On dirait qu’à un moment donné, les concepteurs du langage ou du framework ont dû introduire un compromis syntaxique un peu sale, bizarre ou pénible pour satisfaire les exigences
L’interface naturelle de l’UI étant visuelle, des outils comme Figma peuvent constituer une partie importante de la solution. Malgré tout, il manque encore quelque chose. Il devrait exister une façon plus intuitive d’exprimer du visuel en code. Les solutions actuelles sont difficiles à critiquer précisément, mais elles semblent toujours un peu insuffisantes quelque part
Même aujourd’hui, je préfère React à presque tout, y compris Svelte, Vue et Solid. Mais récemment, j’ai commencé à utiliser Crank(https://crank.js.org/), et ça me semble un pas de plus dans la direction que j’aimerais voir. Cela dit, jusqu’ici je ne l’ai utilisé que sur des projets jouets, donc il est difficile de dire à quel point ça passe à l’échelle, à la fois côté performances et expérience développeur
La meilleure analyse que j’aie vue jusqu’ici se trouve dans l’article de Chatty, « Programs = Data + Algorithms + Architecture: consequences for interactive software engineering »[2]. C’est un peu difficile à lire, mais ça en vaut largement la peine
En résumé, le problème, c’est l’architecture, et plus précisément le décalage entre langage et architecture. Le style architectural d’appel/retour induit par les langages de programmation « généralistes » ne correspond pas à l’architecture dont les interfaces utilisateur ont besoin, et entre même en conflit avec elle
J’ai aussi écrit sur ce sujet dans « Can Programmers Escape the Gentle Tyranny of call/return? »
L’approche actuelle consiste d’abord à créer Objective-Smalltalk[4], un langage de programmation qui permet d’exprimer facilement des styles architecturaux alternatifs
Avec ça, je construis actuellement un framework UI appelé interscript, qui inclut aussi HTMXNative et plusieurs composants annexes
Cela semble plutôt bien fonctionner
[1] Par exemple : Myers et al., « Languages for developing user interfaces » https://api.taylorfrancis.com/content/books/mono/download?id...
[2] https://opendl.ifip-tc6.org/db/conf/ehci/ehci2007/Chatty07.p...
[3] https://2020.programming-conference.org/details/salon-2020-p...
[4] https://objective.st
Mais avec le temps, on finit par accepter des réponses moins idéalistes. Peut-être qu’une telle solution n’existe pas. L’espace du problème est peut-être trop complexe pour qu’il existe une solution générale humainement praticable couvrant toutes les formes possibles. S’il y a bien un domaine où cela pourrait être vrai, c’est sans doute l’UI
Oui. React est de loin l’interface la plus intuitive, réussissant à combiner les styles déclaratif et impératif. À mon avis, il n’existe rien d’approchant JSX parmi les frameworks UI, tous langages confondus
J’aime vraiment beaucoup Svelte, et j’utilise SvelteKit pour les applications plus complexes
Dans beaucoup de cas où j’aurais utilisé React auparavant, j’ai trouvé que c’était une bien meilleure évolution
Svelte me semble aussi bien plus facile à apprendre pour quelqu’un qui connaît les bases du développement web, de HTML, CSS et JavaScript. Pourtant, on voit souvent aujourd’hui des gens commencer le développement web directement avec React, et j’ai l’impression que l’ordre est un peu inversé
Personnellement, je crée des applications mobiles avec SvelteKit + Capacitor, et j’ai décrit la configuration ici : https://bryanhogan.com/blog/web-to-app-sveltekit-capacitor
Pour les simples landing pages, je préfère Astro
Je suis d’accord avec l’idée que commencer le développement web avec React donne l’impression de prendre les choses à l’envers aujourd’hui. Svelte évite bien ce problème en traitant HTML comme sa langue maternelle. En commençant le développement web avec Svelte(Kit), on a de fortes chances d’apprendre davantage les fondamentaux qu’en commençant avec React
Je suis biaisé parce que j’ai fait partie des personnes qui ont contribué à rendre React possible, mais j’aime vraiment React. Avant, j’essayais toutes sortes de choses pour corriger les problèmes que je rencontrais côté frontend. Mais après l’arrivée de React, ce besoin a disparu, et j’ai enfin pu me concentrer simplement sur le fait de construire
L’une des présentations que j’ai le plus appréciées est https://www.youtube.com/watch?v=h9SDuTSy7ps. D’après mon expérience, l’architecture de React est vraiment bonne et convient assez bien à la création de grandes applications
Malheureusement, le plus gros problème de React est qu’il vous force à entrer dans l’écosystème JS/TS. Pour moi, JavaScript/TypeScript est sans aucun doute plus proche d’une cible de compilation que d’un système que j’ai envie de manipuler directement
Je suis satisfait d’Elm. La communauté est vraiment petite et il faut parfois créer soi-même ses bibliothèques. Le TEA paraît parfois peu naturel quand on vient de React, mais j’aime toujours travailler avec Elm parce que je n’ai pas à me soucier d’états implicites et imprévisibles comme
useEffectEn plus, Claude semble mieux tenir le coup avec Elm qu’avec React, au moins dans les grosses codebases effrayantes
L’état semble être un grand tabou, donc ça donne aussi une impression de contradiction. Je me demande si cela signifie qu’au final, toute app Elm devient une app React + Redux globale sans effets. J’aimerais en savoir plus sur ce qui rend Elm agréable et sur la manière dont on y travaille. Des liens me conviennent aussi