Define-configuration vs customize-instance

As I explore nyxt-3, I see that there is now a second way to make configuration changes: customize-instance. Right now this seems to be under-documented (apologies if there is a corner of the Manual that I missed) so my question:

When should I use customize-instance and when define-configuration? How do they differ?

The rule of thumb is: always use define-configuration, unless it’s not capable enough. That’s the reason there are almost no examples of customize-instance-based configuration — it’s an emergency tool, not regular times one.

customize-instance is lower-level and is intended for something more involved than just configuring slots. And right now there are not much cases I can think of that are not covered by define-configuration.

But then, those used to more imperative type of configuration would feel at home with customize-instance, because it’s kind of imperative in its design. It should be fine to use it as the basis for one’s configuration, given a certain mindset. I (or anyone, at that) cannot forbid anyone from using it, so who knows…