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

Sign in

Sign in with your preferred provider to access your account.

createQueue

A queue composable for managing time-based collections with automatic timeout-based removal, pause/resume functionality, and FIFO (First In, First Out) ordering.


Advanced93.1% coverageFeb 4, 2026

Usage

ts
import { createQueue } from '@vuetify/v0'
import type { QueueTicket } from '@vuetify/v0'

interface Task extends QueueTicket {
  name: string
  priority: number
}

const queue = createQueue<Task>({ timeout: 5000 })

const task = queue.register({ name: 'Build assets', priority: 1 })

console.log(task.isPaused.value) // false (first item is active)
console.log(queue.size) // 1

// Pause all timers
queue.pause()

// Resume timers
queue.resume()

Reactivity

createQueue extends createRegistry with minimal reactivity for performance. Timeout state is managed internally.

Tip

Need reactive queue items? Wrap with useProxyRegistry(queue) for full template reactivity.

Architecture

createQueue extends createRegistry with FIFO ordering and timeout management:

Queue Hierarchy

Use controls to zoom and pan. Click outside or press Escape to close.

Queue Hierarchy

Examples

Upload Queue

This example demonstrates sequential processing with createQueue. Unlike notifications that display simultaneously, the queue processes one item at a time—the first item uploads while others wait their turn.

Provider/Consumer Data Flow

Use controls to zoom and pan. Click outside or press Escape to close.

Provider/Consumer Data Flow

File breakdown:

FileRole
context.tsDefines UploadInput/Upload types and the context with first, add, cancel
UploadProvider.vueCreates the queue, exposes first computed, watches it to start processing
UploadConsumer.vueDisplays first item with progress bar, pending items in FIFO order
uploads.vueEntry point that composes Provider around Consumer

Key patterns:

  • Expose first as a computed from proxy.values[0]

  • Watch first to react when a new item becomes active

  • useProxyRegistry for reactive access to queue items

  • Items auto-advance when the first one completes

Click “Add File” multiple times to see queuing behavior. Only one file uploads at a time.

No files in queue

API Reference

The following API details are for the createQueue composable.

Functions

createQueue

(_options?: QueueOptions) => R

Creates a new queue instance

createQueueContext

(_options?: QueueContextOptions) => ContextTrinity<R>

Creates a new queue context.

useQueue

(namespace?: string) => R

Returns the current queue instance.

Options

events

boolean

Enable event emission for registry operations

Default: false

reactive

boolean

Enable reactive behavior for registry operations

Default: false

timeout

number

Default timeout in milliseconds for tickets without explicit timeout

Default: 3000

Properties

collection

ReadonlyMap<ID, Z>

The collection of tickets in the registry

size

number

The number of tickets in the registry

Methods

clear

() => void

Clear the entire registry

has

(id: ID) => boolean

Check if a ticket exists by ID

keys

() => readonly ID[]

Get all registered IDs

browse

(value: Z["value"]) => ID[] | undefined

Browse for an ID(s) by value

lookup

(index: number) => ID | undefined

lookup a ticket by index number

get

(id: ID) => Z | undefined

Get a ticket by ID

upsert

(id: ID, ticket?: Partial<Z>) => Z

Update or insert a ticket by ID

values

() => readonly Z[]

Get all values of registered tickets

entries

() => readonly [ID, Z][]

Get all entries of registered tickets

reindex

() => void

Reset the index directory and update all tickets

seek

(direction?: "first" | "last", from?: number, predicate?: (ticket) => boolean) => Z | undefined

Seek for a ticket based on direction and optional predicate

on

<K extends Extensible<RegistryEventName>>(event: K, cb: EventHandler<Z, K>) => void

Listen for registry events

off

<K extends Extensible<RegistryEventName>>(event: K, cb: EventHandler<Z, K>) => void

Stop listening for registry events

emit

<K extends Extensible<RegistryEventName>>(event: K, data: EventPayload<Z, K>) => void

Emit an event with data

dispose

() => void

Clears the registry and removes all listeners

onboard

(registrations: Partial<Z>[]) => Z[]

Onboard multiple tickets at once

batch

<R>(fn: () => R) => R

Execute operations in a batch, deferring cache invalidation and event emission until complete

register

(ticket?: Partial<Z>) => E

Register a new ticket in the queue (accepts input type, returns output type)

unregister

(id?: ID) => E | undefined

Unregister a ticket from the queue

pause

() => E | undefined

Pause the timeout of the first ticket in the queue

resume

() => E | undefined

Resume the timeout of the first paused ticket in the queue

offboard

(ids: ID[]) => void

Batch unregister tickets from the queue

Was this page helpful?

© 2016-1970 Vuetify, LLC
Ctrl+/