Skip to main content
A theme changes how Discord looks. It is data: a JSON definition of colors (and an optional background) that Unbound applies to Discord’s interface. A plugin, by contrast, is code that runs.

How themes work

Discord styles its UI from a palette of named colors. A theme overrides that palette: you set values for the color names you want to change, and Unbound applies them to the app. A theme is parsed JSON with no start/stop to run. Selecting or removing one updates the saved choice right away, but the colors change on the next restart (see below). Themes use the same manager as plugins, and go through the same lifecycle: loaded, enabled, disabled, and persisted. The difference is that enabling a theme applies it. Only one theme is active at a time, so enabling a new one replaces the previous one.
Colors are applied natively, not from JavaScript. At startup, the loader reads your theme’s bundle.json and swizzles Discord’s color lookups. A theme takes effect only after a restart, and no JavaScript hook can recolor a running app. See Theme Types for the bundle’s shape.

What a theme defines

Manifest

Metadata that identifies your theme: name, authors, version.

Theme Types

The semantic and raw colors that make up the palette, and the base type they extend.

Backgrounds

An optional image behind the interface, with blur and opacity.
A theme can’t run logic or patch components. It only restyles. For behavior, write a plugin.