I'm really appreciative of the mention of the inverted import.
Inverting the flow really lets components "register" themselves and thus be fully contained rather than be "required" by another component. It can be powerful but it causes the problem that you never really know what all is registered to another component.
Also, yeah, code-splitting isn't easy!