Use this skill for cross-cutting behavior that should apply across many routes.
Workflow
- Decide whether built-in middleware is enough (CORS, compression, etc.).
- Add middleware at app level in execution order.
- Use custom middleware only for truly cross-cutting concerns.
- Keep middleware side effects observable (logging/metrics).
Custom Middleware Pattern
from litestar.middleware import AbstractMiddleware
class RequestTimingMiddleware(AbstractMiddleware): async def call(self, scope, receive, send): return await self.app(scope, receive, send)
## Checklist
- Keep middleware focused and minimal.
- Avoid business logic in middleware.
- Be explicit about ordering when middleware interacts.
- Validate behavior for both success and error paths.
## Litestar References
- https://docs.litestar.dev/latest/usage/middleware/index.html
- https://docs.litestar.dev/latest/usage/middleware/using-middleware.html
- https://docs.litestar.dev/latest/usage/middleware/builtin-middleware.html
- https://docs.litestar.dev/latest/usage/middleware/creating-middleware.html