Limitations de Lovable : Pourquoi les projets se cassent après 15 composants
Ce qu'est vraiment Lovable (et ce qu'il n'est pas)
Lovable, anciennement connu sous le nom de GPT Engineer, est un constructeur d'applications alimenté par l'IA qui crée des applications React + TypeScript à partir de simples invites textuelles. Il dispose de Supabase pour le backend, Tailwind CSS pour le style, et des composants shadcn/ui. En clair, c'est essentiellement un outil qui s'appuie sur des modèles de langage volumineux pour écrire du code pour vous, vous aide à le déployer, et vous permet d'apporter des modifications en « communiquant » avec lui.
Alors, quels sont les points positifs ? Voici une liste rapide :
- Prototypage rapide : Vous pouvez obtenir une interface utilisateur fonctionnelle en quelques minutes. Si vous avez besoin de pages d'accueil, d'applications CRUD simples ou de tableaux de bord basiques, Lovable les réunit en un instant.
- Accessibilité non-développeur : C'est plutôt sympa pour les responsables de produits et les designers qui veulent assembler des prototypes fonctionnels sans écrire du code eux-mêmes.
- Intégration fluide de Supabase : Particulièrement pour les cas d'usage simples, la configuration de l'authentification et des connexions de base de données est assez directe.
Mais attendez une seconde. Lovable ne construit pas vraiment un logiciel comme le ferait un développeur humain. Non. Il s'agit de générer du code à partir de vos invites. Il n'a pas de mémoire durable de l'ensemble de votre codebase, surtout lorsque votre projet dépasse sa fenêtre de contexte. Ce petit détail devient un gros problème lorsque votre application grandit.

Le mur des 15 composants : Pourquoi les projets cassent
J'aime appeler ce phénomène le mur des 15 composants. Le nombre exact n'est pas strict ; pour certains, cela se produit à 12 composants, pour d'autres peut-être 20. Mais il existe un schéma cohérent où tout commence simplement à s'effondrer.
Alors, pourquoi 15 ? Cela se résume à des mathématiques de jetons. Chaque composant React, surtout un bien garni avec Tailwind, des props, la gestion d'état, et un soupçon de logique métier, représente entre 80 et 200 lignes de code. Une fois que vous avez 15 composants, vous regardez environ 1 500 à 3 000 lignes de code générées. Ajoutez l'ensemble de votre historique d'invites et les invites système internes sur lesquelles Lovable s'appuie, et vous vous rapprochez de la fenêtre de contexte effective du modèle de langage.
Voici le résultat :
Symptôme 1 : Régression de style
Vous avez soigneusement affiné votre barre de navigation sur quelques invites. Ensuite, Lovable génère un nouveau composant de page, et devinez quoi ? Le rembourrage de la barre de navigation se décale, un état de survol disparaît, ou le comportement réactif mobile devient fou. Vous n'avez rien demandé de ce chaos.
Symptôme 2 : Conflits de logique
Votre garde d'authentification fonctionnait à merveille. Ajoutez une nouvelle fonctionnalité, et BAM, soudainement les utilisateurs non authentifiés se faufilent. L'IA n'a pas délibérément sabotée ; elle a simplement perdu la trace de la logique en générant un nouveau code.
Symptôme 3 : Code en double et contradictoire
De nulle part, Lovable crée des fonctions utilitaires que votre codebase a déjà. Ou pire, elle fabrique une nouvelle version avec des différences comportementales légères. Maintenant vous avez deux fonctions formatDate, et différents composants en utilisent différentes — hourra pour la confusion !
Symptôme 4 : Chaos import/export
À mesure que votre liste de composants s'épanouit, Lovable joyeusement produit des chemins d'importation cassés, des dépendances circulaires, ou des références à des composants qui ont été renommés il y a trois invites.
Le point important ? Chaque réponse d'invite individuelle semble parfaitement bien — vue isolément. L'IA fait de son mieux dans le contexte qu'elle a, mais elle n'en a simplement plus assez.
Régression de fenêtre de contexte expliquée
D'accord, soyons un peu techniques. Comprendre cela vous aidera réellement à contourner le problème.
Lovable utilise des modèles de langage volumineux (nous parlons de la classe Claude ou GPT-4, peut-être les deux) qui ont des fenêtres de contexte allant de 128K à 200K jetons. Ça semble gros, non ? Eh bien, pas quand vous le décomposez.
Voici le budget de jetons approximatif pour une session Lovable :
| Consommateur de jetons | Jetons estimés | Pourcentage |
|---|---|---|
| Invites système et instructions | 5 000-15 000 | 5-10% |
| Votre historique d'invites | 10 000-50 000 | 10-30% |
| Contexte de codebase actuelle | 20 000-80 000 | 15-50% |
| Réponse générée | 2 000-8 000 | 2-5% |
| Marge de sécurité / surcharge | 10 000-20 000 | 5-15% |
Lorsque votre codebase atteint une certaine taille, Lovable commence à jouer les favoris, décidant quel code inclure dans le contexte. Il utilise une méthode appelée RAG (retrieval-augmented generation) ainsi qu'une certaine intuition pour sélectionner les fichiers qui semblent les plus pertinents pour votre invite actuelle. Spoiler : il ne devine pas toujours juste.
Le problème sournois est cette régression de fenêtre de contexte — l'IA modifie les fichiers dont elle a des informations incomplètes, remplissant les vides avec des hypothèses, qui sont souvent complètement fausses.
Je l'ai vu se dérouler encore et encore :
// Ce que votre composant ressemblait avant l'invite
export const UserProfile = ({ user, onUpdate, showAdmin }: UserProfileProps) => {
const [isEditing, setIsEditing] = useState(false);
const { role } = useAuth();
// ... 50 lignes de logique soigneusement élaborée
return (
// ... JSX qui gère la vue d'admin, le mode édition, etc.
);
};
// Ce que Lovable a régénéré après que vous ayez demandé « ajouter un champ bio »
export const UserProfile = ({ user }: { user: User }) => {
// Perdu : prop onUpdate, prop showAdmin, hook useAuth, état isEditing
// Ajouté : champ bio, mais tout le reste est simplifié/cassé
return (
// ... JSX simplifié manquant la moitié de la fonctionnalité d'origine
);
};
L'IA n'a pas vu le composant complet. Elle a assemblé une version basée sur un contexte incomplet et une idée généralisée de ce qu'un composant « UserProfile » devrait contenir. Votre logique spécifique ? Disparue.
Les bugs les plus courants et problèmes de scalabilité
Par Reddit, Discord, et ma propre expérience pratique, voici une liste des problèmes les plus courants.
1. Conflits de sécurité au niveau des lignes Supabase
À mesure que vous ajoutez des fonctionnalités, les politiques RLS produites par Lovable commencent à se marcher dessus. Après une poignée de tables avec des relations, les politiques deviennent un fouillis déroutant. Dans certains cas, la génération de nouvelles fonctionnalités a amené Lovable à abandonner entièrement les politiques RLS existantes.
2. Défaillance de la gestion d'état
Lovable met par défaut tout dans l'état React local (useState). Parfait... jusqu'à ce que ce ne soit pas le cas. Une fois que vous avez besoin d'un état partagé entre les composants, bonne chance. L'IA pourrait introduire React Context, le prop drilling, ou même Zustand — tout ce qui lui plaît.
3. Incohérences de routage
Une fois que vous avez environ dix pages, les routes commencent à entrer en conflit les unes avec les autres. Les routes protégées perdent leurs gardes. Les paramètres des routes dynamiques sont mal gérés. J'ai aussi vu Lovable générer des définitions de routes dupliquées.
4. Conflits de classe Tailwind et guerres de spécificité
Celui-ci vous rendra fou. Les classes Tailwind générées en ligne pourraient entrer en conflit. Quelque chose comme className="w-full max-w-md w-[500px]" apparaît — trois déclarations de largeur se disputant un seul élément.
5. Duplication d'appels API
Au lieu de réutiliser les fonctions utilitaires d'API existantes, Lovable produit de nouveaux appels fetch ou supabase.from() directement au milieu des composants. Au composant quinze, la même requête de base de données pourrait flotter dans six endroits mal cachés dans tout votre codebase.
6. Érosion de type TypeScript
Les types TypeScript initialement impeccables ? S'érodent lentement. Avec la complexité, Lovable utilise par défaut any, jette les définitions de type dupliquées, ou rétrécit silencieusement les types d'une manière qui interfère avec les autres composants.
7. Régression de réactivité mobile
Celle-ci est probablement le bug le plus ennuyeux. Vous obtenez votre design réactif tout soigné, effectuez une modification sur le bureau, et boum ! Le mobile est cassé. L'IA supprime fréquemment ces classes de point d'arrêt réactif cruciales lors de la recomposition des composants.

Benchmarks réels : Où Lovable s'écroule
J'ai essayé de construire la même chose — un outil de gestion de projet avec authentification, opérations CRUD, gestion d'équipe, et un tableau de bord — en utilisant différents outils. Lovable, Bolt.new, Cursor, et une bonne vieille configuration Next.js manuelle. Voici ce qui s'est passé :
| Métrique | Lovable | Bolt.new | Cursor + Next.js | Next.js manuel |
|---|---|---|---|---|
| Temps pour un prototype fonctionnel | 25 min | 30 min | 2 heures | 8 heures |
| Composants avant la première régression | 14 | 11 | N/A* | N/A |
| Bugs nécessitant une correction manuelle à 20 composants | 12 | 15 | 3 | 0 |
| Qualité du code (1-10) à la fin du projet | 3 | 3 | 7 | 9 |
| Possible de déployer en production ? | Non | Non | Oui, avec travail | Oui |
| Temps total incluant les corrections de bugs | 12 heures | 14 heures | 6 heures | 8 heures |
* Cursor n'atteint pas un mur puisqu'il fonctionne directement dans votre système de fichiers réel.
Cette dernière ligne en dit long. La vitesse de Lovable au prototypage est inégalée mais pour atteindre la readiness de production ? Elle mange tout le temps économisé et plus en corrigeant le désordre qu'elle crée.
Plus, le coût. Depuis mi-2025, Lovable varie de 20 $/mois (Starter, avec des crédits de messages limités) à 100 $/mois (Teams). Quand vous labourez les crédits de messages juste pour corriger les problèmes, ce plan Starter peut s'épuiser vite. J'ai utilisé plus de 200 messages juste pour annuler les régressions sur une application modérément compliquée.
Contournements qui aident vraiment
Compte tenu de toutes ces mises en garde, il existe des moyens d'étendre la portée de l'utilité de Lovable :
Épinglez vos composants critiques
Clarifiez à Lovable quels fichiers ne doivent pas être altérés :
Ne modifiez PAS les fichiers suivants :
- src/components/Navigation.tsx
- src/components/AuthGuard.tsx
- src/lib/supabase.ts
- src/types/index.ts
Créez ou modifiez uniquement les fichiers liés à la nouvelle page Paramètres.
Ce n'est pas infaillible, mais ça aide à atténuer la régression.
Utilisez des invites atomiques
Tenez-vous à des modifications singulières par invite. Au lieu de « Ajouter une page de paramètres avec les préférences utilisateur, les contrôles de notification, et un sélecteur de thème », décomposez-la en trois demandes séparées. Les changements plus petits égalent moins de chance de déborder le contexte.
Exportez et modifiez en externe
Obtenez Lovable synchronisé avec GitHub et utilisez-le à votre avantage. Après avoir ajouté une fonctionnalité majeure :
- Poussez vers GitHub
- Tirez localement et examinez
- Corrigez les problèmes manuellement
- Poussez les correctifs
- Synchronisez avec Lovable
Ce mélange de génération par IA avec une touche humaine est la meilleure recette que j'aie trouvée.
Établissez une approche axée sur les types
Construisez un fichier types.ts tôt, et référencez-le explicitement :
Utilisant les types définis dans src/types/index.ts (User, Project, Task, Team), créez un composant TaskList qui...
Cela donne à Lovable une ancre solide, réduisant significativement l'érosion des types.
Commencez de nouvelles conversations stratégiquement
Nouvelle conversation, nouveau contexte. Parfois réinitialiser le thread de chat avec une description concise de votre codebase fonctionne comme par magie, produisant des résultats plus propres qu'un long thread continu.
Quand migrer loin de Lovable
Voici quand échanger l'outil pour un vrai développement :
- Vous passez plus de temps à corriger qu'à construire. Quand cela commence à arriver, eh bien, c'est le moment de reconsidérer.
- Une logique métier complexe surgit. Les flux de travail multiples étapes, l'autorisation sophistiquée, les fonctionnalités en temps réel, les paiements — ceux-ci demandent l'ingéniosité humaine.
- La performance est cruciale. Lovable vous donne un point de départ, mais pour les optimisations avancées, vous avez besoin de mains expertes avec les bons outils.
- Gérer des données réelles. N'avancez pas des codes générés par IA pour des données sensibles et réelles des utilisateurs — particulièrement autour de l'authentification, des paiements, ou des PII.
- Vous avez besoin d'un CI/CD et de tests fiables. Lovable ne vous écrit pas de tests. Qui veut livrer du code non testé en production ?
La migration est assez directe : exportez vers GitHub, établissez un vrai projet Next.js ou Astro, refactorisez, ajoutez des tests, et configurez un processus de déploiement solide.
Vous avez un prototype Lovable validé ? Félicitations. Maintenant, construisez-le vraiment. C'est là que nous intervenons, offrant une assistance dans les transitions par le biais de nos services de développement CMS headless et services de développement personnalisé.
Alternatives à considérer
Vous en avez assez de Lovable ? Voici ce que vous pourriez essayer :
Cursor + Next.js/Astro : Le choix d'or pour les développeurs voulant une assistance IA sans le mal de tête de scalabilité. Cursor fonctionne dans un vrai IDE, touchant les fichiers réels que vous contrôlez. L'IA aide sans être propriétaire de votre codebase.
Bolt.new : A des aspirations similaires à Lovable, ainsi que les mêmes plafonds. Quelques forces uniques dans des motifs d'UI spécifiques, mais calme sur contexte comme son cousin Lovable.
v0 par Vercel : Parfait pour générer des composants d'interface individuelle que vous fusionnez dans votre propre projet. C'est moins ambitieux que Lovable (il n'essaie pas de construire l'application entière), et cette lentille plus étroite le rend plus fiable.
Windsurf (Codeium) : Un autre IDE incliné vers l'IA, mais avec une aptitude pour les codebases plus larges. Contrairement à Lovable, il ne tente pas de compresser l'ensemble du projet dans un chat, car il exploite vos fichiers locaux.
Développement réel : Ouais, parfois vous avez besoin d'un développeur compétent avec un framework solide. Quand vous visez l'échelle, gérez les vrais utilisateurs, ou rêvez au-delà des prototypes, rien ne bat le talent de haut niveau et les bons frameworks. Intéressé ? Contactez-nous — nous avons guidé beaucoup d'équipes des prototypes IA aux architectures solides.
FAQ
Pourquoi mon application Lovable casse après avoir ajouté plus de composants ?
Les modèles IA de Lovable ont des fenêtres de contexte finies. À mesure que votre projet monte en échelle, l'IA perd prise sur l'ensemble du codebase. Elle commence à supposer des choses en générant du code, causant des régressions, des incompatibilités de style, et des cassures de logique. Cela se manifeste normalement une fois que vous atteignez 12 à 20 composants, basé sur la complexité.
Qu'est-ce que la régression de fenêtre de contexte dans Lovable ?
Avez-vous l'impression que votre code s'est magiquement altéré sans que vous le demandiez ? C'est la régression de fenêtre de contexte. L'IA modifie ou régénère du code sans le tableau complet, menant à des hypothèses incorrectes de ses données d'entraînement au lieu de votre implémentation live. Elle casse les fonctionnalités, inverse les styles, et efface la logique — tout sans invitation.
Puis-je construire une application de production avec Lovable ?
Peut-être, si vous vous en tenez purement à des applications simples (comme les pages d'accueil, les outils CRUD basiques, les tableaux de bord internes, avec un nombre limité de personnes). Cependant, pour n'importe quoi impliquant une logique complexe, une vraie sécurité, une performance rapide, ou une base d'utilisateurs légèrement importante, non. C'est un havre de prototypage, pas une puissance de production. Très révélateur, il crée zéro tests, n'optimise rien pour la performance, et ses motifs de sécurité ? Disons qu'ils sont un travail en cours.
Combien de composants Lovable peut-il gérer avant de cassé ?
La plupart des gens rencontrent des problèmes entre 12 et 20 composants. Des facteurs comme la complexité des composants, la longueur de l'historique des invites, et combien d'état/logique est intégré influencent ce seuil. Les composants plus faciles et orientés affichage vous donnent plus d'espace que les composants complexes et statefulll.
Lovable est-il meilleur que Bolt.new pour construire des applications ?
Ce sont des images miroir, partageant des forces et des faiblesses. Lovable a l'avantage dans l'intégration Supabase mais Bolt.new est un peu plus polyvalent avec les déploiements. Les deux font face au même mur de croissance. Pour les applications de production au-delà de modèles simples, ni l'un ni l'autre ne l'emportent. Par 2025, les deux commencent à 20 $/mois, avec les plans de Lovable montant à 100 $/mois.
Comment corriger les régressions Lovable sans recommencer ?
Le meilleur remède est d'exporter via GitHub, auditer dans un IDE local (VS Code ou Cursor), corriger manuellement, puis synchroniser. D'autres astuces incluent des invites atomiques (un changement par demande), l'énonciation des fichiers à épargner, et commencer de zéro avec des conversations fraîches quand les chats gonflent.
Dois-je utiliser Lovable ou Cursor pour mon projet ?
Prototypage rapide et validation d'idée ? Lovable remporte le gâteau. Pour un vrai déploiement d'utilisateur, Cursor lié à un framework solide comme Next.js ou Astro offre une stimulation d'IA sans contraintes de plafond. Cursor voit l'intégralité de votre projet sans problèmes de contexte, car il opère sur vos fichiers existants.
Quelle est la meilleure façon de migrer un projet Lovable vers un développement réel ?
Exportez via l'intégration GitHub, créez un projet rock-solide Next.js ou Astro avec vos outils préférés, et considérez le script Lovable comme un plan — reconstruisez, affinez, insérez des types vrais, des tests, la gestion d'erreur, et améliorez la performance en cours de route. Cette route est plus rapide que la refactorisation directe du fouillis auto-généré.