FocusBeat Privacy Policy
Effective date: 2025-08-08
Thank you for using FocusBeat. Your privacy matters. This policy explains what the FocusBeat Chrome Extension does and, just as importantly, what it does not do with your data.
Summary
- FocusBeat does not collect, transmit, sell, or share any personal data.
- All data used by the extension is stored locally in your browser via
chrome.storage.local and is processed on-device only.
- The extension never contacts any external servers and contains no analytics/telemetry.
What FocusBeat Does
- Starts and stops focus sessions and optional breaks using Chrome’s alarms API.
- Applies/clears blocking rules during sessions (and optionally during breaks) using Declarative Net Request (DNR).
- Shows optional notifications for session start/completion, break start/end, and level-up events.
- Displays a popup UI to start sessions, manage a blocklist, and change settings.
- Tracks simple “game stats” (points, levels, streaks) locally to motivate focus.
Data We Store Locally (on your device only)
We store the following keys in chrome.storage.local:
- session: minimal state for the current session (isActive, endTime, duration).
- breakActive / breakEndTime / breakDurationMin / breakNextDuration: break timing state.
- focusBeatSettings: user preferences such as notifications, sounds, autoStart, theme, breaksEnabled, breakDuration, blockDuringBreaks, syncBlocklist, maxBlockedSites.
- blocklist: your user-provided domains to block (limit configurable in Settings).
- focusBeatGameStats: your local points, level, streak, and totals.
Optional Sync (off by default)
If you enable “Sync Blocked Sites” in Settings, FocusBeat will use chrome.storage.sync to synchronize your blocklist and your game stats across Chrome profiles signed into the same Google account.
- Synced data: blocklist and FocusBeat game stats (points, level, totals). Settings and session/break state remain local.
- When sync is on, FocusBeat merges local and synced values and saves the result to both local and sync, respecting your configured maximum list size for the blocklist.
- Turning sync on or off does not delete your local data. You can turn it back on later without data loss (lists/stats will be merged again).
- Sync is provided by Chrome; Google’s account and sync policies apply. FocusBeat does not transmit any data to our own servers.
Ephemeral Data We Process (not stored remotely)
- URLs are examined in-memory to decide whether to block navigation during active sessions (or during breaks if enabled). Some redirects/wrappers (e.g., google.com/url) are interpreted in-memory to find the true destination. No browsing data is collected, retained beyond what’s needed for blocking, or transmitted anywhere.
- Tabs may be reloaded when rules change so blocking applies consistently.
Permissions We Request (and why)
- storage: save your settings, session state, blocklist, and local stats.
- alarms: schedule session and break timers reliably, even if the popup is closed.
- notifications: show optional system notifications for session/break/level events; they auto-dismiss unless you disable that.
- declarativeNetRequest: apply local blocking rules to sites you choose. Rules run in Chrome’s DNR engine; FocusBeat does not read page contents and does not transmit anything. We do not request host permissions (
host_permissions).
- storage.sync: optionally sync your blocklist and game stats via
chrome.storage.sync when “Sync Blocked Sites” is enabled.
What We Do Not Do
- No account system and no cloud sync by default (sync is opt-in and limited to the blocklist and game stats).
- No analytics, telemetry, crash reporting, fingerprinting, or tracking of any kind.
- No sale or sharing of data with third parties.
- No reading of page contents or form data; only URL-level blocking decisions are made.
Children’s Privacy
FocusBeat is a general-audience tool and does not target children. We do not knowingly collect any personal data from anyone.
Security
- All logic runs locally within the Chrome extension sandbox.
- Data is stored using
chrome.storage.local. You can clear it via the Settings page (Reset) or by removing the extension.
User Controls
- You can disable notifications, sounds, breaks, auto-start, and blocking-during-breaks in Settings.
- You can edit the blocklist at any time and change the max number of sites allowed.
- You can clear local stats and state by using Reset in Settings or by uninstalling the extension.
Data Retention
All data persists only in your browser until you remove it. We retain nothing on any server.
International Transfers
None. No data leaves your device.
Changes to This Policy
If we change how the extension handles data, we will update this policy and the extension’s version.
Contact
For privacy questions or requests, please contact us through the Chrome Web Store listing’s “Contact the developer” link. We do not operate a public repository for this project.
Data Safety (for Chrome Web Store disclosure)
- Collected data: None.
- Shared data: None.
- Data used for functionality: Local-only (settings, session/break state, blocklist, game stats). Optional sync of blocklist and game stats when enabled.
- Security practices: Data is processed on-device; no transmission to our servers.
- Data deletion: User-controlled via Settings → Reset or by uninstalling the extension.