Hono v4.4.0 is now available! Let's take a look at the new features.
Support JSR
Now, Hono is available on JSR - a new JavaScript/TypeScript registry! You can install the Hono package from JSR right now. If you want to run your Hono app on Deno, you can install it with the following command:
deno add @hono/hono
Then, use it in your code!
// main.ts
import { Hono } from '@hono/hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello JSR!'))
export default app
And run it:
deno serve main.ts
If you edit the deno.json
and set the paths appropriately, the exact same code that you are familiar with will work in Deno, Cloudflare Workers, and Bun.
deno.json
:
{
"imports": {
"hono": "jsr:@hono/hono@^4.4.0"
}
}
Area.mp4
JSR is not exclusive to Deno. You can use it with npm and Bun.
# npm
npx jsr add @hono/hono
# bun
bunx jsr add @hono/hono
And, removing "slow types" has improved the performance of TypeScript type inference.
With the introduction of JSR, the previous package publishing from deno.land/x
will be obsolete.
Introduce ConnInfo Helper
The ConnInfo Helper is a helper helps you to get the connection information. For example, you can get the client's remote address easily.
import { Hono } from 'hono'
import { getConnInfo } from 'hono/deno' // For Deno
const app = new Hono()
app.get('/', (c) => {
const info = getConnInfo(c) // info is `ConnInfo`
return c.text(`Your remote address is ${info.remote.address}`)
})
export default app
Thank you for creating the feature, @nakasyou!
Introduce Timeout Middleware
The Timeout Middleware is a middleware enables you to easily manage request timeouts in your application.
Here is a simple example:
import { Hono } from 'hono'
import { timeout } from 'hono/timeout'
const app = new Hono()
// Applying a 5-second timeout
app.use('/api', timeout(5000))
// Handling a route
app.get('/api/data', async (c) => {
// Your route handler logic
return c.json({ data: 'Your data here' })
})
Thank you for creating the feature, @watany-dev!
Improving JSDoc
We are now trying to improve the JSDocs. In the PR, we've added the JSDocs for all middleware. Thank you, @goisaki!
Other features
- URL utility - decode percent-encoded path in
getPath
#2714 - Body utility - add dot notation support for
parseBody
#2675 - Body utility - specify detailed return type for
parseBody
#2771 - SSG Helper - enhance combined hooks #2686
- JSX DOM - improve compatibility with React - The 2024 May Update #2756
- JSX DOM - introduce react-dom/client APIs and React.version #2795
All Updates
- fix(secure-header): Replace NodeJS Buffer API by @watany-dev in #2761
- fix(http-exception): prioritize the status code by @yusukebe in #2767
- feat: Introduce ConnInfo helper/adapter by @nakasyou in #2595
- feat(middleware): Introduce Timeout Middleware by @watany-dev in #2615
- feat: decode percent-encoded path in getPath by @usualoma in #2714
- feat(utils/body): add dot notation support for
parseBody
by @fzn0x in #2675 - refactor(cloudflare-workers): remove
@cloudflare/workers-types
by @yusukebe in #2773 - feat(jsx/dom): improve compatibility with React - The 2024 May Update by @usualoma in #2756
- feat(utils): specify detailed return type for parseBody by @usualoma in #2771
- feat(ssg): enhance conbined hooks by @watany-dev in #2686
- feat(jsr): support JSR by @yusukebe in #2662
- refactor(request): show user-friendly type for
c.req.param()
by @usualoma in #2780 - refactor(utils/body): minor cleanup by @MathurAditya724 in #2783
- docs(readme): update the badges by @yusukebe in #2785
- chore(actions): update
on
condition forpublish-to-jsr
by @yusukebe in #2786 - chore(deno): change path including deno_dist by @ryuapp in #2788
- fix(middleware/jwt): typo by @euijinkk in #2789
- chore(lint): update eslint rules by @yusukebe in #2790
- fix(middleware): export variables type from each
index.ts
by @yusukebe in #2793 - docs: add module docs by @yusukebe in #2796
- feat(jsx/dom): introduce react-dom/client APIs and React.version by @usualoma in #2795
- docs(readme): update readme and
jsr.json
by @yusukebe in #2803 - Next for
v4.4.0
by @yusukebe in #2769 - chore: update lockfile by @yusukebe in #2805
New Contributors
Full Changelog: v4.3.9...v4.4.0