Features

MSR Firebase is a production-ready migration framework for Firebase Realtime Database with powerful features for safe, reliable database migrations.

Table of Contents

  1. Complete Features List
    1. Firebase-Specific Features
    2. Migration Execution
    3. Migration Locking (v0.2.0+)
    4. Safety & Rollback
    5. CLI Features
    6. Library Features
    7. Data Services
    8. Configuration & Flexibility
    9. Developer Experience
  2. Features by Category
    1. πŸ”₯ Firebase Native Features
    2. πŸ”’ Migration Locking (Production Ready)
    3. πŸ’Ύ Backup & Restore
    4. πŸ›‘οΈ Type Safety & Developer Experience
    5. πŸ“¦ CLI & Library
    6. πŸ”„ Migration Management
    7. πŸ” Validation & Quality
    8. πŸ“Š Data Services
    9. πŸš€ Production Features
    10. 🐳 Platform Support
  3. Quick Feature Comparison
  4. What Makes MSR Firebase Different?
    1. Built for Firebase Realtime Database
    2. Production-Ready Locking
    3. Library-First Design
    4. Type-Safe Migrations
  5. Getting Started
  6. Feature Highlights by Version
    1. v0.2.0 (Current - Unstable)
    2. v0.1.x (Stable)
  7. Community & Support

Complete Features List

Firebase-Specific Features

Migration Execution

Migration Locking (v0.2.0+)

Safety & Rollback

CLI Features

Library Features

Data Services

Configuration & Flexibility

Developer Experience


Features by Category

πŸ”₯ Firebase Native Features

Feature Description
πŸ”₯ Firebase Realtime Database Native support for Firebase Admin SDK with full API access
πŸ”’ Single-Node Transactions Atomic operations via Firebase’s ref.transaction() for safe concurrent updates
🎯 Path Prefixing Multi-environment support with automatic path shifting (production/, staging/, etc.)
πŸ§ͺ Emulator Support Test migrations locally with Firebase Emulator before production deployment
πŸ”‘ Flexible Authentication Service account key file or Application Default Credentials
🌐 Connection Testing Built-in command to verify database connectivity and credentials

πŸ”’ Migration Locking (Production Ready)

Feature Description
πŸ” Database-Level Locking Prevent concurrent migrations across multiple instances using Firebase atomic operations
☸️ Kubernetes Compatible Safe migrations in multi-pod deployments with automatic lock management
🐳 Docker Support Works seamlessly with Docker Swarm and Docker Compose multi-replica setups
⏱️ Automatic Expiration Configurable lock timeouts (default 10 minutes) with automatic cleanup
πŸ–₯️ Lock Management CLI lock:status and lock:release commands for production troubleshooting
πŸ›‘οΈ Two-Phase Locking Lock ownership verification prevents race conditions and ensures safety

πŸ’Ύ Backup & Restore

Feature Description
πŸ’Ύ Automatic Backups Create JSON backups of Firebase database before migrations
πŸ“Š Multiple Backup Modes Choose from full database, incremental, or no backup based on your needs
πŸ”™ Point-in-Time Restore Restore database from any previous backup with single command
πŸ“ Backup Management List available backups with timestamps and metadata
πŸ—œοΈ Compressed Storage Efficient JSON format with optional compression
🎯 Selective Backup Backup only affected paths or entire database

πŸ›‘οΈ Type Safety & Developer Experience

Feature Description
πŸ“˜ TypeScript First Full TypeScript support with generic type parameters
🎯 Database Type Safety IFirebaseDB interface provides IDE autocomplete and compile-time checks
🧩 Generic Migrations Type-safe migration classes with IRunnableScript<IFirebaseDB>
πŸ“¦ Entity Service Generic EntityService<T> for type-safe CRUD operations
πŸ” IntelliSense Support Full IDE support with method signatures and parameter hints
βœ… Compile-Time Checks Catch errors before runtime with TypeScript compiler

πŸ“¦ CLI & Library

Feature Description
πŸ–₯️ Complete CLI msr-firebase command with all migration operations
πŸ”§ Programmatic API Use as library in Node.js applications with FirebaseRunner
βš™οΈ Flexible Configuration Environment variables, config files, or inline CLI flags
πŸ“Š Structured Results Library mode returns result objects instead of process.exit()
🎨 Output Formats Table, JSON, or silent output for different use cases
🌍 Environment Detection Automatic detection of .env files and environment variables

πŸ”„ Migration Management

Feature Description
πŸ“ Version-Based Naming Timestamp-based migration files (e.g., V202501010001_create_users.ts)
⬆️ Up Migrations Apply migrations to update database schema and data
⬇️ Down Migrations Reverse migrations with down() methods for rollback
πŸ“Š Migration Status List all migrations with applied/pending status
🎯 Target Version Migrate to specific version or roll back to earlier state
βœ… Checksum Validation Detect unauthorized changes to executed migrations

πŸ” Validation & Quality

Feature Description
βœ… Pre-Migration Validation Validate all migrations before execution to catch issues early
πŸ”Ž Duplicate Detection Prevent timestamp collisions and duplicate migration files
πŸ“ Structure Validation Ensure migrations follow required naming and structure conventions
⚠️ Connection Validation Verify Firebase connectivity before attempting migrations
πŸ›‘οΈ Checksum Verification Detect modifications to previously executed migrations

πŸ“Š Data Services

Feature Description
πŸ—ƒοΈ EntityService Type-safe CRUD operations: create, read, update, delete, list with generic types
πŸ“„ FirebaseDataService Low-level Firebase operations with transaction support
πŸ”„ Atomic Operations Use Firebase transactions for safe concurrent updates
πŸ“¦ Batch Operations Efficient multi-entity updates with single database call
πŸ“– Pagination Built-in limit and offset support for large collections
πŸ” Query Support Firebase query operations with orderBy, limitToFirst, startAt

πŸš€ Production Features

Feature Description
πŸ”’ Distributed Locking Safe concurrent migration prevention across all instances
πŸ’Ύ Automatic Backups Database backups before every migration run
πŸ“ˆ Progress Tracking Real-time progress for long-running migrations
🎯 Zero Downtime Non-blocking migrations with proper transaction handling
πŸ“Š Execution History Complete audit trail of all migrations with timestamps
πŸ›‘οΈ Error Recovery Automatic rollback on failure with backup restore

🐳 Platform Support

Feature Description
☸️ Kubernetes ConfigMaps and Secrets integration, safe multi-pod deployments
🐳 Docker Environment variable configuration, Docker Swarm/Compose support
βš™οΈ CI/CD Integration GitHub Actions, GitLab CI, Jenkins - works in all pipelines
πŸ–₯️ Cross-Platform Works on Linux, macOS, and Windows
πŸ“¦ npm Package Easy installation: npm install @migration-script-runner/firebase
🌐 Serverless Ready Use in Cloud Functions, Lambda with proper initialization

Quick Feature Comparison

Compare MSR Firebase features across different use cases:

Use Case Key Features
Development Fast iteration, down() methods, Firebase Emulator, TypeScript support, local testing
CI/CD Automated validation, checksum verification, environment variables, structured output
Production Migration locking, automatic backups, error recovery, audit trails, lock management CLI
Kubernetes Database-level locking, ConfigMap integration, multi-pod safety, automatic lock cleanup
Docker Environment variables, Swarm support, replica safety, container-ready configuration
Serverless Structured results, programmatic API, no process.exit(), quick initialization

What Makes MSR Firebase Different?

Built for Firebase Realtime Database

Unlike generic migration tools, MSR Firebase is built specifically for Firebase:

  • Native Firebase SDK integration - Full access to Firebase Admin SDK features
  • Understands Firebase limitations - Clear documentation of single-node transaction constraints
  • Firebase-specific helpers - EntityService, FirebaseDataService for common patterns
  • Emulator support - Test migrations locally before production
  • Path prefixing - Built-in multi-environment support

Production-Ready Locking

First Firebase migration tool with proper distributed locking:

  • Database-level locks - Uses Firebase atomic operations, not file locks
  • Kubernetes-tested - Safe for multi-pod deployments
  • Automatic expiration - Configurable timeouts prevent stuck locks
  • CLI management - Force-release locks when needed
  • Two-phase verification - Ownership checks prevent race conditions

Library-First Design

Unlike most migration tools, MSR Firebase returns structured results:

  • Safe to use in web servers (Express, Fastify, NestJS)
  • Works in serverless functions (Cloud Functions, Lambda)
  • No unexpected process.exit() calls
  • Full error details in return values
  • Perfect for application integration

Type-Safe Migrations

Full TypeScript support throughout:

  • Generic type parameters for database operations
  • IDE autocomplete for all methods
  • Compile-time error detection
  • Type-safe EntityService with generics
  • No casting or type assertions needed

Getting Started

Ready to use these features? Start here:


Feature Highlights by Version

v0.2.0 (Current - Unstable)

⚠️ Unstable Version: v0.2.0 is currently under active development and not recommended for production use.

  • πŸ”’ Migration Locking - Database-level locking for distributed environments (Kubernetes, Docker, multi-instance)
  • ⬆️ MSR Core v0.8.1 - Latest core with bug fixes, handler access API, and improved locking lifecycle
  • πŸ”§ Type-Safe API - Full TypeScript support with generic type parameters throughout
  • πŸ–₯️ Lock Management CLI - lock:status and lock:release commands for production lock management
  • πŸ“š Comprehensive Documentation - Complete restructure with CLI/Library/Writing Migrations sections
  • 🎨 Professional Site - Favicon, Key Features cards, improved navigation

v0.1.x (Stable)

  • ✨ Core Migration Engine - Basic up/down migration execution
  • πŸ”₯ Firebase Integration - Firebase Admin SDK integration with service account authentication
  • πŸ’Ύ Backup & Restore - Automatic JSON backups with restore capability
  • πŸ“¦ EntityService - Type-safe CRUD operations helper
  • πŸ–₯️ Complete CLI - msr-firebase command with all standard operations
  • πŸ“˜ TypeScript Support - Full type safety with interfaces and generics
  • πŸ§ͺ Emulator Support - Firebase Emulator testing workflow
  • βœ… Checksum Validation - Detect modified migrations
  • 🎯 Path Prefixing - Multi-environment database support with shift configuration

Community & Support


Made in Ukraine