@capgo/capacitor-privacy-screen
v8.2.2
Published
Protect app content in Android screenshots and obscure the iOS app switcher snapshot.
Maintainers
Readme
@capgo/capacitor-privacy-screen
Protect sensitive app content from appearing in Android screenshots and iOS app-switcher previews.
Capgo's Privacy Screen plugin is a Capacitor port of PrivacyScreenPlugin with a modern native implementation for Capacitor 8.
Documentation
The most complete doc is available here: https://capgo.app/docs/plugins/privacy-screen/
Compatibility
| Plugin version | Capacitor compatibility | Maintained | | -------------- | ----------------------- | ---------- | | v8.*.* | v8.*.* | ✅ | | v7.*.* | v7.*.* | On demand | | v6.*.* | v6.*.* | ❌ |
Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation. Only the latest major version is actively maintained.
Install
bun add @capgo/capacitor-privacy-screen
bunx cap syncUsage
import { PrivacyScreen } from '@capgo/capacitor-privacy-screen';
await PrivacyScreen.disable();
// Perform a flow where screenshots or previews are acceptable.
await PrivacyScreen.enable();The plugin enables protection automatically when the native plugin loads, so most apps do not need to call anything on startup.
Behavior
- Android uses
WindowManager.LayoutParams.FLAG_SECURE, which hides app content from screenshots, screen recording, and the recent apps preview. - iOS adds a temporary overlay while the app resigns active so the app switcher snapshot does not expose your content.
- Web keeps an in-memory enabled flag for API parity, but browsers cannot enforce native privacy-screen behavior.
API
Capacitor API for protecting app content from the app switcher preview.
enable()
enable() => Promise<PrivacyScreenStatus>Enables the privacy screen.
On Android this sets FLAG_SECURE, which also blocks screenshots and screen recording.
On iOS this restores the app-switcher overlay that hides your app while it is backgrounded.
Returns: Promise<PrivacyScreenStatus>
disable()
disable() => Promise<PrivacyScreenStatus>Disables the privacy screen.
Use this only when you explicitly want the current screen to remain visible in system previews.
Returns: Promise<PrivacyScreenStatus>
isEnabled()
isEnabled() => Promise<PrivacyScreenStatus>Returns the current enabled state.
Returns: Promise<PrivacyScreenStatus>
getPluginVersion()
getPluginVersion() => Promise<PluginVersionResult>Returns the native implementation version marker.
Returns: Promise<PluginVersionResult>
Interfaces
PrivacyScreenStatus
Current privacy screen state.
| Prop | Type | Description |
| ------------- | -------------------- | ------------------------------------------------ |
| enabled | boolean | Whether privacy protection is currently enabled. |
PluginVersionResult
Plugin version payload.
| Prop | Type | Description |
| ------------- | ------------------- | ----------------------------------------------------------- |
| version | string | Version identifier returned by the platform implementation. |
