A config plugin for Expo to check for the existence of installed apps on Android and iOS.
Note: This library supports Expo SDK 51 and above.
You can find the package on npm: expo-check-installed-apps.
For managed Expo projects, follow the installation instructions in the API documentation for the latest stable release.
If documentation for managed projects is unavailable, this library may not yet be supported within managed workflows and is likely to be included in an upcoming Expo SDK release.
For bare React Native projects, ensure you have installed and configured the expo
package before proceeding.
Install the package via npm:
npm install expo-check-installed-apps
If using Expo's prebuild method, you can configure the plugin automatically in your app.json
or app.config.js
file. Specify the package names and URL schemes for the apps you want to check:
{
"expo": {
"plugins": [
[
"expo-check-installed-apps",
{
"android": ["com.facebook.katana", "com.twitter.android"],
"ios": ["fb", "twitter"]
}
]
]
}
}
If you are not using app.json
or app.config.js
, you'll need to manually update your native project files.
Add the package names to your AndroidManifest.xml
:
<manifest>
<queries>
<package android:name="com.facebook.katana"/>
<package android:name="com.twitter.android"/>
</queries>
</manifest>
Add the URL schemes to your Info.plist
:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>twitter</string>
</array>
Checks whether specific apps are installed on the user's device.
packageNames
(Array<string>
):
An array of package names (for Android) or URL schemes (for iOS) to check.
Promise<Record<string, boolean>>
:
Resolves to an object where keys are package names or URL schemes, and values are booleans:true
: App is installed.false
: App is not installed.
import { checkInstalledApps } from "expo-check-installed-apps";
import { Platform } from "react-native";
const packageNames: string[] =
Platform.select({
android: ["com.google.android.apps.fitness", "com.android.chrome"], // Use package name of android apps
ios: ["fb://", "twitter://"], // Use proper url scheme of ios apps
}) || [];
checkInstalledApps(packageNames)
.then((installedApps) => {
console.log(installedApps);
})
.catch((error) => {
console.error("Error checking installed apps:", error);
});
{
"com.google.android.apps.fitness": false,
"com.android.chrome": true,
"fb://": true,
"twitter://": false
}
Contributions are welcome!