[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"blog-fr-version-history-is-not-a-backup":3},{"id":4,"title":5,"body":6,"category":265,"cover":266,"coverAlt":266,"description":267,"draft":268,"extension":269,"faq":270,"image":283,"keywords":284,"meta":290,"navigation":291,"ogTitle":292,"path":293,"published":294,"seo":295,"stem":296,"tldr":297,"updated":294,"__hash__":301},"blog_fr\u002Fblog\u002Fversion-history-is-not-a-backup.md","L'historique des versions n'est pas une sauvegarde de vos données.",{"type":7,"value":8,"toc":253},"minimark",[9,13,16,24,29,32,35,38,42,45,48,51,55,58,133,139,142,146,149,152,168,171,175,178,181,184,188,191,196,205,208,216,220,240],[10,11,12],"p",{},"Quelque chose a cassé, alors vous avez fait ce qu'il fallait. Vous avez ouvert\nl'historique des versions dans Lovable ou Bolt, retrouvé la version de ce matin\net cliqué sur restaurer. L'application est revenue exactement comme elle était.",[10,14,15],{},"Les données, non.",[10,17,18,19,23],{},"Voici l'endroit où les gens se font piéger : ",[20,21,22],"strong",{},"votre code et vos données sont\ndeux systèmes distincts, et un seul des deux possède un bouton d'annulation.","\nVotre builder conserve les plans de votre app. Votre base de données contient ce\nqu'il y a dedans. L'historique des versions reconstruit les plans à la\nperfection, jusqu'au dernier détail, et vous rend un bâtiment identique et vide.",[25,26,28],"h2",{"id":27},"lhistorique-des-versions-de-mon-builder-sauvegarde-t-il-ma-base-de-données","L'historique des versions de mon builder sauvegarde-t-il ma base de données ?",[10,30,31],{},"Non. Il enregistre votre code, et vos données vivent tout à fait ailleurs.",[10,33,34],{},"Lovable, Bolt, v0, Replit, Cursor et les autres tiennent tous un historique des\nfichiers de votre projet : vos pages, vos composants, votre logique, vos styles.\nCe sont les plans. Restaurer une version réécrit ces fichiers tels qu'ils\nétaient le jour que vous avez choisi.",[10,36,37],{},"Votre base de données est un autre service, presque toujours Supabase, sur un\ncompte à elle. Rien dans l'historique de votre projet n'y pénètre. La\nrestauration n'a pas d'avis sur vos données, parce qu'elle ne peut pas les voir.",[25,39,41],{"id":40},"pourquoi-votre-code-et-vos-données-vivent-à-deux-endroits-différents","Pourquoi votre code et vos données vivent à deux endroits différents",[10,43,44],{},"Parce que vos données doivent survivre à ce que votre code fait sans arrêt :\nchanger.",[10,46,47],{},"Votre code est reconstruit à chaque mise en ligne. Si les commandes de vos\nutilisateurs vivaient dedans, elles seraient effacées chaque fois que vous\nréparez un bouton. Les deux sont donc tenus séparés, délibérément : le code est\nremplaçable et les données ne le sont pas, et c'est pourquoi des outils\ndifférents les versionnent.",[10,49,50],{},"Le prix de cette séparation est le sujet de cet article. Tout outil qui\nversionne l'un des deux est aveugle à l'autre. Votre builder ne peut pas\nrécupérer une table, et votre base de données ne peut pas récupérer une page\ncassée.",[25,52,54],{"id":53},"ce-qui-se-passe-vraiment-quand-vous-revenez-en-arrière","Ce qui se passe vraiment quand vous revenez en arrière",[10,56,57],{},"Vos écrans reviennent à ce qu'ils étaient. Vos données ne bougent pas du tout.",[59,60,61,74],"table",{},[62,63,64],"thead",{},[65,66,67,71],"tr",{},[68,69,70],"th",{},"Quoi",[68,72,73],{},"Retour en arrière sur le code",[75,76,77,86,93,105,115,125],"tbody",{},[65,78,79,83],{},[80,81,82],"td",{},"Pages, composants, styles",[80,84,85],{},"Restauré",[65,87,88,91],{},[80,89,90],{},"La logique de votre app et ses correctifs",[80,92,85],{},[65,94,95,98],{},[80,96,97],{},"Une table supprimée",[80,99,100],{},[101,102,104],"key-verdict",{"type":103},"danger","Toujours supprimée",[65,106,107,110],{},[80,108,109],{},"Des lignes écrasées par un script",[80,111,112],{},[101,113,114],{"type":103},"Toujours écrasées",[65,116,117,120],{},[80,118,119],{},"Une colonne retirée par une migration",[80,121,122],{},[101,123,124],{"type":103},"Toujours retirée",[65,126,127,130],{},[80,128,129],{},"Les fichiers envoyés par vos utilisateurs",[80,131,132],{},"Inchangés dans les deux sens",[134,135],"diagram",{"alt":136,"caption":137,"src":138},"Trois étapes à la suite. D'abord le code en version cinq avec six lignes de données, coché. Ensuite le même code, les six lignes disparues, marqué d'une croix. Puis le code ramené en version trois et coché, les six lignes toujours absentes et toujours marquées d'une croix.","Le retour en arrière tombe sur le code et sur rien d'autre. Ramener les plans en version trois ne remet pas les lignes.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Frollback-timeline-1600x680.png",[10,140,141],{},"La ligne de la migration est celle qui surprend le plus. Une migration que vous\navez lancée contre votre base de données a déjà eu lieu ; elle vit dans la base,\npas dans votre dépôt, et défaire le fichier qui la décrivait n'y change rien.",[25,143,145],{"id":144},"là-où-cela-mord-vraiment","Là où cela mord vraiment",[10,147,148],{},"Dans les dix minutes qui suivent une erreur, quand vous cherchez l'annulation et\ndécouvrez qu'il n'y en a pas.",[10,150,151],{},"Les formes que cela prend sont tout à fait ordinaires :",[153,154,155,159,162,165],"ul",{},[156,157,158],"li",{},"Une suppression dans l'éditeur de tables Supabase qui a touché plus de lignes\nque prévu.",[156,160,161],{},"Une migration assistée par IA qui a retiré une colonne pour faire disparaître\nune erreur de type.",[156,163,164],{},"Un script de remplissage ou de réinitialisation pointé sur le projet en\nproduction plutôt que sur un projet de test.",[156,166,167],{},"Un nettoyage de ce qui ressemblait à des données de test et se trouvait être\nle vrai compte de quelqu'un.",[10,169,170],{},"Rien de tout cela ne touche une seule ligne de votre code. Chacune y survit\nintacte, et c'est pourquoi le retour en arrière donne l'impression de n'avoir\nrien fait. Il a fait exactement ce qu'il fait.",[25,172,174],{"id":173},"à-quoi-sert-vraiment-lhistorique-des-versions","À quoi sert vraiment l'historique des versions",[10,176,177],{},"À beaucoup de choses, et cela mérite d'être dit clairement, parce que la réponse\nn'est pas « à rien ».",[10,179,180],{},"C'est une vraie annulation pour de vrais problèmes : un changement de design que\nvous regrettez, une mise en ligne qui a cassé une page, une modification de l'IA\nqui a réécrit en moins bien un écran qui marchait, une fonctionnalité qui a fini\npar rendre l'app plus difficile à utiliser. Tout cela vit dans votre code, et\npour tout cela il fonctionne exactement comme annoncé.",[10,182,183],{},"L'ennui, c'est la supposition silencieuse selon laquelle son travail couvre\ntout. Personne ne fait cette supposition exprès ; c'est celle qui vous reste\nquand personne ne vous a dit qu'il y avait deux systèmes.",[25,185,187],{"id":186},"comment-obtenir-une-vraie-annulation-pour-vos-données","Comment obtenir une vraie annulation pour vos données",[10,189,190],{},"Vous devez en installer une. C'est-à-dire une copie de la base de données, prise\nselon un horaire, rangée dans un endroit que la perte du compte n'emporterait\npas avec elle.",[134,192],{"alt":193,"caption":194,"src":195},"Deux frises chronologiques. Sur celle du code, une flèche revient toute seule du point le plus récent vers un point antérieur. Sur celle de la base de données, cette même flèche ne se referme qu'en passant par un fichier enregistré.","Les deux savent revenir en arrière. La différence est que l'annulation de votre code est venue avec le builder, et que celle de vos données n'existe que si vous placez la copie vous-même.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Ftwo-undo-paths-1600x600.png",[10,197,198,199,204],{},"Il y a trois façons de le faire, elles coûtent des sommes et des attentions\ndifférentes, et à chacune échappe quelque chose que les autres couvrent.\n",[200,201,203],"a",{"href":202},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Trois façons de sauvegarder une base Supabase","\npasse les trois en revue, dont celle que la plupart des gens devraient activer\nen premier et la raison pour laquelle elle ne suffit pas seule.",[10,206,207],{},"C'est aussi ce à quoi sert Reeve Care : des copies planifiées de votre base de\ndonnées Supabase, conservées hors de votre compte Supabase et vérifiées avant\nd'être comptées comme prises. Connectez vos buckets Storage et les fichiers téléversés par\nvos utilisateurs voyagent avec, si bien qu'une restauration remet les lignes et\nles images vers lesquelles elles pointent.",[10,209,210,211,215],{},"Ce que contient une de ces copies, et ce que fait vraiment le bouton, est sur\nla ",[200,212,214],{"href":213},"\u002Fsupabase-backups","page des sauvegardes Supabase",".",[25,217,219],{"id":218},"que-faire-cette-semaine","Que faire cette semaine",[221,222,223],"key-takeaways",{},[153,224,225,228,231,234,237],{},[156,226,227],{},"Cherchez si quelque chose sauvegarde actuellement votre base de données. Pas votre code : votre base de données. Si la réponse met plus d'une minute à venir, la réponse est non.",[156,229,230],{},"Activez la sauvegarde incluse dans votre plan Supabase. Elle vous protège de vos propres erreurs, qui sont exactement le sujet de cet article.",[156,232,233],{},"Gardez en plus une copie ailleurs, car une sauvegarde qui vit dans le compte ne vous aide pas si vous perdez le compte.",[156,235,236],{},"Sauvegardez les fichiers téléversés séparément. Ils ne sont ni dans votre code ni dans votre base de données.",[156,238,239],{},"Restaurez une copie dans un projet jetable, pour que la première lecture de ce fichier ne soit pas le jour où vous en avez besoin.",[10,241,242,243,247,248,252],{},"Avant de fermer cet onglet, ouvrez votre projet Supabase et regardez si les\nsauvegardes sont activées. Cette seule vérification est tout le travail du jour.\nLa ",[200,244,246],{"href":245},"\u002Fchecklist","checklist sécurité en 10 minutes"," la couvre avec le reste de ce\nqui mérite d'être confirmé sur une app fraîchement lancée, et le\n",[200,249,251],{"href":250},"\u002Fis-your-supabase-app-safe","guide de sécurité Supabase"," passe en revue ce qui\nreste couramment ouvert.",{"title":254,"searchDepth":255,"depth":255,"links":256},"",3,[257,259,260,261,262,263,264],{"id":27,"depth":258,"text":28},2,{"id":40,"depth":258,"text":41},{"id":53,"depth":258,"text":54},{"id":144,"depth":258,"text":145},{"id":173,"depth":258,"text":174},{"id":186,"depth":258,"text":187},{"id":218,"depth":258,"text":219},"Backups",null,"Lovable et Bolt tiennent un historique des versions de votre code. Votre base de données est un service à part, et revenir en arrière ne la ramène pas.",false,"md",[271,274,277,280],{"q":272,"a":273},"J'ai supprimé une table par erreur. Puis-je la récupérer ?","Seulement depuis une sauvegarde antérieure à la suppression : la première chose à savoir est donc s'il en existe une. Revenir en arrière sur votre code n'y suffira pas, et votre builder non plus. Sur un plan Supabase payant il y a des sauvegardes quotidiennes, et la restauration à un instant précis si vous l'avez ajoutée. Sur le plan gratuit, rien d'automatique. Vérifiez ce dont vous disposez avant de changer quoi que ce soit d'autre : certaines voies de retour se compliquent dès que de nouvelles données s'écrivent par-dessus le trou.",{"q":275,"a":276},"Est-ce que Lovable sauvegarde ma base de données Supabase ?","Votre builder versionne les fichiers de votre projet. Votre base de données est un service distinct sur votre propre compte Supabase, et rien dans l'historique du projet n'y pénètre. Les builders ajoutent des fonctions, alors consultez la documentation du vôtre plutôt que de supposer dans un sens ou dans l'autre, mais partez du principe que la réponse est non tant que vous n'avez pas lu qu'elle est oui.",{"q":278,"a":279},"Mon historique Git est-il une sauvegarde ?","Non, exactement pour la raison qui fait que l'historique des versions n'en est pas une. Git suit les fichiers à partir desquels votre app est construite. Il n'a jamais vu une seule ligne de vos données et ne peut en remettre aucune. Un dépôt et une base de données sont deux choses différentes qui s'appellent toutes les deux « votre projet ».",{"q":281,"a":282},"Mes données sont toutes là. Dois-je faire quelque chose aujourd'hui ?","Aujourd'hui est le jour le moins cher pour mettre cela en place, parce que les données sont petites et que ce qui compte est que l'habitude existe avant d'en avoir besoin. Les pertes qui font mal sont rarement spectaculaires : c'est une commande mal tapée pendant une réparation nocturne, sur un projet avec juste assez d'utilisateurs réels pour que tout recommencer ne soit pas envisageable.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",[285,286,287,288,289],"historique des versions lovable","historique des versions sauvegarde base de données","récupérer table supprimée supabase","revenir en arrière code données","récupérer données application vibe coded",{},true,"L'historique des versions n'est pas une sauvegarde","\u002Fblog\u002Fversion-history-is-not-a-backup","2026-08-10",{"title":5,"description":267},"blog\u002Fversion-history-is-not-a-backup",[298,299,300],"L'historique des versions restaure votre code. Il ne touche jamais à votre base de données, là où vivent vos utilisateurs, leurs contenus et leurs commandes.","Une table supprimée, une ligne écrasée ou une migration ratée survivent donc intactes à un retour en arrière.","Votre code a une annulation intégrée. Vos données n'en ont une que si vous la mettez en place.","s_-FaPPK5Jtod28-wNgG_U3MK2o0Gsz0PTNuUXmIYRQ",1787826048205]