<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn" -->

---
title: Hono: a modern web framework for JavaScript | daily.dev
description: Hono is a lightweight JavaScript web framework built on Web Standards, designed to feel familiar to Express users while supporting multiple runtimes including...
canonical: https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Hono: a modern web framework for JavaScript | daily.dev
og:description: Hono is a lightweight JavaScript web framework built on Web Standards, designed to feel familiar to Express users while supporting multiple runtimes including...
og:url: https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn
og:image: https://api.daily.dev/og/posts/ndoLLHpgn.png
og:image:alt: Hono: a modern web framework for JavaScript
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Hono: a modern web framework for JavaScript

**[Flavio Copes](https://daily.dev/sources/flaviocopes)** · 5 min read · 3 upvotes · 1 comments

## Summary

Hono is a lightweight JavaScript web framework built on Web Standards, designed to feel familiar to Express users while supporting multiple runtimes including Bun, Node.js, Deno, and Cloudflare Workers. This introductory guide covers creating a Hono app with Bun, defining routes for different HTTP methods, reading request bodies (text, JSON, form data), and sending responses with helpers like c.text(), c.json(), and c.html(). Key gotchas include remembering to return the response object and using the correct body parser for the content type.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://flaviocopes.com/hono>

## Questions this post answers

### How do I read a JSON request body in Hono?

Use await c.req.json() inside an async handler to parse a JSON request body. Hono provides similar helpers for other content types: c.req.text() for plain text and c.req.parseBody() for multipart or urlencoded form data. The body stream can only be read once, so choose the correct parser for the request's content type upfront.

_Developers wiring up Hono routes can find framework updates and patterns curated on daily.dev._

### How do I run the same Hono app on both Bun and Node.js?

Hono apps are portable across runtimes because they use standard Fetch API Request and Response objects. On Bun, export the app object directly and Bun runs it. On Node.js, install @hono/node-server, import serve from it, and call serve(app) instead of exporting the app directly, keeping the route definitions unchanged.

_Teams comparing runtimes for a JavaScript backend can track cross-runtime framework tips on daily.dev._

### How do I capture a URL parameter in a Hono route?

Define a named parameter in the route path with a colon, such as app.get('/uppercase/:val', ...), then read it inside the handler with c.req.param('val'). For a request to /uppercase/test, c.req.param('val') returns 'test'. Multiple named parameters in one route are all returned together as an object from c.req.param().

_Developers building routing logic can keep up with framework-specific patterns like this on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@agustinbarrientos** · 0 upvotes

> Hono would be my first test for a service that may move between Node and an edge runtime

## Similar posts on daily.dev

- [What is hono? The edge-native web framework explained \(2026\)](https://daily.dev/posts/what-is-hono-the-edge-native-web-framework-explained-2026--dqqzaspve) · FireUp · 42 upvotes · 5 comments
- [The Rise of Micro-Backends: Why Frontend Devs Love Hono](https://daily.dev/posts/the-rise-of-micro-backends-why-frontend-devs-love-hono-a9wal9hdp) · SitePoint · 0 upvotes · 0 comments
- [Hono: middleware, cookies, headers, redirects](https://daily.dev/posts/hono-middleware-cookies-headers-redirects-ijxncvike) · Flavio Copes · 0 upvotes · 0 comments
- [How To Build a Serverless API With Bun and Hono](https://daily.dev/posts/how-to-build-a-serverless-api-with-bun-and-hono-gppc14in4) · The New Stack · 1 upvotes · 0 comments
- [A deep dive into Hono](https://daily.dev/posts/a-deep-dive-into-hono-qm1c5p6li) · Flavio Copes · 2 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#bun](https://daily.dev/tags/bun)

[View this post on daily.dev](https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Hono: a modern web framework for JavaScript","url":"https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn"},"datePublished":"2026-08-08T06:04:52.311Z","dateModified":"2026-09-13T19:56:38.370Z","description":"Hono is a lightweight JavaScript web framework built on Web Standards, designed to feel familiar to Express users while supporting multiple runtimes including...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7219243bb6b6113ecc90bd933965a4ef?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7219243bb6b6113ecc90bd933965a4ef?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Flavio Copes","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Flavio Copes","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1f2dbd275797411bbd37bfdaaf0951a9","url":"https://daily.dev/sources/flaviocopes"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"javascript,bun","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Flavio Copes","item":"https://daily.dev/sources/flaviocopes"},{"@type":"ListItem","position":3,"name":"Hono: a modern web framework for JavaScript"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn","comment":[{"@type":"Comment","text":"Hono would be my first test for a service that may move between Node and an edge runtime","datePublished":"2026-08-08T19:28:57.552Z","url":"https://daily.dev/posts/ndoLLHpgn#c-idXl1Fr2K","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/hono-a-modern-web-framework-for-javascript-ndollhpgn#faq","mainEntity":[{"@type":"Question","name":"How do I read a JSON request body in Hono?","acceptedAnswer":{"@type":"Answer","text":"Use await c.req.json() inside an async handler to parse a JSON request body. Hono provides similar helpers for other content types: c.req.text() for plain text and c.req.parseBody() for multipart or urlencoded form data. The body stream can only be read once, so choose the correct parser for the request's content type upfront. Developers wiring up Hono routes can find framework updates and patterns curated on daily.dev."}},{"@type":"Question","name":"How do I run the same Hono app on both Bun and Node.js?","acceptedAnswer":{"@type":"Answer","text":"Hono apps are portable across runtimes because they use standard Fetch API Request and Response objects. On Bun, export the app object directly and Bun runs it. On Node.js, install @hono/node-server, import serve from it, and call serve(app) instead of exporting the app directly, keeping the route definitions unchanged. Teams comparing runtimes for a JavaScript backend can track cross-runtime framework tips on daily.dev."}},{"@type":"Question","name":"How do I capture a URL parameter in a Hono route?","acceptedAnswer":{"@type":"Answer","text":"Define a named parameter in the route path with a colon, such as app.get('/uppercase/:val', ...), then read it inside the handler with c.req.param('val'). For a request to /uppercase/test, c.req.param('val') returns 'test'. Multiple named parameters in one route are all returned together as an object from c.req.param(). Developers building routing logic can keep up with framework-specific patterns like this on daily.dev."}}]}
```

