DEV Community

Madhan Gannarapu
Madhan Gannarapu

Posted on

Firebase & FlutterFire Recommended Multi-Account Setup

Overview

This guide describes the recommended setup for developers working with:

  • Personal Firebase Projects (personal@gmail.com)
  • Company Firebase Projects (employee@company.com)

The goal is to:

  • Avoid frequent login/logout cycles
  • Switch accounts quickly
  • Manage multiple Firebase environments
  • Keep FlutterFire configuration simple
  • Use an officially supported Firebase workflow

Architecture

Google Accounts
├── personal@gmail.com
└── employee@company.com

Firebase CLI
├── login:add
├── login:list
└── login:use

Firebase Projects
├── personal-app
├── company-dev
├── company-qa
└── company-prod

Project Aliases
├── dev
├── qa
└── prod

Shell Aliases
├── firebase-personal
└── firebase-company
Enter fullscreen mode Exit fullscreen mode

Step 1: Install Firebase CLI

Install:

npm install -g firebase-tools
Enter fullscreen mode Exit fullscreen mode

Verify:

firebase --version
Enter fullscreen mode Exit fullscreen mode

Step 2: Install FlutterFire CLI

Install:

dart pub global activate flutterfire_cli
Enter fullscreen mode Exit fullscreen mode

Verify:

flutterfire --version
Enter fullscreen mode Exit fullscreen mode

Step 3: Add Multiple Firebase Accounts

Add Personal Account

firebase login:add
Enter fullscreen mode Exit fullscreen mode

Select:

personal@gmail.com
Enter fullscreen mode Exit fullscreen mode

Add Company Account

firebase login:add
Enter fullscreen mode Exit fullscreen mode

Select:

employee@company.com
Enter fullscreen mode Exit fullscreen mode

Verify Accounts

firebase login:list
Enter fullscreen mode Exit fullscreen mode

Example:

✔ personal@gmail.com
✔ employee@company.com
Enter fullscreen mode Exit fullscreen mode

Step 4: Create Shell Aliases

Instead of typing long email addresses repeatedly, create aliases.

Open:

nano ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Add:

alias firebase-personal="firebase login:use personal@gmail.com"
alias firebase-company="firebase login:use employee@company.com"
Enter fullscreen mode Exit fullscreen mode

Reload:

source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Step 5: Test Account Switching

Switch to personal account:

firebase-personal
Enter fullscreen mode Exit fullscreen mode

Verify:

firebase projects:list
Enter fullscreen mode Exit fullscreen mode

Switch to company account:

firebase-company
Enter fullscreen mode Exit fullscreen mode

Verify:

firebase projects:list
Enter fullscreen mode Exit fullscreen mode

Step 6: Configure Firebase Project Aliases

Navigate to your Flutter project:

cd my-project
Enter fullscreen mode Exit fullscreen mode

Add development project:

firebase use --add
Enter fullscreen mode Exit fullscreen mode

Example:

Project:
company-dev

Alias:
dev
Enter fullscreen mode Exit fullscreen mode

Add QA project:

firebase use --add
Enter fullscreen mode Exit fullscreen mode

Example:

Project:
company-qa

Alias:
qa
Enter fullscreen mode Exit fullscreen mode

Add Production project:

firebase use --add
Enter fullscreen mode Exit fullscreen mode

Example:

Project:
company-prod

Alias:
prod
Enter fullscreen mode Exit fullscreen mode

Generated file:

.firebaserc
Enter fullscreen mode Exit fullscreen mode

Example:

{
  "projects": {
    "dev": "company-dev",
    "qa": "company-qa",
    "prod": "company-prod"
  }
}
Enter fullscreen mode Exit fullscreen mode

Step 7: Verify Project Aliases

Switch environment:

firebase use dev
Enter fullscreen mode Exit fullscreen mode

or

firebase use qa
Enter fullscreen mode Exit fullscreen mode

or

firebase use prod
Enter fullscreen mode Exit fullscreen mode

Check active project:

firebase use
Enter fullscreen mode Exit fullscreen mode

Step 8: Generate FlutterFire Configurations

Development:

flutterfire configure \
  --project=company-dev \
  --out=lib/firebase_options_dev.dart
Enter fullscreen mode Exit fullscreen mode

QA:

flutterfire configure \
  --project=company-qa \
  --out=lib/firebase_options_qa.dart
Enter fullscreen mode Exit fullscreen mode

Production:

flutterfire configure \
  --project=company-prod \
  --out=lib/firebase_options_prod.dart
Enter fullscreen mode Exit fullscreen mode

Result:

lib/
├── firebase_options_dev.dart
├── firebase_options_qa.dart
└── firebase_options_prod.dart
Enter fullscreen mode Exit fullscreen mode

Step 9: Configure Firebase Initialization

Example:

import 'firebase_options_dev.dart' as dev;
import 'firebase_options_prod.dart' as prod;

const isProd = bool.fromEnvironment('PROD');

await Firebase.initializeApp(
  options: isProd
      ? prod.DefaultFirebaseOptions.currentPlatform
      : dev.DefaultFirebaseOptions.currentPlatform,
);
Enter fullscreen mode Exit fullscreen mode

Daily Workflow

Working on Personal Project

Switch account:

firebase-personal
Enter fullscreen mode Exit fullscreen mode

Verify projects:

firebase projects:list
Enter fullscreen mode Exit fullscreen mode

Configure FlutterFire if required:

flutterfire configure
Enter fullscreen mode Exit fullscreen mode

Working on Company Development Environment

Switch account:

firebase-company
Enter fullscreen mode Exit fullscreen mode

Switch environment:

firebase use dev
Enter fullscreen mode Exit fullscreen mode

Verify:

firebase use
Enter fullscreen mode Exit fullscreen mode

Run:

flutterfire configure
Enter fullscreen mode Exit fullscreen mode

Working on Company QA Environment

firebase-company
firebase use qa
Enter fullscreen mode Exit fullscreen mode

Working on Company Production Environment

firebase-company
firebase use prod
Enter fullscreen mode Exit fullscreen mode

Troubleshooting

Show Logged-In Accounts

firebase login:list
Enter fullscreen mode Exit fullscreen mode

Show Available Projects

firebase projects:list
Enter fullscreen mode Exit fullscreen mode

Show Current Active Project

firebase use
Enter fullscreen mode Exit fullscreen mode

Remove an Account

firebase logout employee@company.com
Enter fullscreen mode Exit fullscreen mode

Why This Setup Is Recommended

Firebase Multi-Account Support

Uses Firebase's officially supported mechanism:

firebase login:add
Enter fullscreen mode Exit fullscreen mode

Benefits:

  • Multiple Google accounts supported
  • No repeated browser authentication
  • Secure credential management
  • Works across all Firebase CLI commands

Shell Aliases

Provides faster switching:

firebase-personal
firebase-company
Enter fullscreen mode Exit fullscreen mode

instead of:

firebase login:use personal@gmail.com
firebase login:use employee@company.com
Enter fullscreen mode Exit fullscreen mode

Benefits:

  • Faster workflow
  • Less typing
  • Fewer mistakes

Final Recommendation

Use:

  1. Firebase Multi-Account Support
firebase login:add
Enter fullscreen mode Exit fullscreen mode
  1. Firebase Project Aliases
firebase use --add
Enter fullscreen mode Exit fullscreen mode
  1. Shell Aliases
alias firebase-personal="firebase login:use personal@gmail.com"
alias firebase-company="firebase login:use employee@company.com"
Enter fullscreen mode Exit fullscreen mode

This combination provides:

  • Official Firebase account management
  • Fast account switching
  • Environment management (Dev / QA / Prod)
  • FlutterFire compatibility
  • Minimal maintenance

Interactive shell scripts are optional and are only worth adding if you switch accounts and environments many times throughout the day.

Top comments (0)