Dans un paysage JavaScript marqué par une complexité croissante et une fatigue face à la magie des frameworks, une nouvelle solution émerge : Wraplet. Présenté par son créateur Łukasz Zaroda dans un billet de blog daté de mai 2026, ce petit framework TypeScript propose une approche radicalement différente. Il se concentre exclusivement sur l'emballage de nœuds DOM réels avec des classes réelles, leur attribue un cycle de vie prévisible et permet de les connecter via des dépendances déclaratives typées. L'objectif est de réduire la quantité de connaissances spécifiques au framework nécessaires pour lire et maintenir le code.

Un rejet de la magie des frameworks

Zaroda explique que les frameworks dominants – React, Vue, Angular, Svelte – exigent tous une certaine dose de magie en échange de productivité : DOM virtuel, système de réactivité, compilateur modifiant le code, et une collection toujours croissante de routeurs, composants serveur, limites d'hydratation et directives « use client ». Lorsque tout fonctionne, l'expérience paraît élégante. Mais en cas de problème, le développeur se retrouve souvent à déboguer le framework plutôt que son propre code, l'écart entre ce qui a été écrit et ce qui s'exécute dans le navigateur ne cessant de se creuser. Wraplet se veut une réponse à cette fatigue, en supprimant toute abstraction superflue : pas de DOM virtuel, pas de transformation à la compilation, pas de graphe de réactivité caché.

Un modèle mental minimal

Avec Wraplet, un composant est une classe. Celle-ci possède un cycle de vie avec un constructeur, un crochet onInitialize, un crochet onDestroy et un nœud (node) qu'elle possède. Le développeur peut lire le code de manière linéaire, sans avoir besoin d'intérioriser un modèle d'exécution complexe. L'exemple donné est celui d'un compteur de clics qui enveloppe un fragment HTML existant : le HTML reste celui que l'on aurait écrit de toute façon, la classe s'y attache, écoute les clics et met à jour le DOM. Pas de langage de template, pas de cycle de re-rendu, pas de réconciliation.

Un framework pensé pour les humains… et les LLM

Wraplet se distingue également par sa compatibilité avec les modèles de langage de grande taille (LLM), de plus en plus utilisés dans le développement. Dans un framework abstrait, un composant React dépend de hooks, fournisseurs de contexte, limites Suspense et règles de rendu invisibles dans le code source. Un composant Vue ou Svelte réactif dépend d'une logique de mise à jour générée par le compilateur. Avec Wraplet, un wraplet est une classe unique avec des dépendances explicitement déclarées dans un objet littéral standard, utilisant les API DOM standard. Cela facilite la tâche des LLM, qui peuvent raisonner sur le code à partir du code lui-même, sans avoir à connaître les rouages internes du framework. La même propriété aide à l'intégration des nouveaux développeurs.

Typage fort grâce à TypeScript

Là où de nombreux frameworks se contentent de supporter TypeScript, Wraplet a été conçu autour de lui. L'exemple phare est la carte de dépendances : au lieu d'utiliser querySelector et de caster les éléments, le développeur décrit les dépendances une fois de manière déclarative et obtient un objet this.d entièrement typé. Renommer un élément est sûr : changer submit en submitButton dans la carte rend chaque utilisation de this.d.submit immédiatement invalide à la compilation.

Une alternative aux approches « quick and dirty »

Le créateur de Wraplet rappelle que beaucoup de développeurs finissent par se tourner vers jQuery ou le JavaScript vanilla pour des solutions rapides, mais que ces approches souffrent d'une structure de dépendances incohérente, rendant le code difficile à maintenir. Wraplet promet de transformer ces solutions « rapides et sales » en code maintenable, sans nécessiter un apprentissage profond du framework. Il ne remplace pas nécessairement les SPA complètes, mais permet d'aller étonnamment loin seul.

Wraplet est disponible en open source sur GitHub. Sa documentation inclut des guides de démarrage et une explication détaillée de son cycle de vie.