Observables
cycle.js.org
cycle.js.org
The thing that I prefer about Mithril though is that at the end of the day, your code looks like regular, vanilla js and is extremely readable. It's a pretty much invisible framework that you can use however you see the best fit - it just takes care of rendering and updating without any magic, and provides you with some helpful tools for managing models.
My immediate grip with Cycle is the api - it just looks messy and more complex than it needs to be.
5 documented functions, and one documented property. This is probably one of the most minimal/clean API's I have seen.
minimal/clean ≠ not complex
Like monads, this is rather abstract, although simple. As abstractions accumulate in layers, the thing becomes harder to understand.
My favorite thing about Cyclejs is the use of observables instead of setters. I usually dislike setter methods, since it becomes hard to track all the places that modify the state. With observables, the streams being combined/merged give you that information instantly.
Observables also give you very fine grained control over the data, so you don't need lifecycle hooks to control v-dom rendering (just use throttle/debounce).
That said, the concept of drivers is new and can seem kinda wonky at first, but 'give it 5 minutes'?
I have Cycle on my radar and am keen to have a deeper play... I will say this though, I am loving all the developments in this space recently!