Chapter 4
Middleware
Compose behavior around routes.
Middleware
Middleware runs before or around route handlers. It is the right place for shared behavior such as logging, authentication, security headers, caching, and rendering setup.
app.use(async (c, next) => {
console.log(`${c.req.method} ${c.req.path}`)
await next()
})
Rendering middleware
This scaffold uses Hono's JSX renderer middleware:
import { jsxRenderer } from 'hono/jsx-renderer'
export const renderer = jsxRenderer(({ children }) => {
return (
<html>
<body>{children}</body>
</html>
)
})
After the renderer is registered, route handlers can call c.render() with JSX content.
Composition
Middleware order matters. Register broad middleware first, then route-specific middleware closer to the routes that need it.