Lovable, la plateforme suédoise qui génère des applications web avec l’intelligence artificielle, a quitté Next.js et Vercel pour son propre site et est passée à TanStack Start sur Cloudflare Workers, le même système avec lequel elle sert les applications créées par ses utilisateurs. Son cofondateur et directeur technique, Fabian Hedin, a expliqué le changement lors de Cloudflare Connect, la conférence que Cloudflare a tenue du 19 au 21 octobre à San Francisco, et l’entreprise l’a détaillé sur son blog technique. Selon la publication par laquelle Cloudflare a relayé l’intervention, 70 millions d’applications générées par IA ont déjà été créées sur la plateforme.
L’essentiel sur la migration de Lovable vers Cloudflare Workers en 30 secondes
- Lovable a migré son site de Next.js sur Vercel vers TanStack Start sur Cloudflare Workers, le même environnement que les apps de ses clients.
- Chaque application publiée est un worker démarré à la demande dans un isolat V8 propre.
- La migration a duré environ six mois et a réduit de 49 % le temps médian de première réponse.
- Un incident de mémoire a fait grimper les erreurs à 50 % pendant 11 minutes.
Le changement comporte deux volets. Depuis le 13 mai, tous les nouveaux projets Lovable sont générés avec TanStack Start, un framework React avec rendu côté serveur, et publiés comme workers à la périphérie du réseau de Cloudflare, alors qu’il s’agissait auparavant d’applications statiques avec rendu uniquement dans le navigateur, servies depuis Cloudflare Pages. Et en août, l’entreprise a achevé la migration de lovable.dev, sa propre application, qui a cessé d’être un cas à part pour fonctionner comme une app de plus de la plateforme.
Des millions d’apps à la demande sur des isolats V8
Le défi technique de Lovable est de servir un très grand nombre d’applications ayant chacune peu de trafic, sans toutes les laisser allumées. Selon son blog technique, chaque application publiée est empaquetée comme un worker pour workerd, le moteur d’exécution de Cloudflare. Un worker d’entrée reçoit la requête, charge le code de l’application correspondante et la dirige vers un worker créé dynamiquement, qui s’exécute dans son propre isolat V8, le même type d’environnement isolé que celui du moteur JavaScript de Chrome. C’est un modèle différent de celui des conteneurs ou des machines virtuelles : démarrer un isolat coûte entre environ 4 millisecondes et environ une seconde, selon la taille du paquet de code.
Cette marge explique pourquoi la taille des applications compte autant. Lovable indique que les workers ont une limite de 128 Mo de mémoire et qu’une bonne partie du travail de migration a consisté à alléger le code serveur : elle a retiré du paquet serveur des outils qui ne servent que dans le navigateur, comme le compilateur TypeScript, Prettier ou le surligneur de syntaxe, économisant environ 9 Mo de code et environ 18 Mo de mémoire par worker. Pour les apps de ses utilisateurs, le passage au rendu côté serveur a aussi un effet sur les moteurs de recherche. Lovable assure que les applications avec prérendu ont gagné 2,9 % de trafic organique et presque doublé, avec 98,5 % de plus, le trafic provenant d’outils d’IA comme ChatGPT ou Perplexity.
Pourquoi TanStack Start et pas Next.js
Hedin a expliqué sur le blog de Lovable en juin qu’ils avaient choisi TanStack Start parce qu’il maintient la plateforme dans l’écosystème React, qu’il est ouvert et portable, qu’il permet le rendu côté serveur pour que les moteurs de recherche indexent les pages, et qu’il offre un typage fort qui aide l’IA à générer du code correct. Chaque route peut être rendue côté serveur, générée comme statique ou exécutée dans le navigateur, et les fonctions serveur de TanStack remplacent les fonctions edge utilisées auparavant. Supabase continue de gérer la base de données, l’authentification et le stockage.
Alexander Lebedev, l’ingénieur qui a mené la migration de lovable.dev, ajoute dans son article d’août des raisons moins techniques. Il juge que Next.js a des abstractions confuses, comme les composants et les actions serveur, et que les agents d’IA donnaient des conseils obsolètes parce que les versions du framework changent beaucoup d’une à l’autre. L’ancien site sur Vercel souffrait en outre d’écarts entre les compilations locales et celles de production et de chargements lents dans certaines régions. Avec le nouvel environnement, le démarrage en développement est passé d’environ 70 secondes et 8 Go de RAM à environ 10 secondes et 1,5 Go sur sa machine, et la compilation en intégration continue est descendue de plus de 12 minutes à 6-9 minutes. Ce n’est pas un changement isolé : Cloudflare a racheté en juin VoidZero, l’entreprise derrière Vite, l’outil que TanStack Start utilise comme serveur de développement. Cloudflare pousse d’ailleurs son modèle sans serveur vers d’autres terrains, comme Cloudflare Basin, qui emmène le modèle sans serveur vers le stockage et l’analyse de données.
Dogfooding : Lovable comme une app de plus de Lovable
La raison principale de la migration était d’utiliser son propre produit comme n’importe quel client, ce que l’on appelle dans le secteur le dogfooding. lovable.dev reçoit plus de 42 millions de visiteurs uniques par mois, compte environ 400 routes et plus de 900 000 lignes de code, et est aujourd’hui servi comme les autres applications de la plateforme, avec moins de 200 lignes spécifiques. Le processus a duré environ six mois, dont environ deux de déploiement pour les utilisateurs externes. Pendant ce temps, un worker faisait office de proxy et décidait, par route et par utilisateur, si la requête allait vers l’ancienne version sur Vercel ou vers la nouvelle, et chaque groupe de routes est passé par des tests internes, puis 1 % puis 100 % des utilisateurs. Les agents d’IA ont préparé une bonne partie des changements, ensuite revus automatiquement.
Ce ne fut pas un processus propre, et l’entreprise le raconte elle-même. En élargissant le déploiement du tableau de bord de 5 % à 20 % des utilisateurs un vendredi, le taux d’erreurs est passé de 0,1 % à près de 50 % en quelques minutes. L’incident a duré 11 minutes et a été résolu par un retour en arrière. La cause était une modification externe d’un fichier JSON statique qui a poussé les workers au-delà de leur limite de mémoire. Elle reconnaît aussi que TanStack Start a exigé beaucoup de configuration du bundler pour une application de cette taille et que le 90e percentile du temps de réponse a été jusqu’à deux fois plus lent au début, bien qu’il soit maintenant meilleur de 16 % qu’avec Next.js. Le temps médian jusqu’au premier octet est inférieur de 49 %. Ces chiffres viennent de Lovable elle-même, qui a indiqué qu’elle pourrait permettre plus tard d’importer et de modifier des applications faites avec Next.js. C’est une leçon utile pour toute plateforme, car les erreurs d’une app générée par IA, comme le rappellent les risques de sécurité du vibe coding, dépendent aussi de l’endroit et de la manière dont elle s’exécute.
Questions fréquentes
Pourquoi Lovable a-t-elle quitté Next.js ?
Pour servir son propre site comme les apps de ses utilisateurs, sur Cloudflare Workers avec TanStack Start, et à cause de problèmes avec Next.js comme ses abstractions complexes, ses compilations lentes et les conseils obsolètes donnés par les agents d’IA.
Qu’est-ce que TanStack Start ?
Un framework React avec rendu côté serveur, fonctions serveur et typage fort, qui utilise Vite et peut se déployer sur Cloudflare Workers.
Comment Lovable sert-elle des millions d’apps sans les garder allumées ?
Chaque app est un worker chargé à la demande dans un isolat V8, dont le démarrage coûte entre environ 4 millisecondes et une seconde selon la taille du code.
Les apps des utilisateurs se sont-elles améliorées ?
Selon Lovable, les nouvelles apps sont rendues côté serveur, et celles qui utilisent le prérendu ont gagné 2,9 % de trafic organique et 98,5 % de trafic en plus depuis les outils d’IA.
Sources :