or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

appdistribution.mdapphosting.mdapps.mdapptesting.mdauthentication.mdcrashlytics.mddatabase.mddataconnect.mddeployment.mdemulators.mdexperiments.mdextensions.mdfirestore.mdfunctions.mdhosting.mdindex.mdlocaldev.mdprojects.mdremoteconfig.mdtargets.mdutilities.md
tile.json

extensions.mddocs/

Extensions

Firebase Extensions marketplace and management for installing, configuring, and managing pre-built solutions that extend Firebase functionality.

Capabilities

Install Extension

Installs a Firebase Extension from the marketplace or custom source.

/**
 * Install Firebase Extension
 * @param extensionName - Extension name or source
 * @param options - Installation options
 * @returns Promise resolving when extension is installed
 */
function install(
  extensionName: string,
  options?: Options & {
    /** Instance ID for the extension */
    instanceId?: string;
    /** Extension parameters */
    params?: Record<string, any>;
    /** Parameters file path */
    paramsFile?: string;
    /** Auto-approve installation */
    force?: boolean;
  }
): Promise<{
  name: string;
  instanceId: string;
  config: {
    name: string;
    createTime: string;
    updateTime: string;
    state: string;
  };
}>;

Usage Examples:

const client = require("firebase-tools");

// Install extension from marketplace
await client.ext.install("firebase/storage-resize-images", {
  project: "my-project",
  instanceId: "resize-images-prod"
});

// Install with custom parameters
await client.ext.install("firebase/firestore-send-email", {
  project: "my-project",
  instanceId: "send-email",
  params: {
    SMTP_CONNECTION_URI: "smtps://username:password@smtp.gmail.com:465",
    DEFAULT_FROM: "noreply@myapp.com",
    DEFAULT_REPLY_TO: "support@myapp.com"
  }
});

// Install with parameters from file
await client.ext.install("firebase/firestore-translate-text", {
  project: "my-project",
  paramsFile: "./translate-config.env",
  force: true
});

List Extensions

Lists all installed extensions in the project.

/**
 * List installed Firebase Extensions
 * @param options - Command options
 * @returns Promise resolving to array of extension information
 */
function list(options?: Options): Promise<Array<{
  name: string;
  instanceId: string;
  createTime: string;
  updateTime: string;
  state: "DEPLOYING" | "ACTIVE" | "PAUSED" | "ERRORED";
  config: {
    name: string;
    displayName: string;
    description: string;
    version: string;
  };
  serviceAccountEmail: string;
  errorStatus?: string;
}>>;

Usage Examples:

// List all installed extensions
const extensions = await client.ext.list({
  project: "my-project"
});

console.log("Installed extensions:");
extensions.forEach(ext => {
  console.log(`- ${ext.config.displayName} (${ext.instanceId}): ${ext.state}`);
});

Get Extension Info

Gets detailed information about an extension from the marketplace.

/**
 * Get extension information from marketplace
 * @param extensionName - Extension name to get info for
 * @param options - Command options
 * @returns Promise resolving when information is displayed
 */
function info(
  extensionName: string,
  options?: Options
): Promise<void>;

Usage Examples:

// Get extension info
await client.ext.info("firebase/storage-resize-images");

// Get info for specific version
await client.ext.info("firebase/firestore-send-email@0.1.7");

Configure Extension

Reconfigures an installed extension's parameters.

/**
 * Configure installed extension
 * @param options - Configuration options
 * @returns Promise resolving when extension is reconfigured
 */
function configure(options: Options & {
  /** Instance ID of extension to configure */
  instanceId: string;
  /** New parameters */
  params?: Record<string, any>;
  /** Parameters file path */
  paramsFile?: string;
}): Promise<void>;

Usage Examples:

// Reconfigure extension parameters
await client.ext.configure({
  project: "my-project",
  instanceId: "resize-images-prod",
  params: {
    IMG_SIZES: "200x200,400x400,800x800",
    IMG_TYPE: "webp"
  }
});

Update Extension

Updates an installed extension to a newer version.

/**
 * Update installed extension
 * @param options - Update options
 * @returns Promise resolving when extension is updated
 */
function update(options: Options & {
  /** Instance ID of extension to update */
  instanceId: string;
  /** Specific version to update to */
  version?: string;
  /** Auto-approve update */
  force?: boolean;
}): Promise<void>;

Usage Examples:

// Update to latest version
await client.ext.update({
  project: "my-project",
  instanceId: "send-email"
});

// Update to specific version
await client.ext.update({
  project: "my-project",
  instanceId: "resize-images-prod",
  version: "0.2.1",
  force: true
});

Uninstall Extension

Removes an installed extension from the project.

/**
 * Uninstall Firebase Extension
 * @param options - Uninstall options
 * @returns Promise resolving when extension is uninstalled
 */
function uninstall(options: Options & {
  /** Instance ID of extension to uninstall */
  instanceId: string;
  /** Force uninstall without confirmation */
  force?: boolean;
}): Promise<void>;

Usage Examples:

// Uninstall extension
await client.ext.uninstall({
  project: "my-project",
  instanceId: "old-extension",
  force: true
});

Export Extension Configuration

Exports extension configurations for backup or migration.

/**
 * Export extension configurations
 * @param options - Export options
 * @returns Promise resolving when configuration is exported
 */
function exportConfig(options?: Options & {
  /** Output file path */
  output?: string;
}): Promise<void>;

Usage Examples:

// Export all extension configs
await client.ext.export({
  project: "my-project",
  output: "./extensions-config.json"
});

Extension SDK

Install Extension SDK

Installs the Firebase Extensions SDK for custom extension development.

/**
 * Install Firebase Extensions SDK
 * @param options - SDK installation options
 * @returns Promise resolving when SDK is installed
 */
function sdkInstall(options?: Options): Promise<void>;

Usage Examples:

// Install Extensions SDK
await client.ext.sdk.install();

Extension Development

Initialize Extension

Initializes a new extension development project.

/**
 * Initialize extension development project
 * @param options - Initialization options
 * @returns Promise resolving when project is initialized
 */
function devInit(options?: Options & {
  /** Extension template to use */
  template?: string;
}): Promise<void>;

List Developer Extensions

Lists extensions published by the authenticated developer.

/**
 * List developer-published extensions
 * @param options - Command options
 * @returns Promise resolving to array of extension information
 */
function devList(options?: Options): Promise<Array<{
  name: string;
  displayName: string;
  description: string;
  version: string;
  state: string;
  createTime: string;
  updateTime: string;
}>>;

Register Extension

Registers a new extension with Firebase Extensions marketplace.

/**
 * Register extension with marketplace
 * @param options - Registration options
 * @returns Promise resolving when extension is registered
 */
function devRegister(options: Options & {
  /** Extension source directory */
  source: string;
}): Promise<void>;

Upload Extension

Uploads a new version of an extension.

/**
 * Upload extension version
 * @param options - Upload options
 * @returns Promise resolving when extension is uploaded
 */
function devUpload(options: Options & {
  /** Extension source directory */
  source: string;
  /** Version number */
  version?: string;
}): Promise<void>;

Deprecate Extension

Marks an extension version as deprecated.

/**
 * Deprecate extension version
 * @param extensionName - Extension name to deprecate
 * @param options - Deprecation options
 * @returns Promise resolving when extension is deprecated
 */
function devDeprecate(
  extensionName: string,
  options?: Options & {
    /** Specific version to deprecate */
    version?: string;
    /** Deprecation message */
    message?: string;
  }
): Promise<void>;

Undeprecate Extension

Removes deprecation status from an extension version.

/**
 * Undeprecate extension version
 * @param extensionName - Extension name to undeprecate
 * @param options - Undeprecation options
 * @returns Promise resolving when extension is undeprecated
 */
function devUndeprecate(
  extensionName: string,
  options?: Options & {
    /** Specific version to undeprecate */
    version?: string;
  }
): Promise<void>;

Get Extension Usage

Retrieves usage statistics for a published extension.

/**
 * Get extension usage statistics
 * @param extensionName - Extension name to get usage for
 * @param options - Usage options
 * @returns Promise resolving when usage is displayed
 */
function devUsage(
  extensionName: string,
  options?: Options
): Promise<void>;

Development Examples:

// Initialize extension project
await client.ext.dev.init({
  template: "functions"
});

// List your published extensions
const myExtensions = await client.ext.dev.list();

// Upload new version
await client.ext.dev.upload({
  source: "./my-extension",
  version: "1.2.0"
});

// Deprecate old version
await client.ext.dev.deprecate("my-org/my-extension", {
  version: "1.0.0",
  message: "Please upgrade to version 1.2.0"
});

// Get usage stats
await client.ext.dev.usage("my-org/my-extension");

Popular Extensions

Firebase Official Extensions

  • storage-resize-images: Automatically resize uploaded images
  • firestore-send-email: Send emails triggered by Firestore writes
  • firestore-translate-text: Translate text in Firestore documents
  • storage-extract-image-text: Extract text from images using OCR
  • firestore-counter: Efficiently maintain counter fields
  • auth-mailchimp-sync: Sync user data with Mailchimp
  • firestore-bigquery-export: Export Firestore data to BigQuery
  • rtdb-limit-child-nodes: Limit child nodes in Realtime Database

Community Extensions

Extensions published by third-party developers covering various use cases like payments, analytics, content management, and integrations.