NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1783 most downloaded on npm
Minimal H(TTP) framework built for high performance and portability.
Last release 3 days ago
14 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Most releases are documented
notes for 42 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
10 years old
151 releases · first in 2016
validate: Provide validate error in data
data (#594)req.rawBody before req.body (#604)isError and update DataT default generic param (#582)One column per quarter.
data (#594)req.rawBody before req.body (#604)isError and update DataT default generic param (#582)decode option for getRouterParam
getValidatedRouterParams util (#573)decode option for getRouterParam (#556)getRequestFingerprint util (#564)H3Error data and createError (#566)getValidatedRouterParams util (#573)decode option for getRouterParam (#556)getRequestFingerprint util (#564)H3Error data and createError (#566)getRequestProtocol: Conditionaly check connection?.encrypted
connection?.encrypted (#532)Use native Headers and Response for legacy polyfills
Headers and Response for legacy polyfills (#523)getValidatedQuery (164f68e)Headers and Response for legacy polyfills (#523)Deprecate getMethod to prefer event.method
note Checkout the blog article for release notes and more information.
event.method and event.headers (#429)readBody: Validate requests with application/json content type (#207)event.url (#455)event.body with readable stream (#457)event.request getter to access web request (#454)readFormData util (#421)streamRequest option (#374)readValidatedBody and getValidatedQuery utils (#459)removeResponseHeader and clearResponseHeaders utils (#427)serveStatic utility (#480)onRequest, onBeforeResponse and onAfterResponse global hooks (#482)plain and web adapters (#483)event.context.matchedRoute (#500)fromWebHandler (#490)fromPlainHandler (bc2ca33)getRequestIP util (#503)defineRequestMidleware, defineResponseMiddleware and rename object synctax hooks (#507)set-cookie value when handling web responses (#445)fetchOptions.method over incoming request method (#441)set-cookie headers in web reponse (#453)name and filename (#416)event.node.req.url (#471)node.res.end() returned value (7b18fa0)onError does not handles reponse (#478)response.body instead of initial returned val (0434358)null for null body responses (#495)event.path instead of event.node.req.url for internal utils (#438)event.node.req.originalUrl (6c87d87)isEventHandler to isEvent (#452)event.method (7585861)getMethod to prefer event.method (bc202c0)sendWebResponse for event.respondWith (#481)sendNoContent for null handling (a72a4b8)event.body to event.rawBody (563313d)deleteCookie description (#487)release-rc script (98d2fa5)event.context.matchedRoute (#500)fromWebHandler (#490)fromPlainHandler (bc2ca33)getRequestIP (#503)defineRequestMidleware, defineResponseMiddleware and rename object synctax hooks (#507)sendNoContent for null handling (a72a4b8)event.body to event.rawBody (563313d)beforeResponse to onBeforeResponse (7cebec2)event: Add default stringify with method and url for better dx
null for null body responses (#495)deleteCookie description (#487)Deprecate getMethod to prefer event.method
serveStatic utility (#480)onRequest, onBeforeResponse and onAfterResponse global hooks (#482)plain and web adapters (#483)node.res.end() returned value (7b18fa0)onError does not handles reponse (#478)event.method (7585861)getMethod to prefer event.method (bc202c0)sendWebResponse for event.respondWith (#481)compare changes ### 🩹 Fixes - Revert #452 (#452) ### ❤️ Contributors - Pooya Parsa (@pi0)
Add event.method and event.headers
event.method and event.headers (#429)application/json content type (#207)event.url (#455)event.body with readable stream (#457)event.request getter to access web request (#454)readFormData util (#421)streamRequest option (#374)readValidatedBody and getValidatedQuery utils (#459)removeResponseHeader and clearResponseHeaders utils (#427)set-cookie value when handling web responses (#445)fetchOptions.method over incoming request method (#441)set-cookie headers in web response (#453)name and filename (#416)event.node.req.url (#471)event.path instead of event.node.req.url for internal utils (#438)event.node.req.originalUrl (6c87d87)isEventHandler to isEvent (#452)fetchWithEvent: Allow customizing fetch impl type
H3Error (#415)H3Error (#415)proxy: Support onResponse callback
onResponse callback (#368)event.handled flag (#410)getRequestURL: Normalize double slashes
readRawBody: Resolve cached promise before normalizing buffer
readRawBody: Always return buffer without encoding
readBody, readRawBody: Handle raw body as buffer
setResponseStatus: Mark code type as optional
code type as optional (#359)Sanitize statusMessage of disallowed chars
Replace deprecated methods in test and jsdocs
splitCookiesString utility (#343)getRequestHost, getRequestProtocol and getRequestURL utils (#351)data property (#346)init (c84c811)proxy: Support cookieDomainRewrite and cookiePathRewrite
MultiPartData (#332)compare changes ### 🚀 Enhancements - Session support improvements (#325) ### ❤️ Contributors - Pooya Parsa
fetchWithEvent and getProxyRequestHeaders utils
fetchWithEvent and getProxyRequestHeaders utils (#323)iron-webcrypto (a4b6f0d)JSON.stringify (22d116c)Inline iron-webcrypto to remove buffer polyfill
iron-webcrypto to remove buffer polyfill (c50505b)setCookie: Override existing set-cookie header with same name
set-cookie header with same name (#316)host to ignored headers (d4f863f)Utils to get and set response status
readMultipartFormData to parse multipart/form-data (#280)sendNoContent utility to create a 204 response (#250)createRouter: Deprecate misspelled preemptive option
Nothing published for this version
import type from correct location
context type for CompatibilityRequestProps (#164) (984a42b)onError is provided (#162) (ccc9c7e)__h3_error__ class property to detect error (968bfee)H3EventContext for type augmentation (#124) (5042e92)H3Response (62aebf8)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
H3 API and exports are updated in order to reduce dependency on Node.js and future possibilities.
H3 API and exports are updated in order to reduce dependency on Node.js and future possibilities.
eventHandler() wrapper otherwise a warning will be shown suggesting this change for you.app instance created by createApp is not a Node.js listener with (req, res) => {} signuture anymore. You can convert h3 app into a Node.js listener using toNodeListener(app).req.event and res.event is dropped. If you had custom utils depending on this, you might need to change them.(req, res, next?) = {} signuture are not longer automatically converted to event handler format. You can convert them using new fromNodeMiddleware((req, res) => {}) utility.writeEarlyHints utility (#184)statusMessage from errors (#195)URL for pathname (#196)sendStream to the utils list (d58fad8)package.json to subpath exports (#186)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
move router params to event.context.params
move router params to event.context.params
move router params to event.context.params (6fe32e2)
set default path for setCookie to /
setCookie to /setCookie to / (1bd6a45)ServerResponse from CompatibilityEvent possibilities (b285659)handleCacheHeaders utility (4a71a3f)params to compatibility layer for req (63dd55c)dynamicEventHandler (ce98257)[h3] prefix to console error (2f4859c)writableEnded guard (ba5084c)onError provided (2c25aa1)handle (54a944c)Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →