normal
/ˈnɔːml/
1. conforming to a standard; usual, typical, or expected.
One of the main reasons for the proliferation of development frameworks in the modern software development scene is that they serve an important role in the world of capitalism. Frameworks transform individuals into replaceable, functionally identical units of work we call Jobs.
Frameworks limit the risk a business faces by being dependent on one or a group of individual contributors who are essential for the production of new features and more importantly the maintenance of existing ones. Businesses really like frameworks because frameworks are agents of normalcy. Frameworks achieve this by helping simplify the criteria for recruiting new hires into one simple question of having experience with a specific framework.
I am convinced that the only value frameworks really have is increasing the replaceability of the programmer. You may have heard this before, but people often use the word "maintainability" instead of "replaceability".
If you want performance, a pure language-dependency-only implementation for your custom use case will always win in any performance benchmark.
If you want readability, a custom DSL is the only way to maximize both expressiveness and extensibility of your source code at the same time.
Frameworks exist in the middle ground. They can't do both. They just work, without needing anything fancy or creative. This comes with the cost of hiding everything behind "magic" (which is really just, heaps of abstraction).