How far can we push Discourse in customization?

It’s hard to say how “safe” a customization is without knowing the specifics… but generally the more you customize the more maintenance you’ll need to do.

If you add something like a custom component to a plugin outlet or replace a Discourse component entirely… generally these should keep working because you’re slotting in custom code to an extension point (and we try to preserve these points because a lot of people use them).

In CSS you should make use of existing --variables to change things where possible because sometimes we have to change content structure, but even if we do that we can reuse the same variables.

So this is a safer path:

.d-header {
   --title-color--header: red;
}

This is less safe:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

We’ve been pushing the platform away from old customization methods that were more prone to breaking, like template overrides and modifyClass usage. We’re also working on more stable APIs… but everything will still need a little maintenance now and then.