react-native-screenshot-manager
v0.1.16
Published
React Native Screenshot Manager
Readme
react-native-screenshot-manager
A React Native Nitro Module to manage screenshot prevention and detection.
Features
- Prevent Screenshots & Screen Recording:
- Android: Uses
FLAG_SECUREto prevent screen capture and recording. - iOS: Uses a secure hidden field trick to mask the content in screenshots and recordings.
- Android: Uses
- Screenshot Detection:
- Listen for screenshot events (Android 14+ and iOS).
- Privacy Protection (iOS):
- Automatically blurs the screen when the app moves to the background/multitasking view.
Installation
- Install the package and its peer dependency
react-native-nitro-modules:
npm install react-native-screenshot-manager react-native-nitro-modules
# or
yarn add react-native-screenshot-manager react-native-nitro-modules- (iOS) Install Pods:
cd ios && pod installUsage
Prevent Screenshots
Enable or disable screenshot protection.
import { enabled } from 'react-native-screenshot-manager';
// Enable screenshot protection (prevents screenshots/recording)
enabled(true);
// Disable screenshot protection
enabled(false);Detect Screenshots
Add a listener to detect when a user takes a screenshot.
import { addListener } from 'react-native-screenshot-manager';
import { useEffect } from 'react';
// ... inside your component
useEffect(() => {
const removeListener = addListener(() => {
console.log('User took a screenshot!');
// You can show an alert or log the event
});
return () => {
removeListener();
};
}, []);Platform Support
| Feature | iOS | Android | | :--- | :---: | :---: | | Prevent Screenshot | ✅ | ✅ | | Screenshot Listener | ✅ | ✅ (Android 14+) | | Privacy Blur (Background) | ✅ | ❌ |
Implementation Details
- Android:
- Uses
WindowManager.LayoutParams.FLAG_SECUREfor preventing screenshots. - Uses
Activity.registerScreenCaptureCallback(API 34+) for detection. - Requirement: You must add the following permission to your
AndroidManifest.xmlfor screenshot detection to work on Android 14+:<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
- Uses
- iOS:
- Uses a hidden
UITextFieldwithisSecureTextEntry = trueattached to the window to obscure content. - Listens to
UIApplication.userDidTakeScreenshotNotification. - Observes
UIApplication.willResignActiveNotificationanddidBecomeActiveNotificationto apply a blur effect in the app switcher.
- Uses a hidden
License
MIT
