Skip to content
Reactive Streams for Kotlin Multiplatform with mutability checks
Kotlin Swift Groovy Ruby
Branch: master
Clone or download


Elegant implementation of ReactiveStreams for Kotlin Multiplatform.

  • Manage object immutability in native implementation (Object are frozen when switching threads)
  • Multithread support with ObserveOn and SubscribeOn processors
  • Simplify the management of publishers subscriptions and unsubscriptions
  • Help you focus on what you need to do by hiding Multiplatform complexity


Common code

class SearchController() {
    private val searchKeywordPublisher = Publishers.behaviorSubject<String>("keyword")
    private val searchResultsPublisher = searchKeywordPublisher.switchMap { keyword ->
    val searchResultCount = searchResultsPublisher.switchMap { results ->
    val resultUppercaseTitles = { it.title.toUpperCase() }
    val searchResultCountLabel = { "${it.results.count()} results" }
    fun searchFor(keyword: String) {
       searchKeywordPublisher.value = keyword 


See swift extensions for more information.

Helps connect a publisher to a variable in a reactive environment.

let label = UILabel()
label.bind(searchController.searchResultCountLabel, \UILabel.text)


See android-ktx for more information.

Binding helpers relies on AndroidViewModel and uses lifecycleOwner to manage subscription and unsubscription.

val searchResultLiveData = searchController.searchResultCountLabel.asLiveData()

Publishers and Processors

Foundation of trikot.streams is based on a immutable and concurrent implementation of Reactive-Streams.


Subscription and unsubscription are managed trough Cancellable and CancellableManager.


Import dependencies
    maven { url('') }

    api "com.mirego.trikot:streams:$trikot_streams_version"
    jvm "com.mirego.trikot:streams-jvm:$trikot_streams_version"
    js "com.mirego.trikot:streams-js:$trikot_streams_version"
    iosx64 "com.mirego.trikot:streams-iosx64:$trikot_streams_version"
    iosarm64 "com.mirego.trikot:streams-iosarm64:$trikot_streams_version"


Trikot.streams is © 2018-2019 Mirego and may be freely distributed under the New BSD license. See the file.

About Mirego

Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We’re a team of talented people who imagine and build beautiful Web and mobile applications. We come together to share ideas and change the world.

We also love open-source software and we try to give back to the community as much as we can.

You can’t perform that action at this time.