---
description: Capacitor plugin to check whether another app can be opened and to launch it by URL scheme or package name on Android, iOS, and the web.
title: Capacitor App Launcher Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/app-launcher.png
---

<!doctype html> 

[Skip to content ](#capacitor-app-launcher-plugin) 

[📲 Introducing **Build Sharing** — get your builds onto testers' devices with a link & QR code. No account required. ](/blog/share-mobile-app-builds-with-testers/) 

* [ SDKs ](/docs/sdks/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Migrating from @capacitor/app-launcher ](#migrating-from-capacitorapp-launcher)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ App Review ](/docs/sdks/capacitor/app-review/)
* [ App Shortcuts ](/docs/sdks/capacitor/app-shortcuts/)
* [ App Tracking Transparency ](/docs/sdks/capacitor/app-tracking-transparency/)
* [ App Update ](/docs/sdks/capacitor/app-update/)
* [ Apple Sign-In ](/docs/sdks/capacitor/apple-sign-in/)
* [ Asset Manager ](/docs/sdks/capacitor/asset-manager/)
* [ Audio Player ](/docs/sdks/capacitor/audio-player/)
* [ Audio Recorder ](/docs/sdks/capacitor/audio-recorder/)
* [ Audio Session ](/docs/sdks/capacitor/audio-session/)
* [ Background Task ](/docs/sdks/capacitor/background-task/)
* [ Badge ](/docs/sdks/capacitor/badge/)
* [ Barometer ](/docs/sdks/capacitor/barometer/)
* [ Battery ](/docs/sdks/capacitor/battery/)
* [ Biometrics ](/docs/sdks/capacitor/biometrics/)
* [ Bluetooth Low Energy ](/docs/sdks/capacitor/bluetooth-low-energy/)
* [ Clipboard ](/docs/sdks/capacitor/clipboard/)
* [ Cloudinary ](/docs/sdks/capacitor/cloudinary/)
* [ Compass ](/docs/sdks/capacitor/compass/)
* [ Contacts ](/docs/sdks/capacitor/contacts/)
* [ Crisp ](/docs/sdks/capacitor/crisp/)
* [ Datetime Picker ](/docs/sdks/capacitor/datetime-picker/)
* [ Device Info ](/docs/sdks/capacitor/device-info/)
* [ Dialog ](/docs/sdks/capacitor/dialog/)
* [ Electron ](/docs/sdks/capacitor/electron/)
* [ Exif ](/docs/sdks/capacitor/exif/)
* [ Facebook Sign-In ](/docs/sdks/capacitor/facebook-sign-in/)
* [ File Compressor ](/docs/sdks/capacitor/file-compressor/)
* [ File Opener ](/docs/sdks/capacitor/file-opener/)
* [ File Picker ](/docs/sdks/capacitor/file-picker/)
* [ Firebase ](/docs/sdks/capacitor/firebase/)
* [ 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/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ 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/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ 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/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ 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/)
* Notifications
* 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

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Migrating from @capacitor/app-launcher ](#migrating-from-capacitorapp-launcher)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor App Launcher Plugin[¶](#capacitor-app-launcher-plugin "Permanent link")

Capacitor plugin to check if an app can be opened and to open it.

[ ![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/) 

## Features[¶](#features "Permanent link")

* 🔗 **Open apps**: Open another app by its URL scheme or package name.
* ✅ **Availability**: Check whether an app can be opened before trying to open it.
* 🤖 **Package names**: Check and open apps by their package name on Android.
* 🔒 **App Store safe**: Uses only official platform APIs.
* 🤝 **Compatibility**: Works alongside the [Maps Launcher](https://capawesome.io/docs/sdks/capacitor/maps-launcher/) and [Settings Launcher](https://capawesome.io/docs/sdks/capacitor/settings-launcher/) plugins.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

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

The App Launcher plugin is typically used to hand the user over to another app, for example:

* **App-to-app navigation**: Open a companion or partner app directly from your app via its URL scheme or package name.
* **Graceful fallbacks**: Check whether an app can be opened first and show an alternative if it is not installed.
* **Composing emails**: Open the user's mail app with a `mailto:` URL.
* **Launching Android apps by package name**: Open a specific app such as Gmail (`com.google.android.gm`) on Android.

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

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

## 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 `@capawesome/capacitor-app-launcher` 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 @capawesome/capacitor-app-launcher
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

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

Starting with Android 11 (API level 30), apps must declare the packages and URL schemes they want to check or open in the [<queries>](https://developer.android.com/training/package-visibility) element of their `AndroidManifest.xml`.

**If you do not add the corresponding `<queries>` entries, `canOpenUrl(...)` always resolves with `value: false` and `openUrl(...)` may resolve with `completed: false`.**

Add an entry for **every** package name and URL scheme you pass to the plugin. For example, to check and open the Gmail app (package name `com.google.android.gm`) and any `mailto:` URL, add the following to your `android/app/src/main/AndroidManifest.xml` before or after the `application` tag:

`[](#%5F%5Fcodelineno-3-1)<queries>
[](#%5F%5Fcodelineno-3-2)    <!-- Required to check and open a specific package name. -->
[](#%5F%5Fcodelineno-3-3)    <package android:name="com.google.android.gm" />
[](#%5F%5Fcodelineno-3-4)    <!-- Required to check and open a specific URL scheme. -->
[](#%5F%5Fcodelineno-3-5)    <intent>
[](#%5F%5Fcodelineno-3-6)        <action android:name="android.intent.action.VIEW" />
[](#%5F%5Fcodelineno-3-7)        <data android:scheme="mailto" />
[](#%5F%5Fcodelineno-3-8)    </intent>
[](#%5F%5Fcodelineno-3-9)</queries>
`

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

On iOS, every URL scheme you want to check with `canOpenUrl(...)` must be declared in the [LSApplicationQueriesSchemes](https://developer.apple.com/documentation/bundleresources/information%5Fproperty%5Flist/lsapplicationqueriesschemes) key of your app's `Info.plist`.

**If you do not add the corresponding entries, `canOpenUrl(...)` always resolves with `value: false`.**

Add an entry for **every** URL scheme you pass to the plugin. For example, to check any `mailto:` URL, add the following to your `ios/App/App/Info.plist`:

`[](#%5F%5Fcodelineno-4-1)<key>LSApplicationQueriesSchemes</key>
[](#%5F%5Fcodelineno-4-2)<array>
[](#%5F%5Fcodelineno-4-3)    <string>mailto</string>
[](#%5F%5Fcodelineno-4-4)</array>
`

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

No configuration required for this plugin.

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

The following examples show how to check whether an app can be opened and open another app.

### Check if an app can be opened[¶](#check-if-an-app-can-be-opened "Permanent link")

Check whether an app can be opened before trying to open it. On iOS, the URL must be a URL scheme (e.g. `mailto:`); on Android, it can be a URL scheme or a package name (e.g. `com.google.android.gm`). Remember to declare every scheme and package name you check (see [Installation](#installation)), otherwise this method always resolves with `value: false`:

`[](#%5F%5Fcodelineno-5-1)import { AppLauncher } from '@capawesome/capacitor-app-launcher';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const canOpenUrl = async () => {
[](#%5F%5Fcodelineno-5-4)  const { value } = await AppLauncher.canOpenUrl({ url: 'mailto:' });
[](#%5F%5Fcodelineno-5-5)  return value;
[](#%5F%5Fcodelineno-5-6)};
`

### Open an app[¶](#open-an-app "Permanent link")

Open another app with the given URL. On Android, the URL can also be a package name. The result tells you whether the app was opened successfully:

`[](#%5F%5Fcodelineno-6-1)import { AppLauncher } from '@capawesome/capacitor-app-launcher';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const openUrl = async () => {
[](#%5F%5Fcodelineno-6-4)  const { completed } = await AppLauncher.openUrl({ url: 'mailto:' });
[](#%5F%5Fcodelineno-6-5)  return completed;
[](#%5F%5Fcodelineno-6-6)};
`

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

* [canOpenUrl(...)](#canopenurl)
* [openUrl(...)](#openurl)
* [Interfaces](#interfaces)

### canOpenUrl(...)[¶](#canopenurl "Permanent link")

`[](#%5F%5Fcodelineno-7-1)canOpenUrl(options: CanOpenUrlOptions) => Promise<CanOpenUrlResult>
`

Check if an app can be opened with the given URL.

On **iOS**, every URL scheme you want to check must be declared in the `LSApplicationQueriesSchemes` key of your app's `Info.plist`. Otherwise this method always resolves with `value: false`.

On **Android**, every package name or URL scheme you want to check must be declared in the `&lt;queries&gt;` element of your app's `AndroidManifest.xml`. Otherwise this method always resolves with `value: false`.

| Param       | Type                                    |
| ----------- | --------------------------------------- |
| **options** | [CanOpenUrlOptions](#canopenurloptions) |

**Returns:** `Promise<[CanOpenUrlResult](#canopenurlresult)>`

**Since:** 0.1.0

---

### openUrl(...)[¶](#openurl "Permanent link")

`[](#%5F%5Fcodelineno-8-1)openUrl(options: OpenUrlOptions) => Promise<OpenUrlResult>
`

Open an app with the given URL.

| Param       | Type                              |
| ----------- | --------------------------------- |
| **options** | [OpenUrlOptions](#openurloptions) |

**Returns:** `Promise<[OpenUrlResult](#openurlresult)>`

**Since:** 0.1.0

---

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

#### CanOpenUrlResult[¶](#canopenurlresult "Permanent link")

| Prop      | Type    | Description                                                                                                                                                | Since |
| --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **value** | boolean | Whether or not the app can be opened with the given URL. On the web, this is always true because the browser cannot determine whether a URL can be opened. | 0.1.0 |

#### CanOpenUrlOptions[¶](#canopenurloptions "Permanent link")

| Prop    | Type   | Description                                                                                                                                                                     | Since |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **url** | string | The URL to check. On **iOS**, this must be a URL scheme (e.g. mailto:). On **Android**, this can be a URL scheme (e.g. mailto:) or a package name (e.g. com.google.android.gm). | 0.1.0 |

#### OpenUrlResult[¶](#openurlresult "Permanent link")

| Prop          | Type    | Description                                     | Since |
| ------------- | ------- | ----------------------------------------------- | ----- |
| **completed** | boolean | Whether or not the app was opened successfully. | 0.1.0 |

#### OpenUrlOptions[¶](#openurloptions "Permanent link")

| Prop    | Type   | Description                                                                                                                                                                    | Since |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |
| **url** | string | The URL to open. On **iOS**, this must be a URL scheme (e.g. mailto:). On **Android**, this can be a URL scheme (e.g. mailto:) or a package name (e.g. com.google.android.gm). | 0.1.0 |

## Migrating from `@capacitor/app-launcher`[¶](#migrating-from-capacitorapp-launcher "Permanent link")

This plugin is a drop-in replacement for the official `@capacitor/app-launcher` plugin. The API is identical, so you only need to change the import and installation.

| @capacitor/app-launcher         | App Launcher                    |
| ------------------------------- | ------------------------------- |
| AppLauncher.canOpenUrl({ url }) | AppLauncher.canOpenUrl({ url }) |
| AppLauncher.openUrl({ url })    | AppLauncher.openUrl({ url })    |

On Android, the `url` may be a URL scheme or a package name for both `canOpenUrl(...)` and `openUrl(...)`.

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

### How is this plugin different from other similar plugins?[¶](#how-is-this-plugin-different-from-other-similar-plugins "Permanent link")

It lets you both check whether an app can be opened and open it, and on Android the target can be a URL scheme or a package name, so you can launch a specific app like Gmail directly by its package. It uses only official platform APIs, keeping it safe for App Store and Google Play submissions, and pairs cleanly with the Maps Launcher and Settings Launcher plugins for a complete launching story. The API is fully typed, supports both CocoaPods and Swift Package Manager on iOS, and is actively maintained against the latest Capacitor and OS versions.

### Why does `canOpenUrl` always return `false`?[¶](#why-does-canopenurl-always-return-false "Permanent link")

This usually means the URL scheme or package name is not declared in your app. On Android 11 (API level 30) and above, every package name and URL scheme must be declared in the `<queries>` element of your `AndroidManifest.xml`. On iOS, every URL scheme must be declared in the `LSApplicationQueriesSchemes` key of your `Info.plist`. See the [Installation](#installation) section for examples.

### Can I open an app by its package name?[¶](#can-i-open-an-app-by-its-package-name "Permanent link")

Yes, but only on Android, where the `url` option accepts a URL scheme (e.g. `mailto:`) or a package name (e.g. `com.google.android.gm`). On iOS, only URL schemes are supported.

### How can I check if an app is installed?[¶](#how-can-i-check-if-an-app-is-installed "Permanent link")

Use `canOpenUrl(...)` with the app's URL scheme or, on Android, its package name. Make sure the scheme or package name is declared as described in the [Installation](#installation) section. Note that on the Web, this method always resolves with `value: true` because the browser cannot determine whether a URL can be opened.

### How is this plugin different from the official `@capacitor/app-launcher` plugin?[¶](#how-is-this-plugin-different-from-the-official-capacitorapp-launcher-plugin "Permanent link")

This plugin is a drop-in replacement with an identical API, so you only need to change the import and installation. In addition, on Android the `url` may also be a package name for both `canOpenUrl(...)` and `openUrl(...)`. See the [migration section](#migrating-from-capacitorapp-launcher) for details.

### Can I use this plugin with Ionic, React, Vue or Angular?[¶](#can-i-use-this-plugin-with-ionic-react-vue-or-angular "Permanent link")

Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.

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

* [Android Intent Launcher](https://capawesome.io/docs/sdks/capacitor/android-intent-launcher/): Launch arbitrary Android intents.
* [Maps Launcher](https://capawesome.io/docs/sdks/capacitor/maps-launcher/): Launch navigation apps with turn-by-turn directions.
* [Phone Dialer](https://capawesome.io/docs/sdks/capacitor/phone-dialer/): Open the native phone dialer prefilled with a phone number.
* [Settings Launcher](https://capawesome.io/docs/sdks/capacitor/settings-launcher/): Open native settings screens.

## 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-plugins/blob/main/packages/app-launcher/CHANGELOG.md).

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

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/app-launcher/LICENSE).

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/app-launcher/#article", "headline": "Capacitor App Launcher Plugin", "name": "Capacitor App Launcher Plugin", "description": "Capacitor plugin to check whether another app can be opened and to launch it by URL scheme or package name on Android, iOS, and the web.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/app-launcher/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/app-launcher/", "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/app-launcher/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/app-launcher/#software", "name": "Capacitor App Launcher Plugin", "description": "Capacitor plugin to check whether another app can be opened and to launch it by URL scheme or package name on Android, iOS, and the web.", "url": "https://capawesome.io/docs/sdks/capacitor/app-launcher/", "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": "How is this plugin different from other similar plugins?", "acceptedAnswer": {"@type": "Answer", "text": "It lets you both check whether an app can be opened and open it, and on Android the target can be a URL scheme or a package name, so you can launch a specific app like Gmail directly by its package. It uses only official platform APIs, keeping it safe for App Store and Google Play submissions, and pairs cleanly with the Maps Launcher and Settings Launcher plugins for a complete launching story. The API is fully typed, supports both CocoaPods and Swift Package Manager on iOS, and is actively maintained against the latest Capacitor and OS versions."}}, {"@type": "Question", "name": "Why does canOpenUrl always return false?", "acceptedAnswer": {"@type": "Answer", "text": "This usually means the URL scheme or package name is not declared in your app. On Android 11 (API level 30) and above, every package name and URL scheme must be declared in the <queries> element of your AndroidManifest.xml. On iOS, every URL scheme must be declared in the LSApplicationQueriesSchemes key of your Info.plist. See the Installation section for examples."}}, {"@type": "Question", "name": "Can I open an app by its package name?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, but only on Android, where the url option accepts a URL scheme (e.g. mailto:) or a package name (e.g. com.google.android.gm). On iOS, only URL schemes are supported."}}, {"@type": "Question", "name": "How can I check if an app is installed?", "acceptedAnswer": {"@type": "Answer", "text": "Use canOpenUrl(...) with the app's URL scheme or, on Android, its package name. Make sure the scheme or package name is declared as described in the Installation section. Note that on the Web, this method always resolves with value: true because the browser cannot determine whether a URL can be opened."}}, {"@type": "Question", "name": "How is this plugin different from the official @capacitor/app-launcher plugin?", "acceptedAnswer": {"@type": "Answer", "text": "This plugin is a drop-in replacement with an identical API, so you only need to change the import and installation. In addition, on Android the url may also be a package name for both canOpenUrl(...) and openUrl(...). See the migration section for details."}}, {"@type": "Question", "name": "Can I use this plugin with Ionic, React, Vue or Angular?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects."}}], "url": "https://capawesome.io/docs/sdks/capacitor/app-launcher/"}
```
