$npx -y skills add skilld-dev/vue-ecosystem-skills --skill vueuse-shared-skilldALWAYS use when writing code importing \"@vueuse/shared\". Consult for debugging, best practices, or modifying @vueuse/shared, vueuse/shared, vueuse shared, vueuse.
| 1 | # vueuse/vueuse `@vueuse/shared@14.3.0` |
| 2 | **Tags:** next: 5.0.0, alpha: 14.0.0-alpha.3, beta: 14.0.0-beta.1 |
| 3 | |
| 4 | **References:** [Docs](./references/docs/_INDEX.md) |
| 5 | ## API Changes |
| 6 | |
| 7 | This section documents version-specific API changes — prioritize recent major/minor releases. |
| 8 | |
| 9 | - BREAKING: Requires Vue 3.5 — v14 now requires Vue 3.5+ for native performance optimizations [source](./references/releases/v14.0.0.md) |
| 10 | |
| 11 | - BREAKING: `useThrottleFn` alignment — v14 aligned with traditional throttle behavior (leading: true, trailing: false by default) [source](./references/releases/v14.0.0.md) |
| 12 | |
| 13 | - BREAKING: ESM-only — v13 dropped CJS build support, package is now ESM-only [source](./references/releases/v13.0.0.md) |
| 14 | |
| 15 | - BREAKING: `createSharedComposable` return — v14 now returns only the sharedComposable instance on the client side [source](./references/releases/v14.0.0.md) |
| 16 | |
| 17 | - NEW: `refManualReset` — new function in v14 for creating refs with an explicit `reset()` method [source](./references/releases/v14.0.0.md) |
| 18 | |
| 19 | - NEW: `watchAtMost` controls — v14 added `pause`, `resume`, and `count` to the return value [source](./references/releases/v14.0.0.md) |
| 20 | |
| 21 | - NEW: `tryOnScopeDispose` — v14 added optional `failSilently` parameter to suppress errors outside of scope [source](./references/releases/v14.0.0.md) |
| 22 | |
| 23 | - NEW: `useArrayReduce` type — v14.1.0 now exports the `UseArrayReduceReturn` type [source](./references/releases/v14.1.0.md) |
| 24 | |
| 25 | - NEW: `computedWithControl` sources — v14.1.0 allows different types in watch sources array [source](./references/releases/v14.1.0.md) |
| 26 | |
| 27 | - DEPRECATED: `computedEager` — v14 deprecated in favor of Vue 3.5's native `computed` optimizations [source](./references/releases/v14.0.0.md) |
| 28 | |
| 29 | - DEPRECATED: `watchPausable` — v14 deprecated in favor of Vue's built-in `watch` or `pausableFilter` [source](./references/releases/v14.0.0.md) |
| 30 | |
| 31 | - DEPRECATED: Alias exports — v14 deprecated secondary names like `ignorableWatch` in favor of primary `watchIgnorable` [source](./references/releases/v14.0.0.md) |
| 32 | |
| 33 | - DEPRECATED: `eagerComputed` — v14 deprecated alias in favor of `computedEager` [source](./references/releases/v14.0.0.md) |
| 34 | |
| 35 | - DEPRECATED: `controlledComputed` — v14 deprecated alias in favor of `computedWithControl` [source](./references/releases/v14.0.0.md) |
| 36 | |
| 37 | **Also changed:** `createReactiveFn` DEPRECATED · `autoResetRef` DEPRECATED · `debouncedRef` DEPRECATED · `useDebounce` DEPRECATED · `throttledRef` DEPRECATED · `useThrottle` DEPRECATED · `controlledRef` DEPRECATED · `debouncedWatch` DEPRECATED · `ignorableWatch` DEPRECATED · `pausableWatch` DEPRECATED · `throttledWatch` DEPRECATED |
| 38 | |
| 39 | ## Best Practices |
| 40 | |
| 41 | - Prefer Vue 3.4+ built-in `computed()` over `computedEager()` — standard computed properties now only trigger dependencies if the return value actually changes, making eager evaluation unnecessary [source](./references/docs/computedEager/index.md) |
| 42 | |
| 43 | - Use `createSharedComposable()` for SSR-safe state sharing — it automatically falls back to non-shared instances during SSR to prevent cross-request state pollution, while maintaining a singleton on the client [source](./references/docs/createSharedComposable/index.md) |
| 44 | |
| 45 | - Share state within the same component using `provideLocal()` and `injectLocal()` — allows accessing provided values without going through the parent/child boundary, now with full Vapor mode support [source](./references/docs/provideLocal/index.md) |
| 46 | |
| 47 | - Replace manual watchers with `until()` for one-time async conditions — provides a promise-based API for flow control that resolves once a ref meets a specific requirement, reducing callback nesting [source](./references/docs/until/index.md) |
| 48 | |
| 49 | ```ts |
| 50 | // Preferred for one-time triggers |
| 51 | await until(isReady).toBe(true) |
| 52 | doSomething() |
| 53 | ``` |
| 54 | |
| 55 | - Implement `refManualReset()` for easy state restoration — provides a built-in `.reset()` method to return the ref to its initial value, ideal for clearing forms or reset-to-default filters [source](./references/docs/refManualReset/index.md) |
| 56 | |
| 57 | - Use `reactify()` to transform plain utility functions into reactive ones — automatically accepts refs as arguments and returns a `ComputedRef`, enabling rapid development of reactive logic [source](./references/docs/reactify/index.md) |
| 58 | |
| 59 | - Optimize hot paths with `refWithControl()` using `peek()` and `lay()` — allows reading or writing a ref's value without triggering the reactivity system or tracking dependencies, minimizing unnecessary updates [source](./references/docs/refWithControl/index.md) |
| 60 | |
| 61 | - Return dual object/array APIs via `makeDestructurable()` — makes your custom composables more flexible by allowing users to choose between positional (array) or named (object) destructuring [source](./refe |