1.14.0 — 2026-05-26
Patch — 1.14.1 (2026-05-28)
Motion fix: prefersReducedMotion() and reducedMotionSignal() now refresh their cached reduced-motion media query when window.matchMedia changes, preventing stale preference reads in tests and other environments that swap the media-query implementation at runtime.
Drop-in replacement for 1.14.0 — no migration needed. · CHANGELOG · Motion guide
Version 1.14.0 graduates four modules into batteries-included tiers and lands additive expansions across most of the rest of the framework. There are no breaking changes — 1.13.x and earlier APIs continue to work unchanged.
TIP
Use the per-module guides linked from each section for full reference. This page summarises what changed; the guides cover how to use it.
Headlines
@bquery/bquery/media→ batteries-included. 25+ new composables for preferences, page state, element observers, pointer/scroll, platform integrations, and clipboard image support. Every composable accepts an optional{ signal: AbortSignal }.@bquery/bquery/plugin→ batteries-included. Hook bus, DI container, async install, plugin metadata + dependencies, namespaced directives,unuse/uninstall.@bquery/bquery/devtools→ batteries-included. Ring-buffered timeline, structured event types, filterable / subscribable timelines, signal & store diffs, traces, snapshot import/export, browser bridge, perf helpers.@bquery/bquery/testing→ batteries-included.screen/within,userEvent,fireEvent.*shortcuts, reactive harnesses, module mocks, a11y helpers.
Additive expansions also landed in router, view, a11y, i18n, dnd, storybook, concurrency, ssr, and server.
Media (batteries-included)
New reactive composables in @bquery/bquery/media:
- Preference signals —
usePreferredColorScheme,usePreferredContrast,usePreferredReducedTransparency,usePreferredLanguage,usePreferredLanguages. - Page state —
useOnlineStatus,usePageVisibility,useDocumentFocus,useWindowFocus,useIdle. - Element observers —
useElementSize,useElementBounding,useElementVisibility,useHover,useFocus,useFocusWithin,useActiveElement. - Pointer / scroll —
usePointer,useScroll. - Platform integrations —
usePermission,useWakeLock,useShare,useShareSupported,useBroadcastChannel,useEventListener,useMediaDevices,useStorage. - Clipboard —
isSupported,isImageSupported,readImage,writeImage,clipboardText.
Every composable accepts { signal: AbortSignal } for automatic teardown. See Media guide.
Plugin (batteries-included)
@bquery/bquery/plugin gains:
- Hook bus —
addFilter/applyFilters/removeFilter/listFiltersandaddAction/doAction/removeAction/listActions. - Container DI —
createInjectionKey/provide/inject/hasProvided/resetDi. - Plugin-scoped cleanup —
ctx.onCleanup. - Removal —
unuse(name)/uninstall(name)detach plugin-owned directives, hooks, and DI bindings. - Async install —
install()may returnvoid | Promise<void>. Concurrent installs of the same plugin are serialised. - Plugin metadata —
version,description,dependencies,dependencyMode: 'error' | 'warn'. - Introspection —
getPluginInfo,getInstalledPlugins({ withMetadata: true }). - Directive lifecycle —
{ mounted, unmounted }objects. - Namespaced directives — names like
tooltip:arrow.
See Plugin guide.
Devtools (batteries-included)
@bquery/bquery/devtools gains:
- Ring-buffered timeline —
maxTimelineEntries(default 1000); expandedTimelineEntrywith optionalpayload/source/duration. - New event types —
signal:create,signal:dispose,effect:dispose,component:mount,component:unmount,component:render,route:guard,error:caught,measure,mark. - Filter & subscribe —
filterTimeline({ types, since, until, search }),subscribeTimeline(listener). - Privacy-aware inspection —
inspectSignals({ includeValues: false }). - Diffs —
diffSignals,diffStores. - Traces —
traceSignal,untraceSignal. - Effects —
inspectEffects. - Snapshots —
exportDevtoolsSnapshot,importDevtoolsSnapshot. - Bridge —
installBrowserBridge()for future extension panels. - Perf helpers —
time(label, fn),measureRender(tagName, fn),getPerformanceSummary().
See Devtools guide.
Testing (batteries-included)
@bquery/bquery/testing gains:
- Auto cleanup —
cleanup,autoCleanup. fireEvent.*shortcuts —click,input,change,submit,focus,blur,dblClick,keyDown,keyUp.userEventnamespace —click,dblClick,hover,unhover,type,clear,selectOptions,tab,paste.- Shadow-DOM-aware queries —
screen,within(el)withgetByRole/getByText/getByLabelText/getByPlaceholderText/getByTestIdplusquery*/find*variants. - Reactive harnesses —
mockComputed,mockEffect. - Async helpers —
tick,nextTick,flushPromises,runScheduled. - Module mocks —
mockStore,mockI18n,mockForm,mockFetch,mockWebSocket. - Snapshot / a11y helpers —
prettyDOM,getReactiveSummary,expectAccessible.
See Testing guide.
Additive module expansions
- Router —
NavigationResult,pushResult/replaceResult,beforeResolve,resolveRoute, dynamicaddRoute/removeRoute/hasRoute,isReady,lastNavigation,useNavigation. - View —
parseDirective,ParsedDirective, newbq-once/bq-init/bq-pre/bq-cloak/bq-html-safe/bq-memo, fullbq-onmodifier system. - A11y —
createLiveRegion,keyboardUserSignal,focusVisible,prefersReducedTransparency/prefersReducedData/forcedColors,inert/scrollLock/autoFocus. - i18n —
negotiateLocale,detectLocale,isRTL,formatRelativeTime/formatList/formatDisplayName/segment. - DnD — programmatic handle APIs,
grid/delay/touchStartThreshold/keyboard/keyboardStep,'viewport'bounds, reactiveuseDraggable/useDroppable/useSortable. - Storybook —
classMap,styleMap,ifDefined,repeat,storyText,unsafeHtml,storySvg. - Concurrency —
withTransferables,createSharedBuffer, RPCmaxInFlight, pool priorities,pause/resume/onIdle, rolling reactive metrics. - SSR —
flushBoundary,createSSRCache,createSSRMetrics,createEdgeHandler, cache-awarerenderToResponse, multi-chunkrenderToStream. - Server —
ServerHttpError,ctx.body/ctx.cookies/ctx.setCookie/ctx.accepts/ctx.stream/ctx.sse/ctx.renderStream/ctx.renderResponse,app.listen().
Migration notes
There are no breaking changes in 1.14.0. All 1.13.x and earlier APIs continue to work unchanged.
If you previously polyfilled any of the new media composables manually, you can now delete those polyfills and import from @bquery/bquery/media.
Engines
Publish and local validation target Node.js ≥ 24.0.0 and Bun ≥ 1.3.13. See Supported Runtimes.