Reactive programming made easy

Get started

A fast and beautiful reactive library

Kotlin Java Android

Concise and powerful syntax

//Create your data
val counter = mutableFieldOf(0)

//Display your data however you want
evenOrOddText.setText(counter.transform {
    if(it % 2 == 0) "Even" else "Odd"
container.setBackgroundColor(counter.transform {
    Color.argb(min(it, 255), 0, 255, 0)

//Change the data whenever you want,
//changes will be applied automatically
button.setOnClickListener {
//Create your data
MutableField<Integer> counter = MutableField.of(0);

//Display your data however you want
TextViewUtils.setText(mainText, counter);
TextViewUtils.setText(evenOrOddText, counter.transform(it ->
    it % 2 == 0 ? "Even" : "Odd"
ViewUtils.setBackgroundColor(container, counter.transform(it ->
    Color.argb(min(it, 255), 0, 255, 0)

//Change the data whenever you want,
//changes will be applied automatically
button.setOnClickListener(() -> {
    counter.setValue(c -> c + 1);
0 Even Increment

The engine behind MoviesFad

Dataflow is not only beautiful, but also fast and solidly tested.

Our app MoviesFad has been installed more than 100.000 times in more than 150 countries.
We are also rolling out this library in SeriesFad which has more than 4 million downloads.

✔️Production ready

Comparison with similar products

Dataflow* LiveData ReactiveX (RxJava)
Async computing check clear check
Lifecycle aware check
check Only on activities and fragments
check Any JVM based language
clear Android™ only
check Multiple languages
Data manipulation check check check
Weak listeners support check clear clear
Error handling check clear
check Errors terminate the stream
Advanced collection operations check clear clear
Delay and debounce operators check clear check
Directly set value on Android™ views
check Only in code
check Only in XML
Android™ optimizations check check clear
Native Kotlin support check clear
check Afterthought, doesn't fully exploit Kotlin features
Commercial technical support check clear clear
* Some features may require extensions