Firebase Extensions help you reduce time spent on development, maintenance,
and growth of your app.

When you find a Firebase Extension that solves a need for your app
or project, all you do is install and configure the extension. If you need
multiple configurations of the extension, you can install the extension multiple
times, with a different configuration for each instance you install.

With extensions,
you don't spend time researching, writing, and debugging the code that
implements functionality or automates a task for your app or project.

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).

To install an extension, you must upgrade your project to the
[pay-as-you-go Blaze pricing plan](https://firebase.google.com/pricing.md.txt).
Although there's no charge for installing an extension, you might be charged
for your use of Firebase services or Cloud services (such as
[Cloud Secret Manager](https://cloud.google.com/secret-manager/pricing)),
if your usage exceeds the services' free tier.

> [!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.

You can also evaluate extensions before installing them on a project using the
Extensions emulator, a component of the Firebase Local Emulator Suite.

## Official Firebase extensions

The **official Firebase extensions** are developed and tested by Firebase
and Firebase Extensions partner services. These extensions are reliable and
secure.

### Browse Firebase extensions

Browse Firebase extensions in the [Extensions Hub](https://extensions.dev/extensions).

## View the source code of an extension

To find a link to the source code for an extension,
click **Learn more** on the extension's card in the Extensions Hub.

### Contents of an extension's source code

An extension's source directory includes:

- **extension.yaml file** --- Contains the extension's metadata and defines
  the [resources](https://firebase.google.com/docs/extensions/overview-use-extensions.md.txt#resources) created, the Google APIs and
  [access roles](https://firebase.google.com/docs/extensions/permissions-granted-to-extension.md.txt) required for
  operation, and any user-configured parameters (environment variables) for the
  extension

- **functions directory** --- Contains the files for the source code for the
  extension

- **README file** --- Lists the extension's metadata (but in more
  human-readable format) as well as the content from the PREINSTALL file

- **PREINSTALL file** --- Describes how the extension works, any necessary
  pre-installation tasks, configuration requirements, and details about the
  extension

- **POSTINSTALL file** --- Describes specific usage instructions and any further
  integration requirements

## Resources for an extension

Every Firebase project contains several types of "resources". Project resources
can include things like deployed Cloud Functions, database instances,
Cloud Storage buckets, Cloud Scheduler jobs, and Cloud Secret Manager data.

When you install an extension, Firebase creates new *extension-instance-specific*
resources in your project. These resources are required by the extension to
operate.

Note that, if you [uninstall an instance of an
extension](https://firebase.google.com/docs/extensions/manage-installed-extensions#uninstall), all the
resources that Firebase created specifically for that instance of the extension
to operate (like a set of functions) are deleted. 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.

## Using the Firebase console, the Firebase CLI, or autogenerated SDKs {: #console-vs-cli}

You can install and manage extensions using
either the
[Firebase console](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=console)
or the
[Firebase CLI](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=cli),
or in code using
[autogenerated SDKs](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=sdk).

| **Action** | **Firebase console** | **Firebase CLI** | **Autogenerated SDK** |
|---|---|---|---|
| View detailed information (pre-installation) | Yes | Yes | Yes |
| Install | Yes | Yes | Yes |
| View configuration (post-installation) | Yes | No | Yes |
| Edit configuration | Yes | Yes | Yes |
| Update version | Yes | Yes | Yes |
| Uninstall | Yes | Yes | Yes |

## Next Steps

- View detailed information about an extension before you install the extension
  ([Extensions Hub](https://extensions.dev/extensions) or
  [Firebase CLI](https://firebase.google.com/docs/extensions/install-extensions.md.txt#view-details)).

- Install an extension into your Firebase project using either the
  [Firebase console](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=console),
  the [Firebase CLI](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=cli).
  or [autogenerated SDKs](https://firebase.google.com/docs/extensions/install-extensions.md.txt?platform=sdk).