Middleware runs during the request-response lifecycle. It can log requests, authenticate users, validate data, add values to the request, or handle errors.
Calling next() passes control to the next middleware or route.
Deep dive
Middleware order matters
Express runs middleware in the order it is registered. JSON parsing should happen before handlers that read req.body, and authentication middleware should run before protected routes.
Common mistake
If middleware neither sends a response nor calls next(), the request can remain pending.