# Dependent Plugin Settings are ... AWESOME!

**URL:** https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148
**Category:** Praise
**Created:** [August 3, 2026, 10:46am UTC](https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148 "2026-08-03T10:46:25Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [August 3, 2026, 10:46am UTC](https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148/1 "2026-08-03T10:46:25Z")

</div>

Oh … this is _really_ :chefs_kiss:

Allow me to illustrate.

Here’s a selector in the latest version of Chatbot, notice it is in “off” state:

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

Now let’s change that selection:

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/e/b/eeb0a39ce0a1fb53dfe28b3cfcefe6b64c7c348f.png)

and it reveals as if by ✨ settings that only need to be considered when that value is selected.

This is a really _fantastic_ way of reducing unnecessary clutter in plugin settings and making things simpler to set up with less cognitive load 🎉

![Daniel Labelle's Fast Cleaning Challenge](https://static.klipy.com/ii/c3a19a0b747a76e98651f2b9a3cca5ff/c6/34/PwOk4Ffv.webp)

---

<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: [August 3, 2026, 11:56am UTC](https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148/2 "2026-08-03T11:56:24Z")

</div>

_jaw drops_ I’ve been waiting for something like this for a really loooong time. _scrambles to check the repo_ Are there any docs on this?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [August 3, 2026, 12:21pm UTC](https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148/3 "2026-08-03T12:21:46Z")

</div>

Feel free to use Chatbot use as a helpfulish example of using it:

> <https://github.com/merefield/discourse-chatbot/blob/660c85c608594c27faace33692f48b87bfd5567a/config/settings.yml#L18>

and I’m sure there are a bunch of uses in core by now …

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [August 3, 2026, 12:29pm UTC](https://meta.discourse.org/t/dependent-plugin-settings-are-awesome/409148/4 "2026-08-03T12:29:09Z")

</div>

There is documentation, but it is currently afaia fragmented rather than presented as a standalone developer guide.

The main authoritative references are:

- Schema documentation in config/site\_settings.yml:52, covering depends\_on, depends\_on\_values, depends\_behavior, and dependent\_setting\_display.

- More detailed guidance and examples in .skills/discourse-site-settings/SKILL.md:203.

- Backend behaviour specs in spec/lib/site\_setting\_extension\_spec.rb:706.

- Frontend dependency resolution in frontend/discourse/admin/services/admin-site-setting-store.js:41.

- UI examples in frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.

The basic syntax is:

```plaintext
child_setting:
  default: ""
  depends_on:
     - parent_setting
  depends_behavior: "hidden"

```

For enum or string parents:

```plaintext
 child_setting:
    default: ""
    depends_on:
      - parent_setting
    depends_on_values:
      parent_setting:
        - enabled_mode
        - another_mode
    depends_behavior: "hidden"
    dependent_setting_display: "inline"

```

One important limitation: dependencies can contain multiple direct parents, but dependency resolution is not transitive. A nested chain such as A → B → C does not automatically make C consider whether B is itself hidden by A; C only evaluates B’s stored value.
