A Tiny Script, An Outsized Effect
Progress bars show up everywhere in FiveM — lockpicking, repairing, washing money, mining, medical aid. Default implementations are functional but flat. Agency-ProgressBar is our take on what this utility should feel like when someone cares about the details.
The Anatomy of a Good Progress Bar
A good progress bar communicates four things simultaneously: what action is happening, how far along you are, how much time remains, and whether you can cancel. Most implementations only handle the first two. Agency-ProgressBar shows all four, with subtle animations that make progress feel smooth rather than chunky.
Cancellation That Works
Player-initiated cancellation triggers a brief fade-out animation that returns the bar's opacity to zero in 300ms. No jarring disappearance. Developers can register a cancel callback so scripts clean up properly when players walk away from an action mid-progress.
Contextual Positioning
The bar appears near the relevant on-screen element — above your head for self-targeted actions, above the target NPC for interactive actions. No more reading action status from the bottom of the screen while something happens at the top. This contextual positioning is a subtle UX upgrade that players feel without being able to name.
The Export Pattern
Like all our utility scripts, Agency-ProgressBar exposes a simple exports API: exports['agency-progressbar']:Play({label, duration, canCancel, onCancel, onDone}). Drop it into any script in minutes. It composes with Agency-Notify, Agency-Hud, and the rest of our ecosystem without any special configuration.