Documentation / dataflow
Go to reference

Dataflow is a Kotlin/JVM library that combines reactive programing, functional programming and the observer pattern to simplify the presentation of data in your program. Let the programmers focus on the logic of the application while we do the hard work.

The main advantages of using this library are:

  • Always consistent state between UI and data
  • Single point of truth: think only about the main source of data and let the library manage the rest
  • Express in a few lines of code data transformations that will usually require hundred

It aims to be as simple as possible, while being fully featured and highly efficient. In particular:

  • Thread safe
  • Automatic lifecycle handling, to avoid memory leaks
  • Lazy by default
  • Automatically detects and avoids useless computations
  • Atomic changes

Dataflow has several extensions that provide more features. For example, the async extension, provides the following features:

  • Automatically moves most of the work on background threads
  • Debouncing
  • Associate a state with data (loading, error, etc.)
  • Performance optimizations on collections



Package that contains the basic interfaces and classes of Dataflow.


Package that contains extensions to both Field and MutableField.


Package that contains the basic implementations of Field, MutableField and FieldWrapper.




Package that contains classes specialized on taking snapshots of collections. You can access those features by calling .transform or .snapshot on a Field that holds a Collection.


Package that contains some classes and interfaces in order to usa this library on platform that support Java 8 bytecode, but don't have the Java 8 SDK (e.g. some old Android versions).


Package that contains all the classes and interfaces related to listening to Field changes.


Package that contains common utility functions for Fields.


All Types