夯Hum

A fresh take on server-rendered apps

HTML first.
Interactive by choice.

Build fast, thoughtful web experiences with Preact, file-based routing, and islands that only wake up when you need them.

Hono · Preact· Vite

routes/index.tsx
import Counter from "./_islands/Counter.js";

export default function Home() {
  return (
    <main>
      <h1>HTML first. Interactive by choice.</h1>
      <Counter start={3} />
    </main>
  );
}
Server-rendered by defaultReady in 34ms
✳ Just the JavaScript you need

Small by design

Less shipped. More enjoyed.

Start with a complete page. Add client-side behavior only to the pieces that benefit from it.

◉

HTML, up front

Pages render on the server and arrive ready to read. Keep the browser payload focused on what matters.

Read about handlers
✳

Islands, on purpose

Hydrate individual Preact components when a little interaction makes the experience better.

Explore partials
↗

A familiar toolkit

Build with file-based routes, Hono, Preact, and Vite—tools that feel right at home in the modern web.

A tiny island

Try the interactive bit.

This counter is hydrated in your browser. Everything else on this page stays plain, server-rendered HTML.

Count something
3
Only this little island needs JavaScript.

Your next project starts here

Keep it simple. Make it feel alive.

Create a Hum app and make the web yours.

Route handlers·Partial updates

$npm create hum@latest↵