← Back to MathBlocker

Privacy

MathBlocker Privacy Policy

Last updated: April 10, 2026

1. Introduction

This Privacy Policy explains how Recursn LLC ("the Company", "We", "Us", or "Our") handles data in MathBlocker, an iOS app that blocks distracting apps once a daily time budget is exceeded and lets users earn additional screen time by solving math problems.

MathBlocker does not collect personal data, does not use analytics, and does not transmit user information off the device. The sections below describe in detail what data the app touches and where it lives.

2. Apple Frameworks We Use

MathBlocker is built on Apple's Screen Time technology stack:

  • FamilyControls — asks the user for permission to monitor and shield apps.
  • ManagedSettings — applies the actual app, category, and web shields.
  • DeviceActivity — schedules monitoring intervals and listens for usage threshold events.
  • DeviceActivityReportExtension — renders a usage chart on the dashboard inside a sandboxed extension.

These APIs require Apple's com.apple.developer.family-controls entitlement, which Apple grants only after manual review. The app cannot use them without that approval.

3. Data Stored on Your Device

The following data is stored locally on your device only, in SwiftData or in an App Group container shared between the main app and its extensions:

  • Your settings (daily budget, minutes per right answer, questions per session, selected question pack).
  • A history of question attempts (the question text, your answer, whether it was right, time spent).
  • Daily aggregate stats (questions attempted, questions correct, minutes earned).
  • Your app and category selection from FamilyActivityPicker, stored as opaque tokens that cannot be used to identify specific apps outside of the Screen Time framework.
  • A small log file used by the monitoring extension for debugging.

None of this data is uploaded to a server.

4. What Apple Lets the App See

Apple's Screen Time framework is intentionally privacy-restrictive. Even with the Family Controls entitlement granted, the main app process cannot directly read which apps you open, when you open them, or for how long. The framework only exposes:

  • Opaque application, category, and web tokens, which cannot be reversed into app names from the main app.
  • Threshold events ("the user has now used the selected apps for X minutes today").
  • Usage data inside a sandboxed DeviceActivityReportExtension, which renders a SwiftUI view but cannot pass that data back to the main app.

5. How the Dashboard Reports Usage

The hero card (top of the dashboard)

The big numbers at the top of the dashboard ("minutes earned today", "remaining", etc.) are based on data the app tracks itself: the daily budget you set in Settings, the minutes earned from completed math sessions recorded locally in SwiftData, and the "remaining" value derived from the two.

The app does not, and cannot, know exactly how many minutes you have spent on any specific app. Apple's Screen Time framework hides that data from the main app process. The app sets up monitoring with usage thresholds, and Apple notifies it when each threshold is crossed. Those threshold events are tracked in the background and used to estimate when shields should activate. Monitoring is re-registered intelligently as your budget or earned time changes, but the exact minute-by-minute usage is never visible to the app.

The usage chart (bottom of the dashboard)

The bar chart and "X hours Y minutes on blocked apps today" line at the bottom of the dashboard is rendered by a separate Apple component called a DeviceActivityReportExtension. This extension runs in its own sandboxed process and is the only place where actual minute-accurate usage data is accessible. The extension reads usage data from the system, formats it into a view, and displays it inside the main app. The exact numbers are visible to you on screen, but the underlying data never leaves the extension's sandbox. The main app process cannot read those numbers either.

In short: you see your accurate usage in the bottom chart, but the app itself does not have access to those numbers.

6. Network Requests

The app makes a single type of network request: downloading question packs from https://cdn.recursn.com/. These are static JSON files containing math questions. No user identifiers, device identifiers, IP-based identifiers, or analytics are sent with these requests beyond standard HTTP headers. We do not log who downloads what.

7. Question Packs

Question packs are JSON files hosted on Cloudflare R2 at cdn.recursn.com. They contain math questions sourced from publicly available academic datasets (Hendrycks MATH, MMLU, AQUA-RAT, MMLU-Pro, AGIEval). You can browse and download packs from inside the app. Downloads are anonymous and we do not track which packs each user installs.

8. Notifications

If you opt in during onboarding, the app sends a single type of notification: a "five minutes left" warning before app blocking activates. No other notifications are sent. No notification content includes personal information or specific app names.

9. What We Do Not Do

  • We do not collect user accounts, emails, names, or any personally identifying information.
  • We do not use analytics SDKs, crash reporters, or telemetry of any kind.
  • We do not share data with any third parties.
  • We do not sell, rent, or transmit user data.
  • We do not access the camera, microphone, contacts, photos, location, or any other sensor or library.
  • We do not use advertising identifiers or tracking technologies.
  • We do not store anything on a server about individual users.
  • We cannot see which specific apps you open or for how long, outside of what you can see yourself on the dashboard chart.

10. What You Control

  • You pick which apps and categories get blocked using Apple's FamilyActivityPicker. The app never sees the names or icons of those apps in its own code — only opaque tokens that the system uses internally.
  • You can revoke Screen Time authorization at any time from iOS Settings, which immediately stops all monitoring and blocking.
  • You can delete the app to remove all stored data. SwiftData and the App Group container are wiped on uninstall.
  • You can wipe your stats history from the Settings screen.

11. Third Parties

The only third party involved is Cloudflare R2, which hosts our static question pack files at cdn.recursn.com. Cloudflare may log standard HTTP request metadata (timestamp, IP address, user agent) per their own privacy policy. We do not access, store, or use any of that data.

12. Children and Family Sharing

MathBlocker is intended for teenagers and young adults. Family Controls authorization works on individual accounts, not just child accounts in Family Sharing.

13. Changes to This Privacy Policy

We may update this Privacy Policy from time to time. Changes take effect when posted on this page.

14. Contact

MathBlocker is published by Andy Phu (developer team ID Q6YN8K63U3) under Recursn LLC. Questions about privacy can be directed to: