Last Updated: 3/7/2026
Bun
Bun is another JavaScript runtime. Bun includes a trans compiler, we can write the code with TypeScript. Hono also works on Bun.
1. Install Bun
To install bun command, follow the instruction in the official web site .
2. Setup
A starter for Bun is available. Start your project with “bun create” command.
bun create hono@latest my-appMove into my-app and install the dependencies.
cd my-app
bun install3. Hello World
“Hello World” script is below. Almost the same as writing on other platforms.
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Bun!'))
export default app4. Run
Run the command.
bun run devThen, access http://localhost:3000 in your browser.
Change port number
You can specify the port number with exporting the port.
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Bun!'))
export default app
export default {
port: 3000,
fetch: app.fetch,
}Serve static files
To serve static files, use serveStatic imported from hono/bun.
import { serveStatic } from 'hono/bun'
const app = new Hono()
app.use('/static/*', serveStatic({ root: './' }))
app.use('/favicon.ico', serveStatic({ path: './favicon.ico' }))
app.get('/', (c) => c.text('You can access: /static/hello.txt'))
app.get('*', serveStatic({ path: './static/fallback.txt' }))Testing
You can use bun:test for testing on Bun.
import { describe, expect, it } from 'bun:test'
import app from '.'
describe('My first test', () => {
it('Should return 200 Response', async () => {
const req = new Request('http://localhost/')
const res = await app.fetch(req)
expect(res.status).toBe(200)
})
})Then, run the command.
bun test index.test.ts