Announcing themeable site settings

AI-generated summary

martin announces themeable site settings, a feature allowing themes to control certain UI-related site settings. These settings, currently limited to enable_welcome_banner and search_experience, are defined in config/site_settings.yml with themeable: true. Theme authors can set default values in their about.json under theme_site_settings, but once saved to the database, these values won’t be overwritten by theme updates — preserving admin changes. Key limitations include: themeable settings can’t be used in Sidekiq jobs or markdown rules, are cached per theme ID, override siteSettings on the client, and are excluded from SiteSetting.client_settings_json — instead, use SiteSetting.theme_site_settings_json(theme_id). The feature is intended only for simple UI controls, not server-side logic. The initial PR is at GitHub #32233, and full developer docs are available at Controlling Site Settings with Themes.

This is a sister topic to the announcement at Themeable site settings are now available so developers are aware.

The initial PR is here https://github.com/discourse/discourse/pull/32233

Developer docs are here https://meta.discourse.org/t/controlling-site-settings-with-themes/374376

5 Likes