# Themeable site settings are now available

**URL:** https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232
**Category:** Announcements
**Tags:** theme-site-settings
**Created:** [July 16, 2025, 1:01am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232 "2025-07-16T01:01:24Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [July 16, 2025, 1:01am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/1 "2025-07-16T01:01:24Z")

</div>

We’ve added a new way for theme developers to control the experience of a site. Themeable site settings allow themes to override a limited group of site settings defined by Discourse core. ⚙

### How are themeable site settings different?

We already have concepts of [theme settings](https://meta.discourse.org/t/add-settings-to-your-discourse-theme/82557) and [theme modifiers](https://meta.discourse.org/t/theme-modifiers-a-brief-introduction/150605?silent=true), so how are themeable site settings different? Here is a quick summary:

- Theme settings - These are custom settings used to control UI and functionality within your theme or component and provide configuration options. These cannot change core Discourse functionality.
- Theme modifiers - Allows a theme or a component to modify selected server-side functionality of core Discourse as an alternative to building a plugin.
- ✨ **Themeable site settings (new)** - Allows a theme (not components) to override a small subset of core site settings, which generally control parts of the UI and other minor functionality. This allows themes to have a greater control over the full site experience.

Themeable site settings have identical data types and values to the site settings which they overide. For all intents and purposes, the value of the site setting in the database becomes irrelevant, since each theme controls this value individually now.

### How can admins view and change themeable site settings?

Admins can view and change themable site settings in two places. First, on each individual theme page there is now a “Settings the theme can override” section like so, above the other section which shows theme settings defined by the theme:

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/5/c/75cab61e1628d440a8f8e29e5f3c6c914f58b0fa.png)

The dot indicates the value has been changed from whatever the default value of the site setting is. Pressing “reset” will change the theme site setting value to match the site setting default value.

The second place admins can view these settings is at a new page, `/admin/config/theme-site-settings` :

 ![image](https://global.discourse-cdn.com/meta/original/4X/d/4/f/d4f64b9a3daba7129b1cf1b4671b1365fe6428d6.png)

From here admins can see all themeable site settings, what the default site setting value is, and which themes are overriding this value. When you hover over a theme name, the UI will show the value that this theme has set.

### What will happen to my existing site setting changes?

If you have changed `enable_welcome_banner` or `search_experience` from the default values on your site, we will automatically migrate these values to every theme you have installed on your site, so nothing will change in the UI for your members.

### Where are they defined?

Themeable site settings are defined in the core `config/site_settings.yml` file. Each themeable site setting has the `themeable: true` option defined.

For the moment, only two site settings are themeable – `enable_welcome_banner` and `search_experience` – but in future we will likely make more site settings themeable.

### How can theme authors control default values?

Theme authors can define theme site setting overrides in the `about.json` file under a `theme_site_settings` key like so:

```json
"theme_site_settings": {
  "enable_welcome_banner": false
}

```

Any value here will be saved to the database and associated with the theme. Once a value has been saved, changes to the `theme_site_settings` in the `about.json` file when a theme updates will not affect the currently saved database value, since we cannot know whether the admin has changed the setting in the interim.

### What are the limitations of themeable site settings?

Themeable site settings are only really intended to control elements of the UI, and when retrieving their value we require a theme ID, so these limitations apply:

- Themeable site settings cannot be used in Sidekiq jobs
- Themeable site settings cannot be used in markdown rules
- Themeable site settings will be cached separately to client site settings using theme ID as a key
- Themeable site settings will override keys on the `siteSettings` service on the client using the application preloader
- `SiteSetting.client_settings_json` will not include themeable site settings, instead you can call `SiteSetting.theme_site_settings_json` with a theme ID

As a general rule, theme site settings will only be for simple settings that control parts of the UI, nothing server-side.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [July 16, 2025, 4:36am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/2 "2025-07-16T04:36:25Z")

</div>

Thanks a lot for this update! It’s a great help!

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [July 16, 2025, 11:19am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/3 "2025-07-16T11:19:36Z")

</div>

> [@martin](#):
>
> ### What will happen to my existing site setting changes?
> 
> If you have changed `enable_welcome_banner` or `search_experience` from the default values on your site, we will automatically migrate these values to every theme you have installed on your site, so nothing will change in the UI for your members.

What happens if I change `enable_welcome_banner` later, i.e. after this migration has happened? Will I need to adjust each theme accordingly?

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [July 17, 2025, 12:41am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/4 "2025-07-17T00:41:11Z")

</div>

> [@Simon\_Manning](#):
>
> What happens if I change `enable_welcome_banner` later, i.e. after this migration has happened? Will I need to adjust each theme accordingly?

Yes, you cannot change these site settings directly anymore, they will only show in each individual theme’s Edit page.

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [July 17, 2025, 7:22pm UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/5 "2025-07-17T19:22:03Z")

</div>

Should the `Welcome banner location` setting also be included?

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [July 23, 2025, 12:51am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/6 "2025-07-23T00:51:49Z")

</div>

Are themable site settings also able to include site settings for assets such as logo onebox images?

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [October 1, 2025, 1:17am UTC](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232/10 "2025-10-01T01:17:03Z")

</div>

A quick update here – themeable site settings will now show when searching “All settings” to make them a bit easier to discover:

> [@3.6.0.beta1: Color palette editing, user fields on sign up, themeable site setting discovery, images with Google AI, and reliable drafts](https://meta.discourse.org/t/3-6-0-beta1-color-palette-editing-user-fields-on-sign-up-themeable-site-setting-discovery-images-with-google-ai-and-reliable-drafts/383509/1):
>
> ## Themeable site settings more easily available
> 
> ![A themeable site setting within a regular settings page.](https://global.discourse-cdn.com/meta/original/4X/1/7/6/1760eab558026cec2d6af8d547dea7fd0c644144.png)
> 
> We [recently announced themeable site settings](https://meta.discourse.org/t/themeable-site-settings-are-now-available/374232) as a way for theme developers to more tightly couple the user experience to their theme. As a subsequent improvement to this new way of managing settings like this, they are now readily available for admins to find in the standard settings pages. Themeable settings are displayed alongside other site settings with their default value and a link to the default theme’s edit page, where they can be modified as needed.
