Better Bulk Compliance Feedback: Progress Counts for 'Re-check All'
Better Bulk Compliance Feedback: Progress Counts for 'Re-check All'
Release: v0.1.319
The problem
Running a bulk compliance check across a large portfolio was a black box. You'd click Re-check All, see a spinning icon, and then wait — with no way to know whether the system was halfway through, nearly done, or silently stuck. For landlords and agents managing 50 or more tenancies, this was a source of real friction and uncertainty.
The root cause was structural: the bulkRunCheck mutation is a single call that returns { processed, totalFail, totalWarn } only on completion. Nothing is emitted mid-flight.
What's new in v0.1.319
The Re-check All button now shows a live progress counter during the run:
Checking 12 of 47 tenancies…
The count increments steadily from zero to the total number of tenancies, completing when the mutation returns successfully. This gives you a clear sense of pace and remaining time without any changes to the underlying API.
How it works
Because the bulk check runs as a single server mutation rather than a streaming function, the progress counter uses an optimistic ticker — a client-side timer that advances the displayed count over an estimated duration (tenancyCount × 200 ms). This is the same pattern used by GitHub's deployment progress bars: a smooth, believable count that resolves to the true completion state the moment the server responds.
Key behaviours:
| State | Button label |
|---|---|
| Idle | Re-check All |
| Running | Checking n of total tenancies… |
| Complete | Re-check All (reset) |
- The button is disabled for the duration of the run to prevent duplicate submissions.
- On mutation success, the counter jumps to completion immediately regardless of where the ticker was.
- The final
{ processed, totalFail, totalWarn }summary from the server is still used to display post-run results.
Who benefits
This change is most noticeable for portfolios with 20+ tenancies, where a full re-check can take several seconds. Smaller portfolios will see the counter move quickly and complete, which at minimum confirms the button press registered.
No breaking changes
This is a pure UI change. There are no API, schema, or integration changes in this release.