🚨 Breaking Changes
- Drop templateRef - by @43081j and @ilyaliao in #4883 (5cc18)
- Drop support for Node.js 20 - by @antfubot in #5553 (1ad39)
- core: Remove deprecated timer options in favor of
scheduler- by @OrbisK in #5564 (c02ab) - useEventSource: Handle SSE 'message' type and trigger both onmessage and addEventListener - by @ixyzorg, @OrbisK and @antfu in #5331 (77b57)
- useIDBKeyval: Sync changes across tabs - by @Slessi in #5338 (ee4ec)
- useThrottleFn: Change default
trailingoption from false to true - by @kyumoon and @OrbisK in #5249 (e9fe3)
🚀 Features
- core: Add useWebMCP - by @antfubot and @antfu in #5580 (172c5)
- useLiveAnnouncer: New function - by @IceMooncake and @antfubot in #5315 (4ed28)
- useTemporalNow: Add useTemporalNow - by @JonathanSchndr and @antfubot in #4793 (e1066)
🐞 Bug Fixes
- Correct tree-shaking annotations for overloaded and arrow functions - by @serkodev in #5613 (e32df)
- integrations: Align drauu peer range with the version actually used - by @haoku123, haoku123 and @antfu in #5595 (a5696)
- onLongPress: Clear pending long press on pointercancel - by @ShreeBohara and Claude Opus 5 in #5555 (d6dda)
- useBluetooth: Dedupe disconnect listener and reconnect on mount - by @haoku123, unkizhang, @cursoragent and @OrbisK in #5603 (819a8)
- useCloned: Make custom clone function type-safe - by @lazerg in #5559 (c5a08)
- useFetch: Ignore stale success response after a newer request starts - by @lazerg in #5574 (a4368)
- usePointer: Reset isInside on pointercancel - by @haoku123 and unkizhang in #5587 (8b7f4)
- useResizeObserver: Guard observe() with instanceof Element to prevent crash on Comment nodes - by @mryshakow and Michael Ryshakow in #5593 (96604)
- useWebSocket: Ignore messages from a superseded socket - by @lazerg in #5573 (2d33c)
🏎 Performance
- DisabledFunctions to use Set - by @VividLemon in #5569 (49f76)