How streaks work
JustGains streaks count distinct local workout days, with rest tolerance and Streak Freezes.
A JustGains streak is based on distinct workout or movement days, not the number of sets you do in one day. If you finish multiple workouts on the same local calendar day, that day still counts as one streak day.
The important detail is local day. The API stores and uses the streak owner's timezone so a workout is bucketed into the day it happened for that person. That avoids the classic problem where an evening workout turns into tomorrow because UTC crossed midnight.
What counts toward a streak
The backend streak service reads finished workout end times. It also includes fitness activities such as recorded runs or synced activity sessions, then dedupes everything to local dates. A run and a workout on the same day still count as one movement day.
JustGains allows rest days inside a streak. The streak math keeps a run alive when consecutive workout days are no more than three calendar days apart, which means at most two non-frozen rest days between training days.
| Situation | What happens |
|---|---|
| Train today | Today becomes a workout day. |
| Train twice today | Still one streak day. |
| Take one or two rest days | The streak can stay alive. |
| Miss beyond the tolerance | A freeze may preserve it if one is available. |
Freeze inventory exists too. The rules grant a freeze when a current streak reaches a 7-day milestone, with a cap based on subscription state. A background job can consume freezes when a streak would otherwise fall outside the rest-day tolerance.
The mobile streak hook mirrors this logic for display. It uses owner-local day labels from the heatmap, marks frozen missed days, and shows when the current streak is alive because of a freeze.
FAQ
Keep learning
How JustGains calculates muscle fatigue
JustGains estimates muscle freshness from recent sets, older sets, and recovery buckets.
How long do muscles take to recover?
The 48 to 72 hour rule is a useful starting point, but recovery depends on context.
What is a deload?
A deload is a planned easier stretch that helps fatigue drop while you keep training.