Skip to main content
Version: 2026.2

Boot Palette Providers

The boot palette is the small set of base-surface colors the server-side preloader (Twig) paints before the studio JavaScript loads and applies the full token set. It exists so the loading screen already matches the theme instead of flashing a neutral screen first.

A boot palette consists of three colors:

  • Page background – the background of the full-screen preloader surface.
  • Logo orbit – the soft glow bubble behind the logo (may be an rgba(...) value for transparency).
  • Soft bubble – the large neutral background figure.

Where a Boot Palette Comes From

For a given theme the boot palette is resolved in this order:

  1. The boot palette stored on the theme record – set via the Loading screen tab in the editor. This lets an editor define a theme's loading screen entirely as configuration, without any PHP.
  2. The boot palette provider registered for the theme's token set – the per-token-set default described below.
  3. No boot palette – the preloader falls back to its own defaults.

Because a theme can define its boot palette as configuration, most themes need no code. A boot palette provider is only needed when a bundle ships a custom token set and wants a matching default loading screen for every theme built on that token set, even before an editor sets one explicitly.

Registering a Boot Palette Provider

Implement BootPaletteProviderInterface and tag the service with pimcore_backend_power_tools.boot_palette_provider. The provider returns boot palettes keyed by token set id, so a single provider can cover several token sets. When two providers return a palette for the same token set id, the later provider wins – so a bundle can also override a built-in palette.

<?php
declare(strict_types=1);

namespace App\ThemeManager;

use Pimcore\Bundle\BackendPowerToolsBundle\Service\ThemeManager\BootPalette\BootPalette;
use Pimcore\Bundle\BackendPowerToolsBundle\Service\ThemeManager\BootPalette\BootPaletteProviderInterface;

final readonly class MyBootPaletteProvider implements BootPaletteProviderInterface
{
public function getBootPalettes(): array
{
return [
'my-theme' => new BootPalette(
pageBackground: '#160a2b',
logoOrbit: 'rgba(157, 77, 255, 0.5)',
softBubble: '#241046',
),
];
}
}

With autoconfiguration enabled the interface is tagged automatically; otherwise tag the service explicitly:

services:
App\ThemeManager\MyBootPaletteProvider:
tags: ['pimcore_backend_power_tools.boot_palette_provider']
info

The full look of a token set is owned by its frontend theme dynamic type. The boot palette only covers the small subset of surfaces the bare preloader needs, and is kept in sync with the token set by hand.