v4.12.0
Hono v4.12.0 is now available!
This release includes new features for the Hono client, middleware improvements, adapter enhancements, and significant performance improvements to the router and context.
$path for Hono Client
The Hono client now has a $path() method that returns the path string instead of a full URL. This is useful when you need just the path portion for routing or key-based operations:
const client = hc<typeof app>('http://localhost:8787')
// Get the path string
const path = client.api.posts.$path()
// => '/api/posts'
// With path parameters
const postPath = client.api.posts[':id'].$path({
param: { id: '123' },
})
// => '/api/posts/123'
// With query parameters
const searchPath = client.api.posts.$path({
query: { filter: 'test' },
})
// => '/api/posts?filter=test'
Unlike $url() which returns a URL object, $path() returns a plain path string, making it convenient for use with routers or as cache keys.
Thanks @​ShaMan123!
ApplyGlobalResponse Type Helper for RPC Client
The new ApplyGlobalResponse type helper allows you to add global error response types to all routes in the RPC client. This is useful for typing common error responses from app.onError() or global middlewares:
const app = new Hono()
.get('/api/users', (c) => c.json({ users: ['alice', 'bob'] }, 200))
.onError((err, c) => c.json({ error: err.message }, 500))
type AppWithErrors = ApplyGlobalResponse<
typeof app,
{
401: { json: { error: string; message: string } }
500: { json: { error: string; message: string } }
}
</tr></table>
... (truncated)
Bumps hono from 4.11.7 to 4.12.0.
Release notes
Sourced from hono's releases.
... (truncated)
Commits
d2ed2e94.12.001e78adMerge pull request #4735 from honojs/nexta340a25perf(context): usecreateResponseInstancefor new Response (#4733)bd26c31perf(trie-router): improve performance (1.5x ~ 2.0x) (#4724)b85c1e0feat(types): Add exports field to ExecutionContext (#4719)02346c6feat(language): add progressive locale code truncation to normalizeLanguage (...7438ab9perf(context): add fast path to c.json() matching c.text() optimization (#4707)034223ffeat(trailing-slash): addalwaysRedirectoption to support wildcard routes ...16321affeat(adapter): add getConnInfo for AWS Lambda, Cloudflare Pages, and Netlify ...bf37828feat(basic-auth): add context key and callback options (#4645)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.