Skip to content

Telemetry

ABCrimson edited this page Mar 11, 2026 · 2 revisions

Telemetry Middleware

The core engine provides a pluggable telemetry middleware for tracking command palette usage analytics.

Usage

import { createCommandMachine, createTelemetryMiddleware } from 'modern-cmdk';

const telemetry = createTelemetryMiddleware({
  onPaletteOpen() {
    analytics.track('command_palette_opened');
  },
  onPaletteClose(durationMs) {
    analytics.track('command_palette_closed', { durationMs });
  },
  onSearchComplete(query, resultCount, latencyMs) {
    analytics.track('command_search', { query, resultCount, latencyMs });
  },
  onItemSelected(itemId, query) {
    analytics.track('command_item_selected', { itemId, query });
  },
});

using machine = createCommandMachine({
  items: [...],
  middleware: [telemetry],
});

Hooks

Hook Arguments When
onPaletteOpen Dialog opens
onPaletteClose durationMs: number Dialog closes
onSearchComplete query: string, resultCount: number, latencyMs: number Search finishes
onItemSelected itemId: ItemId, query: string Item selected

Privacy

All hooks are optional. No data is collected or sent by default. The middleware only calls the hooks you provide.

Clone this wiki locally