Skip to content

v1.7.0

Latest

Choose a tag to compare

@dalenguyen dalenguyen released this 14 Jul 15:56

What's changed

Bug fixes

  • #153 initializeFirebaseApp now returns the correct named Firebase app when one already exists. Previously, calls with a custom name argument silently returned the default app's Firestore instance if any app was already initialized.
  • #136 Restored timestamps now preserve nanosecond precision. makeTime returns Firestore.Timestamp instead of Date.
  • #50, #83 dates, geos, and refs import options now correctly traverse arrays of objects at any depth.
  • makeGeoPoint no longer returns null for coordinates equal to 0 (the falsy-coord bug).

New features

  • #18 Restore writes are now batched (500 docs per commit) instead of one-at-a-time. 10k-doc restores drop from minutes to seconds.
  • #19 New clearCollection import option deletes target collections before restore.
  • #103 New includeSubcollections export option (default: true) — set to false to skip subcollection traversal.
  • #121 showLogs: true now works on export (backup, backups, backupFromDoc).
  • dryRun import option — preview what clearCollection would delete and how many docs would be written, without touching Firestore.

Internal

  • restoreService rewritten from Promise constructor pattern to async/await.
  • traverseObjects replaced with a new applyToPath helper that uniformly handles nested objects and arrays.
  • Updated to firebase-admin v13, Vitest, Vite (already shipped via the modernization PRs).

Acknowledgments

Thanks to @eudanielhenrique for splitting the original mega-PR (#169) into three reviewable chunks and addressing review feedback on console.warn hot-path concerns, recursiveDelete atomicity, and the dryRun mode for clearCollection.


See CHANGELOG.md for the full history.