Stay focused, reduce context-switching, and keep momentum with a simple Pomodoro workflow directly in Chrome.
If you want a no-fuss timer that survives popup closes and still completes reliably in Manifest V3, this is built for you.
- Start work quickly with one click
- Switch between Focus and Break modes easily
- Keep visual awareness via the live badge countdown
- Avoid timer drift from MV3 service worker suspension
- Keep all state local to your browser
- Focus and Break modes
- Start, Pause, and Reset controls
- Configurable focus duration (1 to 120 minutes)
- Live icon badge countdown
- Completion notification
- Persistent timer state when popup is closed and reopened
README.md
src/
manifest.json
background.js
popup.html
popup.js
icon.png
docs/media/
pomodoro-ui.jpg
flowchart TD
A[Popup UI] --> B[Send action to background]
B --> C[Background service worker]
C --> D[State model: mode, remainingSec, endTs]
C --> E[chrome.alarms tick]
E --> F[Recompute remaining from Date.now]
F --> G[Update badge text and colour]
F --> H[Persist state in chrome.storage.local]
F --> I[Completion notification]
A --> J[Poll getStatus for live display]
Install directly:
https://chromewebstore.google.com/detail/pomodoro-timer/geibgkighpdnoioegfhmkffoohkdnmdd
- Download or clone this repository
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select the
srcfolder (wheremanifest.jsonis located)
- Open the extension popup
- Choose Focus or Break
- Optionally set custom focus minutes and click Apply
- Click Start
- Pause or reset at any time
This extension avoids fragile interval-only timing.
- Running sessions store an absolute
endTs - Remaining time is recomputed from
Date.now() chrome.alarmsdrives wake-up ticks and completion checks
This keeps countdown behaviour stable despite service worker lifecycle events.
storage: persist timer statealarms: schedule periodic updates in MV3notifications: show completion alerts
- No external API calls
- No telemetry collection
- All timer state remains local in your browser
Apache License 2.0
