Inversion of Control
Principle where the flow of control is inverted — instead of your code calling a library, the framework calls your code. The "Hollywood principle": don't call us, we'll call you.
You implement callbacks, event handlers, interface implementations; the framework decides when they run. Dependency Injection is one specific form (the object has its dependencies injected instead of creating them itself).
Visible in React (components are rendered by React), Spring (beans handled by the container), pytest (fixtures injected), Express middleware. Trade-off: easier testability and looser coupling, but harder to follow control flow just by reading the code.