Home

Awesome

@pantrist/capacitor-firebase-dynamic-links

npm version npm downloads per month

Capacitor plugin for Firebase Dynamic Links.

⚠️ Firebase dynamic links shutdown at the 25th August 2025 ⚠️

Firebase dynamic links, and also this plugin, will work until that day. But it won't be working anymore after that. If you plan to implement something similar, you should search for alternatives. I went with capacitor-branch-deep-links.

Configuration

Android

None

iOS

Configure your app to use dynamic links based on the official Firebase documentation. You need to apply the following three steps for iOS. They should be the same as the first three steps of the official Firebase documentation.

  1. In the Info tab of your app's Xcode project, create a new URL type to be used for Dynamic Links. Set the Identifier field to a unique value and the URL scheme field to be your bundle identifier, which is the default URL scheme used by Dynamic Links.
  2. In the Capabilities tab of your app's Xcode project, enable Associated Domains and add the following to the Associated Domains list:
applinks:your_dynamic_links_domain
  1. If you want to receive Dynamic Links with a fully-custom domain, in your Xcode project's Info.plist file, create a key called FirebaseDynamicLinksCustomDomains and set it to your app's Dynamic Links URL prefixes. For example:
FirebaseDynamicLinksCustomDomains
    https://example.com/promos
    https://example.com/links/share

Web

None

Example

import {
  FirebaseDynamicLinks,
  LinkConfig,
} from '@pantrist/capacitor-firebase-dynamic-links';

function createShortLink(): Promise<string> {
   const config: LinkConfig = {
      domainUriPrefix: 'https://example.page.link',
      uri: 'https://example.page.link/sharing',
   };
   return FirebaseDynamicLinks.createDynamicShortLink(config).then(link => link.value);
}

function listenToDeepLinkOpen() {
   FirebaseDynamicLinks.addListener('deepLinkOpen', (data) => {
       console.log(data);
   });
}

API

<docgen-index> </docgen-index> <docgen-api> <!--Update the source file JSDoc comments and rerun docgen to update the docs below-->

addListener('deepLinkOpen', ...)

addListener(eventName: 'deepLinkOpen', listenerFunc: (data: DeepLinkOpen) => void) => PluginListenerHandle

Adds a listener to the opening of a dynamic link

ParamTypeDescription
eventName<code>'deepLinkOpen'</code>'deepLinkOpen' for listening to open links
listenerFunc<code>(data: <a href="#deeplinkopen">DeepLinkOpen</a>) => void</code>Callback function to be called when the event is fired

Returns: <code><a href="#pluginlistenerhandle">PluginListenerHandle</a></code>


removeAllListeners()

removeAllListeners() => Promise<void>

Remove all native listeners for this plugin


createDynamicLink(...)

createDynamicLink(linkConfiguration: LinkConfig) => Promise<{ value: string; }>

Creates a new dynamic Link based on the configuration

ParamTypeDescription
linkConfiguration<code><a href="#linkconfig">LinkConfig</a></code>configuration for the link

Returns: <code>Promise<{ value: string; }></code>


createDynamicShortLink(...)

createDynamicShortLink(linkConfiguration: LinkConfig) => Promise<{ value: string; }>

Creates a new short dynamic link based on the configuration. Its basically a shortened version of the dynamic link. *

ParamTypeDescription
linkConfiguration<code><a href="#linkconfig">LinkConfig</a></code>configuration for the link

Returns: <code>Promise<{ value: string; }></code>


Interfaces

PluginListenerHandle

PropType
remove<code>() => Promise<void></code>

DeepLinkOpen

PropTypeDescription
url<code>string</code>The URL that was opened

LinkConfig

PropTypeDescription
uri<code>string</code>The link your app will open.
domainUriPrefix<code>string</code>Your Dynamic Link URL prefix, which you can find in the Firebase console. A Dynamic Link domain looks like the following: https://example.page.link.
androidParameters<code><a href="#androidparameters">AndroidParameters</a></code>Android specific configuration
iosParameters<code><a href="#iosparameters">IOSParameters</a></code>iOS specific configuration
navigationInfo<code><a href="#navigationinfoparameters">NavigationInfoParameters</a></code>Additional parameters for the navigation of the app.
socialMeta<code><a href="#socialmetatagparameters">SocialMetaTagParameters</a></code>Configuration for showed data when sharing the link with social media.
googleAnalytics<code><a href="#googleanalyticsparameters">GoogleAnalyticsParameters</a></code>Google Play analytics paremeters
iTunesConnectAnalytics<code><a href="#itunesconnectanalyticsparameters">ItunesConnectAnalyticsParameters</a></code>iTunes Connect analytics parameters
webApiKey<code>string</code>Firebase Web Api key

AndroidParameters

PropTypeDescription
packageName<code>string</code>Your bundle ID (e.g. com.example.android)
fallbackUrl<code>string</code>The link to open when the app isn't installed. Specify this to do something other than install your app from the Play Store when the app isn't installed, such as open the mobile web version of the content, or display a promotional page for your app.
minimumVersion<code>number</code>The versionCode of the minimum version of your app that can open the link. If the installed app is an older version, the user is taken to the Play Store to upgrade the app.

IOSParameters

PropTypeDescription
bundleId<code>string</code>Your bundle ID (e.g. com.example.android)
appStoreId<code>string</code>Your app's App Store ID, used to send users to the App Store when the app isn't installed
fallbackUrl<code>string</code>The link to open when the app isn't installed. Specify this to do something other than install your app from the App Store when the app isn't installed, such as open the mobile web version of the content, or display a promotional page for your app.
customScheme<code>string</code>Your app's custom URL scheme, if defined to be something other than your app's bundle ID
ipadFallbackUrl<code>string</code>The link to open on iPads when the app isn't installed. Specify this to do something other than install your app from the App Store when the app isn't installed, such as open the web version of the content, or display a promotional page for your app.
ipadBundleId<code>string</code>The bundle ID of the iOS app to use on iPads to open the link. The app must be connected to your project from the Overview page of the Firebase console.
minimumVersion<code>string</code>The version number of the minimum version of your app that can open the link. This flag is passed to your app when it is opened, and your app must decide what to do with it.

NavigationInfoParameters

PropTypeDescription
forcedRedirectEnabled<code>boolean</code>If set to true, skip the app preview page when the Dynamic Link is opened, and instead redirect to the app or store. The app preview page (enabled by default) can more reliably send users to the most appropriate destination when they open Dynamic Links in apps; however, if you expect a Dynamic Link to be opened only in apps that can open Dynamic Links reliably without this page, you can disable it with this parameter. This parameter will affect the behavior of the Dynamic Link only on iOS.

SocialMetaTagParameters

PropTypeDescription
title<code>string</code>The title to use when the Dynamic Link is shared in a social post.
description<code>string</code>The description to use when the Dynamic Link is shared in a social post.
imageUrl<code>string</code>The URL to an image related to this link. The image should be at least 300x200 px, and less than 300 KB.

GoogleAnalyticsParameters

PropTypeDescription
source<code>string</code>Sets utm_source
medium<code>string</code>Sets utm_medium
campaign<code>string</code>Sets utm_campaign
term<code>string</code>Sets utm_term
content<code>string</code>Sets utm_content

ItunesConnectAnalyticsParameters

PropTypeDescription
providerToken<code>string</code>Sets pt
affiliateToken<code>string</code>Sets at
campaignToken<code>string</code>Sets ct
</docgen-api>