// the find
f/vue-wait
Complex Loader and Progress Management for Vue/Vuex and Nuxt Applications
vue-wait manages multiple named loading/progress states in a Vue app (via a plain reactive array or optionally Vuex) so you're not juggling a pile of boolean flags for things like 'fetching users' and 'creating user' separately. It's aimed at Vue 2/3 and Nuxt 2 apps with several concurrent async operations that each need their own spinner or disabled state.
Vuex is opt-in, not required — by default it just keeps loader state in a reactive array, so you don't need a store to use it. Wildcard matching via the matcher library ('creating.*') lets you group related loaders without writing your own glob logic. It ships separate builds for Vue 2 and Vue 3 (vue-wait-v2.js vs vue-wait-next.js) rather than dropping v2 support outright. The directives (v-wait:disabled, v-wait:visible) cover the common 'disable this button while X is loading' case without writing it in every component.
Last commit is December 2022, before Composition API patterns became the default way to write Vue — there's no composable/hook equivalent, just the options-style plugin and string-keyed mapWaitingActions, which already feels out of step with how Vue 3 code is written now. Loader names are plain strings with no enum or type-checked identifiers, so a typo in 'creating user' vs 'create user' just silently never triggers — nothing catches it at compile time despite the TS type defs. The Nuxt module (nuxt/index.js) looks built for Nuxt 2's module system with no indication it was updated for Nuxt 3. No test directory is visible in the repo despite the README spending real estate on how to test components that depend on it, so it's hard to gauge how solid the core state logic actually is before adopting it into a project with no compiler-level safety net around loader keys.