---
description: Capacitor plugin to hide sensitive app content in the app switcher, block screenshots, and detect when a screenshot is taken on Android and iOS.
title: Capacitor Privacy Screen Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/privacy-screen.png
---

<!doctype html> 

[Skip to content ](#capacitor-privacy-screen-plugin) 

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

* [ SDKs ](/docs/sdks/)
* [ 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/)
* [ 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/)
* [ 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/)
* [ 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/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* Privacy Screen [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Capabilities ](#capabilities)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ 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/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ 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/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ 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

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Capabilities ](#capabilities)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Privacy Screen Plugin[¶](#capacitor-privacy-screen-plugin "Permanent link")

Capacitor plugin to hide sensitive app content in the app switcher, block screenshots, and detect when a screenshot is taken.

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

* 🖼️ **App switcher**: Hide sensitive app content in the app switcher.
* 📸 **Screenshot prevention**: Block screenshots and screen recordings.
* 🔔 **Screenshot detection**: Get notified when the user takes a screenshot.
* 🤝 **Compatibility**: Works alongside the [Biometrics](https://capawesome.io/docs/sdks/capacitor/biometrics/) and [Secure Preferences](https://capawesome.io/docs/sdks/capacitor/secure-preferences/) 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!

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

## 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-privacy-screen` 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-privacy-screen
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **Android** and **iOS**. On Web, all methods reject as unimplemented.

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

#### Permissions[¶](#permissions "Permanent link")

The plugin declares the `android.permission.DETECT_SCREEN_CAPTURE` permission in its `AndroidManifest.xml`. This install-time permission is required to detect screenshots on Android 14 (API level 34) and newer. It is added automatically and requires no further configuration.

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

No configuration required for this plugin.

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

`[](#%5F%5Fcodelineno-3-1)import { PrivacyScreen } from '@capawesome/capacitor-privacy-screen';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const enable = async () => {
[](#%5F%5Fcodelineno-3-4)  await PrivacyScreen.enable({
[](#%5F%5Fcodelineno-3-5)    ios: {
[](#%5F%5Fcodelineno-3-6)      preventScreenshots: true,
[](#%5F%5Fcodelineno-3-7)    },
[](#%5F%5Fcodelineno-3-8)  });
[](#%5F%5Fcodelineno-3-9)};
[](#%5F%5Fcodelineno-3-10)
[](#%5F%5Fcodelineno-3-11)const disable = async () => {
[](#%5F%5Fcodelineno-3-12)  await PrivacyScreen.disable();
[](#%5F%5Fcodelineno-3-13)};
[](#%5F%5Fcodelineno-3-14)
[](#%5F%5Fcodelineno-3-15)const isEnabled = async () => {
[](#%5F%5Fcodelineno-3-16)  const { enabled } = await PrivacyScreen.isEnabled();
[](#%5F%5Fcodelineno-3-17)  return enabled;
[](#%5F%5Fcodelineno-3-18)};
[](#%5F%5Fcodelineno-3-19)
[](#%5F%5Fcodelineno-3-20)const addListener = async () => {
[](#%5F%5Fcodelineno-3-21)  await PrivacyScreen.addListener('screenshotTaken', () => {
[](#%5F%5Fcodelineno-3-22)    console.log('The user took a screenshot.');
[](#%5F%5Fcodelineno-3-23)  });
[](#%5F%5Fcodelineno-3-24)};
[](#%5F%5Fcodelineno-3-25)
[](#%5F%5Fcodelineno-3-26)const removeAllListeners = async () => {
[](#%5F%5Fcodelineno-3-27)  await PrivacyScreen.removeAllListeners();
[](#%5F%5Fcodelineno-3-28)};
`

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

* [disable()](#disable)
* [enable(...)](#enable)
* [isEnabled()](#isenabled)
* [addListener('screenshotTaken', ...)](#addlistenerscreenshottaken-)
* [removeAllListeners()](#removealllisteners)
* [Interfaces](#interfaces)

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

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

Disable the privacy screen.

Only available on Android and iOS.

**Since:** 0.1.0

---

### enable(...)[¶](#enable "Permanent link")

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

Enable the privacy screen.

On Android, this sets the `FLAG_SECURE` flag on the window, which hides the app content in the app switcher and blocks screenshots and screen recordings.

On iOS, this installs an overlay that hides the app content in the app switcher. Screenshots are only blocked if the `ios.preventScreenshots`option is enabled.

Only available on Android and iOS.

| Param       | Type                            |
| ----------- | ------------------------------- |
| **options** | [EnableOptions](#enableoptions) |

**Since:** 0.1.0

---

### isEnabled()[¶](#isenabled "Permanent link")

`[](#%5F%5Fcodelineno-6-1)isEnabled() => Promise<IsEnabledResult>
`

Check whether the privacy screen is currently enabled.

Only available on Android and iOS.

**Returns:** `Promise<[IsEnabledResult](#isenabledresult)>`

**Since:** 0.1.0

---

### addListener('screenshotTaken', ...)[¶](#addlistenerscreenshottaken "Permanent link")

`[](#%5F%5Fcodelineno-7-1)addListener(eventName: 'screenshotTaken', listenerFunc: () => void) => Promise<PluginListenerHandle>
`

Listen for when the user takes a screenshot of the app.

The event can only be observed after the screenshot has been taken and therefore cannot be prevented.

On Android, this event is only emitted on Android 14 (API level 34) and newer. On older versions, the listener is never called.

Only available on Android and iOS.

| Param            | Type              |
| ---------------- | ----------------- |
| **eventName**    | 'screenshotTaken' |
| **listenerFunc** | () => void        |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.1.0

---

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

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

Remove all listeners for this plugin.

**Since:** 0.1.0

---

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

#### EnableOptions[¶](#enableoptions "Permanent link")

| Prop    | Type                                  | Description                                                  | Since |
| ------- | ------------------------------------- | ------------------------------------------------------------ | ----- |
| **ios** | [EnableIosOptions](#enableiosoptions) | Options that are only applied on iOS. Only available on iOS. | 0.1.0 |

#### EnableIosOptions[¶](#enableiosoptions "Permanent link")

| Prop                   | Type    | Description                                                                                                                                                                                                                   | Default | Since |
| ---------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **preventScreenshots** | boolean | Whether to block screenshots while the privacy screen is enabled. There is no official iOS API to prevent screenshots. This uses an unofficial technique that may stop working in future iOS versions. Only available on iOS. | false   | 0.1.0 |

#### IsEnabledResult[¶](#isenabledresult "Permanent link")

| Prop        | Type    | Description                                      | Since |
| ----------- | ------- | ------------------------------------------------ | ----- |
| **enabled** | boolean | Whether the privacy screen is currently enabled. | 0.1.0 |

#### PluginListenerHandle[¶](#pluginlistenerhandle "Permanent link")

| Prop       | Type                |
| ---------- | ------------------- |
| **remove** | () => Promise<void> |

## Capabilities[¶](#capabilities "Permanent link")

The capabilities of this plugin differ between platforms. The following table gives an honest overview of what is supported:

| Capability                       | Android              | iOS                                    |
| -------------------------------- | -------------------- | -------------------------------------- |
| Hide content in the app switcher | ✅ (via enable())     | ✅ (via enable())                       |
| Block screenshots                | ✅ (via enable())     | ⚠️ (opt-in via ios.preventScreenshots) |
| Detect screenshots               | ✅ (Android 14+ only) | ✅                                      |

**Android**: The `enable()` method sets the `FLAG_SECURE` window flag, which hides the app content in the app switcher and blocks both screenshots and screen recordings with a single flag. Screenshot detection is only available on Android 14 (API level 34) and newer; on older versions the `screenshotTaken` event is never emitted.

**iOS**: The `enable()` method installs an overlay that hides the app content in the app switcher. There is no official API to block screenshots. When `ios.preventScreenshots` is enabled, the plugin uses an unofficial secure text field technique that may stop working in future iOS versions. Screenshot detection observes `UIApplication.userDidTakeScreenshotNotification`, which only fires **after** the screenshot has been taken and therefore cannot be prevented.

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

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/privacy-screen/CHANGELOG.md).

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

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

July 7, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/privacy-screen/#article", "headline": "Capacitor Privacy Screen Plugin", "name": "Capacitor Privacy Screen Plugin", "description": "Capacitor plugin to hide sensitive app content in the app switcher, block screenshots, and detect when a screenshot is taken on Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/privacy-screen/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/privacy-screen/", "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/privacy-screen/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/privacy-screen/#software", "name": "Capacitor Privacy Screen Plugin", "description": "Capacitor plugin to hide sensitive app content in the app switcher, block screenshots, and detect when a screenshot is taken on Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/privacy-screen/", "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"}}}]}
```
