L'extraction de bibliothèque qui a tout changé
Comment le fait de transformer notre interface de chat et notre système de fichiers en packages réutilisables a transformé un produit unique en une plateforme.
Le moment où un produit devient une plateforme
Il y a un moment précis dans la vie de chaque produit où il cesse d’être une application unique et commence à être une plateforme. Pour nous, ce moment était le 26 novembre 2025 — cinq jours après le premier commit.
C’est à ce moment-là que nous avons extrait notre interface de chat, notre système de fichiers virtuel et nos utilitaires de base en trois packages séparés et réutilisables : @fulldiveVR/chat-ui, @fulldiveVR/vfs-ui, et @fulldiveVR/core-ui-utils.
On pourrait penser que c’était une décision d’ingénierie. En réalité, c’était une décision commerciale.
Pourquoi nous l’avons fait au cinquième jour, pas au cinquantième
La sagesse conventionnelle dit : n’extrais pas de bibliothèques trop tôt. Attends d’avoir un deuxième cas d’utilisation. Attends que l’API se stabilise. Attends de “savoir ce que tu construis.”
Nous avons ignoré tout cela.
Voici pourquoi : nous savions que nous aurions plusieurs produits utilisant la même interface de chat. Nous savions que l’UI de gestion des fichiers serait nécessaire dans différents contextes. Et nous savions que plus nous attendions, plus ces composants seraient étroitement liés aux besoins spécifiques du tableau de bord.
Au cinquième jour, le package chat-ui faisait environ 2 000 lignes de code. Propre. Bien défini. Facile à extraire.
Si nous avions attendu le cinquantième jour, cela aurait été 10 000 lignes avec des dizaines de dépendances implicites sur l’état, le routage et la configuration spécifiques au tableau de bord. L’extraction à ce moment-là aurait été un projet de plusieurs semaines au lieu de deux jours.
Ce que nous avons extrait
chat-ui — L’ensemble du système de rendu de chat. Bulles de message, réponses en streaming, pièces jointes de fichiers, changement d’agent, affichage des appels d’outils. Tout ce qu’un utilisateur voit lorsqu’il parle à un agent IA.
vfs-ui — L’interface du système de fichiers virtuel. Arbres de fichiers, création de dossiers, aperçus de fichiers, glisser-déposer, boîtes de dialogue de téléchargement. Tout ce qu’un utilisateur voit lorsqu’il gère ses fichiers.
core-ui-utils — Utilitaires partagés. Tokens de thème, hooks communs, primitives de mise en page. Les éléments dont ont besoin à la fois chat-ui et vfs-ui, mais que personne ne devrait posséder.
Chacun est devenu un package npm versionné, publié sur GitHub Packages, consommé par le tableau de bord comme n’importe quelle autre dépendance.
Les retours composés
En février 2026, notre package chat-ui était à la version 2.0.12. Cela représente des dizaines de versions — chacune améliorant l’expérience de chat dans chaque produit qui l’utilise.
Lorsque nous avons ajouté des messages de tâches en arrière-plan à chat-ui, chaque produit a reçu des messages de tâches en arrière-plan. Lorsque nous avons ajouté des messages utilisateurs réductibles, chaque produit a reçu des messages utilisateurs réductibles. Lorsque nous avons corrigé un bug de rendu, chaque produit a bénéficié de la correction.
C’est le retour composé de l’extraction précoce : les améliorations se multiplient.
Mais cela va au-delà de la réutilisation du code. L’extraction de ces bibliothèques nous a forcés à réfléchir à nos interfaces. Que doit savoir un composant de chat ? Que doit attendre un gestionnaire de fichiers de son application hôte ? Ces questions, posées tôt, ont produit des réponses plus claires qu’elles ne l’auraient été des mois plus tard lorsque tout était entremêlé.
Le bénéfice inattendu : la vitesse
Voici ce qui nous a le plus surpris. Après le coût initial d’extraction (environ deux jours de refactoring), notre vitesse de développement a augmenté.
Pourquoi ? Parce que les frontières étaient claires. Travailler sur l’expérience de chat signifiait travailler dans chat-ui. Travailler sur la gestion des fichiers signifiait travailler dans vfs-ui. Il n’y avait pas de “J’ai changé le chat et ça a cassé le gestionnaire de fichiers” parce qu’ils étaient littéralement des packages séparés avec des interfaces définies.
De nouveaux membres de l’équipe pouvaient travailler sur chat-ui sans comprendre l’ensemble du code du tableau de bord. Les rapports de bugs pouvaient être immédiatement triés vers le bon package. Les tests étaient plus rapides car chaque package avait sa propre suite de tests.
La leçon pour d’autres bâtisseurs
Si tu peux dessiner un cadre autour d’un composant — s’il a des entrées claires, des sorties claires et un but clair — extrait-le tôt. N’attends pas le “bon moment” mythique. Le bon moment, c’est quand l’extraction est petite et peu coûteuse. Cette fenêtre se ferme plus vite que tu ne le penses.
Nous avons extrait trois bibliothèques au cours de la première semaine. Quatre-vingts jours plus tard, elles avaient été mises à jour plus d’une centaine de fois. Chaque mise à jour a amélioré chaque produit. C’est ce genre de levier qui transforme une petite équipe en une équipe productive.
Comment nous avons extrait trois bibliothèques en une semaine
- 1
Identifiez les limites
Le rendu de chat, la gestion des fichiers et les utilitaires de base avaient des interfaces claires. Tout ce qui se trouvait derrière ces interfaces pouvait être déplacé vers des packages.
- 2
Extraire et publier
Nous avons déplacé chat-ui, vfs-ui et core-ui-utils vers des packages séparés sur GitHub Packages. Même code, correctement scopé.
- 3
Consommez nos propres packages
Le tableau de bord est passé du code local aux packages publiés. Si ça a cassé pour nous, ça casserait pour tout le monde.
- 4
Itérer à la vitesse d'un paquet
Désormais, les améliorations apportées à chat-ui profitent à tous les produits qui l'utilisent. Une seule correction, partout.
Questions sur l'extraction de bibliothèque
N'est-ce pas un peu trop tôt pour extraire des bibliothèques dès la première semaine ?
Ça dépend. Si les limites sont claires — et avec l'interface de chat et la gestion des fichiers, elles l'étaient — une extraction précoce évite l'enchevêtrement. C'est beaucoup plus difficile d'extraire une bibliothèque d'un code qui a évolué ensemble pendant six mois.
Comment gérez-vous le versionnage entre les packages ?
Versionnage sémantique. Les changements majeurs entraînent une augmentation majeure. On met à jour le tableau de bord fréquemment — parfois plusieurs fois par jour — donc on attrape les régressions rapidement.
Cela a-t-il ralenti le développement ?
Pendant environ deux jours, oui. Après cela, le développement s'est accéléré de manière significative. Les modifications apportées à la bibliothèque UI ont automatiquement amélioré chaque produit l'utilisant.