disguise to call on the UI thread. Moreover, there is no mechanism for signaling errors, lack of transactional API - Although Sharedpreferences provides asynchronous APIs for reading changed values, it’s not MAIN-thread-safe. Sometimes becomes a source of ANRs Why do we need DataStore? - DataStore, on the other hand, supports Async API via Kotlin Coroutines and Flow and is safe to use in UI thread - DataStore can signal errors and is safe from runtime exceptions(parsing errors) - Provides type safety - Proto DataStore are comparatively faster, smaller, simpler, and less ambiguous than XML and other similar data formats - Also, it provides a way to migrate from SharedPreferences :)