Back to directory
MithrilJS avatar

mithril.js

A JavaScript Framework for Building Brilliant Applications. Read more below about its uses, features, and usage.

Clone repository

git clone https://github.com/MithrilJS/mithril.js.git

14,490

Stars

922

Forks

295

Watchers

MIT

License

Mithril.js

npm Version   License   npm Downloads   Build Status   Donate at OpenCollective   Zulip, join chat

What is Mithril.js?

A modern client-side JavaScript framework for building Single Page Applications. It's small (8.93 KB gzipped), fast and provides routing and XHR utilities out of the box.

Mithril.js is used by companies like Vimeo and Nike, and open source platforms like Lichess 👍.

Mithril.js supports Firefox ESR, and the last two versions of Firefox, Edge, Safari, and Chrome. No polyfills required. 👌

Installation

CDN

<!-- Development: whichever you prefer -->
<script src="https://unpkg.com/mithril/mithril.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mithril/mithril.js"></script>

<!-- Production: whichever you prefer -->
<script src="https://unpkg.com/mithril/mithril.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mithril/mithril.min.js"></script>

npm

npm install mithril --save

The "Getting started" guide is a good place to start learning how to use Mithril.js.

TypeScript type definitions are available from DefinitelyTyped. They can be installed with:

$ npm install @types/mithril --save-dev

Documentation

Documentation lives on mithril.js.org.

You may be interested in the API Docs, a Simple Application, or perhaps some Examples.

Getting Help

Mithril.js has an active & welcoming community on Zulip, or feel free to ask questions on Stack Overflow using the mithril.js tag.

Contributing

There's a Contributing FAQ on the Mithril.js site that hopefully helps, but if not definitely hop into the Zulip stream and ask away!


Thanks for reading!

🎁

Releases

Release v2.3.8

#3056 #3055 #3054 #3050 #3052 #3053 #3047 #3045

Changelog

Patch Changes refactor execSelector (@kfule) Make vnode.domSize assignment consistent between create and update. (@kfule)...

Release v2.3.6

#3042

Changelog

Patch Changes Make the attrs of non-element vnodes always non-null. (@kfule) In #3041, it seemed that the case of non-element vnodes was not fully considered in ter...

Release v2.3.6

#3042

Changelog

Patch Changes Make the attrs of non-element vnodes always non-null. (@kfule) In #3041, it seemed that the case of non-element vnodes was not fully considered in ter...

Aug 25, 2025

Download .zip

Release v2.3.5

#3041 #3039

Changelog

Patch Changes Assorted Performance Improvements (@kfule) This PR improves performance through the following changes: Adoption of the spread syntax, which can...

Aug 11, 2025

Download .zip

Release v2.3.4

#3037 #3032

Changelog

Patch Changes Fix the error message selection condition (@dead-claudia) The previous condition was basically "if this is non-nullish or a boolean". That "or...