droidconIN 2015

The fifth edition of droidconIN

Elvis D'Souza


Onboarding new users on to your Android app

Submitted Oct 2, 2015

This talk will:
- Present popular onboarding strategies (Tutorial, Interactive, Contextual onboarding)
- Walk through onboarding flows of popular apps
- Suggest strategies developers can use to retrofit onboarding flows to existing apps
- Discuss Permission Priming in view of new permission granting flows in Android 6.0 (Marshmallow)


Apps introduce new functionality, technology, behaviour and interfaces to users. On the first use however, many apps leave users in the lurch, forcing them to explore the app, discover and learn about features by themselves.

Onboarding lowers the learning curve for users, introduces the app and its core features and helps make a great first impression. This yields better engagement on first use, and greater chance of conversion to long term user.

Patterns have emerged on how apps onboard their users. Walking through these flows and evaluating patterns help build a cookbook that one can use when designing onboarding flows.

Also, with Android 6.0 (Marshmallow), apps will have to seek certain permissions during runtime by presenting the user with a dialog. Permissions that are core to the functionality of the app may be requested on first use, with appropriate priming so that users are clear on why the permission is required. The onboarding flow is a great place to do this.
More details: https://developer.android.com/training/permissions/requesting.html

Speaker bio

I’m Elvis D’Souza, have been building Android apps for 3 years now.
I’m currently building Sensy - a TV Companion app for Android.

I have spent a lot of time experimenting with onboarding strategies with real users via user studies and analytics. I’ve looked at how other apps onboard their users and have recognized patterns, trends and best practices that I look forward to share.





{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}