honojs/hono (hono)
### [`v4.0.10`](https://togithub.com/honojs/hono/releases/tag/v4.0.10)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.9...v4.0.10)
#### What's Changed
- fix (jsx/dom): keep ref.current value during lifecycle. by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2307](https://togithub.com/honojs/hono/pull/2307)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.9...v4.0.10
### [`v4.0.9`](https://togithub.com/honojs/hono/releases/tag/v4.0.9)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.8...v4.0.9)
#### What's Changed
- fix(stream): remove async from onabort by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2293](https://togithub.com/honojs/hono/pull/2293)
- fix(types): use `{}` instead of Partial by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2305](https://togithub.com/honojs/hono/pull/2305)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.8...v4.0.9
### [`v4.0.8`](https://togithub.com/honojs/hono/releases/tag/v4.0.8)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.7...v4.0.8)
#### What's Changed
- fix(ssg): allow `app: Hono` for `toSSG` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2272](https://togithub.com/honojs/hono/pull/2272)
- fix(ssg): preserve binary files as-is by [@berlysia](https://togithub.com/berlysia) in [https://github.com/honojs/hono/pull/2275](https://togithub.com/honojs/hono/pull/2275)
- fix: fix comment by [@nakasyou](https://togithub.com/nakasyou) in [https://github.com/honojs/hono/pull/2278](https://togithub.com/honojs/hono/pull/2278)
- fix(deno/jsx-precompile): use html() tag function if value is a promise by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2283](https://togithub.com/honojs/hono/pull/2283)
- fix(devDependencies): Fix the problem of missing glob package by [@xx1124961758](https://togithub.com/xx1124961758) in [https://github.com/honojs/hono/pull/2277](https://togithub.com/honojs/hono/pull/2277)
#### New Contributors
- [@berlysia](https://togithub.com/berlysia) made their first contribution in [https://github.com/honojs/hono/pull/2275](https://togithub.com/honojs/hono/pull/2275)
- [@xx1124961758](https://togithub.com/xx1124961758) made their first contribution in [https://github.com/honojs/hono/pull/2277](https://togithub.com/honojs/hono/pull/2277)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.7...v4.0.8
### [`v4.0.7`](https://togithub.com/honojs/hono/releases/tag/v4.0.7)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.6...v4.0.7)
#### What's Changed
- fix(jsx/dom): import from correct file for avoiding circular dependency by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2268](https://togithub.com/honojs/hono/pull/2268)
- fix(types): `MergeSchemaPath` supports regexp path params by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2271](https://togithub.com/honojs/hono/pull/2271)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.6...v4.0.7
### [`v4.0.6`](https://togithub.com/honojs/hono/releases/tag/v4.0.6)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.5...v4.0.6)
#### What's Changed
- chore: use official deno installer by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2250](https://togithub.com/honojs/hono/pull/2250)
- fix(reg-exp-router): use matchers\[METHOD_NAME_ALL] as fallback for unknown method by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2255](https://togithub.com/honojs/hono/pull/2255)
- test: add router/common.case.test.ts by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2258](https://togithub.com/honojs/hono/pull/2258)
- fix: assign value to element's property for input, textarea, select by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2261](https://togithub.com/honojs/hono/pull/2261)
- perf(jsx/dom): update textContent only when content changes by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2264](https://togithub.com/honojs/hono/pull/2264)
- fix(stream): avoid hang up when stream helper's callback throw error by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2262](https://togithub.com/honojs/hono/pull/2262)
- fix(serve-static): support extensionless files and refactor by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2260](https://togithub.com/honojs/hono/pull/2260)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.5...v4.0.6
### [`v4.0.5`](https://togithub.com/honojs/hono/releases/tag/v4.0.5)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.4...v4.0.5)
#### What's Changed
- fix: Dot-containing paths do not correctly receive extension completion. by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2243](https://togithub.com/honojs/hono/pull/2243)
- refactor(context): skip jsx type import by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2248](https://togithub.com/honojs/hono/pull/2248)
- feat(jsx/dom): support namespace for svg and mathml elements by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2241](https://togithub.com/honojs/hono/pull/2241)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.4...v4.0.5
### [`v4.0.4`](https://togithub.com/honojs/hono/releases/tag/v4.0.4)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.3...v4.0.4)
#### What's Changed
- docs(contribution): add install flag `--frozen-lockfile` by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2229](https://togithub.com/honojs/hono/pull/2229)
- refactor(jsx): shorten use hook a bit by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2231](https://togithub.com/honojs/hono/pull/2231)
- fix(jsx/dom): fix finding element to insert before by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2230](https://togithub.com/honojs/hono/pull/2230)
- feat(jsx): support HtmlEscapedString in html tag function by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2233](https://togithub.com/honojs/hono/pull/2233)
- chore(package.json): remove `@edge` for `compute` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2235](https://togithub.com/honojs/hono/pull/2235)
- fix(jwt): import cookie helper correctly by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2238](https://togithub.com/honojs/hono/pull/2238)
- fix(ssg): path of already extention by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2236](https://togithub.com/honojs/hono/pull/2236)
- fix(validator): use the cached content by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2234](https://togithub.com/honojs/hono/pull/2234)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.3...v4.0.4
### [`v4.0.3`](https://togithub.com/honojs/hono/releases/tag/v4.0.3)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.2...v4.0.3)
#### What's Changed
- fix(jsx-renderer): support async component by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2211](https://togithub.com/honojs/hono/pull/2211)
- fix(context): Inherit current status if not specified by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2218](https://togithub.com/honojs/hono/pull/2218)
- fix(hono-base): custom not found with middleware like compress by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2220](https://togithub.com/honojs/hono/pull/2220)
- refactor: jsx streaming by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2216](https://togithub.com/honojs/hono/pull/2216)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.2...v4.0.3
### [`v4.0.2`](https://togithub.com/honojs/hono/releases/tag/v4.0.2)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.1...v4.0.2)
This is a patch release. But, it includes a minor feature.
SSG helper now generates HTML files only if they are handling GET or ALL methods.
#### What's Changed
- fix: `createHandler` Response Types (handler x1) by [@nakasyou](https://togithub.com/nakasyou) in [https://github.com/honojs/hono/pull/2192](https://togithub.com/honojs/hono/pull/2192)
- fix(jsx/dom): Do not call insertBefore if the element position does not change by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2196](https://togithub.com/honojs/hono/pull/2196)
- refactor(ssg): filter SSG Route by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2181](https://togithub.com/honojs/hono/pull/2181)
- refactor(ssg): check `c.env` variables to disable/enable SSG by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2179](https://togithub.com/honojs/hono/pull/2179)
- Fix regex pattern with length limit at replaceUrlParam by [@the-fukui](https://togithub.com/the-fukui) in [https://github.com/honojs/hono/pull/2193](https://togithub.com/honojs/hono/pull/2193)
- docs(readme): tweak by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2204](https://togithub.com/honojs/hono/pull/2204)
- fix(router): LinearRouter and PatternRouter support regexp quantifiers by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2209](https://togithub.com/honojs/hono/pull/2209)
#### New Contributors
- [@the-fukui](https://togithub.com/the-fukui) made their first contribution in [https://github.com/honojs/hono/pull/2193](https://togithub.com/honojs/hono/pull/2193)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.1...v4.0.2
### [`v4.0.1`](https://togithub.com/honojs/hono/releases/tag/v4.0.1)
[Compare Source](https://togithub.com/honojs/hono/compare/v4.0.0...v4.0.1)
#### What's Changed
- fix(context): remove duplicate definition of render method by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2191](https://togithub.com/honojs/hono/pull/2191)
- refactor(ssg): create request from saved requestInit in order to avoid memory leak warnings by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2186](https://togithub.com/honojs/hono/pull/2186)
- feat(sse): Allow sending retry for SSE connection by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2188](https://togithub.com/honojs/hono/pull/2188)
**Full Changelog**: https://github.com/honojs/hono/compare/v4.0.0...v4.0.1
### [`v4.0.0`](https://togithub.com/honojs/hono/releases/tag/v4.0.0)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.12...v4.0.0)
> Going to full-stack.
Hono v4.0.0 is out! This major update includes some breaking changes and the addition of three major features.
1. Static Site Generation
2. Client Components
3. File-based Routing
So Hono is going to full-stack. Let's take a look at the three features.
#### 1. Static Site Generation
We introduce SSG Helper. With it you can generate static pages of your Hono applications.
To use this, create a separate file `build.ts` from the application and call the `toSSG()` function in it.
```ts
import fs from 'node:fs/promises'
import { toSSG } from 'hono/ssg'
import app from './src/index'
toSSG(app, fs)
```
There are adapters for Bun and Deno, so you can write shorter for Bun, for example.
```ts
import { toSSG } from 'hono/bun'
import app from './src/index'
toSSG(app)
```
And, just run it.
```ts
bun ./build.ts
```
Then HTML is generated.
```txt
$ ls static
about.html index.html
```
You can easily deploy this page to Cloudflare Pages, etc.
```txt
$ wrangler pages deploy static
```
##### With Vite
We have created a plugin [`@hono/vite-ssg`](https://togithub.com/honojs/vite-plugins/tree/main/packages/ssg) for Vite. By using this, you will be able to develop and build a static sites with just the `vite` command.
The configuration is the following:
```ts
import build from '@hono/vite-ssg'
import devServer from '@hono/vite-dev-server'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
build(),
devServer({
entry: 'src/index.tsx'
})
]
})
```
If you want to develope, just run the command:
```txt
vite
```
If you want to build, just run the command:
```txt
vite build
```
In combination with the deployment mentioned above to Cloudflare Pages, you can develop, SSG build, and deploy non-stop. And each of them is extremely fast (the video is 2x faster).
![Screen cast](https://togithub.com/honojs/hono/assets/10682/4421cb84-fd04-46a3-a6bf-e955fcbdf388)
#### 2. Client Components
`hono/jsx` was originally designed to run server-side as an alternative to template engines such as Mustache. Server-side JSX is an interesting experiment, creating a new stack to combine with HTMX and Alpine.js. But that's not all.
Now, `hono/jsx` runs on the client as well. We call it `hono/jsx/dom` or Client Components.
The exact same code as React runs with Hono's JSX.
```tsx
import { useState } from 'hono/jsx'
import { render } from 'hono/jsx/dom'
function Counter() {
const [count, setCount] = useState(0)
return (
Count: {count}
)
}
function App() {
return (
)
}
const root = document.getElementById('root')
render(, root)
```
The Hooks listed below are also implemented and you can create Client Components just like in React.
- useContext
- useEffect
- useState
- useCallback
- use
- startTransition
- useDeferredValue
- useMemo
- useLayoutEffect
- Memo
- isValidElement
##### `startViewTransition` family
In addition, the original APIs, `startViewTransition` family make the View Transition API easy to use.
```tsx
import { useState, startViewTransition } from 'hono/jsx'
import { Style, css, keyframes } from 'hono/css'
const fadeIn = keyframes`
from { opacity: 0; }
to { opacity: 1; }
`
const App = () => {
const [showTitleImage, setShowTitleImage] = useState(false)
return (
<>
{!showTitleImage ? (
) : (
)}
>
)
}
```
You can easily create the animation.
![SC](https://togithub.com/honojs/hono/assets/10682/d64b5120-2f31-4227-bcad-19f2d0b2b90a)
##### Ultra-small
The `hono/jsx/dom` is fast and ultra-small. It has a smaller JSX runtime dedicated to the DOM in addition to the common server and client ones. Just specify `hono/jsx/dom` instead of `hono/jsx` in `tsconfig.json`.
```json
"jsx": "react-jsx",
"jsxImportSource": "hono/jsx/dom"
```
The above counter example is **2.8KB** with Brotli compression.
![SS](https://togithub.com/honojs/hono/assets/10682/813ea09e-550d-49f2-bd51-4a205d38dee7)
In comparison, React is **47.3 KB** for the same thing.
![SS](https://togithub.com/honojs/hono/assets/10682/915c1894-d993-4a31-b506-e14d2a839171)
#### 3. File-based Routing
Last is File-based Routing. This is not included in the hono package, but is provided in a separate package.
It is named **HonoX**.
##### HonoX
HonoX has the following features.
- **File-based routing** - You can create a large application like Next.js.
- **Fast SSR** - Rendering is ultra-fast thanks to Hono.
- **BYOR** - You can bring your own renderer, not only one using hono/jsx.
- **Islands hydration** - If you want interactions, create an island. JavaScript is hydrated only for it.
- **Middleware** - It works as Hono, so you can use a lot of Hono's middleware.
You can try it now. One of create-hono's starter templates named "***x-base***" uses HonoX.
For detailed usage, please see the following HonoX repository.
https://github.com/honojs/honox
#### The core is still tiny
The addition of this feature has no impact on the core. "Hello World" in hono/tiny is still small, only 12KB minified.
#### Other new features
- feat(base): Set Default Path to `'*'` for `app.use()` - [https://github.com/honojs/hono/pull/1753](https://togithub.com/honojs/hono/pull/1753)
- feat(hono-base): `app.on` supports multiple paths - [https://github.com/honojs/hono/pull/1923](https://togithub.com/honojs/hono/pull/1923)
- feat(css): Introduce pseudo global selector and class name based extend syntax - [https://github.com/honojs/hono/pull/1928](https://togithub.com/honojs/hono/pull/1928)
- feat(jsx-renderer): Nested Layouts via Renderer - [https://github.com/honojs/hono/pull/1945](https://togithub.com/honojs/hono/pull/1945)
- feat!: validator throws error rathar than return `c.json()` - [https://github.com/honojs/hono/pull/2021](https://togithub.com/honojs/hono/pull/2021)
- feat: introduce Accepts Helper - [https://github.com/honojs/hono/pull/2001](https://togithub.com/honojs/hono/pull/2001)
- feat(serve-static): `mimes` option for serve-static - [https://github.com/honojs/hono/pull/2094](https://togithub.com/honojs/hono/pull/2094)
- feat!(validator): supports transformation - [https://github.com/honojs/hono/pull/2130](https://togithub.com/honojs/hono/pull/2130)
#### Breaking Changes
There are several breaking changes. Please see the Migration Guide below.
https://github.com/honojs/hono/blob/main/docs/MIGRATION.md
#### Thanks
Thanks to all contributors. Great job on all the hard work!
#### All Updates
- feat(base): Set Default Path to '\*' for app.use() by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/1753](https://togithub.com/honojs/hono/pull/1753)
- feat: Introduce jsx/dom by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1917](https://togithub.com/honojs/hono/pull/1917)
- ci: enables CI in the v4 branch by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1933](https://togithub.com/honojs/hono/pull/1933)
- feat(hono-base): `app.on` supports multiple paths by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1923](https://togithub.com/honojs/hono/pull/1923)
- feat!: remove deprecated features by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1934](https://togithub.com/honojs/hono/pull/1934)
- fix(jsx/dom): fix cleanup for deps by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1936](https://togithub.com/honojs/hono/pull/1936)
- refactor(jsx/dom): replace existing content by render() by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1938](https://togithub.com/honojs/hono/pull/1938)
- feat(css): Introduce pseudo global selector and class name based extend syntax by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1928](https://togithub.com/honojs/hono/pull/1928)
- feat: Introducing a New SSG Adaptor/Helper by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/1904](https://togithub.com/honojs/hono/pull/1904)
- chore(helper): Add experimental flag the SSG features by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/1967](https://togithub.com/honojs/hono/pull/1967)
- refactor: remove unnecessary `import` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1969](https://togithub.com/honojs/hono/pull/1969)
- refactor: remove and fix comments by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1970](https://togithub.com/honojs/hono/pull/1970)
- ci: remove lagon runtime tests and other lagon things by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1971](https://togithub.com/honojs/hono/pull/1971)
- refactor(ssg): SSG works without `node:path` by [@nakasyou](https://togithub.com/nakasyou) in [https://github.com/honojs/hono/pull/1965](https://togithub.com/honojs/hono/pull/1965)
- feat(factory): remove `deprecated` from `Factory` and `createHandlers` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1979](https://togithub.com/honojs/hono/pull/1979)
- fix(ssg): fix path parser bug & refactor code by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/1976](https://togithub.com/honojs/hono/pull/1976)
- feat(ssg): Implement Dynamic File Extension on MIME Type and Enhanced Response Handling by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/1968](https://togithub.com/honojs/hono/pull/1968)
- feat(jsx/dom): rewrite renderer to use virtual tree by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1981](https://togithub.com/honojs/hono/pull/1981)
- refactor: faster for loop by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/1989](https://togithub.com/honojs/hono/pull/1989)
- feat!(cloudflare-workers): make `manifest` required by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1984](https://togithub.com/honojs/hono/pull/1984)
- chore: enables lint and format for `.tsx` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1994](https://togithub.com/honojs/hono/pull/1994)
- feat(jsx/dom): provide jsx-runtime and jsx-dev-runtime via jsx/dom by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1986](https://togithub.com/honojs/hono/pull/1986)
- fix(types): correct `c.get()` inference by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/1995](https://togithub.com/honojs/hono/pull/1995)
- feat(jsx/dom): startTransition() and useTransition() by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1996](https://togithub.com/honojs/hono/pull/1996)
- refactor(jsx): export components and hook function from top level 'hono/jsx' by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1997](https://togithub.com/honojs/hono/pull/1997)
- feat(ssg): Ignore Dynamic Route by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/1990](https://togithub.com/honojs/hono/pull/1990)
- feat: Added `ssgParams` middleware by [@nakasyou](https://togithub.com/nakasyou) in [https://github.com/honojs/hono/pull/1960](https://togithub.com/honojs/hono/pull/1960)
- fix(ssg): fixed `isDynamicRoute` and `ssgParams` matter by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2006](https://togithub.com/honojs/hono/pull/2006)
- feat(jsx/dom): support createContext and useContext in jsx/dom by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/1999](https://togithub.com/honojs/hono/pull/1999)
- refactor(jsx/dom): make `useTransition()` handling more simple by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2003](https://togithub.com/honojs/hono/pull/2003)
- chore(package.json): specify the config in `test:deno` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2014](https://togithub.com/honojs/hono/pull/2014)
- chore(runtime-test): add `deno.lock` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2015](https://togithub.com/honojs/hono/pull/2015)
- fix(jsx/dom): find "insertBefore" node from next node list if not found by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2017](https://togithub.com/honojs/hono/pull/2017)
- feat!: validator throws error rathar than `return c.json()` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2021](https://togithub.com/honojs/hono/pull/2021)
- refactor(ssg): Removal of Libraries Dependent on Node.js by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2012](https://togithub.com/honojs/hono/pull/2012)
- feat!(deno): move middleware to helper by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2027](https://togithub.com/honojs/hono/pull/2027)
- fix(SSG): Correct extension of the file output by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2029](https://togithub.com/honojs/hono/pull/2029)
- feat(jsx/dom): Introduce startViewTransition() by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2020](https://togithub.com/honojs/hono/pull/2020)
- fix(ssg): Remove ArrayBuffer from FileSystemModule's writeFile by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2032](https://togithub.com/honojs/hono/pull/2032)
- refactor(jsx/dom): invoke update() in microtask by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2036](https://togithub.com/honojs/hono/pull/2036)
- feat: introduce Accepts Helper by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2001](https://togithub.com/honojs/hono/pull/2001)
- feat: improve `ssgParams` flexibility by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2024](https://togithub.com/honojs/hono/pull/2024)
- refactor(types): name them `BlankSchema` or `BlankInput` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2040](https://togithub.com/honojs/hono/pull/2040)
- feat(deno): export accpet helper for deno by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2041](https://togithub.com/honojs/hono/pull/2041)
- docs: Add JSDoc by [@nabeken5](https://togithub.com/nabeken5) in [https://github.com/honojs/hono/pull/1916](https://togithub.com/honojs/hono/pull/1916)
- fix!(types): Fix context type when chaining routes with middlewares by [@agatan](https://togithub.com/agatan) in [https://github.com/honojs/hono/pull/2046](https://togithub.com/honojs/hono/pull/2046)
- refactor: rename accept to accepts by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2063](https://togithub.com/honojs/hono/pull/2063)
- fix: use DOCTYPE by default by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2064](https://togithub.com/honojs/hono/pull/2064)
- fix(ssg): Uniformly Convert Paths Ending with Slash to 'index.ext' Format by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2056](https://togithub.com/honojs/hono/pull/2056)
- feat: Introduce `useViewTransition()` hook and `viewTransition()` helper by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2053](https://togithub.com/honojs/hono/pull/2053)
- feat(ssg): support Improve Hook Handling by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2054](https://togithub.com/honojs/hono/pull/2054)
- fix: await generate hook by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2074](https://togithub.com/honojs/hono/pull/2074)
- fix:(ssg): make 'files' mandatory in ToSSGResult by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2071](https://togithub.com/honojs/hono/pull/2071)
- feat(types): explicitly specify statusCode by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2073](https://togithub.com/honojs/hono/pull/2073)
- chore: vitest test.pool to 'forks' by [@watany-dev](https://togithub.com/watany-dev) in [https://github.com/honojs/hono/pull/2098](https://togithub.com/honojs/hono/pull/2098)
- goodbye: lagon by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2087](https://togithub.com/honojs/hono/pull/2087)
- refactor: faster for loop in jsx/dom by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2092](https://togithub.com/honojs/hono/pull/2092)
- refactor: "if" on one line and deletion of unneeded variables by [@EdamAme-x](https://togithub.com/EdamAme-x) in [https://github.com/honojs/hono/pull/2093](https://togithub.com/honojs/hono/pull/2093)
- fix: add typesVersions of accepts helper by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2096](https://togithub.com/honojs/hono/pull/2096)
- chore: use Bun as a package manager by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2105](https://togithub.com/honojs/hono/pull/2105)
- docs(contributing): add `Installing dependencies` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2113](https://togithub.com/honojs/hono/pull/2113)
- feat(serve-static): `mimes` option for serve-static by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2094](https://togithub.com/honojs/hono/pull/2094)
- feat(ssg): introduce `disableSSG` and `onlySSG` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2104](https://togithub.com/honojs/hono/pull/2104)
- feat!(mime): reduce default mimes by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2119](https://togithub.com/honojs/hono/pull/2119)
- feat(types): better `c.var` type by [@Kyiro](https://togithub.com/Kyiro) in [https://github.com/honojs/hono/pull/2121](https://togithub.com/honojs/hono/pull/2121)
- fix(jsx-renderer): correct nested layouts by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2128](https://togithub.com/honojs/hono/pull/2128)
- feat!(validator): supports transformation by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2130](https://togithub.com/honojs/hono/pull/2130)
- feat(jsx/dom): more react staff by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2132](https://togithub.com/honojs/hono/pull/2132)
- refactor(jsx): Remove unused HONO_COMPONENT feature by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2139](https://togithub.com/honojs/hono/pull/2139)
- fix(html): Remove circular dependencies in `hono/html` by [@javascripter](https://togithub.com/javascripter) in [https://github.com/honojs/hono/pull/2143](https://togithub.com/honojs/hono/pull/2143)
- Merge main into v4 by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2145](https://togithub.com/honojs/hono/pull/2145)
- feat(jsx): "className" is now an alias for "class" by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2146](https://togithub.com/honojs/hono/pull/2146)
- fix!(deno): put SSG helper into `helper.ts` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2150](https://togithub.com/honojs/hono/pull/2150)
- refactor(jsx): Tidyup the types to be exported by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2151](https://togithub.com/honojs/hono/pull/2151)
- fix(types): `MergeSchemePath` infers param types correctly by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2152](https://togithub.com/honojs/hono/pull/2152)
- fix(types): `MergeSchemaPath` infer inputs not only params by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2154](https://togithub.com/honojs/hono/pull/2154)
- Fix/function for attribute by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2161](https://togithub.com/honojs/hono/pull/2161)
- fix(jsx): The third argument of jsx(), key, is optional by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2162](https://togithub.com/honojs/hono/pull/2162)
- Feat/more jsx event by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2165](https://togithub.com/honojs/hono/pull/2165)
- docs: update the migration guide for releasing v4 by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2159](https://togithub.com/honojs/hono/pull/2159)
- perf(mime): make `getExtension()` fast by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2168](https://togithub.com/honojs/hono/pull/2168)
- v4 by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2167](https://togithub.com/honojs/hono/pull/2167)
#### New Contributors
- [@EdamAme-x](https://togithub.com/EdamAme-x) made their first contribution in [https://github.com/honojs/hono/pull/1976](https://togithub.com/honojs/hono/pull/1976)
- [@nabeken5](https://togithub.com/nabeken5) made their first contribution in [https://github.com/honojs/hono/pull/1916](https://togithub.com/honojs/hono/pull/1916)
- [@Kyiro](https://togithub.com/Kyiro) made their first contribution in [https://github.com/honojs/hono/pull/2121](https://togithub.com/honojs/hono/pull/2121)
- [@javascripter](https://togithub.com/javascripter) made their first contribution in [https://github.com/honojs/hono/pull/2143](https://togithub.com/honojs/hono/pull/2143)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.10...v4.0.0
### [`v3.12.12`](https://togithub.com/honojs/hono/releases/tag/v3.12.12)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.11...v3.12.12)
#### What's Changed
- fix(types): `MergeSchemaPath` infer inputs not only params by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2154](https://togithub.com/honojs/hono/pull/2154)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.11...v3.12.12
### [`v3.12.11`](https://togithub.com/honojs/hono/releases/tag/v3.12.11)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.10...v3.12.11)
##### What's Changed
- fix(html): Remove circular dependencies in `hono/html` by [@javascripter](https://togithub.com/javascripter) in [https://github.com/honojs/hono/pull/2143](https://togithub.com/honojs/hono/pull/2143)
- fix(types): `MergeSchemePath` infers param types correctly by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2152](https://togithub.com/honojs/hono/pull/2152)
##### New Contributors
- [@javascripter](https://togithub.com/javascripter) made their first contribution in [https://github.com/honojs/hono/pull/2143](https://togithub.com/honojs/hono/pull/2143)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.10...v3.12.11
### [`v3.12.10`](https://togithub.com/honojs/hono/releases/tag/v3.12.10)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.9...v3.12.10)
#### What's Changed
- fix(trie-router): fix same parameter name issue by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2136](https://togithub.com/honojs/hono/pull/2136)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.9...v3.12.10
### [`v3.12.9`](https://togithub.com/honojs/hono/releases/tag/v3.12.9)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.8...v3.12.9)
#### What's Changed
- chore: add development environment by [@jarqvi](https://togithub.com/jarqvi) in [https://github.com/honojs/hono/pull/2095](https://togithub.com/honojs/hono/pull/2095)
- chore(lint): set `curly` rule as `all` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2112](https://togithub.com/honojs/hono/pull/2112)
- fix: replace fs.existsSync() with Bun.file().exists() by [@the-pesar](https://togithub.com/the-pesar) in [https://github.com/honojs/hono/pull/2115](https://togithub.com/honojs/hono/pull/2115)
- fix(types): infer complex path params by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2122](https://togithub.com/honojs/hono/pull/2122)
- fix(jsx): fix context provider with async component by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2124](https://togithub.com/honojs/hono/pull/2124)
#### New Contributors
- [@jarqvi](https://togithub.com/jarqvi) made their first contribution in [https://github.com/honojs/hono/pull/2095](https://togithub.com/honojs/hono/pull/2095)
- [@the-pesar](https://togithub.com/the-pesar) made their first contribution in [https://github.com/honojs/hono/pull/2115](https://togithub.com/honojs/hono/pull/2115)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.8...v3.12.9
### [`v3.12.8`](https://togithub.com/honojs/hono/releases/tag/v3.12.8)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.7...v3.12.8)
#### What's Changed
- fix(factory): correct types inside of `createMiddleware()` by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2081](https://togithub.com/honojs/hono/pull/2081)
- fix: enable to return Response like object by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2085](https://togithub.com/honojs/hono/pull/2085)
- refactor: request param by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2088](https://togithub.com/honojs/hono/pull/2088)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.7...v3.12.8
### [`v3.12.7`](https://togithub.com/honojs/hono/releases/tag/v3.12.7)
[Compare Source](https://togithub.com/honojs/hono/compare/v3.12.6...v3.12.7)
#### What's Changed
- refactor: aws lambda createResult method by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2038](https://togithub.com/honojs/hono/pull/2038)
- refactor: secure headers middleware by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2039](https://togithub.com/honojs/hono/pull/2039)
- refactor: body parser by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2045](https://togithub.com/honojs/hono/pull/2045)
- feat(dev): support `NO_COLOR` by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2007](https://togithub.com/honojs/hono/pull/2007)
- refactor(test): change to not use `env` command by [@ryuapp](https://togithub.com/ryuapp) in [https://github.com/honojs/hono/pull/2062](https://togithub.com/honojs/hono/pull/2062)
- refactor: stream pull by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2057](https://togithub.com/honojs/hono/pull/2057)
- refactor: url util splitRoutingPath by [@ariskemper](https://togithub.com/ariskemper) in [https://github.com/honojs/hono/pull/2058](https://togithub.com/honojs/hono/pull/2058)
- fix(hono-base): fix not found handler calling timing when one middleware by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2080](https://togithub.com/honojs/hono/pull/2080)
**Full Changelog**: https://github.com/honojs/hono/compare/v3.12.6...v3.12.7
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 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.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
^3.11.8
->^4.0.0
Release Notes
honojs/hono (hono)
### [`v4.0.10`](https://togithub.com/honojs/hono/releases/tag/v4.0.10) [Compare Source](https://togithub.com/honojs/hono/compare/v4.0.9...v4.0.10) #### What's Changed - fix (jsx/dom): keep ref.current value during lifecycle. by [@usualoma](https://togithub.com/usualoma) in [https://github.com/honojs/hono/pull/2307](https://togithub.com/honojs/hono/pull/2307) **Full Changelog**: https://github.com/honojs/hono/compare/v4.0.9...v4.0.10 ### [`v4.0.9`](https://togithub.com/honojs/hono/releases/tag/v4.0.9) [Compare Source](https://togithub.com/honojs/hono/compare/v4.0.8...v4.0.9) #### What's Changed - fix(stream): remove async from onabort by [@sor4chi](https://togithub.com/sor4chi) in [https://github.com/honojs/hono/pull/2293](https://togithub.com/honojs/hono/pull/2293) - fix(types): use `{}` instead of Partial by [@yusukebe](https://togithub.com/yusukebe) in [https://github.com/honojs/hono/pull/2305](https://togithub.com/honojs/hono/pull/2305) **Full Changelog**: https://github.com/honojs/hono/compare/v4.0.8...v4.0.9 ### [`v4.0.8`](https://togithub.com/honojs/hono/releases/tag/v4.0.8) [Compare Source](https://togithub.com/honojs/hono/compare/v4.0.7...v4.0.8) #### What's Changed - fix(ssg): allow `app: HonoCount: {count}
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 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 has been generated by Mend Renovate. View repository job log here.