Firebase JavaScript library for web and Node.js applications providing authentication, databases, storage, analytics, messaging, and other backend services
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Core Firebase app initialization and management functionality. Every Firebase service requires an initialized app instance.
Initialize a Firebase app with configuration options.
/**
* Creates and initializes a Firebase app instance
* @param options - Firebase configuration object
* @param name - Optional app name for multiple apps
* @returns Initialized Firebase app instance
*/
function initializeApp(options: FirebaseOptions, name?: string | FirebaseAppSettings): FirebaseApp;
/**
* Initialize a Firebase app for server-side use
* @param options - Firebase configuration or existing app
* @param config - Server-specific configuration
* @returns Server Firebase app instance
*/
function initializeServerApp(options: FirebaseOptions | FirebaseApp, config?: FirebaseServerAppSettings): FirebaseServerApp;
interface FirebaseOptions {
/** Firebase API key */
apiKey?: string;
/** Authentication domain */
authDomain?: string;
/** Realtime Database URL */
databaseURL?: string;
/** Cloud Firestore project ID */
projectId?: string;
/** Storage bucket URL */
storageBucket?: string;
/** Cloud Messaging sender ID */
messagingSenderId?: string;
/** Firebase app ID */
appId?: string;
/** Analytics measurement ID */
measurementId?: string;
}
interface FirebaseAppSettings {
name?: string;
automaticDataCollectionEnabled?: boolean;
}
interface FirebaseServerAppSettings {
authIdToken?: string;
appCheckToken?: string;
releaseOnDeref?: boolean;
}
interface FirebaseApp {
/** App name identifier */
readonly name: string;
/** App configuration options */
readonly options: FirebaseOptions;
/** Whether automatic data collection is enabled */
automaticDataCollectionEnabled: boolean;
}
interface FirebaseServerApp extends FirebaseApp {
/** Server-specific properties */
readonly settings: FirebaseServerAppSettings;
}Usage Examples:
import { initializeApp } from 'firebase/app';
// Basic initialization
const firebaseConfig = {
apiKey: "AIzaSyC...",
authDomain: "my-project.firebaseapp.com",
projectId: "my-project",
storageBucket: "my-project.appspot.com",
messagingSenderId: "123456789",
appId: "1:123456789:web:abcdef"
};
const app = initializeApp(firebaseConfig);
// Named app for multiple projects
const secondaryApp = initializeApp(firebaseConfig, "secondary");
// Server-side initialization
import { initializeServerApp } from 'firebase/app';
const serverApp = initializeServerApp(firebaseConfig, {
authIdToken: 'user-auth-token',
releaseOnDeref: true
});Retrieve and manage existing Firebase app instances.
/**
* Retrieves an existing Firebase app instance
* @param name - Optional app name, defaults to '[DEFAULT]'
* @returns Firebase app instance
* @throws FirebaseError if app doesn't exist
*/
function getApp(name?: string): FirebaseApp;
/**
* Returns array of all initialized Firebase apps
* @returns Array of all Firebase app instances
*/
function getApps(): FirebaseApp[];
/**
* Deletes a Firebase app and frees associated resources
* @param app - Firebase app instance to delete
* @returns Promise that resolves when deletion is complete
*/
function deleteApp(app: FirebaseApp): Promise<void>;Usage Examples:
import { getApp, getApps, deleteApp } from 'firebase/app';
// Get default app
const app = getApp();
// Get named app
const secondaryApp = getApp('secondary');
// List all apps
const allApps = getApps();
console.log(`${allApps.length} Firebase apps initialized`);
// Clean up app when done
await deleteApp(secondaryApp);Configure logging and register library versions.
/**
* Registers a library version for telemetry and debugging
* @param libraryKeyOrName - Library identifier
* @param version - Library version string
* @param variant - Optional variant identifier
*/
function registerVersion(libraryKeyOrName: string, version: string, variant?: string): void;
/**
* Sets a custom log handler for Firebase SDK logs
* @param logCallback - Function to handle log messages, null to reset
* @param options - Optional logging configuration
*/
function onLog(logCallback: LogCallback | null, options?: LogOptions): void;
/**
* Sets the log level for all Firebase SDKs
* @param logLevel - Minimum log level to output
*/
function setLogLevel(logLevel: LogLevelString): void;
type LogCallback = (callbackParams: LogCallbackParams) => void;
type LogLevelString = 'debug' | 'verbose' | 'info' | 'warn' | 'error' | 'silent';
interface LogCallbackParams {
level: LogLevelString;
message: string;
args: any[];
type: string;
}
interface LogOptions {
level?: LogLevelString;
}Usage Examples:
import { registerVersion, onLog, setLogLevel } from 'firebase/app';
// Register custom library version
registerVersion('my-firebase-wrapper', '2.1.0', 'react');
// Set up custom logging
onLog((params) => {
console.log(`[${params.level}] ${params.message}`, ...params.args);
}, { level: 'debug' });
// Set global log level
setLogLevel('warn'); // Only show warnings and errors/** Current Firebase SDK version */
const SDK_VERSION: string;class FirebaseError extends Error {
/** Error code identifying the specific error */
readonly code: string;
/** Human-readable error message */
readonly message: string;
/** Error name, typically 'FirebaseError' */
readonly name: string;
/** Optional additional error details */
readonly customData?: Record<string, unknown>;
}Firebase supports multiple app instances for complex applications:
import { initializeApp, getApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
// Primary app
const primaryApp = initializeApp(primaryConfig);
const primaryAuth = getAuth(primaryApp);
const primaryDb = getFirestore(primaryApp);
// Secondary app for different project
const secondaryApp = initializeApp(secondaryConfig, 'secondary');
const secondaryAuth = getAuth(secondaryApp);
const secondaryDb = getFirestore(secondaryApp);
// Access apps later
const primary = getApp(); // Default app
const secondary = getApp('secondary'); // Named appFirebase automatically detects the runtime environment and configures itself appropriately for:
No additional configuration is typically required for environment-specific behavior.