Growing a romance reading app from 100K to 1M+ downloads in under a year

A romance reading-⁠and-⁠audio app for women: stories in text and audio, built around the 20-minute wind-⁠down ritual before sleep.

1M+Downloads, 10× in a year
+14%User retention
+25%Daily engagement
+15%Session duration
Overview
1 year 3 months · Product → Senior Product Designer
Contribution
Sole product designer for the first 8 months, owning end-⁠to-⁠end UX across two parallel apps: FlingFM (in-⁠app currency) and FreeFM (ad-⁠supported), each testing a different monetisation model. Redesigned onboarding, retention, and content discovery around the evening ritual; later onboarded a second designer.
Team
Product ownerProduct designer (me)Product designer (joined later)Development teamQA teamMarketing team
FlingFM book detail: listen or read, genres and content warning
FlingFM reader screen

Background

FlingFM is a romance audio and reading app built for women: a personal retreat to unwind with stories from tender romance to steamy fiction, in both text and audio formats.

When I joined, the app had 100K downloads. For the first 8 months I was the sole product designer, owning end-⁠to-⁠end UX across two parallel apps, FlingFM (in-⁠app currency) and FreeFM (ads), each testing a different monetisation model. Later, a second designer joined and I onboarded them, sharing context, product knowledge, and established workflows.

I joined with a clear brief: bring in more users and keep the ones we already had.

The brief came from the product owners, and every decision on this project traces back to those two goals.

Problem

Users weren’t sticking around. The brief was growth and retention, and the data showed three problems standing in the way.

  1. 1

    People left in their first session.

    About 30% dropped off during or right after onboarding. They’d browse briefly and leave without engaging.

  2. 2

    Sessions were too short to become a habit.

    The users who stayed weren’t spending enough time in the app to form one.

  3. 3

    Stories didn’t feel safe or personal.

    People started stories and didn’t come back. Discovery was generic, intensity could arrive as an unwelcome surprise, and the app wasn’t built for something as private as late-⁠night romance reading.

How do you design a product that feels like a trusted, personal ritual?

Process

I started by gathering stakeholder interviews, user feedback, store reviews, and product metrics. We used Amplitude for behavioural analytics and internal dashboards for business KPIs: revenue, subscriptions, content performance by cohort.

Research synthesis — interview scenarios and desk-research boardFlingFM desk research board: decompression rituals, pain points, summary and insights

What users told us

Desk research, competitor analysis, and validation conversations filled in the why, and one realisation changed everything.

For most users, FlingFM was a wind-⁠down ritual, 20–30 minutes before sleep.

  • Pre-⁠sleep is the key moment: the experience had to support that emotional arc
  • Friction kills comfort instantly: interruptions feel disproportionately frustrating at night
  • Privacy is non-⁠negotiable: discreet notifications and neutral UI increase trust
  • Unexpected intensity damages trust: mismatched spiciness means users don’t come back
  • It’s ritual, not completion: users seek controlled emotional closeness, not finishing books

From insights to hypotheses

Research gave us more than 10 hypotheses, each tied to an insight. A few of them:

  • If users pick themes and a spice level during onboarding, their first stories will match what they came for, and fewer will leave in the first session.
  • If stories work offline, buffering won’t break the bedtime moment, and sessions will run longer.
  • If users can chat with book characters, they’ll come back more often.
  • If the app picks stories by mood, browsing will take less effort and users will start more stories.

We tested them in sessions and A/B tests. The first two held up. The last two didn’t.

A/B testing as a continuous lens

We tested throughout (tabbed home screen vs. unified feed, book cover variations) and compared behavioural data across both apps (retention, session duration, ARPU, churn) to see how monetisation context shaped engagement.

Home screen — variation 1
v1
Home screen — variation 2
v2
Home screen — variation 3
v3

What didn’t work

Not every hypothesis survived contact with real users:

  • “Chats” with book characters: sounded appealing, but in sessions users found it distracting from their reading ritual
  • Mood-⁠based auto-⁠curation (“Play Something Soft”): users rejected it. They wanted low-⁠effort browsing, but they still wanted to choose
  • Trope filters / “Not for me”: no measurable retention impact. Liked in concept, unused in practice

These failures taught us that in this domain, agency and control are the product itself.

Solutions

Every solution answers one of the three problems, and through them the brief: keep people longer and bring them back.

Reimagined onboarding. Three steps: pick themes, choose a spice level, done, all changeable later. People’s very first stories match what they came for. First-⁠session engagement improved and early drop-⁠off decreased, so more new installs turned into readers.

Offline Mode. Stories download for reading and listening. Buffering used to break the bedtime moment right when people were settling in. Nothing interrupts the wind-⁠down now, so people stay in the story longer.

Offline Mode — downloaded episodes on a book
Offline Mode — downloads library

Text-⁠to-⁠Speech dual mode. Narration with synced text highlighting. People too tired to read can keep following the story instead of closing the app, which keeps the nightly session going.

Trigger warnings. Content warnings in book descriptions. People know what’s inside before they start, so an unwelcome scene doesn’t end their relationship with the app.

Trigger warnings — content-level warnings in book detail
Trigger warnings — expanded content warnings

Narrator switching with preview. Audio previews before choosing a voice, like choosing who reads you a bedtime story. People pick a narrator they like upfront, so a voice doesn’t become a reason to drop a story halfway.

Parent Mode. App lock and neutral push notifications. Mothers could hand their phone to their kids without worry, so keeping the app on a family phone stopped being a risk.

The tension was UX integrity vs. ad revenue. Our foundational principle (no interruptions) directly conflicted with FreeFM’s ad model. We iterated: ads only between chapters, skippable formats, buffer screens so transitions felt intentional. A constant negotiation between UX and business. One that never fully resolved, but forced us to be creative about where monetisation could live without breaking trust.

Results

The problem was that users left early and didn’t stay long enough to build a habit. Here’s what changed, problem by problem.

The app went from 100K to 1M+ downloads in under a year.

  • Early drop-⁠off decreased. The new onboarding lifted first-⁠session engagement, so fewer people left before they’d started a story.
  • Session duration +15%, daily engagement +25%. People stayed longer and came back daily: the habit the short sessions were missing.
  • User retention +14%. People who felt safe in the app kept coming back to it.
  • The second half of the brief, growth: monthly downloads rose 22%, and redesigned App Store visuals noticeably lifted organic installs.
FreeFM on the App Store — redesigned store visuals

Reflection

The best growth strategy turned out to be trust. Trigger warnings and Parent Mode weren’t “nice-⁠to-⁠haves”, they were the reason people felt safe enough to stay.

Failed hypotheses sharpened the thinking. Chats and mood-⁠based entry didn’t land, but they proved something more useful than a win would have. Users wanted control, not automation.

And when and why people use a product matters as much as what they do inside it. Designing for someone winding down at 11pm is a fundamentally different problem from designing for a lunchtime browser.