<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Santi Bivacqua</title>
    <description>The latest articles on DEV Community by Santi Bivacqua (@sanbiv).</description>
    <link>https://dev.to/sanbiv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F32619%2F692e62a5-4949-40f4-a92c-bd2ffafe14a9.jpeg</url>
      <title>DEV Community: Santi Bivacqua</title>
      <link>https://dev.to/sanbiv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanbiv"/>
    <language>en</language>
    <item>
      <title>Recovering Firestore Data Fast with PITR and Fuego</title>
      <dc:creator>Santi Bivacqua</dc:creator>
      <pubDate>Thu, 07 Aug 2025 23:07:05 +0000</pubDate>
      <link>https://dev.to/sanbiv/recovering-firestore-data-fast-with-pitr-and-fuego-4kea</link>
      <guid>https://dev.to/sanbiv/recovering-firestore-data-fast-with-pitr-and-fuego-4kea</guid>
      <description>&lt;h1&gt;
  
  
  The Hidden Cost of Not Having PITR: How to Recover from Firestore Disasters with Fuego
&lt;/h1&gt;

&lt;p&gt;A few months ago, I faced a developer’s nightmare.&lt;br&gt;
It was late in the day, I was cleaning up some old Firestore collections in production, and with one accidental click, I deleted far more than I intended. Entire sets of user feedback records were gone in seconds.&lt;/p&gt;

&lt;p&gt;If you’ve ever worked with Firestore, you know the sinking feeling: Firestore doesn’t have a native “undo” button in its console. Without backups or a recovery strategy, that data is just… gone.&lt;/p&gt;

&lt;p&gt;Thankfully, I had &lt;a href="https://firebase.google.com/docs/firestore/pitr" rel="noopener noreferrer"&gt;Point-in-Time Recovery&lt;/a&gt; (PITR) enabled for my Firestore project - and I had Fuego installed.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Point-in-Time Recovery in Firestore?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://fuegoapp.dev/docs/pitr/" rel="noopener noreferrer"&gt;Point-in-Time Recovery&lt;/a&gt; (PITR) is a feature that allows you to restore your Firestore data to any second within the last 7 days. It’s essentially a rolling backup system managed by Google Cloud.&lt;/p&gt;

&lt;p&gt;How it works in Firestore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PITR keeps a continuous log of document changes for the last 7 days.&lt;/li&gt;
&lt;li&gt;You can choose a timestamp and restore the entire database or specific collections/documents to that state.&lt;/li&gt;
&lt;li&gt;Restored data is placed into a separate Firestore instance (or namespace), so you can review and selectively merge it back.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations to keep in mind:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PITR is not free — it comes with additional storage costs for historical versions.&lt;/li&gt;
&lt;li&gt;You must have PITR enabled in advance; you can’t use it retroactively.&lt;/li&gt;
&lt;li&gt;Data older than 7 days is permanently unrecoverable (With PITR not enabled, you still have a one-hour time window.).&lt;/li&gt;
&lt;li&gt;It doesn’t restore indexes or security rules — only documents and collections.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Why Fuego Makes PITR Actually Usable
&lt;/h1&gt;

&lt;p&gt;Google Cloud’s native PITR recovery process is… let’s say, not the most user-friendly. You need to run gcloud CLI commands, deal with export/import jobs, and navigate JSON responses.&lt;/p&gt;

&lt;p&gt;With Fuego, I didn’t have to touch the CLI at all. I just:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Selected my project.&lt;/li&gt;
&lt;li&gt;Opened the PITR Restore tool.&lt;/li&gt;
&lt;li&gt;Picked a timestamp right before the deletion happened.&lt;/li&gt;
&lt;li&gt;Chose the specific collection (feedback) I wanted to recover.&lt;/li&gt;
&lt;li&gt;Hit Restore — and watched my data come back.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://fuegoapp.dev/docs/pitr/" rel="noopener noreferrer"&gt;Fuego’s PITR interface&lt;/a&gt; turns what could be a half-day of commands and checks into a couple of clicks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step-by-Step: Recovering from a Firestore Disaster with Fuego
&lt;/h1&gt;

&lt;p&gt;Let’s walk through the exact steps I took that day.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Open the PITR tool in Fuego
&lt;/h2&gt;

&lt;p&gt;From the left sidebar, select your Firestore project and open the Point-in-Time Recovery section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1f6846ogr4rahz2binsa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1f6846ogr4rahz2binsa.gif" alt=" " width="720" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Choose the Recovery Time
&lt;/h2&gt;

&lt;p&gt;Fuego lets you use a visual date/time picker to jump to any second in the last 7 days.&lt;br&gt;
I selected the moment just before my accidental deletion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt5ue22tv0b18r5zwj1e.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdt5ue22tv0b18r5zwj1e.gif" alt=" " width="600" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Select What to Restore
&lt;/h2&gt;

&lt;p&gt;You can restore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; specific collection&lt;/li&gt;
&lt;li&gt;Or even just certain documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For my case, I picked the feedback collection to avoid overwriting unrelated data.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Start the Restore
&lt;/h2&gt;

&lt;p&gt;Click Restore, and Fuego handles the background process. Once completed, the restored data appears in a temporary namespace so you can validate it before merging.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Merge Back to Production
&lt;/h2&gt;

&lt;p&gt;After confirming everything was intact, I merged the restored documents back into the production namespace — no data loss, no guesswork.&lt;/p&gt;

&lt;h1&gt;
  
  
  Lessons Learned
&lt;/h1&gt;

&lt;p&gt;That day taught me two big lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always enable PITR for production Firestore projects. The cost is negligible compared to the risk of losing critical data.&lt;/li&gt;
&lt;li&gt;Have the right tools ready. Google’s native recovery path works, but Fuego makes it fast, visual, and much less stressful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re building on Firestore and haven’t enabled PITR yet, do it today. And if you want recovery to be something you can actually do under pressure — not just in theory — &lt;a href="https://fuegoapp.dev" rel="noopener noreferrer"&gt;try Fuego&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because in the real world, disasters happen. The only question is how quickly you can bounce back.&lt;/p&gt;

</description>
      <category>firestore</category>
      <category>fuego</category>
      <category>pitr</category>
      <category>firebase</category>
    </item>
  </channel>
</rss>
