When I launched Disorganized (it’s a note-taking app) d1 retention was at a pitiful 6%. During September it has gone above 25% and here I will outline what I’ve done to accomplish this.
Anonymous auth
Users hate registering, especially before they’ve even had a chance to try out the app. Firebase, and presumably its competitors, has great support for anonymous authentication. USE IT.
Don’t gimp the anonymous user experience, and don’t nag your users to register with their email even if it’s for a good reason. Get out of the way of your users.
Onboarding
The onboarding is the first thing the user experiences the first time they open the app.
I must have rewritten the it 5-6 times by now. From popups explaining the features, to a guided tour with educational popups and texts, to what is there today: Just two buttons at the bottom of the screen which the user can press at their leisure. These buttons can be dismissed.
In addition to being the best performing onboarding variant I’ve done, it is also the least invasive.
By the time a user has installed the app they’re already interested in exploring it, letting them do that on their own terms seems to be the way to go.
A/B testing
There’s an interesting discussion to be had about how A/B testing complements user feedback and your own intuition when designing the app. However, for onboarding I’ve learned that A/B testing has to be a significant part of evaluating changes. At this point I don’t change the onboarding at all without an associated A/B test, because my intuition has consistently turned out wrong.
Your intuition can come a long way when it comes to more advanced features, but you are so far away from “user who has never opened the app before” that relating to them and how they think is almost impossible. So for onboarding, it’s all about user feedback and A/B testing.
Onboarding and advanced features
When I started I thought there was a standardized and calm flow to how first-time users moved through the app, first discovering the basic features and then not even looking at more advanced features until much later.
I’m learning that’s not the case at all. People are jumping past basic features and within 5 minutes of using the app they’re already giving feedback on features I thought they wouldn’t touch for weeks.
This isn’t really actionable, just something I found surprising. Users are consistently more advanced than I expect them to be.
Talk to users
You knew this one was coming…
The best way I’ve found is going to reddit and handing out lifetime premium in exchange for feedback.
It’s important to require that the user initiates contact with you to get the premium, so that they already have an open communication channel when they encounter issues or have feedback.
I’ve had over 800 private conversations this way by now. Many are just one or two messages (which can still be useful), but some are substantial and give loads of feedback.
Actually do what they say
It’s easy to dismiss what users say as “It’s just one user requesting this, it’s not important”, but I keep finding out that this is usually not true.
One user wanted the ability to draw inside the app, I was skeptical because I knew that any draw feature in the app would have to be very basic, so I didn’t implement it.
A month or two later another user requested it at which point I decided to implement it, and now I frequently hear users claim that it is their favorite feature.
Similar things keep happening, one user requests something that I initially believe is very nieche and then eventually it turns out that it’s not the case at all.
Another advantage to going above and beyond at facilitating user requests is that they will be happy to give you a great review, which is invaluable for a tiny app.
The “not my target user” myth
Similar to my last point, I hear people disregard feedback because they decided that the user in question wasn’t their target user and therefore their feedback is irrelevant.
First of all, if you just spent a few days and some effort that user, and similar users, could become your target user.
Second, user segments aren’t so neatly defined as you might think. Just because you think that your target group is only males between 25 and 45 doesn’t mean that this is actually the case.
Third, their feedback can still be valuable. My mother is absolutely not in my target group yet she’s provided great feedback that has made the app better.
Developer laziness
The headlines above might sound obvious, but the main problem I’m trying to get at here is that developers disguise laziness and arrogance under explanations like “not my target user” and it kills their app.
You have to be ready to put in days of work just to address feedback from one user, because that’s all you have to go on. You have to be ready to accept that your app sucks even when you think it doesn’t, but you can always make it better.
I spent 3-4 full working days implementing feedback from just one user, they were so happy that they installed the app on their entire family’s devices just so that they could leave multiple 5 star reviews. And they were clever enough to spread out the reviews across weeks, so that they wouldn’t get caught in spam filters.
Summary
A/B test everything related to onboarding
Get out of the way of the user, don’t force them to register or sit through an onboarding.
Talk to loads of users
Don’t handwave away their feedback
Best of luck!