StateFlow with Jetpack Compose

Alternative of LiveData

Farhan Tanvir
2 min readMar 3, 2022


Photo by Tracy Adams on Unsplash

Recently I have heard that StateFlow will replace LiveData. StateFlow and LiveData have similarities and both are observable. Let’s know about it more.

What is StateFlow

According to official documentation

StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors. The current state value can also be read through its value property. To update state and send it to the flow, assign a new value to the value property of the MutableStateFlow class.

We will learn it with a basic example.

What are we Reading

It’s a great app. Isn’t it? 😉

Let’s Start

First, create a ViewModel.

MutableStateFlow is a StateFlow whose value can be changed, and it can be used bidirectionally. When we call setTitle() function titleInputFlow will change and every receiver of titleInputFlow will get the latest data.

This is how we will use StateFlow in Jetpack Compose. We will collect the StateFlows as a state by collectAsState() . So now we can still get the data if the app goes to onResume() or onPause() state.

This is the basic design. We are passing here the title, change and click listener.

I know this is a very basic example. There are many other uses of StateFlow . Please check the official documentation to know more.

That's all for today. If you are interested in Clean architecture in Android please check the below article.

Thanks for staying till the last. See you again 😃.



Farhan Tanvir

Believes in learn by doing . Currently working as a software engineer. Love to share Knowledge.