Skip to content

Releases: honojs/hono

v4.4.0

27 May 09:33
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v4.3.9...v4.4.0

v4.4.0-rc.1

24 May 09:00
Compare
Choose a tag to compare
v4.4.0-rc.1 Pre-release
Pre-release

This is a pre-release.

v4.3.11

24 May 08:25
Compare
Choose a tag to compare

What's Changed

  • fix(middleware/jwt): fix incorrect assumption in jwt impl by @boehs in #2775

New Contributors

Full Changelog: v4.3.10...v4.3.11

v4.3.10

23 May 07:19
Compare
Choose a tag to compare

What's Changed

Full Changelog: v4.3.9...v4.3.10

v4.3.9

21 May 00:03
Compare
Choose a tag to compare

What's Changed

  • fix(factory): export CreateHandlersInterface by @yusukebe in #2752
  • feat(aws-lambda): add support for alb multiValueQueryStringParameters by @yiss in #2751

Full Changelog: v4.3.8...v4.3.9

v4.3.8

19 May 11:02
Compare
Choose a tag to compare

What's Changed

  • test(validator): compatibility with Node.js v20.13.1 by @yusukebe in #2682
  • refactor(utils/jwt): remove some any by @fzn0x in #2684
  • refactor(timing): don't use Partial for the options by @yusukebe in #2712
  • refactor(secure-headers): don't use Partial for the options by @yusukebe in #2713
  • fix(context): Retain all cookies when passing ResponseInit to c.body by @codeflows in #2690
  • fix(hono-jsx): make ref unrequried for forward ref by @dygy in #2715

New Contributors

Full Changelog: v4.3.7...v4.3.8

v4.3.7

15 May 13:11
Compare
Choose a tag to compare

What's Changed

  • doc(ssg): Define the default value for Content-Type by @watany-dev in #2666
  • feat(aws-lambda): add alb event processor by @yiss in #2657
  • feat(utils/cookie): allow setting cookie SameSite attribute in lowercase too by @BlankParticle in #2668
  • fix(method-override): remove un-needed import of URLSearchParams in method override middleware by @f5io in #2679

New Contributors

Full Changelog: v4.3.6...v4.3.7

v4.3.6

12 May 22:56
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v4.3.5...v4.3.6

v4.3.5

12 May 07:19
Compare
Choose a tag to compare

What's Changed

  • refactor(context): remove some any by @yusukebe in #2658
  • feat(hono-base): tweaks fetch signature for better compatibility with deno serve by @usualoma in #2661
  • perf(types): add type annotations by @yusukebe in #2663

Full Changelog: v4.3.4...v4.3.5

v4.3.4

09 May 13:51
Compare
Choose a tag to compare

What's Changed

  • chore: update the pull request template by @yusukebe in #2647
  • feat(validator): check for json subtypes in validator by @ztiromoritz in #2634
  • feat(jsx/dom): support getServerSnapshot in useSyncExternalStore by @usualoma in #2646

New Contributors

Full Changelog: v4.3.3...v4.3.4