The Full Pomodoro Cycle: What the Focus Timer Does When a Focus Block Ends
I work on OnePassApps, so this is our own build, measured on our own site on 7 November 2026. There is already a post here about the Focus Timer's two modes, its tab-title countdown and the keyboard shortcuts. That one
I work on OnePassApps, so this is our own build, measured on our own site on 7 November 2026.
There is already a post here about the Focus Timer's two modes, its tab-title countdown and the keyboard shortcuts. That one states its own limits plainly: the full Pomodoro cycle was not run to completion, so what the panel does at the end of a focus block was not measured, and "Start the next phase automatically" was left off.
So this post runs the cycle to the end, with every phase turned on.
There is also a later post about this app's fields - the Focus Timer's number contract, with the four silent fixes and the four refusals - and the two posts agree where they overlap.
What I set up
I opened the Focus Timer in a signed-out tab and shortened every duration to one minute, so a whole cycle would fit in one sitting:
- Focus: 1 minute
- Short break: 1 minute
- Long break: 1 minute
- Long break every: 2 sessions (the field's lowest value)
- "Start the next phase automatically": on
- "Play a chime when time is up": on - that tick ships ticked on a fresh load
- "Show a browser notification": off
A fresh load otherwise reads Focus 25 min, Short break 5 min, Long break 15 min and "Long break every 4 sessions". I left the notification tick off, so no permission prompt appeared and the notification path is still untested.
The cycle, second by second
I polled the panel once a second and recorded every distinct state.
| Elapsed | Phase | Readout | Session counter |
|---|---|---|---|
| 0 s | Focus | 01:00 | No sessions yet this visit |
| 60 s | Short break | 01:00 | 1 session this visit |
| 121 s | Focus | 01:00 | 1 session this visit |
| 181 s | Long break | 01:00 | 2 sessions this visit |
| 240 s | Focus | 01:00 | 2 sessions this visit |
| 301 s | Short break | 01:00 | 3 sessions this visit |
That is the whole loop: focus, short break, focus, long break, focus, short break. Each phase names itself in the tab title as well - "01:00 Β· Short break Β· Focus Timer" - and the title changes with the phase.
Five things the run showed
The counter counts finished focus blocks, not phases. It reads "No sessions yet this visit" until the first block ends, then "1 session this visit" - and the wording flips to the plural "2 sessions this visit" from the second one on. It does not move when a break ends: the break at 121 s still reads "1 session this visit", and the count moves on at 181 s.
The long break never came closer than two sessions. The long break arrived after the second focus block, not the first, and the "Long break every" field's own range starts at 2 - so a session count below 2 is not a number the timer offers.
The readout changes shape past an hour. 45 minutes shows "45:00". 90 minutes shows "1:30:00" - hours, then minutes, then seconds.
The duration fields lock while the timer runs. With the clock running, all four inputs are disabled and the panel shows "Pause the timer to change these." The Start button becomes Pause.
Nothing survives a reload. After the full cycle above, a reload gave back Focus 25:00, the state "Ready", "No sessions yet this visit" and "Long break every 4 sessions". The panel's own line "Nothing is stored. Closing this tab clears the timer." is accurate: the only keys in localStorage belong to the surrounding site shell - the recently-visited list, the theme preset and Clerk's environment blob - and sessionStorage holds one feature-subject id. No timer, no session count, no phase.
The panel named each transition in its own words. I did not re-measure those exact sentences on 11 November 2026, so I am not quoting them here.
One thing I could not catch
The readout never displayed 00:00 in my one-second polling. It went from 00:01 straight to the next phase at 01:00, so the zero frame is either shorter than a second or never rendered. I am not claiming what the panel looks like at exactly zero.
Limits
One browser, one signed-out session, one build on 7 November 2026. The notification path is untested, because I left the tick off. The chime tick was on, but this box has no audio output, so I did not verify a sound. The long break in my run was one minute because I set it to one; the shipped default is 15. I changed the durations and that one setting, and did not vary the rest.
Cost
Standard is free right now: $0 / month, 100,000 credits every 30 days, no card required and no automatic paid subscription. Existing paid subscriptions keep their terms. The step-by-step version, with the same key map, is on the Focus Timer guide.
I work on OnePassApps. The tool is ours, which is why the numbers above came out of a tab rather than off a marketing page.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.