npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@capgo/capacitor-privacy-screen

v8.3.8

Published

Protect app content in Android screenshots and obscure the iOS app switcher snapshot.

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

You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

Then use the following prompt:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/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:

npm install @capgo/capacitor-privacy-screen
npx cap sync

Configuration

Protection is disabled by default. Enable it on native startup with Capacitor config:

import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'Example',
  webDir: 'dist',
  plugins: {
    PrivacyScreen: {
      enabled: true,
      android: {
        dimBackground: true,
        privacyModeOnActivityHidden: 'splash',
      },
      ios: {
        blurEffect: 'dark',
      },
    },
  },
};

export default config;

Usage

import { PrivacyScreen } from '@capgo/capacitor-privacy-screen';

await PrivacyScreen.enable({
  android: {
    dimBackground: true,
    privacyModeOnActivityHidden: 'splash',
  },
  ios: {
    blurEffect: 'dark',
  },
});

const { enabled } = await PrivacyScreen.isEnabled();

await PrivacyScreen.disable();

await PrivacyScreen.enable();

// Perform a flow where screenshots or previews should be protected.

await PrivacyScreen.disable();

Use JavaScript calls when protection should only apply to specific screens or flows.

Behavior

  • Android uses WindowManager.LayoutParams.FLAG_SECURE, which hides app content from screenshots, screen recording, and the recent apps preview.
  • Android can show a temporary dim or splash overlay for recent-apps and activity-hidden states.
  • iOS places app content in a secure rendering subtree while enabled and adds a temporary overlay while the app resigns active so the app-switcher snapshot does not expose your content, with optional light or dark blur.
  • 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 screenshots, screen recording, and native app-switcher previews.

enable(...)

enable(config?: PrivacyScreenConfig | undefined) => Promise<PrivacyScreenActionResult>

Enables privacy screen protection.

On Android this sets FLAG_SECURE, which also blocks screenshots and screen recording. On iOS this places app content in a secure rendering subtree while enabled and adds an overlay while the app is backgrounded so app content does not appear in the app-switcher snapshot.

| Param | Type | Description | | ------------ | ------------------------------------------------------------------- | ------------------------------------ | | config | PrivacyScreenConfig | Optional platform-specific behavior. |

Returns: Promise<PrivacyScreenActionResult>


disable()

disable() => Promise<PrivacyScreenActionResult>

Disables privacy screen protection.

Use this only when you explicitly want the current screen to remain visible in system previews.

Returns: Promise<PrivacyScreenActionResult>


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

PrivacyScreenActionResult

Result returned when privacy protection is toggled.

| Prop | Type | Description | | ------------- | -------------------- | --------------------------------------- | | success | boolean | Whether the native operation completed. |

PrivacyScreenConfig

Native startup and runtime configuration for privacy protection.

| Prop | Type | Description | Default | | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------ | | enabled | boolean | Enable privacy protection automatically when the native plugin loads. This option is read from Capacitor config only. | false | | android | { dimBackground?: boolean; preventScreenshots?: boolean; privacyModeOnActivityHidden?: 'none' | 'dim' | 'splash'; } | Android-only behavior. | | | ios | { blurEffect?: 'none' | 'light' | 'dark'; } | iOS-only behavior. | |

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. |