Can I trust Opal Screen Time Limit & Timer?
This app did not meet two or more trust checks, has a critical issue in one, or has a red flag.
- What it means for you
- Health, sleep, and step data from device sensors stays on the device with no evidence of transmission to third-party analytics providers. The app includes code to send usage and interaction data to Amplitude, Firebase, Adjust, and the Facebook SDK for analytics and ad attribution. All network connections use encrypted channels.
- Main concern
- 'Data never leaves device' claim is contradicted by the build: Firebase, Amplitude, and Adjust all include code to send data
- The developer's description
- Opal is a screen time and focus app helping users cut smartphone usage and build healthier digital habits. Features include app blocking, focus sessions, time limits, and parental controls. Highly rated (4.4★ on Google Play) with over 500K downloads.
- Third-party services
- 18
- Findings rated low or higher
- 5
Open on Google PlayOpens the app's listing on Google Play in a new tab.
Full findings
Open this scan in your dashboardThe account that ran this scan sees every finding and the Rescan button there.
Trust checks
Secure by Design
StrongStrong security foundation
Why this result
This check looks for security issues at high severity or above in the code of this build, and none were recorded. Its scope covers stored credentials, how the app protects data on the device, and how it protects data in transit.
The app enforces HTTPS across all network connections and uses strong, modern encryption throughout. Independent binary analysis across more than 40 built-in libraries returned zero memory corruption, injection, or format-string vulnerabilities. On iOS, the app uses Apple's native cryptography framework with industry-standard encryption algorithms and stores authentication credentials in device-local secure storage that does not sync to iCloud. Authentication tokens are never placed in URLs or logs. A third-party paywall component registers a browser interface for processing subscription purchases, but the subscription screen is not accessible from other apps and all external navigation within it is blocked, consistent with standard practice for this SDK category. No hardcoded production secrets, no certificate validation bypasses, and no cleartext traffic were found.
Data Minimization
One criterion not metTracking lacks clear disclosure
Why this result
This build contains analytics or attribution code written to send data to companies other than the developer. No consent step was found before that code runs, and the app's disclosures do not describe the collection in full. Tracking by itself is ordinary; what this check reports is the combination of collection, recipient and absent disclosure.
Manifest Mismatch
One criterion not metDisclosure incomplete or contradicted
Why this result
The check compares the app's privacy disclosures against what the code does, and at least one claim did not match in this build. Mismatches of this kind include a data category collected but not disclosed, a recipient the disclosure omits, and an identifier attached to data the disclosure describes as anonymous.
User Control
StrongNo lock-in
Why this result
The check looks for a way to export the data an account has accumulated and a way to delete the account itself. In this build, either both were found, or the app has no account of its own and keeps its data on the device. For an app without an account, the developer has no server-side copy to export or delete, and deleting the app removes the data in its own storage.
No proprietary data formats, artificial cancellation barriers, or blocked data-export paths were identified. The app uses standard database structures for local storage and relies on common authentication infrastructure. No mechanisms that would make it unreasonably difficult to stop using the service or switch to an alternative were found.
Truly Local
One criterion not metContains code to send personal data off the device
Why this result
This app presents itself as working offline or on the device alone, and this build contains code written to send personal data to servers. The check covers analytics, crash reporting, advertising code and any first-party endpoint the code addresses personal data to. Code of this kind is common; what this check reports is the distance between that code and how the app describes itself.
Strengths
- All API traffic uses HTTPS with proper hostname verification and no cleartext endpoints on either platform
- iOS tokens stored with kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly — they cannot be extracted on non-jailbroken devices and do not sync to iCloud
- Health data (sleep, steps, mindful minutes) from HealthKit stays on the device with no evidenced transmission to third parties or the developer's backend
- Installed app list is used in code on the device; no evidence was found of code to transmit it to any analytics SDK despite multiple analytics pipelines active
- Firebase App Check (Play Integrity on Android, DCAppAttestService on iOS) provides API call attestation
- VulnFanatic returned zero memory safety findings across all 40+ native libraries analyzed
What the app contains
18 services
Third-party services the scan names in the build:
- Firebase Analytics
- Firebase Crashlytics
- Firebase Auth
- Firebase App Check
- Amplitude Analytics
- Amplitude Session Replay
- Amplitude Experiment
- Adjust
- Facebook SDK (FBSDKCoreKit, FBAEMKit)
- ContextSDK
- OneSignal
- RevenueCat
- Superwall
- Google App Measurement
- GoogleMobileAds
- Google Ads On-Device Conversion
- PairIP
- ipify.org
Libraries
| Library | Version | Advisory |
|---|---|---|
| Room | not recorded | none confirmed |
| Adjust | not recorded | none confirmed |
| Amplitude | not recorded | none confirmed |
| Google Play Billing | not recorded | none confirmed |
| Datatransport | not recorded | none confirmed |
| Google Advertising ID client | 12451000 | none confirmed |
| Google Sign-In | 12451000 | none confirmed |
| Google Play Services | 12451000 | none confirmed |
| Google Play Services Location | 12451000 | none confirmed |
| Material Components | not recorded | none confirmed |
Show all 16 librariesShow fewer
Method and limits
Static analysis: the decompiled code, manifest and resources of this build, read file by file. Network traffic at run time is established by a capture of the running app.
- Build SHA-256
- e7f65dda7e6ae6085fef8d016c32173a7e599765129d48579feae413b07977cb
- Rule pack
- citt-ruleset-2026-08-v1
- Files decompiled
- 15,656
- Scan date
- 15 August 2026
Corrections
No correction is published for this app.
Developer response
No response is published for this app.
Report an error Opens an email to [email protected] that names this app and this scan.