By Design
Some features are missing from Deserve on purpose. Each absence here is a decision, not a gap waiting to be filled. The framework gives the primitives, and the shape of the feature is left to the developer who knows the use case best.
This section explains the reasoning behind each omission and shows how to compose the same behavior from parts that already ship. Every recipe leans on tools covered elsewhere in the docs, mainly global middleware, the Context object, and the observability events.
What Lives Here
| Feature | Why It Is Not Built In |
|---|---|
| Compression | The runtime and proxies already compress responses. |
| Pretty JSON | Formatting is the consumer's job, so the wire stays minified. |
| HTTPS Redirect | TLS belongs at the edge, and a forced redirect at the app can loop. |
| Bearer Auth | Token schemes vary, so verification stays open to compose. |
| XSS Input Sanitizer | Escaping belongs at output, and the view engine already does it. |
| Caching | Stateless sessions plus in-memory maps cover the need. |
| Rate Limiting | Every team wants a different shape, composed with middleware. |
| Request ID | The resolved client IP is the trustworthy identity, not a random ID. |
| Method Override | Every HTTP method is a first-class route, so no verb to fake. |
| Locale Redirect | Reading the language header and redirecting is a few lines. |
| Server-Timing | The lifecycle measures duration, and the header is one line. |
| Distributed Tracing | No OpenTelemetry SDK, since OTel-aligned events feed any backend. |
Each page follows the philosophy of staying small on purpose. Leaving a feature out is not a missing piece, it is one less thing that can go wrong, and the primitives that ship are enough to build the rest.