Skip to content

Upgrading @vueuse/core 14 to 15

Breaking14.4.0 โ†’ 15.0.0Breaking5Platform1New3Changed1Fixed9

BreakingUpgrade verdict

5 breaking changes and a platform requirement change.

  • The templateRef helper is removed, so code using it must switch to another approach.
  • Old timer options are gone; use the scheduler option instead.
  • Throttled functions now run once more at the end of the throttle window by default.
  • Event source message handling changes so both onmessage and addEventListener listeners fire.
Top 4 of 6 that need code or config changes

Requires Node.js >=22 from 15.0.0 (none stated before).

Breaking5
Drops the templateRef utility.
templateRef
Removes deprecated timer options in favor of scheduler.
scheduler
useThrottleFn changes default trailing option from false to true.
useThrottleFntrailing
useEventSource handles SSE message type and triggers both onmessage and addEventListener.
useEventSourceonmessageaddEventListener
useIDBKeyval syncs changes across tabs.
useIDBKeyval
Platform1
Drops support for Node.js 20.

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • removed: function templateRef<T extends HTMLElement | SVGElement | Component | null, Keys extends string = string>(key: Keys, initialValue?: T | null): Readonly<Ref<T>>
  • removed: property UseCountdownOptions.immediate?: boolean
  • removed: property UseCountdownOptions.interval?: MaybeRefOrGetter<number>
  • removed: property UseElementByPointOptions.immediate?: boolean
  • removed: property UseElementByPointOptions.interval?: 'requestAnimationFrame' | number
  • removed: property UseMemoryOptions.immediate?: boolean
  • removed: property UseMemoryOptions.immediateCallback?: boolean
  • removed: property UseMemoryOptions.interval?: number
  • removed: property UseNowOptions.immediate?: boolean
  • removed: property UseNowOptions.interval?: 'requestAnimationFrame' | number
  • removed: property UseTimeAgoIntlOptions.updateInterval?: number
  • removed: property UseTimeAgoOptions.updateInterval?: number
  • removed: property UseTimestampOptions.immediate?: boolean
  • removed: property UseTimestampOptions.interval?: 'requestAnimationFrame' | number
  • removed: property UseVibrateOptions.interval?: number
  • changed: function useCloned<T>(source: MaybeRefOrGetter<T>, options?: UseClonedOptions): UseClonedReturn<T> โ†’ function useCloned<T>(source: MaybeRefOrGetter<T>, options?: UseClonedOptions<T>): UseClonedReturn<T>
  • changed: property UseWebSocketOptions.heartbeat?: boolean | ConfigurableScheduler & { message?: MaybeRefOrGetter<WebSocketHeartbeatMessage>; responseMessage?: MaybeRefOrGetter<WebSocketHeartbeatMessage>; interval?: number; pongTimeout?: number } โ†’ property UseWebSocketOptions.heartbeat?: boolean | ConfigurableScheduler & { message?: MaybeRefOrGetter<WebSocketHeartbeatMessage>; responseMessage?: MaybeRefOrGetter<WebSocketHeartbeatMessage>; pongTimeout?: number }
  • added: function useLiveAnnouncer(options?: UseLiveAnnouncerOptions): UseLiveAnnouncerReturn
  • added: function useTemporalNow(options?: UseTemporalNowOptions): UseTemporalNowReturn
  • added: function useWebMCP<Args = Record<string, any>, Result = unknown>(options: UseWebMCPOptions<Args, Result>): UseWebMCPReturn
  • added: index WebMCPToolAnnotations[key: string]: unknown
  • added: index WebMCPToolContent[key: string]: unknown
  • added: interface ModelContext
  • added: interface UseLiveAnnouncerOptions extends ConfigurableWindow
  • added: interface UseLiveAnnouncerReturn
  • added: interface UseTemporalNowOptions extends ConfigurableScheduler
  • added: interface UseTemporalNowReturn extends Pausable
  • added: interface UseWebMCPOptions<Args, Result> extends ConfigurableDocument
  • added: interface UseWebMCPReturn extends Supportable
  • added: interface WebMCPToolAnnotations
  • added: interface WebMCPToolContent
  • added: interface WebMCPToolDescriptor
  • added: interface WebMCPToolResponse
  • added: property ModelContext.registerTool: (tool: WebMCPToolDescriptor, options?: { signal?: AbortSignal }) => void
  • added: property UseLiveAnnouncerOptions.idPrefix?: string
  • added: property UseLiveAnnouncerReturn.announce: (message: string, mode?: 'polite' | 'assertive', timeout?: number) => void
  • added: property UseLiveAnnouncerReturn.assertive: (message: string, timeout?: number) => void
  • added: property UseLiveAnnouncerReturn.polite: (message: string, timeout?: number) => void
  • added: property UseTemporalNowOptions.calendar?: string
  • added: property UseTemporalNowOptions.temporal?: typeof Temporal
  • added: property UseTemporalNowOptions.timezone?: string
  • added: property UseTemporalNowReturn.add: (duration: Temporal.DurationLike) => Temporal.ZonedDateTime
  • added: property UseTemporalNowReturn.calendar: Ref<string>
  • added: property UseTemporalNowReturn.compare: (other: Temporal.ZonedDateTime | string) => number
  • added: property UseTemporalNowReturn.format: (options?: Intl.DateTimeFormatOptions) => string
  • added: property UseTemporalNowReturn.now: Ref<Temporal.ZonedDateTime>
  • added: property UseTemporalNowReturn.subtract: (duration: Temporal.DurationLike) => Temporal.ZonedDateTime
  • added: property UseTemporalNowReturn.timezone: Ref<string>
  • added: property UseTemporalNowReturn.toCalendar: (calendar: string) => Temporal.ZonedDateTime
  • added: property UseTemporalNowReturn.toPlainDate: () => Temporal.PlainDate
  • added: property UseTemporalNowReturn.toPlainDateTime: () => Temporal.PlainDateTime
  • added: property UseTemporalNowReturn.toPlainTime: () => Temporal.PlainTime
  • added: property UseTemporalNowReturn.toTimezone: (timezone: string) => Temporal.ZonedDateTime
  • added: property UseWebMCPOptions.annotations?: MaybeRefOrGetter<WebMCPToolAnnotations | undefined>
  • added: property UseWebMCPOptions.description: MaybeRefOrGetter<string>
  • added: property UseWebMCPOptions.enabled?: MaybeRefOrGetter<boolean>
  • added: property UseWebMCPOptions.execute: (args: Args) => Result | Promise<Result>
  • added: property UseWebMCPOptions.formatOutput?: (result: Result, args: Args) => unknown
  • added: property UseWebMCPOptions.inputSchema?: MaybeRefOrGetter<object | undefined>
  • added: property UseWebMCPOptions.name: MaybeRefOrGetter<string>
  • added: property UseWebMCPOptions.onError?: (error: unknown) => void
  • added: property UseWebMCPReturn.error: ShallowRef<Error | null>
  • added: property UseWebMCPReturn.isRegistered: ShallowRef<boolean>
  • added: property WebMCPToolAnnotations.readOnlyHint?: boolean
  • added: property WebMCPToolAnnotations.untrustedContentHint?: boolean
  • added: property WebMCPToolContent.text?: string
  • added: property WebMCPToolContent.type: string
  • added: property WebMCPToolDescriptor.annotations?: WebMCPToolAnnotations
  • added: property WebMCPToolDescriptor.description: string
  • added: property WebMCPToolDescriptor.execute: (args: any) => Promise<WebMCPToolResponse> | WebMCPToolResponse
  • added: property WebMCPToolDescriptor.inputSchema?: object
  • added: property WebMCPToolDescriptor.name: string
  • added: property WebMCPToolResponse.content: WebMCPToolContent[]
  • added: property WebMCPToolResponse.isError?: boolean