---
description: Unofficial Capacitor plugin for Firebase Remote Config SDK to manage app configurations and feature flags remotely.
title: Capacitor Remote Config Plugin for Android, iOS & Web - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/firebase/remote-config.png
---

<!doctype html> 

[Skip to content ](#capacitor-firebaseremote-config) 

[🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ SDKs ](/docs/sdks/)
* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Demo ](#demo)
* [ Starter templates ](#starter-templates)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Demo ](#demo)
* [ Starter templates ](#starter-templates)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# @capacitor-firebase/remote-config[¶](#capacitor-firebaseremote-config "Permanent link")

Unofficial Capacitor plugin for [Firebase Remote Config](https://firebase.google.com/docs/remote-config).[1](#fn:1)

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Use Cases[¶](#use-cases "Permanent link")

The Firebase Remote Config plugin is typically used to change the behavior and appearance of your app without publishing an app update, for example:

* **Feature flags**: Roll out new features gradually by toggling boolean parameters remotely.
* **Promotions**: Activate sales or promotions remotely, for example via an `is_sale` parameter.
* **Maintenance announcements**: Inform users about upcoming maintenance without releasing a new app version.
* **Real-time updates**: React to configuration changes in real time using the config update listener.
* **Default values**: Provide in-app default values so your app behaves predictably before the first fetch.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 8.x.x          | \>=8.x.x          | Active support |
| 7.x.x          | 7.x.x             | Deprecated     |
| 6.x.x          | 6.x.x             | Deprecated     |
| 5.x.x          | 5.x.x             | Deprecated     |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1)Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-firebase/remote-config` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capacitor-firebase/remote-config firebase
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

Add Firebase to your project if you haven't already ([Android](https://github.com/capawesome-team/capacitor-firebase/blob/main/docs/firebase-setup.md#android) / [iOS](https://github.com/capawesome-team/capacitor-firebase/blob/main/docs/firebase-setup.md#ios) / [Web](https://github.com/capawesome-team/capacitor-firebase/blob/main/docs/firebase-setup.md#web)).

### Android[¶](#android "Permanent link")

Google Analytics is required for the [conditional targeting of app instances](https://firebase.google.com/docs/remote-config/parameters#conditions%5Frules%5Fand%5Fconditional%5Fvalues) to user properties and audiences. Make sure that you install the [Capacitor Firebase Analytics](https://github.com/capawesome-team/capacitor-firebase/blob/main/packages/analytics) plugin in your project.

#### Variables[¶](#variables "Permanent link")

If needed, you can define the following project variable in your app’s `variables.gradle` file to change the default version of the dependency:

* `$firebaseConfigVersion` version of `com.google.firebase:firebase-config` (default: `23.0.1`)

This can be useful if you encounter dependency conflicts with other plugins in your project.

### iOS[¶](#ios "Permanent link")

#### Swift Package Manager[¶](#swift-package-manager "Permanent link")

Add the following to your `capacitor.config.json` (or `capacitor.config.ts`) to avoid a [SwiftPM package identity collision](https://github.com/capawesome-team/capacitor-firebase/issues/959):

`[](#%5F%5Fcodelineno-3-1){
[](#%5F%5Fcodelineno-3-2)  "experimental": {
[](#%5F%5Fcodelineno-3-3)    "ios": {
[](#%5F%5Fcodelineno-3-4)      "spm": {
[](#%5F%5Fcodelineno-3-5)        "packageOptions": {
[](#%5F%5Fcodelineno-3-6)          "@capacitor-firebase/remote-config": {
[](#%5F%5Fcodelineno-3-7)            "symlink": true
[](#%5F%5Fcodelineno-3-8)          }
[](#%5F%5Fcodelineno-3-9)        }
[](#%5F%5Fcodelineno-3-10)      }
[](#%5F%5Fcodelineno-3-11)    }
[](#%5F%5Fcodelineno-3-12)  }
[](#%5F%5Fcodelineno-3-13)}
`

**Attention**: SPM `packageOptions` support requires Capacitor CLI **8.4.0+**.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Demo[¶](#demo "Permanent link")

A working example can be found here: [robingenz/capacitor-firebase-plugin-demo](https://github.com/robingenz/capacitor-firebase-plugin-demo)

## Starter templates[¶](#starter-templates "Permanent link")

The following starter templates are available:

* [Ionstarter Angular Firebase](https://ionstarter.dev/)

## Usage[¶](#usage "Permanent link")

The following examples show how to fetch and activate the configuration, read configuration values, configure the fetch behavior, and listen for configuration updates in real time.

### Fetch and activate the configuration[¶](#fetch-and-activate-the-configuration "Permanent link")

Fetch the latest configuration from the Remote Config service and activate it to make it available to the getters. Use `fetchAndActivate()` to perform both operations at once. On Android and iOS, you can pass a minimum fetch interval to `fetchConfig(...)`:

`[](#%5F%5Fcodelineno-4-1)import { FirebaseRemoteConfig } from '@capacitor-firebase/remote-config';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const fetchConfig = async () => {
[](#%5F%5Fcodelineno-4-4)  await FirebaseRemoteConfig.fetchConfig({
[](#%5F%5Fcodelineno-4-5)    minimumFetchIntervalInSeconds: 1200,
[](#%5F%5Fcodelineno-4-6)  });
[](#%5F%5Fcodelineno-4-7)};
[](#%5F%5Fcodelineno-4-8)
[](#%5F%5Fcodelineno-4-9)const activate = async () => {
[](#%5F%5Fcodelineno-4-10)  await FirebaseRemoteConfig.activate();
[](#%5F%5Fcodelineno-4-11)};
[](#%5F%5Fcodelineno-4-12)
[](#%5F%5Fcodelineno-4-13)const fetchAndActivate = async () => {
[](#%5F%5Fcodelineno-4-14)  await FirebaseRemoteConfig.fetchAndActivate();
[](#%5F%5Fcodelineno-4-15)};
`

### Read configuration values[¶](#read-configuration-values "Permanent link")

Read the value for a given key as a boolean, number, or string:

`[](#%5F%5Fcodelineno-5-1)import { FirebaseRemoteConfig } from '@capacitor-firebase/remote-config';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const getBoolean = async () => {
[](#%5F%5Fcodelineno-5-4)  const { value } = await FirebaseRemoteConfig.getBoolean({
[](#%5F%5Fcodelineno-5-5)    key: 'is_sale',
[](#%5F%5Fcodelineno-5-6)  });
[](#%5F%5Fcodelineno-5-7)  return value;
[](#%5F%5Fcodelineno-5-8)};
[](#%5F%5Fcodelineno-5-9)
[](#%5F%5Fcodelineno-5-10)const getNumber = async () => {
[](#%5F%5Fcodelineno-5-11)  const { value } = await FirebaseRemoteConfig.getNumber({
[](#%5F%5Fcodelineno-5-12)    key: 'upcoming_maintenance',
[](#%5F%5Fcodelineno-5-13)  });
[](#%5F%5Fcodelineno-5-14)  return value;
[](#%5F%5Fcodelineno-5-15)};
[](#%5F%5Fcodelineno-5-16)
[](#%5F%5Fcodelineno-5-17)const getString = async () => {
[](#%5F%5Fcodelineno-5-18)  const { value } = await FirebaseRemoteConfig.getString({
[](#%5F%5Fcodelineno-5-19)    key: 'license_key',
[](#%5F%5Fcodelineno-5-20)  });
[](#%5F%5Fcodelineno-5-21)  return value;
[](#%5F%5Fcodelineno-5-22)};
`

### Configure the fetch behavior[¶](#configure-the-fetch-behavior "Permanent link")

Set the fetch timeout and the minimum fetch interval. During development, it's recommended to set a relatively low minimum fetch interval:

`[](#%5F%5Fcodelineno-6-1)import { FirebaseRemoteConfig } from '@capacitor-firebase/remote-config';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const setSettings = async () => {
[](#%5F%5Fcodelineno-6-4)  await FirebaseRemoteConfig.setSettings({
[](#%5F%5Fcodelineno-6-5)    fetchTimeoutInSeconds: 10,
[](#%5F%5Fcodelineno-6-6)    minimumFetchIntervalInSeconds: 0,
[](#%5F%5Fcodelineno-6-7)  });
[](#%5F%5Fcodelineno-6-8)};
`

### Listen for configuration updates in real time[¶](#listen-for-configuration-updates-in-real-time "Permanent link")

Add a listener for the config update event to be notified as soon as parameter values change. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-7-1)import { FirebaseRemoteConfig } from '@capacitor-firebase/remote-config';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const addConfigUpdateListener = async () => {
[](#%5F%5Fcodelineno-7-4)  const callbackId = await FirebaseRemoteConfig.addConfigUpdateListener(
[](#%5F%5Fcodelineno-7-5)    (event, error) => {
[](#%5F%5Fcodelineno-7-6)      if (error) {
[](#%5F%5Fcodelineno-7-7)        console.error(error);
[](#%5F%5Fcodelineno-7-8)      } else {
[](#%5F%5Fcodelineno-7-9)        console.log(event);
[](#%5F%5Fcodelineno-7-10)      }
[](#%5F%5Fcodelineno-7-11)    }
[](#%5F%5Fcodelineno-7-12)  );
[](#%5F%5Fcodelineno-7-13)  return callbackId;
[](#%5F%5Fcodelineno-7-14)};
[](#%5F%5Fcodelineno-7-15)
[](#%5F%5Fcodelineno-7-16)const removeConfigUpdateListener = async (callbackId: string) => {
[](#%5F%5Fcodelineno-7-17)  await FirebaseRemoteConfig.removeConfigUpdateListener({
[](#%5F%5Fcodelineno-7-18)    callbackId,
[](#%5F%5Fcodelineno-7-19)  });
[](#%5F%5Fcodelineno-7-20)};
`

### Remove all listeners[¶](#remove-all-listeners "Permanent link")

Remove all listeners that have been added for this plugin:

`[](#%5F%5Fcodelineno-8-1)import { FirebaseRemoteConfig } from '@capacitor-firebase/remote-config';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const removeAllListeners = async () => {
[](#%5F%5Fcodelineno-8-4)  await FirebaseRemoteConfig.removeAllListeners();
[](#%5F%5Fcodelineno-8-5)};
`

## API[¶](#api "Permanent link")

* [activate()](#activate)
* [fetchAndActivate()](#fetchandactivate)
* [fetchConfig(...)](#fetchconfig)
* [getBoolean(...)](#getboolean)
* [getNumber(...)](#getnumber)
* [getString(...)](#getstring)
* [getAll()](#getall)
* [getInfo()](#getinfo)
* [setMinimumFetchInterval(...)](#setminimumfetchinterval)
* [setDefaults(...)](#setdefaults)
* [setSettings(...)](#setsettings)
* [addConfigUpdateListener(...)](#addconfigupdatelistener)
* [removeConfigUpdateListener(...)](#removeconfigupdatelistener)
* [removeAllListeners()](#removealllisteners)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)
* [Enums](#enums)

### activate()[¶](#activate "Permanent link")

`[](#%5F%5Fcodelineno-9-1)activate() => Promise<void>
`

Make the last fetched configuration available to the getters.

**Since:** 1.3.0

---

### fetchAndActivate()[¶](#fetchandactivate "Permanent link")

`[](#%5F%5Fcodelineno-10-1)fetchAndActivate() => Promise<void>
`

Perform fetch and activate operations.

**Since:** 1.3.0

---

### fetchConfig(...)[¶](#fetchconfig "Permanent link")

`[](#%5F%5Fcodelineno-11-1)fetchConfig(options?: FetchConfigOptions | undefined) => Promise<void>
`

Fetch and cache configuration from the Remote Config service.

| Param       | Type                                      |
| ----------- | ----------------------------------------- |
| **options** | [FetchConfigOptions](#fetchconfigoptions) |

**Since:** 1.3.0

---

### getBoolean(...)[¶](#getboolean "Permanent link")

`[](#%5F%5Fcodelineno-12-1)getBoolean(options: GetBooleanOptions) => Promise<GetBooleanResult>
`

Get the value for the given key as a boolean.

| Param       | Type                      |
| ----------- | ------------------------- |
| **options** | [GetOptions](#getoptions) |

**Returns:** `Promise<[GetBooleanResult](#getbooleanresult)>`

**Since:** 1.3.0

---

### getNumber(...)[¶](#getnumber "Permanent link")

`[](#%5F%5Fcodelineno-13-1)getNumber(options: GetNumberOptions) => Promise<GetNumberResult>
`

Get the value for the given key as a number.

| Param       | Type                      |
| ----------- | ------------------------- |
| **options** | [GetOptions](#getoptions) |

**Returns:** `Promise<[GetNumberResult](#getnumberresult)>`

**Since:** 1.3.0

---

### getString(...)[¶](#getstring "Permanent link")

`[](#%5F%5Fcodelineno-14-1)getString(options: GetStringOptions) => Promise<GetStringResult>
`

Get the value for the given key as a string.

| Param       | Type                      |
| ----------- | ------------------------- |
| **options** | [GetOptions](#getoptions) |

**Returns:** `Promise<[GetStringResult](#getstringresult)>`

**Since:** 1.3.0

---

### getAll()[¶](#getall "Permanent link")

`[](#%5F%5Fcodelineno-15-1)getAll() => Promise<GetAllResult>
`

Get all the values from the Remote Config service.

**Returns:** `Promise<[GetAllResult](#getallresult)>`

**Since:** 8.3.0

---

### getInfo()[¶](#getinfo "Permanent link")

`[](#%5F%5Fcodelineno-16-1)getInfo() => Promise<GetInfoResult>
`

Get information about the last fetch operation.

**Returns:** `Promise<[GetInfoResult](#getinforesult)>`

**Since:** 7.5.0

---

### setMinimumFetchInterval(...)[¶](#setminimumfetchinterval "Permanent link")

`[](#%5F%5Fcodelineno-17-1)setMinimumFetchInterval(options: SetMinimumFetchIntervalOptions) => Promise<void>
`

Set the minimum fetch interval.

Only available for Web.

| Param       | Type                                                              |
| ----------- | ----------------------------------------------------------------- |
| **options** | [SetMinimumFetchIntervalOptions](#setminimumfetchintervaloptions) |

**Since:** 1.3.0

---

### setDefaults(...)[¶](#setdefaults "Permanent link")

`[](#%5F%5Fcodelineno-18-1)setDefaults(options: SetDefaultsOptions) => Promise<void>
`

Sets config defaults for parameter keys and values in the default namespace config.

| Param       | Type                                      |
| ----------- | ----------------------------------------- |
| **options** | [SetDefaultsOptions](#setdefaultsoptions) |

**Since:** 8.3.0

---

### setSettings(...)[¶](#setsettings "Permanent link")

`[](#%5F%5Fcodelineno-19-1)setSettings(options: SetSettingsOptions) => Promise<void>
`

Set the remote config settings.

On Android, the settings values are persisted in SharedPreferences.

| Param       | Type                                      |
| ----------- | ----------------------------------------- |
| **options** | [SetSettingsOptions](#setsettingsoptions) |

**Since:** 6.2.0

---

### addConfigUpdateListener(...)[¶](#addconfigupdatelistener "Permanent link")

`[](#%5F%5Fcodelineno-20-1)addConfigUpdateListener(callback: AddConfigUpdateListenerOptionsCallback) => Promise<CallbackId>
`

Add a listener for the config update event.

Only available for Android and iOS.

| Param        | Type                                                                              |
| ------------ | --------------------------------------------------------------------------------- |
| **callback** | [AddConfigUpdateListenerOptionsCallback](#addconfigupdatelisteneroptionscallback) |

**Returns:** `Promise<string>`

**Since:** 5.4.0

---

### removeConfigUpdateListener(...)[¶](#removeconfigupdatelistener "Permanent link")

`[](#%5F%5Fcodelineno-21-1)removeConfigUpdateListener(options: RemoveConfigUpdateListenerOptions) => Promise<void>
`

Remove a listener for the config update event.

Only available for Android and iOS.

| Param       | Type                                                                    |
| ----------- | ----------------------------------------------------------------------- |
| **options** | [RemoveConfigUpdateListenerOptions](#removeconfigupdatelisteneroptions) |

**Since:** 5.4.0

---

### removeAllListeners()[¶](#removealllisteners "Permanent link")

`[](#%5F%5Fcodelineno-22-1)removeAllListeners() => Promise<void>
`

Remove all listeners for this plugin.

**Since:** 5.4.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### FetchConfigOptions[¶](#fetchconfigoptions "Permanent link")

| Prop                              | Type   | Description                                                                                                                                                                                                               | Default | Since |
| --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **minimumFetchIntervalInSeconds** | number | Define the maximum age in seconds of an entry in the config cache before it is considered stale. During development, it's recommended to set a relatively low minimum fetch interval. Only available for Android and iOS. | 43200   | 1.3.0 |

#### GetBooleanResult[¶](#getbooleanresult "Permanent link")

| Prop       | Type                              | Description                                     | Since |
| ---------- | --------------------------------- | ----------------------------------------------- | ----- |
| **value**  | boolean                           | The value for the given key as a boolean.       | 1.3.0 |
| **source** | [GetValueSource](#getvaluesource) | Indicates at which source this value came from. | 1.3.0 |

#### GetOptions[¶](#getoptions "Permanent link")

| Prop    | Type   | Description                  | Since |
| ------- | ------ | ---------------------------- | ----- |
| **key** | string | The key of the value to get. | 1.3.0 |

#### GetNumberResult[¶](#getnumberresult "Permanent link")

| Prop       | Type                              | Description                                     | Since |
| ---------- | --------------------------------- | ----------------------------------------------- | ----- |
| **value**  | number                            | The value for the given key as a number.        | 1.3.0 |
| **source** | [GetValueSource](#getvaluesource) | Indicates at which source this value came from. | 1.3.0 |

#### GetStringResult[¶](#getstringresult "Permanent link")

| Prop       | Type                              | Description                                     | Since |
| ---------- | --------------------------------- | ----------------------------------------------- | ----- |
| **value**  | string                            | The value for the given key as a string.        | 1.3.0 |
| **source** | [GetValueSource](#getvaluesource) | Indicates at which source this value came from. | 1.3.0 |

#### GetAllResult[¶](#getallresult "Permanent link")

| Prop       | Type                                                     | Description              | Since |
| ---------- | -------------------------------------------------------- | ------------------------ | ----- |
| **values** | Record<string, [GetAllResultValue](#getallresultvalue)\> | The values for all keys. | 8.3.0 |

#### GetAllResultValue[¶](#getallresultvalue "Permanent link")

| Prop       | Type                              | Description                                     | Since |
| ---------- | --------------------------------- | ----------------------------------------------- | ----- |
| **value**  | string                            | The value as a string.                          | 8.3.0 |
| **source** | [GetValueSource](#getvaluesource) | Indicates at which source this value came from. | 8.3.0 |

#### GetInfoResult[¶](#getinforesult "Permanent link")

| Prop                | Type                                | Description                                                                                                                      | Since |
| ------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **lastFetchTime**   | number                              | The Unix timestamp in milliseconds of the last successful fetch, or -1 if no fetch has occurred or initialization is incomplete. | 7.5.0 |
| **lastFetchStatus** | [LastFetchStatus](#lastfetchstatus) | The status of the last fetch attempt.                                                                                            | 7.5.0 |

#### SetMinimumFetchIntervalOptions[¶](#setminimumfetchintervaloptions "Permanent link")

| Prop                              | Type   | Description                                                                                                                                                                           | Default | Since |
| --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **minimumFetchIntervalInSeconds** | number | Define the maximum age in seconds of an entry in the config cache before it is considered stale. During development, it's recommended to set a relatively low minimum fetch interval. | 43200   | 1.3.0 |

#### SetDefaultsOptions[¶](#setdefaultsoptions "Permanent link")

| Prop         | Type                            | Description | Since                                                |       |
| ------------ | ------------------------------- | ----------- | ---------------------------------------------------- | ----- |
| **defaults** | Record<string, string \| number | boolean>    | Defines the dictionary of values to set as defaults. | 8.3.0 |

#### SetSettingsOptions[¶](#setsettingsoptions "Permanent link")

| Prop                              | Type   | Description                                                                                                                                                                           | Default | Since |
| --------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **fetchTimeoutInSeconds**         | number | Defines the maximum amount of milliseconds to wait for a response when fetching configuration from the Remote Config server.                                                          | 60      | 6.2.0 |
| **minimumFetchIntervalInSeconds** | number | Define the maximum age in seconds of an entry in the config cache before it is considered stale. During development, it's recommended to set a relatively low minimum fetch interval. | 43200   | 6.2.0 |

#### AddConfigUpdateListenerOptionsCallbackEvent[¶](#addconfigupdatelisteneroptionscallbackevent "Permanent link")

| Prop            | Type       | Description                                                                        | Since |
| --------------- | ---------- | ---------------------------------------------------------------------------------- | ----- |
| **updatedKeys** | string\[\] | Parameter keys whose values have been updated from the currently activated values. | 5.4.0 |

#### RemoveConfigUpdateListenerOptions[¶](#removeconfigupdatelisteneroptions "Permanent link")

| Prop   | Type                      | Description                       | Since |
| ------ | ------------------------- | --------------------------------- | ----- |
| **id** | [CallbackId](#callbackid) | The id of the listener to remove. | 5.4.0 |

### Type Aliases[¶](#type-aliases "Permanent link")

#### GetBooleanOptions[¶](#getbooleanoptions "Permanent link")

`[GetOptions](#getoptions)`

#### GetNumberOptions[¶](#getnumberoptions "Permanent link")

`[GetOptions](#getoptions)`

#### GetStringOptions[¶](#getstringoptions "Permanent link")

`[GetOptions](#getoptions)`

#### AddConfigUpdateListenerOptionsCallback[¶](#addconfigupdatelisteneroptionscallback "Permanent link")

`(event: [AddConfigUpdateListenerOptionsCallbackEvent](#addconfigupdatelisteneroptionscallbackevent) | null, error: any): void`

#### CallbackId[¶](#callbackid "Permanent link")

`string`

### Enums[¶](#enums "Permanent link")

#### GetValueSource[¶](#getvaluesource "Permanent link")

| Members     | Value | Description                                                                             | Since |
| ----------- | ----- | --------------------------------------------------------------------------------------- | ----- |
| **Static**  | 0     | Indicates that the value returned is the static default value.                          | 1.3.0 |
| **Default** | 1     | Indicates that the value returned was retrieved from the defaults set by the client.    | 1.3.0 |
| **Remote**  | 2     | Indicates that the value returned was retrieved from the Firebase Remote Config Server. | 1.3.0 |

#### LastFetchStatus[¶](#lastfetchstatus "Permanent link")

| Members        | Value |
| -------------- | ----- |
| **NoFetchYet** | 0     |
| **Success**    | 1     |
| **Failure**    | 2     |
| **Throttled**  | 3     |

## FAQ[¶](#faq "Permanent link")

### Why do the getters return default values instead of the remote ones?[¶](#why-do-the-getters-return-default-values-instead-of-the-remote-ones "Permanent link")

Fetched configuration values must be activated before they are available to the getters. Call `fetchConfig(...)` followed by `activate()`, or use `fetchAndActivate()` to perform both operations at once, as shown in the [usage example](#fetch-and-activate-the-configuration) above.

### How often does the plugin fetch new configuration values?[¶](#how-often-does-the-plugin-fetch-new-configuration-values "Permanent link")

Fetched configuration values are cached. The minimum fetch interval defines the maximum age in seconds of an entry in the config cache before it is considered stale, with a default of 43200 seconds (12 hours). During development, it's recommended to set a relatively low minimum fetch interval using `setSettings(...)` on Android and iOS or `setMinimumFetchInterval(...)` on Web.

### How can I react to configuration changes in real time?[¶](#how-can-i-react-to-configuration-changes-in-real-time "Permanent link")

Use `addConfigUpdateListener(...)` to be notified as soon as parameter values change, including the keys whose values have been updated. This method is only available on Android and iOS. You can remove the listener again with `removeConfigUpdateListener(...)` or `removeAllListeners()`.

### Do I need the Firebase Analytics plugin to use Remote Config?[¶](#do-i-need-the-firebase-analytics-plugin-to-use-remote-config "Permanent link")

Google Analytics is only required for the conditional targeting of app instances to user properties and audiences. If you want to use conditions, make sure to also install the [Capacitor Firebase Analytics](https://github.com/capawesome-team/capacitor-firebase/blob/main/packages/analytics) plugin in your project.

### How can I tell where a configuration value came from?[¶](#how-can-i-tell-where-a-configuration-value-came-from "Permanent link")

The getters return a `source` property in addition to the value. It indicates whether the value is the static default value, was retrieved from the defaults set by the client, or was retrieved from the Firebase Remote Config server.

## Related Plugins[¶](#related-plugins "Permanent link")

* [Firebase Analytics](https://capawesome.io/docs/sdks/capacitor/firebase/analytics/): Log events and user properties with Firebase Analytics.
* [Live Update](https://capawesome.io/docs/sdks/capacitor/live-update/): Update your app remotely in real-time without requiring users to download a new version from the app store.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-firebase/blob/main/packages/remote-config/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-firebase/blob/main/packages/remote-config/LICENSE).

---

1. This project is not affiliated with, endorsed by, sponsored by, or approved by Google LLC or any of their affiliates or subsidiaries. [↩](#fnref:1 "Jump back to footnote 1 in the text")

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/#article", "headline": "Capacitor Remote Config Plugin for Android, iOS & Web", "name": "Capacitor Remote Config Plugin for Android, iOS & Web", "description": "Unofficial Capacitor plugin for Firebase Remote Config SDK to manage app configurations and feature flags remotely.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/#software", "name": "Capacitor Remote Config Plugin for Android, iOS & Web", "description": "Unofficial Capacitor plugin for Firebase Remote Config SDK to manage app configurations and feature flags remotely.", "url": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Why do the getters return default values instead of the remote ones?", "acceptedAnswer": {"@type": "Answer", "text": "Fetched configuration values must be activated before they are available to the getters. Call fetchConfig(...) followed by activate(), or use fetchAndActivate() to perform both operations at once, as shown in the usage example above."}}, {"@type": "Question", "name": "How often does the plugin fetch new configuration values?", "acceptedAnswer": {"@type": "Answer", "text": "Fetched configuration values are cached. The minimum fetch interval defines the maximum age in seconds of an entry in the config cache before it is considered stale, with a default of 43200 seconds (12 hours). During development, it's recommended to set a relatively low minimum fetch interval using setSettings(...) on Android and iOS or setMinimumFetchInterval(...) on Web."}}, {"@type": "Question", "name": "How can I react to configuration changes in real time?", "acceptedAnswer": {"@type": "Answer", "text": "Use addConfigUpdateListener(...) to be notified as soon as parameter values change, including the keys whose values have been updated. This method is only available on Android and iOS. You can remove the listener again with removeConfigUpdateListener(...) or removeAllListeners()."}}, {"@type": "Question", "name": "Do I need the Firebase Analytics plugin to use Remote Config?", "acceptedAnswer": {"@type": "Answer", "text": "Google Analytics is only required for the conditional targeting of app instances to user properties and audiences. If you want to use conditions, make sure to also install the Capacitor Firebase Analytics plugin in your project."}}, {"@type": "Question", "name": "How can I tell where a configuration value came from?", "acceptedAnswer": {"@type": "Answer", "text": "The getters return a source property in addition to the value. It indicates whether the value is the static default value, was retrieved from the defaults set by the client, or was retrieved from the Firebase Remote Config server."}}], "url": "https://capawesome.io/docs/sdks/capacitor/firebase/remote-config/"}
```
