Skip to content
light javascript framework to build web applications
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src v3.4.3 Jan 1, 2019
test closes #149 Dec 23, 2018
.gitignore #137 added tests for innerHTML and class node attributes May 5, 2018
.travis.yml made indentation consistent across files Dec 9, 2017 v3.4.3 Jan 1, 2019
LICENSE added changelog and updated readme Jan 12, 2018 closes #139 Mar 18, 2018
secret.example.json closes #129, closes okwolo/website#6 Jan 22, 2018
webpack.config.js closes #118 Jan 13, 2018


NPM version Build Status Codecov GZIP size


light javascript framework to build web applications

  • No build step necessary by default.
  • Virtual DOM implementation for fast and efficient keyed layout updates.
  • Built-in client-side router for instant page changes.
  • Included state management solution which supports actions, middleware and watchers.
  • Deeply customizable with support for asynchronous configuration.


Install with npm and use with a code bundler.

npm install okwolo
const okwolo = require('okwolo/standard');

Alternatively, the okwolo function can be loaded using a script tag. Transpiled (es5) versions of all kits are available from the website starting from v3.0.0.

<!-- latest -->
<script src=""></script>
<!-- specific version -->
<script src=""></script>

Create your first app.

const app = okwolo(document.body);


app(() => () => (
    ['div.wrapper', {}, [
        ['h1', {}, [
            'Hello World!',

Visit the website for more information.


Documentation is maintained on the project's website.


Upcoming features are tracked with the feature label in the issues


Versions follow the semver convention. Because okwolo gives its users so much access into the internal workings, the surface area of changes that are considered "breaking" is large. This means major releases might happen more often that usual.

All changes are logged in the changelog.



You can’t perform that action at this time.