> For AI agents: the complete documentation index is available at /bull-board/llms.txt, the full documentation bundle is available at /bull-board/llms-full.txt.

# H3

[H3](https://h3.unjs.io/). `@bull-board/h3` plugs in as an H3 event handler.

## Install

```sh
npm install @bull-board/api @bull-board/h3
```

```ts
import { createApp, createRouter } from 'h3';
import { createBullBoard } from '@bull-board/api';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { H3Adapter } from '@bull-board/h3';
import { Queue } from 'bullmq';

const queue = new Queue('my-queue', {
  connection: { host: 'localhost', port: 6379 },
});

const serverAdapter = new H3Adapter();
serverAdapter.setBasePath('/ui');

createBullBoard({
  queues: [new BullMQAdapter(queue)],
  serverAdapter,
});

export const app = createApp();
const router = createRouter();

app.use(router);
app.use(serverAdapter.registerHandlers());
```

`registerHandlers()` returns an H3 handler tree. Mount it alongside your router, the adapter handles its own sub-paths under the base path.

## Supported h3 versions

`@bull-board/h3` supports h3 1.x and 2.x, and the suite runs against both on every CI build.
The 2.x side is tested against `2.0.1-rc.29`, because that is what h3 currently publishes under
its `latest` tag; 1.x lives on the `1x` tag. The declared range picks up a stable 2.0.0 as soon
as it ships.

You do not need to configure anything. The adapter registers its routes and sets the content type
of the dashboard HTML explicitly, which is what makes the same code work on both majors.

## Full runnable example

- Simple setup: [`examples/with-h3`](https://github.com/felixmosh/bull-board/tree/master/examples/with-h3)

## Next steps

- [UIConfig](/bull-board/configuration/ui-config.md): title, logo, locale, polling.
- [Read-only mode](/bull-board/recipes/read-only-mode.md): disable destructive actions.
- [Visibility guard](/bull-board/recipes/visibility-guard.md): scope visible queues per request.
- [Formatters](/bull-board/recipes/formatters.md): rewrite job fields for the UI.
