Firebase Extensions marketplace and management for installing, configuring, and managing pre-built solutions that extend Firebase functionality.
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
});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}`);
});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");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"
}
});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
});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
});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"
});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();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>;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;
}>>;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>;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>;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>;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>;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");Extensions published by third-party developers covering various use cases like payments, analytics, content management, and integrations.