Hyperapp is a JavaScript library for building web applications.
- Minimal: Hyperapp was born out of the attempt to do more with less. We have aggressively minimized the concepts you need to understand while remaining on par with what other frameworks can do.
- Functional: Hyperapp's design is inspired by The Elm Architecture. Create scalable browser-based applications using a functional paradigm. The twist is you don't have to learn a new language.
- Batteries-included: Out of the box, Hyperapp combines state management with a VDOM engine that supports keyed updates & lifecycle events — all with no dependencies.
The documentation is not perfect and may be incomplete. Documenting everything takes time. We have an open issue to track what should be included here, so check it out if you can't find what you were looking for.
Here is the first example to get you started. You can try it online too.
import { h, app } from "hyperapp"
const state = {
count: 0
}
const actions = {
down: () => state => ({ count: state.count - 1 }),
up: () => state => ({ count: state.count + 1 })
}
const view = (state, actions) => (
<main>
<h1>{state.count}</h1>
<button onclick={actions.down}>-</button>
<button onclick={actions.up}>+</button>
</main>
)
const main = app(state, actions, view, document.body)
Install with npm or Yarn.
npm i hyperapp
Then with a module bundler like Rollup or Webpack, use as you would anything else.
import { h, app } from "hyperapp"
If you prefer not to use a build system, you can load Hyperapp from a CDN and it will be globally available through the window.hyperapp
object.
<!doctype html>
<html>
<body>
<script src="https://unpkg.com/hyperapp"></script>
<script>
const { h, app } = hyperapp
</script>
</body>
</html>
We support all ES5-compliant browsers, including Internet Explorer 10 and above.
Hyperapp is MIT licensed. See LICENSE.