April 30th, 2020: When designing a complex, long-lived component, there's one tradeoff that I think about constantly. Do I want to configure my component, passing in a large object with options? Or do I want to build subcomponents, which can then be composed into the final interface?
Writing a component with a configuration API is easier for the author, since it flows naturally from the envisioned use case. However, if your component will be used by others, there may be substantial benefits to breaking it into smaller blocks.