To install or manage extensions, you must be assigned one of these roles:
[Owner or Editor](https://firebase.google.com/docs/projects/iam/roles-basic.md.txt) or
[Firebase Admin](https://firebase.google.com/docs/projects/iam/roles-predefined-all-products.md.txt).
<button value="console" default="">Firebase console</button> <button value="cli">Firebase CLI</button> <button value="sdk">Autogenerated SDK</button>

<br />

## List a project's installed extension instances

You can list every instance of the extensions you installed.

Run the extensions-list command:

```
firebase ext:list --project=projectId-or-alias
```

## View details and configuration of an installed extension instance

1. Go to your [Firebase Extensions dashboard](https://console.firebase.google.com/project/_/extensions/) in the Firebase console.

2. On the installed extension instance's card, click **Manage**.

## Monitor an installed extension instance

In the Firebase console, you can monitor the activity of an installed
extension, including checks on its health, usage, and logs.

### Set budget alerts and spend caps

Setting budget alerts and spend caps is a good practice in general, but these
are especially important when you're trusting another party's code to run in
your project.

> [!CAUTION]
> Since Firebase Extensions requires that your project be on the Blaze pricing plan, we strongly recommend that you set up [**budget alerts**](https://firebase.google.com/docs/projects/billing/budget-alerts.md.txt) and [**spend caps on *Cloud Run functions***](https://firebase.google.com/docs/projects/billing/spend-caps.md.txt). Firebase Extensions relies on Cloud Run functions, so a spend cap on Cloud Run functions is essentially a spend cap on Firebase Extensions, too.

### View functions created by extensions

1. Go to your [Functions dashboard](https://console.firebase.google.com/project/_/functions/list) of the Firebase console.

2. In the *Dashboard* tab, you can view the functions from
   Firebase Extensions (alongside any other functions that you've deployed
   for your project).

   Functions created by extensions have names, in the format:
   `ext-extension-instance-id-functionName`

   For example: `ext-awesome-task-simplifier-onUserCreate`

### View Cloud Scheduler jobs created by extensions

1. Open your project's [Cloud Scheduler](https://console.cloud.google.com/cloudscheduler?project=_) page
   in the Google Cloud console.

2. In the Jobs list, you can view the Cloud Scheduler jobs from
   Firebase Extensions (alongside any other jobs you've created for your
   project).

   Jobs created by extensions have names in the format:
   `firebase-ext-extension-instance-id-functionName`

   For example: `firebase-ext-awesome-task-simplifier-doTask`

### View and manage Cloud Tasks enqueued by extensions

Some extensions use [Cloud Tasks](https://cloud.google.com/tasks/docs/)
to run longer-running tasks: most commonly, processing tasks that run at various
points in an extension's lifecycle---installation, reconfiguration, and
after upgrades.

Normally, these tasks run and complete automatically, without your intervention.
However, if you ever need to manually manage an extension's queued
tasks---for example, to pause the queue or remove from the queue a task that
hasn't started yet---follow these steps:

1. In the Firebase console [Extensions](https://console.firebase.google.com/project/_/extensions)
   section, open the extension instance's details page.

2. On the details page, open the **APIs and resources** section. If the
   extension uses Cloud Tasks, there will be a **Cloud Task queues** section
   with one or more entries.

3. Click **View queue** for the queue you want to manage. This will open the
   Queue Details page in the Google Cloud console, from which you can view
   queued tasks, pause the queue, remove tasks from the queue, and so on. See
   [Manage queues and tasks](https://cloud.google.com/tasks/docs/deleting-appengine-queues-and-tasks)
   in the Cloud Tasks documentation.

   > [!NOTE]
   > **Note:** You can pause a queue, but if you leave it paused for too long, tasks might fail with authentication errors when you resume the queue. (Task authentication expires an hour after it joins the queue.)

   <br />

   > [!WARNING]
   > **Warning:** Don't delete the queue; the extension needs it to operate. If you accidentally delete the queue, you'll have to do the following:
   >
   > <br />
   >
   > 1. Install a new instance of the extension.
   > 2. Only after installing the new instance, uninstall the old instance.

### View Cloud Secret Manager secrets created by extensions

1. Open your project's [Secret Manager](https://console.cloud.google.com/security/secret-manager?project=_) page
   in the Google Cloud console.

2. In the Secrets list, you can view the secrets created for
   Firebase Extensions (alongside any other secrets you've created for your
   project).

   Secrets created by extensions have names in the format:
   `ext-extension-instance-id-paramnName`

   For example: `ext-awesome-task-simplifier-API_KEY`

   Secrets are labeled with the key `firebase-extensions-managed`. Don't remove
   this label unless you want to stop Firebase from managing the secret.

### Check if an installed extension is healthy

You can review all the errors from functions (including those created by
Firebase Extensions) in the console.

1. In the *Health* tab of your [Functions dashboard](https://console.firebase.google.com/project/_/functions/list), you can
   view an overview of errors and performance information for all functions in
   your project.

2. To view information for a specific extension, use the filter at the top of
   the page to select a specific function.

### Check how often an installed extension is running

1. In the *Dashboard* tab of your [Functions dashboard](https://console.firebase.google.com/project/_/functions/list),
   locate the specific function for the Firebase Extension that
   you want to check.

2. Click (the overflow menu) on
   the far right-side of the entry, then select **Detailed usage stats**.

3. In the displayed Google Cloud console, you can drill down into various
   invocations of a function and even inspect its source code.

### View the logs for an extension

If you're trying to debug your project, or submit a bug report to Firebase, it's
useful to view logs of the functions running in your project.

In the *Logs* tab of your [Functions dashboard](https://console.firebase.google.com/project/_/functions/list), use the filter at the
top of the page to select the functions created by your extension.

## Update an installed extension instance to the latest version

You can update an installed instance of an extension to its latest released
version. You might want to update an installed instance because the instance is
already actively running or set up in your testing, project, or app workflow.

> [!NOTE]
> **Note:** If you installed an extension using an auto-generated SDK, use the same method to upgrade it, and not the console or CLI.

When you update an instance, all the instance's extension-specific resources and
logic is overwritten to use the new version's source code and files. The
extension's instance ID and service account will not change.

During the update process, you'll be notified of any changes for the new
version, and you'll be able to specify values for any new parameters.

1. Go to your [Firebase Extensions dashboard](https://console.firebase.google.com/project/_/extensions/), then on the installed
   extension instance's card, click **Manage**.

2. In the upper-right corner, click **Update extension**.

   If the extension doesn't have an available new version, the details page
   won't have an update button.
3. Review what's new in the update and configure the extension (if needed).

4. Click **Update extension**.

## Reconfigure an installed extension instance

You can change the values of the user-configured parameters for an installed
extension instance. These new values will be used in any *future* triggers of the
instance, but all previous artifacts or structural elements created by the
extension (like stored images or existing storage buckets) will not be changed.

> [!NOTE]
> **Note:** If you installed an extension using an auto-generated SDK, use the same method to reconfigure it, and not the console or CLI.

1. Go to your [Firebase Extensions dashboard](https://console.firebase.google.com/project/_/extensions/), then on the installed extension
   instance's card, click **Manage**.

2. In the upper-right corner, click **Reconfigure extension**.

3. Follow the on-screen instructions to reconfigure the parameter values
   for your extension.

4. Click **Save**.

> [!NOTE]
> **Note:** Saving changes for an extension may take the system 3-5 minutes.

## Uninstall an extension instance

You can uninstall an instance of an extension from your Firebase project. This action deletes
the
[service account](https://firebase.google.com/docs/extensions/permissions-granted-to-extension.md.txt#uninstall-extension)
and all the [resources](https://firebase.google.com/docs/extensions/overview-use-extensions.md.txt#resources)
(like a set of functions) that Firebase created specifically for that instance
of the extension. However, the following are ***not*** deleted:

- Any artifacts created by the extension (like stored images).

- Any other resources in your project, like a database instance or Cloud Storage
  bucket. Even if the extension interacted with these other resources, they
  are not *extension-specific*, so they aren't deleted if the extension is
  uninstalled.

Here's how to uninstall an extension:

1. Go to your [Firebase Extensions dashboard](https://console.firebase.google.com/project/_/extensions/), then on the installed extension
   instance's card, click **Manage**.

2. At the bottom of the screen, click **Uninstall extension**.

3. Review what will be deleted, then click **Uninstall extension** to confirm
   the deletion.

> [!NOTE]
> **Note:** If you installed the extension using the autogenerated SDK, be sure to also remove the instance configuration from your Cloud Functions code.