We have purposely made the decision of not allowing dynamic component creation yet (the equivalent of $A.createComponent) on the Salesforce platform to make sure we had a clean, statically analyzable and predictable behavior on which to build upon in LWC.
Note that the things we allow on the platform will always be more constraint to what you can do in LWC standalone or when is used off-platform (which will be supported officially soon).
Since the question of dynamic component creation came a bunch of times, I want to share an example of a bug that currently came to Aura long time ago that shows precisely why we decided to block it.
A "simple"The following example of dynamicis a simple use case where in aura you want to create dynamically (and programatically) a leaf component creation:
What is wrong with this code?
You are potentially making a request just to fetch one simple leaf component.
The component has to be sent and cached somewhere, another layer of complexity.
It makes predictability and unit/functional testing much more harder let alone performance testing.
It breaks the rendering "fiber": You are losing your parent chain (forget about sending events up), you are rendering in the next tick (which has many bad perf and UI rendering side effects)
We are adding some crazy programmatic event handling which is much harder to read than a simple handler in the markup.
Dependency calculation becomes the insanity we are in right now in Aura.
So the question is: Why would you want to lazy-load or dynamically create a very simple leaf component?
And the answer for 99% of the cases is for no good reason.
Does webpack route splitting sound familiar? Thats a common pattern in the industry to lazy load or preload components. But you render the whole subtree based on the route! Everything else is completely predictable down the tree.
And thats why in LWCLWC in the platform we don't allow you to shot yourself in the foot creating small tiny components, and once we do, we will give you a water pistol first :), which means we will make it as predictable, restricted and side-effect free as possible.