Repository navigation
chore(deps): update dependency hono to v4 - #43
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
4 times, most recently
from
March 2, 2024 17:06
f997c2e to
c730140
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
July 25, 2025 10:45
c730140 to
35258d1
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
3 times, most recently
from
July 29, 2025 08:53
398703a to
6010bf0
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
August 8, 2025 01:25
b7485f6 to
eee0a9e
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
August 15, 2025 10:01
b85be43 to
e76f4fb
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
August 22, 2025 04:47
e76f4fb to
2e35c93
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
September 3, 2025 05:32
271d6c0 to
8e92841
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
September 18, 2025 09:40
7f12ef4 to
ace1bda
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
September 27, 2025 02:06
ace1bda to
a234216
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
October 11, 2025 13:26
8bd32ac to
e98d1f4
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
3 times, most recently
from
October 17, 2025 14:00
d4d9b8b to
8a66df7
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
October 24, 2025 22:52
ea59e08 to
261bfa1
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
October 30, 2025 04:38
261bfa1 to
28fe864
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
November 6, 2025 15:55
28fe864 to
3074550
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
January 23, 2026 17:29
ba86efa to
dbff9d2
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
February 2, 2026 18:16
1b18d76 to
d678bd2
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
February 12, 2026 10:02
d678bd2 to
dd3e4c1
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
February 28, 2026 13:10
49ac514 to
3522ff1
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
4 times, most recently
from
March 11, 2026 10:47
0e950e4 to
175dca0
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
March 17, 2026 04:44
a3b7dc0 to
11334c6
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
March 21, 2026 09:41
11334c6 to
bb20e99
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
March 30, 2026 14:59
bb20e99 to
eaf5e73
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
April 13, 2026 09:22
4a6f0a1 to
880b6ec
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
April 22, 2026 06:03
880b6ec to
3e60e36
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
May 1, 2026 14:01
b78f047 to
35c02b6
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
3 times, most recently
from
May 13, 2026 14:06
0e4bf57 to
87b5fb6
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
May 23, 2026 13:32
4593023 to
6732681
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
May 26, 2026 11:10
6732681 to
6b3cce7
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
from
June 11, 2026 12:01
6b3cce7 to
b87c439
Compare
renovate
Bot
force-pushed
the
renovate/hono-4.x
branch
2 times, most recently
from
June 30, 2026 04:04
8a5d4eb to
8e8c432
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^3.12.12→^4.0.0Release Notes
honojs/hono (hono)
v4.13.13Compare Source
Mount Middleware
app.mount()is now available as the Mount Middleware,hono/mount. It is just a handler, so you register it withapp.all():app.mount()still works in v4 but is deprecated and will be removed in v5. Migrating is a one-line change:What's Changed
app.mountin #5221Full Changelog: honojs/hono@v4.13.12...v4.13.13
v4.13.12Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.11...v4.13.12
v4.13.11Compare Source
Security fixes
serveStaticdecodes the request path a second time, leading to bypass of middleware on static pathsAffects:
hono/serve-staticand the adapters built on it (hono/bun,hono/deno,hono/cloudflare-workers,@hono/bun,@hono/deno,@hono/cloudflare-workers). FixesserveStaticdecoding an already-decoded path, where a crafted request could be routed as one path and served as another, skipping middleware mounted on a static prefix. GHSA-5r4p-p66f-jhc7serveStaticnow rejects request paths that still contain%after decoding. To serve files whose names contain a literal%, setallowPercentInPath: true.The same fix ships in
@hono/node-serverv2.1.3.v4.13.10Compare Source
Adapters are now separate packages
The runtime adapters are now published as their own packages:
@hono/bun,@hono/deno,@hono/cloudflare-workers,@hono/aws-lambda,@hono/lambda-edge,@hono/netlify,@hono/vercel, and@hono/service-worker.@hono/denois also on JSR.hono/<adapter>still works in v4 but is deprecated and will be removed in v5. Migrating is an import change:hono/cloudflare-pages is deprecated without a replacement package; Cloudflare recommends Workers with static assets.
What's Changed
cr.ymlby the pnpm migration in #54561.0.0-rc.1in #5459adapters/*in #5466Full Changelog: honojs/hono@v4.13.9...v4.13.10
v4.13.9Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.8...v4.13.9
v4.13.8Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.7...v4.13.8
v4.13.7Compare Source
Security fixes
This release includes a fix for the following security issue:
hono/jsxrenders plain strings unescaped in boundary components, leading to XSSAffects:
Suspense,ErrorBoundary, andContext.Providerinhono/jsx, andrenderToString()/renderToReadableStream()inhono/jsx/dom/server. Fixes missing HTML escaping for a plain string placed directly as a child orfallbackof these components, or as the root value of the server rendering functions, so untrusted strings could be emitted as markup. GHSA-hxh3-vqpv-xpqvUsers who render untrusted strings inside
Suspense,ErrorBoundary, orContext.Provider, or pass them directly tohono/jsx/dom/server, are strongly encouraged to upgrade to this version.v4.13.6Compare Source
What's Changed
editorconfig-checkerin #5336Full Changelog: honojs/hono@v4.13.5...v4.13.6
v4.13.5Compare Source
Security fixes
This release includes fixes for the following security issues:
Query parser reads parameters after the URL fragment, causing cache-key and proxy interpretation differentials
Affects: Cache Middleware and applications behind a proxy, WAF, or logging layer that inspects query strings. Fixes query parsing that did not stop at the URL fragment, so a
?after a#was treated as the start of a query string and the application could read parameters that the other component never saw. GHSA-crvj-82cr-hjcxIncomplete fix for CVE-2026-39408:
toSSG()still writes files outside the output directoryAffects:
toSSG()for Static Site Generation. Fixes a path normalization gap where consecutive parent-directory segments inssgParamsvalues were not fully collapsed, bypassing the containment check added in 4.12.12. GHSA-gqvv-2mrq-wpjvUnbounded dot-notation nesting in
parseBody()can cause memory exhaustionAffects:
parseBody()when dot-notation parsing is enabled. Fixes unbounded expansion of dot-separated field names, where a small request body could allocate a disproportionately large object graph and concurrent requests could exhaust the heap. GHSA-g6gw-c38x-mqfcUsers who use Cache Middleware, deploy behind a proxy or WAF that inspects query strings, use Static Site Generation, or use
parseBody({ dot: true })are strongly encouraged to upgrade to this version.v4.13.4Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.3...v4.13.4
v4.13.3Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.2...v4.13.3
v4.13.2Compare Source
What's Changed
Full Changelog: honojs/hono@v4.13.1...v4.13.2
v4.13.1Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.13.0...v4.13.1
v4.13.0Compare Source
Hono v4.13.0 is now available!
The highlight of this release is performance: a batch of low-level optimizations makes the core request/response path significantly faster — up to 1.25x on common routes in our benchmark. This release also adds first-class support for the HTTP QUERY method, defined in RFC 10008, a new Method Not Allowed middleware, and more.
Performance improvements
This release includes a series of small optimizations: skipping unnecessary
Headersallocations, replacing regex tests withindexOf, allocating internal state lazily, and more.Here is
benchmarks/fetchcomparing v4.12 and v4.13 (ROUNDS=5 ./compare.sh, Bun 1.4.0, Apple Silicon — each measurement runs in a fresh process, and the variant order is reversed every round to avoid warm-up bias):ping—GET /query—GET /id/1?name=bunjson—GET /userbody—POST /jsonThe individual changes:
for..in#5118indexOf#5121Headerscreation when there are no headers to merge #5122tryDecodeURIComponent#5158#validatedDatalazily #5175In addition, the RegExpRouter rewrite described below makes route registration plus the first match roughly 20% faster.
Thanks @kibertoad for the contributions!
First-class QUERY method support
The QUERY method — a safe, idempotent method that carries a request body — is now a first-class citizen in Hono. You can define QUERY handlers with
app.query():Thanks @shellhaki!
QUERY support across built-in middleware
The built-in middleware has been updated to handle QUERY requests properly:
Cache Middleware
The Cache Middleware now caches QUERY responses. Following RFC 10008 Section 2.7, the cache key incorporates a SHA-256 digest of the request content and its representation metadata, so different query bodies are cached separately:
Note: To support this, the internal cache key format has changed for all methods, including GET. Cached entries are now stored under an internal URL of the form
/.hono/cache?__hono_cache_key=.... If you purge cache entries by URL outside of the middleware (e.g. callingcaches.delete()with the original request URL), you will need to update that logic. Existing cache entries stored with the old format will simply be re-fetched.ETag Middleware
The ETag Middleware now handles conditional requests for QUERY, returning
304 Not ModifiedwhenIf-None-Matchmatches.CORS Middleware
The CORS Middleware now includes QUERY in the default
Access-Control-Allow-Methods, which is nowGET, HEAD, PUT, POST, DELETE, PATCH, QUERY. If you specifyallowMethodsexplicitly, nothing changes for you.Thanks @usualoma and @Cherry!
Method Not Allowed Middleware
The new Method Not Allowed Middleware returns a
405 Method Not Allowedresponse with a properAllowheader when the request path matches a registered route but the method does not:You can customize the response with the
onMethodNotAllowedoption:Thanks @usualoma!
RegExpRouter throws
UnsupportedPathErrorat registration timeThe RegExpRouter now detects unsupported path combinations when routes are registered, instead of at the first matching request. This means misconfigured routes fail fast at startup rather than at runtime. As a bonus, registration plus the first match is roughly 20% faster.
Thanks @usualoma!
Other improvements
hono/utils/headershas been synced with the IANA HTTP Field Name Registry, adding newly registered fields such asAccept-Query. Thanks @akahoshi1421!realmoption for theWWW-Authenticatechallenge on401responses, and challenge values are properly escaped. Thanks @arhxam!useRefandRefObjectare now aligned with React 19. Note that this is a type-level change —RefObject<T>is now{ current: T }, so type a nullable ref asRefObject<T | null>, and passuseRef(undefined)instead ofuseRef(). Thanks @ashunar0!Vary: Accept-Encodingon negotiated responses. Thanks @arhxam!All changes
fetchby @yusukebe in #5113indexOfby @yusukebe in #5121tryDecodeURIComponentby @yusukebe in #5158envfield initializer by @kibertoad in #5174#validatedDatalazily by @kibertoad in #5175fetchby @yusukebe in #5184envfield initializer by @yusukebe in #5186Full Changelog: honojs/hono@v4.12.34...v4.13.0
Thank you to all contributors!
v4.12.34Compare Source
Security fixes
This release includes fixes for the following security issues:
memo()retains SSR output across requests, leading to cross-user data disclosureAffects:
hono/jsx(server-side rendering). Fixesmemo()reusing a retained render result across requests when props compare equal, where a component reading request-scoped values from ambient context —useContext(),useRequestContext(), orgetContext()— could serve HTML rendered for another user's request, disclosing account data or request-scoped secrets such as CSRF tokens. GHSA-f23p-vx2j-j53rReDoS in CORS middleware via
Access-Control-Request-HeadersAffects:
hono/cors. Fixes a whitespace-tolerant regular expression with quadratic backtracking used to parse theAccess-Control-Request-Headerspreflight header whenallowHeadersis not configured (the default), where a single preflight request carrying a long whitespace run could consume seconds of CPU and stall request processing. GHSA-8j4g-w8fx-2239Algorithmic complexity DoS in Language Middleware
Affects:
hono/language. Fixes quadratic string processing in language-tag normalization, where a crafted language tag with a large number of hyphen-separated subtags — supplied via a query parameter, cookie, orAccept-Languageheader — could cause excessive CPU consumption and block the event loop. GHSA-54fx-42gc-7vw4Proxy Helper does not remove response headers listed in the
ConnectionheaderAffects:
hono/proxy. Fixesproxy()forwarding response headers that the origin'sConnectionheader designates as connection-scoped, where headers intended only for the immediate peer — per RFC 9110 Section 7.6.1 — could be exposed to clients, disclosing connection-scoped or internal metadata. GHSA-79qm-7rj5-m7r9Users who use
hono/jsxfor server-side rendering,hono/cors,hono/language, orhono/proxyare strongly encouraged to upgrade to this version.v4.12.33Compare Source
What's Changed
@hono/node-serverin #5167Full Changelog: honojs/hono@v4.12.32...v4.12.33
v4.12.32Compare Source
What's Changed
Object.create(null)when parsing query, headers, and params in #5161Full Changelog: honojs/hono@v4.12.31...v4.12.32
v4.12.31Compare Source
What's Changed
@ts-expect-errorby @yusukebe in #5130parseBody()by @yusukebe in #5131cloneRawRequestby @yusukebe in #51330by @yusukebe in #5135Full Changelog: honojs/hono@v4.12.30...v4.12.31
v4.12.30Compare Source
What's Changed
Full Changelog: honojs/hono@v4.12.29...v4.12.30
v4.12.29Compare Source
What's Changed
compatibilityDateby @yusukebe in #5100*as a match by @yusukebe in #5084New Contributors
Full Changelog: honojs/hono@v4.12.28...v4.12.29
v4.12.28Compare Source
What's Changed
*.tsbuildinfoby @yusukebe in #5066devDependenciesby @yusukebe in #5085New Contributors
Full Changelog: honojs/hono@v4.12.27...v4.12.28
v4.12.27Compare Source
Security fixes
This release includes fixes for the following security issues:
hono/jsx does not isolate context per request
Affects:
hono/jsx,hono/jsx-renderer. During SSR, context was stored process-wide instead of per request, souseContext()/useRequestContext()read after anawaitin an async component could return another concurrent request's value — leading to cross-request data disclosure or authorization checks against the wrong request. GHSA-hvrm-45r6-mjfjServer-Side XSS via JSX escaping bypass in cx()
Affects:
hono/css.cx()marked its composed class name as already-escaped without escaping the input, so untrusted input passed as a class name could break out of the JSXclassattribute during SSR and inject markup (XSS). GHSA-w62v-xxxg-mg59API Gateway v1 adapter can drop a repeated request header value
Affects:
hono/aws-lambda. The API Gateway v1 (and VPC Lattice) adapter de-duplicated repeated header values by substring instead of exact match, dropping a value that is a substring of another (e.g.203.0.113.1dropped when203.0.113.10is present) — affecting logic such asX-Forwarded-For-based IP restriction. GHSA-xgm2-5f3f-mvvcUsers of
hono/jsx/hono/jsx-renderer,hono/css(cx()), or thehono/aws-lambdaAPI Gateway v1 / VPC Lattice adapters are encouraged to upgrade.v4.12.26Compare Source
What's Changed
Full Changelog: honojs/hono@v4.12.25...v4.12.26
v4.12.25Compare Source
Security fixes
This release includes fixes for the following security issues:
CORS Middleware reflects any Origin with credentials when
origindefaults to the wildcardAffects:
hono/cors. Fixes the wildcard origin reflecting the requestOriginand sendingAccess-Control-Allow-Credentials: truewhencredentials: trueis set without an explicitorigin, where any site a logged-in user visited could make credentialed cross-origin requests and read responses from cookie-authenticated endpoints. GHSA-88fw-hqm2-52qcBody Limit Middleware can be bypassed on AWS Lambda by understating
Content-LengthAffects:
hono/body-limiton AWS Lambda (hono/aws-lambda,hono/lambda-edge). Fixes the request being built with the client-declaredContent-Lengthwhile the body is delivered fully buffered, where a client could declare a smallContent-Lengthwith a much larger body and slip past the configured size limit. GHSA-rv63-4mwf-qqc2Path traversal in
serve-staticon Windows via encoded backslash (%5C)Affects:
serveStaticon Windows (Node, Bun, Deno adapters). Fixes the path guard allowing a lone backslash, where an encoded backslash (%5C) decoded to\was treated as a separator by the Windows path resolver, letting a single URL segment escape into a middleware-guarded subtree. GHSA-wwfh-h76j-fc44AWS Lambda adapter merges multiple
Set-Cookieheaders into one value, dropping cookies on ALB single-header and LatticeAffects:
hono/aws-lambda. Fixes multipleSet-Cookieresponse headers being joined into one comma-separated value for ALB single-header responses and VPC Lattice v2, where the value could not be split back into individual cookies and clients silently dropped or misparsed them. GHSA-j6c9-x7qj-28xfLambda@Edge adapter keeps only the last value of a repeated request header, dropping the rest
Affects:
hono/lambda-edge. Fixes repeated request headers being written with overwrite instead of append, where only the last value of a header such asX-Forwarded-Forreached the application and the remaining values were silently dropped. GHSA-wgpf-jwqj-8h8pv4.12.24Compare Source
What's Changed
Full Changelog: honojs/hono@v4.12.23...v4.12.24
v4.12.23Compare Source
What's Changed
COMPRESSIBLE_CONTENT_TYPE_REGEXre-export by @na-trium-144 in #4961::by @yusukebe in #4971Full Changelog: honojs/hono@v4.12.22...v4.12.23
v4.12.22Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.12.21...v4.12.22
v4.12.21Compare Source
Security fixes
This release includes fixes for the following security issues:
app.mount() strips mount prefix using undecoded path, causing incorrect routing for percent-encoded paths
Affects:
app.mount(). Fixes prefix stripping using the raw URL pathname instead of the decoded path, where percent-encoded characters in the mount prefix or path could cause the prefix to be removed at the wrong position, resulting in the sub-application receiving an incorrect path. GHSA-2gcr-mfcq-wcc3IP Restriction bypasses static deny rules for non-canonical IPv6
Affects:
hono/ip-restriction. Fixes IP address comparison using string equality, where non-canonical IPv6 representations of a denied address — such as compressed forms or hex-notation IPv4-mapped addresses — could bypass static deny rules. GHSA-xrhx-7g5j-rcj5Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie injection
Affects:
hono/cookie. Fixes missing validation ofsameSiteandpriorityoptions against injection characters (;,\r,\n), where user-controlled input passed to either option could inject additional attributes into the Set-Cookie response header. GHSA-3hrh-pfw6-9m5xJWT middleware accepts any Authorization scheme, not only Bearer
Affects:
hono/jwt,hono/jwk. Fixes missing scheme validation in the Authorization header, where any two-part header value was accepted regardless of the scheme name, allowing non-Bearer schemes to pass JWT authentication. GHSA-f577-qrjj-4474Users who use
app.mount(),hono/ip-restriction,hono/cookie, orhono/jwt/hono/jwkare encouraged to upgrade to this version.v4.12.20Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.12.19...v4.12.20
v4.12.19Compare Source
What's Changed
bytes()by [@Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.