a 4kb framework for creating sturdy frontend applications
Super minimal

Choo's modular core was engineered from the ground up to be smaller and more efficient than every other alternative out there. This was made possible by building out the core components over the span of 3 years and combining them under a tiny API.

Easy to begin

We think learning frameworks is boring. So instead of inventing a new language, Choo relies on vanilla JS and HTML. Combined with its small API and clean architecture this means Choo is easy to get started with, and stays that way as projects grow in scope and humans.

var html = require('choo/html')
var choo = require('choo')

var app = choo()
app.use(titleStore)
app.route('/', mainView)
app.mount('body')

function mainView (state, emit) {
  return html`
    <body>
      <h1>Title: ${state.title}</h1>
      <input type="text" value="${state.title}" oninput=${update} />
    </body>
  `

  function update (e) {
    emit('update', e.target.value)
  }
}

function titleStore (state, emitter) {
  state.title = 'Not quite set yet'
  emitter.on('DOMContentLoaded', function () {
    emitter.on('update', function (newTitle) {
      state.title = newTitle
      emitter.emit('render')
    })
  })
}
Made with 🚂 in Saigon, Tokyo, Berlin
By Yosh & friends