NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3399 most downloaded on npm
Collection of essential Vue Composition Utilities
Last release 3 days ago
16 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
398 releases · first in 2019
One column per quarter.
### Bug Fixes * types: close #291
types: update templateRef types
get: accept prop as second argument
new functions - get, set, reactifyObject
createGlobalState: SSR compactiblity
types: add return type for useVModel
@neelance @matias-capeletto @maxma241 @scottbedard @DarkXanteR @anteriovieira @amrbashir @liaoliao666 @yangger6 @Demivan @iGalaxyz @sxzz @sibbng @Eric
@neelance @matias-capeletto @maxma241 @scottbedard @DarkXanteR @anteriovieira @amrbashir @liaoliao666 @yangger6 @Demivan @iGalaxyz @sxzz @sibbng @Ericteen
pausableWatch, debouncedWatch, etc.window, document, etc.isSupported for browsers compatibility check.<details> <summary> <b><code>useTransition</code></b> - named transition presets are removed. Import them from <code>TransitionPresets</code> instead. #190 </summary>
<br>
import { useTransition } from '@vueuse/core'
useTransition(baseNumber, {
duration: 1000,
transition: 'easeInOutCubic',
})
Changed to
import { useTransition, TransitionPresets } from '@vueuse/core'
useTransition(baseNumber, {
duration: 1000,
transition: TransitionPresets.easeInOutCubic,
})
</details>
<details> <summary> <b><code>asyncComputed</code></b> - evaluating state is now passed through arguments instead of returning tuple </summary>
<br>
import { asyncComputed } from '@vueuse/core'
const [state, evaluating] = asyncComputed(async () => {}, {})
Changed to
import { asyncComputed } from '@vueuse/core'
const evaluating = ref(false)
const state = asyncComputed(async () => {}, {}, evaluating)
</details>
<details> <summary> <b><code>useEventListener</code></b> - event target moved from 4th argument to first </summary>
<br>
import { useEventListener } from '@vueuse/core'
useEventListener('click', handler, undefined, document)
Changed to
import { useEventListener } from '@vueuse/core'
useEventListener(document, 'click', handler)
</details>
<details>
<summary>
<b><code>useRefHistory</code></b> - flush now default to pre, returned current renamed to source, hisotry point value renamed to snapshot
</summary>
<br> Refer to docs for more details. </details>
<details>
<summary>
<b><code>useWebWorkerFn</code></b> - workerStatus changed from enum to literal unions
</summary>
<br>
import { useWebWorkerFn, WorkStatus } from '@vueuse/core'
const { workerStatus } = useWebWorkerFn(fn)
workerStatus.value === WorkStatus.running
Changed to
import { useWebWorkerFn } from '@vueuse/core'
const { workerStatus } = useWebWorkerFn(fn)
workerStatus.value === 'RUNNING'
</details>
<details>
<summary>
<b><del><code>useNow</code></del></b> - useNow renamed to useTimestamp with API changes
</summary>
<br>
import { useNow } from '@vueuse/core'
const now = useNow()
Changed to
import { useTimestamp } from '@vueuse/core'
const { timestamp: now, pause, resume } = useTimestamp()
</details>
<details>
<summary>
<b><del><code>useRaf</code></del></b> - dropped in favor of useTimestamp
</summary>
<br> None </details>
<details>
<summary>
<b><code>useTimeout / useInterval</code></b> - returned activated renamed to isActive
</summary>
<br> None </details>
<details>
<summary>
<b><code>useRafFn</code></b> - start / stop renamed to resume / pause
</summary>
<br> None </details>
<details> <summary> <b><code>useXXXObserver</code></b> - API changes </summary> <br>
Refer to docs and types for more details. </details>
<details> <summary>Generated changelog</summary>
</details>
useElementVisibility: set the listener for scrollTarget on mounted and use Ref
useVModel: TypeError: Cannot read property '_events' of undefined
add lazy option to asyncComputed
useWebSocket: return WebSocket instance
### Bug Fixes * router: update timing
useGeolocation: update types for Geolocation in TS 4.1, close #231
### Features * onClickOutside: new function
useTimeout: on stop inifite loop
@neelance @matias-capeletto @maxma241 @scottbedard @DarkXanteR @anteriovieira
@neelance @matias-capeletto @maxma241 @scottbedard @DarkXanteR @anteriovieira
pausableWatch, debouncedWatch, etc.window, document, etc.isSupported for browsers compatibility check.<details> <summary> <b><code>useTransition</code></b> - named transition presets are removed. Import them from <code>TransitionPresets</code> instead. #190 </summary>
<br>
import { useTransition } from '@vueuse/core'
useTransition(baseNumber, {
duration: 1000,
transition: 'easeInOutCubic',
})
Changed to
import { useTransition, TransitionPresets } from '@vueuse/core'
useTransition(baseNumber, {
duration: 1000,
transition: TransitionPresets.easeInOutCubic,
})
</details>
<details> <summary> <b><code>asyncComputed</code></b> - evaluating state is now passed through arguments instead of returning tuple </summary>
<br>
import { asyncComputed } from '@vueuse/core'
const [state, evaluating] = asyncComputed(async () => {}, {})
Changed to
import { asyncComputed } from '@vueuse/core'
const evaluating = ref(false)
const state = asyncComputed(async () => {}, {}, evaluating)
</details>
<details> <summary> <b><code>useEventListener</code></b> - event target moved from 4th argument to first </summary>
<br>
import { useEventListener } from '@vueuse/core'
useEventListener('click', handler, undefined, document)
Changed to
import { useEventListener } from '@vueuse/core'
useEventListener(document, 'click', handler)
</details>
<details>
<summary>
<b><code>useRefHistory</code></b> - flush now default to pre, returned current renamed to source, hisotry point value renamed to snapshot
</summary>
<br> Refer to docs for more details. </details>
<details>
<summary>
<b><code>useWebWorkerFn</code></b> - workerStatus changed from enum to literal unions
</summary>
<br>
import { useWebWorkerFn, WorkStatus } from '@vueuse/core'
const { workerStatus } = useWebWorkerFn(fn)
workerStatus.value === WorkStatus.running
Changed to
import { useWebWorkerFn } from '@vueuse/core'
const { workerStatus } = useWebWorkerFn(fn)
workerStatus.value === 'RUNNING'
</details>
<details>
<summary>
<b><del><code>useNow</code></del></b> - useNow renamed to useTimestamp with API changes
</summary>
<br>
import { useNow } from '@vueuse/core'
const now = useNow()
Changed to
import { useTimestamp } from '@vueuse/core'
const { timestamp: now, pause, resume } = useTimestamp()
</details>
<details>
<summary>
<b><del><code>useRaf</code></del></b> - dropped in favor of useTimestamp
</summary>
<br> None </details>
<details>
<summary>
<b><code>useTimeout / useInterval</code></b> - returned activated renamed to isActive
</summary>
<br> None </details>
<details>
<summary>
<b><code>useRafFn</code></b> - start / stop renamed to resume / pause
</summary>
<br> None </details>
<details> <summary> <b><code>useXXXObserver</code></b> - API changes </summary> <br>
Refer to docs and types for more details. </details>
<details> <summary>Generated changelog</summary>
</details>
useMouseInElement: improve touch
useMouseInElement: crash in firefox
adds fallback for Safari < 14 and older browsers
### Bug Fixes * type error
### Features * new function biSyncRef
types: embeded ResizeObserverSize types, close #154
### Features * new function - useQRCode
docs: story for useMouseInElement
useAxios: added request cancelation
when: update when to align @vue-reactivity/when
Nothing published for this version
useIntersectionObserver stopping
### Features * add useCookies (#148) (#150) (47febb9) * useAxios
useEventSource remove 'es.close' for actually closing connection
### Features * update when
Nothing published for this version
### Features * add useTitle and clean up
### Bug Fixes * add sideEffects flag
### Bug Fixes * build (e1bf67f) * improve demo writing DX (dcf9b8c) ### Features * add useRefHistory
### Bug Fixes * createGlobalState
### Bug Fixes * typo (439854a) ### Features * add useResizeObserver
Nothing published for this version
### Features * add useOnStartTyping
### Features * add useEventSource (#112) (9185243) * add useIntersectionObserver
renamed maybeOnMounted to tryOnMounted
add and use maybeOnMounted for most of the hooks
maybeOnMounted for most of the hooks (0158f4a)### Bug Fixes * firebase: firebase dep free
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →