UIConfig

Applies to: all adapters.

UIConfig controls the visual shell of the dashboard: title, logo, favicon, locale, polling, misc links. Pass it via setUIConfig() on the server adapter, or forward it through createBullBoard({ options: { uiConfig } }).

Usage

import { createBullBoard } from '@bull-board/api';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { ExpressAdapter } from '@bull-board/express';

const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');

createBullBoard({
  queues: [new BullMQAdapter(emailQueue)],
  serverAdapter,
  options: {
    uiConfig: {
      boardTitle: 'My Queues',
      boardLogo: {
        path: 'https://cdn.example.com/logo.png',
        width: '120px',
        height: 32,
      },
      miscLinks: [{ text: 'Logout', url: '/logout' }],
      hideRedisDetails: true,
      showMetrics: true,
      hideDocsLink: false,
    },
  },
});

serverAdapter.setUIConfig({ ... }) directly works the same way, createBullBoard just forwards options.uiConfig to it.

Fields

All fields are optional. Defaults are applied by createBullBoard where noted.

FieldTypeDefaultDescription
boardTitlestring'Bull Dashboard'Text in the header and <title> tag.
boardLogo.pathstringURL or static path to the logo image (required when boardLogo is set).
boardLogo.widthnumber | stringLogo width (px number or CSS length).
boardLogo.heightnumber | stringLogo height (px number or CSS length).
miscLinksArray<{ text: string; url: string }>[]Extra links in the header menu (logout, etc.).
hideDocsLinkbooleanfalseHide the header Docs icon that links to the bull-board documentation site.
queueSortOptionsArray<{ key: string; label: string }>Custom sort keys for the queue list.
favIcon.defaultstring'static/images/logo.svg'Favicon when the tab is inactive.
favIcon.alternativestring'static/favicon-32x32.png'Favicon when jobs are active.
locale.lngstringInitial i18next language code ('en', 'fr', 'zh_TW').
dateFormats.shortstringdate-fns format string for timestamps that fall on today.
dateFormats.commonstringdate-fns format string for timestamps in the current year.
dateFormats.fullstringdate-fns format string for older timestamps.
pollingInterval.showSettingbooleanWhether the polling interval selector shows in Settings.
pollingInterval.forceIntervalnumberForces a polling interval in seconds, overriding the user's choice.
menu.widthstringCSS width of the left sidebar ('280px').
overview.groupByDelimiterbooleanfalseSets the initial overview view. When true, it starts grouped: collapsible category sections derived from each queue's delimiter, mirroring the sidebar tree. It's only a default. Once a user picks flat or grouped in Settings, their choice is remembered and wins. See Exploring the dashboard.
sortQueuesbooleanfalseWhen true, sidebar and overview sort queues alphabetically, groups before standalone queues. Users can toggle this in Settings.
hideRedisDetailsbooleanfalseHides the Redis Details button in the header.
showMetricsbooleanfalseShows a per-queue throughput chart (completed/failed per minute). Relies on BullMQ/Bull metrics collection — enable metrics on your workers (e.g. metrics: { maxDataPoints: MetricsTime.ONE_WEEK }).
showWorkersbooleantrueReports the workers connected to each queue, and warns when a queue that isn't paused has none. Set to false to drop the per-queue CLIENT LIST the board otherwise runs on every poll. See Exploring the dashboard.
environment.labelstringEnvironment badge text in the header ('production').
environment.colorstringBackground colour of the environment badge.
environment.textColorstringText colour of the environment badge.
environment.fontSizestring | numberFont size of the environment badge.

With showMetrics on, each queue view gains a throughput chart of completed and failed jobs per minute over the last hour.

Per-queue throughput chart showing completed and failed jobs per minute

Header with the amber demo environment badge

The demo site uses this exact configuration — { label: 'demo', color: '#f59f00', textColor: '#000' }. See it live.

Source of truth

The authoritative type is in packages/api/typings/app.d.ts (UIConfig). Defaults live in packages/api/src/index.ts.