Skip to main content
You are viewing Pre-Alpha documentation.
Vuetify0 Logo
Mode
Accessibility
Vuetify

Composables

Type-safe composables for headless UI. Components wrap these composables—you can use either approach.

Edit this page
Report a Bug
Copy Page as Markdown
BeginnerJan 14, 2026

Minimal Reactivity

Vuetify0 composables use the absolute minimum reactivity required to fulfill their responsibilities. This deliberate constraint keeps bundle sizes small, maximizes performance, and gives you full control over what triggers updates.

Tip

See Benchmarks for performance data and what the size ratings mean.

What’s Reactive

CategoryReactiveWhy
Selection state (selectedIds, selectedId)UI must reflect selection changes
Registry collections (values(), keys())Read-heavy, rarely needs live updates
Registry sizeComputed on access, not tracked
Queue/Timeline dataConsumed via events or polling

Events as Opt-In Reactivity

Registries emit events when operations occur. Use events to build reactive behavior only where needed:

ts
import { createRegistry } from '@vuetify/v0'

const registry = createRegistry({ events: true })

// Listen for changes
registry.on('register:ticket', ticket => {
  console.log('Added:', ticket.id)
})

registry.on('unregister:ticket', ticket => {
  console.log('Removed:', ticket.id)
})

Available events:

  • register:ticket — Item added

  • unregister:ticket — Item removed

  • update:ticket — Item modified via upsert()

  • clear:registry — All items removed

  • reindex:registry — Indices recalculated

useProxyRegistry for Full Reactivity

When you need automatic template updates for registry data, wrap it with useProxyRegistry:

ts
import { createRegistry, useProxyRegistry } from '@vuetify/v0'

const registry = createRegistry()

// Non-reactive: template won't update when items change
const items = registry.values()

// Reactive: changes trigger template updates automatically
const proxy = useProxyRegistry(registry)
// proxy.values is a computed ref that updates on any mutation

This pattern lets you choose reactivity granularity—pay for what you use

Foundation

Core factories that provide the foundation for all other composables.

NameDescription
createContextCreate reusable context to share state across components
createPluginCreate Vue plugins with standardized patterns
createTrinityCreate context provider/consumer pattern utilities

Registration

Collection management and data structure primitives.

NameDescription
createRegistryFoundation for registration-based systems
createQueueTime-based queue management with automatic timeouts
createTimelineBounded undo/redo system with fixed-size history
createTokensDesign token management system

Selection

State management for single and multi-selection patterns.

NameDescription
createSelectionGeneral selection state management
createSingleSingle-selection with automatic deselection
createGroupMulti-selection with tri-state support
createStepSequential navigation for wizards and steppers

Forms

Form state management and model binding utilities.

NameDescription
createFormForm state management and validation

Reactivity

Reactive proxy utilities for bridging state.

NameDescription
useProxyModelBridge selection context to v-model binding
useProxyRegistryProxy-based registry with automatic reactivity

System

Browser API wrappers with automatic lifecycle cleanup.

NameDescription
useClickOutsideDetect clicks outside an element
useEventListenerHandle DOM events with automatic cleanup
useHotkeyHandle hotkey combinations and sequences
useIntersectionObserverIntersection Observer API for visibility detection
useMediaQueryReactive CSS media query matching
useMutationObserverMutation Observer API for DOM change detection
useResizeObserverResize Observer API for element size changes
useToggleScopeConditional effect scope management

Plugins

Application-level features installable via Vue plugins.

NameDescription
useBreakpointsResponsive breakpoint detection
useDateDate manipulation with Temporal API and locale-aware formatting
useFeaturesFeature flags and A/B testing
useHydrationSSR hydration management
useLocaleInternationalization system
useLoggerLogging system with multiple adapters
usePermissionsRole-based access control
useStorageReactive browser storage interface
useThemeTheme management with CSS custom properties

Utilities

Standalone helpers for common UI patterns.

NameDescription
useFilterFilter arrays based on search queries
useOverflowCompute item capacity for responsive truncation
usePaginationPagination state with navigation methods
useVirtualVirtual scrolling for large lists

Transformers

Value transformation utilities.

NameDescription
toArrayConvert any value to an array
toReactiveConvert MaybeRef objects to reactive proxies
Was this page helpful?

© 2016-1970 Vuetify, LLC
Ctrl+/