Back to articles

Four lessons from shipping the Leben in Deutschland Test app

Leben in Deutschland Test is a small study app I built to help people prepare for the German naturalization test. Shipping it taught me a few lessons I now treat as non-negotiables.

1. Add analytics and crash reporting before your first release. By the time you "see traction" you have already lost the data that mattered most: what your earliest users did, and what drove them away. An afternoon of setup buys you a baseline for every decision that follows.

2. Installing analytics is not the same as having analytics. The single most valuable view I built was a PostHog Funnel on the critical flows: onboarding, first study session, and purchase. Seeing exactly where people drop off turns vague intuition into something you can fix.

PostHog funnel showing 520 users tapping a home card, 364 selecting a question, 322 picking an option, and only 64 completing the session.
The study session funnel in PostHog. Four out of five users who start a session never finish it - the kind of drop-off you cannot see without this view.

3. If monetisation depends on ads, they belong in v1. I once shipped an update without verifying the ad integration on a real device, and it silently broke for days. Treat ad units like any other critical flow, and add an event so you can alert when impressions fall off a cliff.

4. Take onboarding seriously as a research tool, not just a welcome screen. A few well-chosen questions (goal, experience level, target exam date) let me personalise the app from session one, and told me who my users actually were. That shaped the roadmap more than any feature request.

None of this is revolutionary. But there is a difference between reading it in a blog post and learning it from your own numbers.

© 2026 Pedro Massango