Migration: v14.3.0 to v15.0.0
Everything below is cited to the official release notes; nothing is copied verbatim. Read the linked release for the full list.
v15.0.0 (16 Sep 2026)
Release: https://github.com/vueuse/vueuse/releases/tag/v15.0.0 Compare range: v14.4.0...v15.0.0.
Breaking
templateRefremoved. Migrate to Vue's built-inuseTemplateRef(). PR #4883.- Node.js 20 support dropped. Engines now
>= 22(package.json:39). PR #5553. - Deprecated timer options removed in favor of
scheduler. Anyinterval/immediateoptions passed toConfigurableSchedulercomposables (useCountdown,useNow,useTimestamp,useTimeAgo,useTimeAgoIntl,useElementByPoint,useMemory,useVibrate,useWebSocketheartbeat) are ignored or type errors now. Providescheduler: (cb) => Pausableinstead (e.g. wrapuseRafFn). PR #5564. The affected v15 option interfaces all extend/intersectConfigurableScheduler(dist/index.d.ts:1291,1967,3415,3707,4834,4894,4942,5282,5634). useEventSourcenow handles the SSEmessageevent type and triggers bothonmessageandaddEventListenerpaths. PR #5331.useThrottleFndefaulttrailingchanged fromfalsetotrue. PR #5249.@vueuse/integrationsuseIDBKeyvalnow syncs changes across tabs (behavioral break if you relied on per-tab isolation). PR #5338.
New
useWebMCP: register WebMCP tools ondocument.modelContext. PR #5580. See new-functions-v15.md.useLiveAnnouncer: aria-live announcements. PR #5315.useTemporalNow: reactive TemporalZonedDateTime. PR #4793.
Fixes that change observed behavior
useFetch: a stale success response after a newer request starts is ignored. PR #5574.useWebSocket: messages from a superseded socket are ignored. PR #5573.useResizeObserver:observe()guarded withinstanceof Element; comment nodes no longer crash it. PR #5593.onLongPress: pending press cleared onpointercancel. PR #5555.usePointer:isInsidereset onpointercancel. PR #5587.useBluetooth: deduped disconnect listener, reconnect on mount. PR #5603.useCloned: custom clone function is now type-safe. PR #5559.- Tree-shaking annotations corrected for overloaded and arrow functions (smaller bundles possible). PR #5613.
v14.4.0 (29 Jul 2026)
Release: https://github.com/vueuse/vueuse/releases/tag/v14.4.0 Compare range: v14.3.0...v14.4.0.
New
useElementOverflow: reactiveisXOverflowed/isYOverflowed. PR #4094.useDebounceFn:flushandisPendingadded to the filter system. PR #5259.useVirtualList:scrollTo(index, { behavior, block, inline }). PR #4905.useSpeechRecognition: exposesconfidenceof the latest result. PR #5398.onStartTyping: more configurable options. PR #5395.
Fixes that change observed behavior
useFetch: stale abort errors after a successful refetch are ignored. PR #5525.useWebSocket: status syncs toCLOSEDafter explicitclose(). PR #5471.useEventBus: usestryOnScopeDisposeinstead of Vue internal API. PR #5548.useDraggable/usePointerSwipe: end onpointercancel. PRs #5550, #5379.useVirtualList: range recomputed when item size changes. PR #5533.useStyleTag: multiple components sharing one id no longer error. PR #5473.useElementSize: prefills size based on theboxoption. PR #5524.
Standing deprecations in v15 (still exported, avoid in new code)
computedEager: docs state it will be removed; usecomputed()on Vue 3.4+ (docs).watchPausable: use Vue 3.5watch()pause/resume(docs).executeTransitionandUseTransitionOptions.transition: usetransition()andeasing(dist/index.d.ts:5114-5121).breakpointsVuetify: alias ofbreakpointsVuetifyV2; use V2/V3 explicitly (dist/index.d.ts:758-762).asyncComputed: alias ofcomputedAsync(dist/index.d.ts:46).
Forward-compatibility warnings
ConfigurableDeepRefs.deepRefsdefaults totruein v15 and flips tofalsein the next major (dist/index.d.ts:204-211). PassdeepRefsexplicitly anywhere the ref depth matters.computedAsyncdefaults:flush: 'sync',shallow: true, andonErrorfalls back toglobalThis.reportError(dist/index.js:10). WraponErrorwhen reportError noise is unwanted.