Analytics • • • We normally use analytics in isolation from crash reporting Usually PMs check the analytics and Devs check the crashes What if you can combine them to get a full view?
Types of Feature Flags? • • • • • Static Decided at build time Based on things like versionCode, buildVariant, etc Dynamic Can be controlled at runtime either locally using dev settings
Types of Feature Flags? • • • • • • Static Decided at build time Based on things like versionCode, buildVariant, etc Dynamic Can be controlled at runtime either locally using dev settings Or remotely via services like Firebase Remote Con g
enum class FeatureFlags( override val key: String, override val default: Boolean, override val description: String ): Con g { NEW_CHECKOUT_FLOW( "checkout_ ow_v2", true, "Enable checkout ow V2 for trending items" ) }
class RemoteCon gManager( private val featureFlagProvider: FeatureFlagProvider ) { fun isFeatureEnabled(featureFlag: FeatureFlag) = featureFlagProvider.getValue(featureFlag) }
Using Feature Flags effectively • • • • De ne success metrics Less Crashes? Smoother experience? Implement using your Analytics library (like Mixpanel)
Using Feature Flags effectively • • • • • De ne success metrics Less Crashes? Smoother experience? Implement using your Analytics library (like Mixpanel) Create dashboards to compare