{"_id":"@capawesome/capacitor-root-detection","_rev":"4-8d9d217c08e1f6a3e11657239a18a72c","name":"@capawesome/capacitor-root-detection","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@capawesome/capacitor-root-detection","version":"0.0.1","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-root-detection@0.0.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/plugins/root-detection/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"2e1fc60538fb2c4ac097420689d07c6a01be4deb","tarball":"https://registry.npmjs.org/@capawesome/capacitor-root-detection/-/capacitor-root-detection-0.0.1.tgz","fileCount":36,"integrity":"sha512-L70By2q6HFLK5k01Gxu43lE+BK41z7zJiVNqWP1Xm8Sr/xsRllz3EYVNOwGrjTKftMS3Su/EpqOuZ3vk/DrONg==","signatures":[{"sig":"MEUCIGDiPXHyJFtsK3Z/KyAH1DiToNmc/2usdf39M3YCKOGEAiEAx0FuKR0e73aS7bqSlwVPsRQkr4CicYWh6C9soGXvQ1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43189},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"8dd31ce5d3f16f94fb71d033f47512e99908f4e4","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api RootDetectionPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.13.0","description":"Capacitor plugin for detecting rooted and jailbroken devices.","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-root-detection_0.0.1_1783405314764_0.20498435043094165","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@capawesome/capacitor-root-detection","version":"0.1.0","keywords":["capacitor","plugin","native","capacitor-plugin","root detection","jailbreak detection","rooted device","jailbroken device","emulator detection","developer mode","device security"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-root-detection@0.1.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/root-detection/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"19829e95fdeea7c7b086c329c60e8a5b3113fbdf","tarball":"https://registry.npmjs.org/@capawesome/capacitor-root-detection/-/capacitor-root-detection-0.1.0.tgz","fileCount":36,"integrity":"sha512-ZYSffBERMoqTx80c0oFFrUB3LYhOJQqo5LeRFGvqW4juAQRPQdYpOpTG9PCDUJ9wDsddR6NG/kMVrO5ztTKR8A==","signatures":[{"sig":"MEYCIQCM+6205qagmH5GEvU7O/U1mQPV3s/bwWwK9fgnf/pVnQIhANCFzsayTd0vJq7DCnjVl1Cw4usv/W7VJjchmEKMp3fl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-root-detection@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48146},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"1ce17b1fd14c43b2f1d5d3c2da82221e1d1dca37","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api RootDetectionPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d8589c1-1a5d-4db9-87b2-492cd62c5947"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin for detecting rooted and jailbroken devices on Android and iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-root-detection_0.1.0_1784015582321_0.978080154332208","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capawesome/capacitor-root-detection","version":"0.1.1","keywords":["capacitor","plugin","native","capacitor-plugin","root detection","jailbreak detection","rooted device","jailbroken device","emulator detection","developer mode","device security"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-root-detection@0.1.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/root-detection/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"5f6630b7e9014eb33a90539f061862bc5e00e416","tarball":"https://registry.npmjs.org/@capawesome/capacitor-root-detection/-/capacitor-root-detection-0.1.1.tgz","fileCount":36,"integrity":"sha512-kWZ4syFAoEa6iNXCdLXuzPZkXy/kZg8wPWf253ab7y3R88YccHR2BU+NhX9dhumJCtJL61ttzY5w2k506iQhDg==","signatures":[{"sig":"MEYCIQD03tpEkYK+nHUaLHFSdLXZzX9mEKFulbifNmsh7otruwIhAIy9OMGsbh8lMe/fIX714q91V6mtli0ingS7G25CYcu0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-root-detection@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48155},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"3e61f4b412f9f3f512c21169bb135bbb23a67e6d","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api RootDetectionPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d8589c1-1a5d-4db9-87b2-492cd62c5947"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin for detecting rooted and jailbroken devices on Android and iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-root-detection_0.1.1_1784103039173_0.6314736521529678","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@capawesome/capacitor-root-detection","version":"0.1.2","description":"Capacitor plugin for detecting rooted and jailbroken devices on Android and iOS.","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"funding":[{"type":"github","url":"https://github.com/sponsors/capawesome-team/"},{"type":"opencollective","url":"https://opencollective.com/capawesome"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/root-detection/","keywords":["capacitor","plugin","native","capacitor-plugin","root detection","jailbreak detection","rooted device","jailbroken device","emulator detection","developer mode","device security"],"scripts":{"verify":"npm run verify:ios && npm run verify:android && npm run verify:web","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:android":"cd android && ./gradlew clean build test && cd ..","verify:web":"npm run build","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","eslint":"eslint . --ext ts","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","docgen":"docgen --api RootDetectionPlugin --output-readme README.md --output-json dist/docs.json","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd ..","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/android":"8.0.0","@capacitor/cli":"8.4.2","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/ios":"8.0.0","@ionic/eslint-config":"0.4.0","eslint":"8.57.0","prettier-plugin-java":"2.9.7","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"publishConfig":{"access":"public"},"gitHead":"7c1937ed10b7de86ca2c1cdc3539a2735fd69a00","_id":"@capawesome/capacitor-root-detection@0.1.2","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-LwdVYN0bymuJfACibynpnJLwIG+Dc1EraMoKbrtSjM72dQdApI1Qka8BW6t7T9miCP+y4qkqqb1p6LumMsbBHQ==","shasum":"5413edb57cdadcfce2ac2372a0e736fecc8d63ca","tarball":"https://registry.npmjs.org/@capawesome/capacitor-root-detection/-/capacitor-root-detection-0.1.2.tgz","fileCount":36,"unpackedSize":47999,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-root-detection@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAxPTVASsbM/jdOihQUyrD3YP3PRYlIi8PJN6HuymadBAiBApti+O+AMco1Pchs053x4QrG7gridtzb7Xb4dXGxM9Q=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d8589c1-1a5d-4db9-87b2-492cd62c5947"}},"directories":{},"maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-root-detection_0.1.2_1788337401770_0.6234737465003319"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-07T06:21:54.557Z","modified":"2026-09-02T08:23:22.288Z","0.0.1":"2026-07-07T06:21:54.902Z","0.1.0":"2026-07-14T07:53:02.462Z","0.1.1":"2026-07-15T08:10:39.367Z","0.1.2":"2026-09-02T08:23:21.882Z"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","homepage":"https://capawesome.io/docs/sdks/capacitor/root-detection/","keywords":["capacitor","plugin","native","capacitor-plugin","root detection","jailbreak detection","rooted device","jailbroken device","emulator detection","developer mode","device security"],"repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"description":"Capacitor plugin for detecting rooted and jailbroken devices on Android and iOS.","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"readme":"# Capacitor Root Detection Plugin\n\nCapacitor plugin for detecting rooted and jailbroken devices.\n\n<div class=\"capawesome-z29o10a\">\n  <a href=\"https://cloud.capawesome.io/\" target=\"_blank\">\n    <img alt=\"Deliver Live Updates to your Capacitor app with Capawesome Cloud\" src=\"https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1\" />\n  </a>\n</div>\n\n## Features\n\n- 🔒 **Root detection**: Detect rooted (Android) and jailbroken (iOS) devices.\n- 🤖 **Emulator detection**: Detect whether the app is running on an emulator or simulator.\n- 🛠️ **Developer mode**: Detect whether developer mode is enabled (Android).\n- 🤝 **Compatibility**: Works alongside the [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/) plugin for server-verifiable device attestation.\n- 📦 **SPM**: Supports Swift Package Manager and CocoaPods for iOS.\n- 🔁 **Up-to-date**: Always supports the latest Capacitor version.\n\nMissing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!\n\n## Use Cases\n\nThe Root Detection plugin is typically used in apps that handle sensitive data and need to assess the trustworthiness of the device, for example:\n\n- **Banking and fintech apps**: Warn users or restrict access when the app runs on a rooted or jailbroken device.\n- **Fraud prevention**: Detect emulators and simulators to make automated abuse of your app harder.\n- **Compliance checks**: Detect whether developer mode is enabled on Android to satisfy internal security policies.\n- **Conditional feature gating**: Disable particularly sensitive features on compromised devices while keeping the rest of the app usable.\n\n## Compatibility\n\n| Plugin Version | Capacitor Version | Status         |\n| -------------- | ----------------- | -------------- |\n| 0.x.x          | >=8.x.x           | Active support |\n\n## Installation\n\nYou can use our **AI-Assisted Setup** to install the plugin.\nAdd the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:\n\n```bash\nnpx skills add capawesome-team/skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```\n Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-root-detection` plugin in my project.\n```\n\nIf you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\nnpm install @capawesome/capacitor-root-detection\nnpx cap sync\n```\n\n### Android\n\n#### Variables\n\nThis plugin will use the following project variables (defined in your app's `variables.gradle` file):\n\n- `$rootbeerVersion` version of `com.scottyab:rootbeer-lib` (default: `0.1.2`)\n\n### iOS\n\n#### Application Queries Schemes\n\nThe `isRooted()` method checks whether the `cydia://` URL scheme can be opened as part of its jailbreak heuristics. For this check to work, add the `cydia` scheme to the `LSApplicationQueriesSchemes` array in the `Info.plist` file of your app:\n\n```xml\n<key>LSApplicationQueriesSchemes</key>\n<array>\n  <string>cydia</string>\n</array>\n```\n\nThis step is optional. If the scheme is not added, the `isRooted()` method still works but skips the URL scheme check.\n\n## Configuration\n\nNo configuration required for this plugin.\n\n## Usage\n\nThe following examples show how to check whether the device is rooted or jailbroken, running on an emulator, or has developer mode enabled.\n\n### Check whether the device is rooted or jailbroken\n\nCheck whether the device is rooted (Android) or jailbroken (iOS). Keep in mind that this is a best-effort, client-side check that can be bypassed by a determined attacker (see [Security Considerations](#security-considerations)):\n\n```typescript\nimport { RootDetection } from '@capawesome/capacitor-root-detection';\n\nconst isRooted = async () => {\n  const { rooted } = await RootDetection.isRooted();\n  return rooted;\n};\n```\n\n### Check whether the app runs on an emulator\n\nCheck whether the app is running on an emulator (Android) or simulator (iOS):\n\n```typescript\nimport { RootDetection } from '@capawesome/capacitor-root-detection';\n\nconst isEmulator = async () => {\n  const { emulator } = await RootDetection.isEmulator();\n  return emulator;\n};\n```\n\n### Check whether developer mode is enabled\n\nCheck whether developer mode is enabled on the device. Only available on Android:\n\n```typescript\nimport { RootDetection } from '@capawesome/capacitor-root-detection';\n\nconst isDeveloperModeEnabled = async () => {\n  const { enabled } = await RootDetection.isDeveloperModeEnabled();\n  return enabled;\n};\n```\n\n## API\n\n<docgen-index>\n\n* [`isDeveloperModeEnabled()`](#isdevelopermodeenabled)\n* [`isEmulator()`](#isemulator)\n* [`isRooted()`](#isrooted)\n* [Interfaces](#interfaces)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### isDeveloperModeEnabled()\n\n```typescript\nisDeveloperModeEnabled() => Promise<IsDeveloperModeEnabledResult>\n```\n\nCheck whether developer mode is enabled on the device.\n\nOnly available on Android.\n\n**Returns:** <code>Promise&lt;<a href=\"#isdevelopermodeenabledresult\">IsDeveloperModeEnabledResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### isEmulator()\n\n```typescript\nisEmulator() => Promise<IsEmulatorResult>\n```\n\nCheck whether the app is running on an emulator (Android) or simulator (iOS).\n\n**Returns:** <code>Promise&lt;<a href=\"#isemulatorresult\">IsEmulatorResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### isRooted()\n\n```typescript\nisRooted() => Promise<IsRootedResult>\n```\n\nCheck whether the device is rooted (Android) or jailbroken (iOS).\n\n**Attention**: This is a best-effort, client-side check that can be\nbypassed by a determined attacker. Do not rely on it as the sole security\nmeasure. Use the App Integrity plugin when server-verifiable trust is\nrequired.\n\n**Returns:** <code>Promise&lt;<a href=\"#isrootedresult\">IsRootedResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### IsDeveloperModeEnabledResult\n\n| Prop          | Type                 | Description                                      | Since |\n| ------------- | -------------------- | ------------------------------------------------ | ----- |\n| **`enabled`** | <code>boolean</code> | Whether developer mode is enabled on the device. | 0.1.0 |\n\n\n#### IsEmulatorResult\n\n| Prop           | Type                 | Description                                                             | Since |\n| -------------- | -------------------- | ----------------------------------------------------------------------- | ----- |\n| **`emulator`** | <code>boolean</code> | Whether the app is running on an emulator (Android) or simulator (iOS). | 0.1.0 |\n\n\n#### IsRootedResult\n\n| Prop         | Type                 | Description                                                 | Since |\n| ------------ | -------------------- | ----------------------------------------------------------- | ----- |\n| **`rooted`** | <code>boolean</code> | Whether the device is rooted (Android) or jailbroken (iOS). | 0.1.0 |\n\n</docgen-api>\n\n## Security Considerations\n\nThe checks provided by this plugin are performed entirely on the device and are **best-effort**. A determined attacker with full control over a rooted or jailbroken device can bypass or spoof any client-side detection. Therefore, you should **never** rely on this plugin as the sole security measure for protecting sensitive functionality.\n\nFor **server-verifiable** device and app integrity, use the [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/) plugin, which leverages the Play Integrity API (Android) and App Attest (iOS) to produce attestations that can be validated on your backend.\n\n## FAQ\n\n### How is this plugin different from other similar plugins?\n\nIt combines several device-trust signals in one fully typed API: root and jailbreak detection on Android and iOS, emulator and simulator detection, and a developer-mode check on Android. These are fast, client-side checks that are easy to drop into any app, and the plugin is designed to work alongside the App Integrity plugin when you also need server-verifiable attestation. If a lightweight client-side signal is all you need, this covers it well; when you need a full trust story, the two plugins fit together.\n\n### Can root detection be bypassed?\n\nYes. All checks provided by this plugin are performed entirely on the device and are best-effort. A determined attacker with full control over a rooted or jailbroken device can bypass or spoof any client-side detection. You should therefore never rely on this plugin as the sole security measure. See the [Security Considerations](#security-considerations) section for details.\n\n### What is the difference between this plugin and the App Integrity plugin?\n\nThe Root Detection plugin performs client-side checks that run entirely on the device, which makes them fast and easy to use but also spoofable. The [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/) plugin leverages the Play Integrity API (Android) and App Attest (iOS) to produce attestations that can be validated on your backend, providing server-verifiable trust. The two plugins are designed to work alongside each other.\n\n### Which methods are available on which platforms?\n\nThe `isRooted()` and `isEmulator()` methods are available on Android and iOS. The `isDeveloperModeEnabled()` method is only available on Android. There is no Web implementation, since rooting and jailbreaking are concepts of mobile operating systems.\n\n### Do I need any special configuration on iOS?\n\nOptionally, you can add the `cydia` scheme to the `LSApplicationQueriesSchemes` array in your app's `Info.plist` file so that the `isRooted()` method can check whether the `cydia://` URL scheme can be opened as part of its jailbreak heuristics. If the scheme is not added, the method still works but skips the URL scheme check. See the [Installation](#installation) section for details.\n\n### Can I use this plugin with Ionic, React, Vue or Angular?\n\nYes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.\n\n## Related Plugins\n\n- [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/): Verify app and device integrity using the Play Integrity API (Android) and App Attest (iOS).\n- [Biometrics](https://capawesome.io/docs/sdks/capacitor/biometrics/): Request biometric authentication, such as face recognition or fingerprint recognition.\n- [Privacy Screen](https://capawesome.io/docs/sdks/capacitor/privacy-screen/): Hide sensitive app content in the app switcher, block screenshots, and detect when a screenshot is taken.\n- [Secure Preferences](https://capawesome.io/docs/sdks/capacitor/secure-preferences/): Securely store key/value pairs such as passwords, tokens or other sensitive information.\n\n## Newsletter\n\nStay 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/).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/root-detection/CHANGELOG.md).\n\n## License\n\nSee [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/root-detection/LICENSE).\n","readmeFilename":"README.md"}