◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
Articles/Business
⟐ Business/2026-05-27Advanced

The Day I Walked Away From $730/Month — Pulling AppLovin From 5 Apps After 11 Years of Crash Data

On 2026-05-26 I paused AppLovin and AppLovinMax Bidding + Waterfall across my entire iOS/Android catalogue (50M+ cumulative downloads) for INT, RWD, and RWI. This is the full record of the three lines of evidence I used to justify walking away from $730/month and the four-week evaluation framework I set up afterwards.

rork-businessmonetization47admob4indie-dev12decision-makingcrash-analysis

✦ Premium Article

On the afternoon of May 26 I opened AdMob's mediation dashboard and paused every AppLovin and AppLovinMax bidding and waterfall source across all five of my iOS and Android apps, for INT, RWD, and RWI. About $730 a month of revenue stops flowing.

I am Masaki Hirokawa, an indie developer since 2014 with around 50 million cumulative downloads across the catalogue. AppLovin had been embedded in my main apps since 2022 and was one of the SDKs that supported a 1M JPY/month AdMob revenue era. This article walks through the three lines of evidence that led to the cut and the four-week evaluation framework that comes next.

If you run monetisation across multiple networks, hesitate between user attrition and revenue, see user feedback about "unclosable ads" or "rewards never granted" and aren't sure how to interpret it, or you want to systematise the rules for cutting a network — this is for you.

The three lines of evidence I needed to walk away from $730/month

A "give up the money" decision can't be made on instinct alone. I needed three independent lines of evidence. No single one would have justified the cut; all three together did.

Evidence 1 — Anomalous ad-quality numbers from AppDiscovery

AppLovin has two dashboards. Publishers normally only look at AppLovin MAX (where you serve ads in your own app). The other one — AppDiscovery — runs the advertiser side, where your apps' ads run inside other apps. Most devs never see it. I only found it mid-investigation.

The last 30 days of AppDiscovery delivery (2026-04-27 to 05-26):

App                          Platform  Imp      Click   CTR     Rev       eCPM    RPC
Beautiful HD Wallpapers      iOS       190,352  16,272  8.56%   $618.70   $3.25   $0.038
Beautiful 4K/HDR Wallpapers  Android    84,218  10,981  13.04%  $101.53   $1.21   $0.0092
Relaxing Healing             iOS        16,357      29  0.18%   $0.16     $0.01   —
Law of Attraction Everyday   iOS        15,017      96  0.64%   $0.55     $0.04   —
Ukiyo-e Wallpapers           Android     8,986     644  7.17%   $9.10     $1.01   $0.014
Ukiyo-e Wallpapers           iOS         1,996      35  1.75%   $0.12     $0.06   —
Total                                  316,926  28,057  8.86%   $730.15   $2.30   —

The row that caught me: Beautiful 4K/HDR Wallpapers (Android). CTR 13.04% × RPC $0.0092 × eCPM $1.21.

Healthy ad-delivery ranges are CTR 2–5% and RPC (revenue per click) $0.10–$0.50. CTR 13% is 2.5x–6x the healthy range. RPC $0.0092 is 1/10–1/50 of healthy. "Lots of clicks, zero installs, micro-revenue" is the textbook pattern for mis-tap / misleading-click creatives.

AppLovin Network bills on installs. When clicks don't convert to installs, the chain never monetises. CTR-anomalously-high paired with RPC-anomalously-low is exactly what "unclosable ads → mis-taps → no install" looks like as a UX problem.

Evidence 2 — Direct user observation

I ran the AppLovin RWD (rewarded video) ad in test mode inside my own app. After the video finished, the only available action was "click," and the reward wasn't granted.

A rewarded video opt-in carries two assumed safeties:

  • Watching to completion guarantees a reward
  • A clear "close" path exists after watching

Both broken. RWD is worse than INT here.

  • INT "can't close": the user grumbles and closes it eventually. Mild irritation
  • RWD "no reward": the user paid time with no return. Contract-violation-level distrust

When a user actively opted in ("I'll watch a video for the reward") and got this, the chance they ever watch another RWD or keep the app drops sharply.

Evidence 3 — The 11-year crash trend

This is what closed the case. App Store Connect Analytics shows monthly crash counts across an app's full history back to 2015. I opened the chart for all five of my main apps at the 11-year window.

App                          App ID    Cumulative crashes  2022 peak    Baseline   Multiplier
Beautiful 4K/HDR Wallpapers  706533906  224,148            8,500/mo    1,000/mo   8x
Law of Attraction Everyday   841157677  7,360              350/mo      100/mo     3.5x
Relaxing Healing             694492667  8,602              325/mo      100/mo     3.3x
Ukiyo-e Wallpapers           835559799  2,380              125/mo      50/mo      2.5x
Older BW (632379876)         632379876  1,236              50/mo       20/mo      2.5x

Every single app shows a clean spike in 2022 — the exact period AppLovin was integrated. BW 4K/HDR jumps 8x, others 2.5–3.5x. And the trend never fully returned to baseline; it stayed chronically elevated at 2–3x.

Three things to notice:

  • The temporal pattern is shared across 5 apps — that excludes app-specific bugs, because the codebases are different and wouldn't all hit the same shape simultaneously
  • Sudden spike, not gradual deterioration — that excludes environment changes (OS updates, device generation turnover) as explanations
  • Chronic elevation — not a one-off SDK bug. Structural

This isn't a correlation you can hand-wave as coincidence.

The branch point: "fix and wait" vs. "cut"

When you see signals that users are leaving, you've got two choices:

  • A: Wait for SDK fixes / work around it from app-side code
  • B: Cut the SDK

I normally try A first. With InMobi or Liftoff issues over the years, I waited for SDK updates or lowered mediation priority. Why B this time? Because the three lines of evidence together pointed at a structural problem, not an individual defect.

Specifically:

  • Evidence 1 (CTR 13% / RPC $0.0092) → creative-quality failure
  • Evidence 2 (no reward) → contract failure (the ad service broke its promise)
  • Evidence 3 (11-year crash trend) → structural SDK influence

Three independent dimensions, each independently anomalous. That's the kind of pattern that doesn't resolve from one more SDK release.

While you sit in "fix and wait" mode, you're watching users silently churn for the sake of a few hundred dollars a month. I'd been in that mode for six months. The hardest lesson from this episode: notice faster, act faster.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦How to build the case for cutting a $700+/month media partner using CTR/RPC anomalies, an 11-year crash trend, and direct user observation — three independent lines of evidence that no single data point would justify
✦How to read an AppDiscovery row that looks like CTR 13% × RPC $0.0092 × eCPM $1.21 against the healthy CTR 2–5% / RPC $0.10–$0.50 range to confirm a 'high-click low-conversion' creative quality failure
✦A four-week post-stop evaluation matrix with branching outcomes (permanent / partial restore / emergency restore) and the caveats you need when a hotfix release lands the day after the stop
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⟐ Business2026-04-28
Choosing a Revenue Model for Your Rork App — Ads, Subscriptions, or One-Time Purchase, Backed by Real Operating Numbers
Drawing on the years I spent running ads in my own wallpaper apps, I rebuilt the comparison of ads, subscriptions, and one-time purchases under identical conditions — with genre-by-genre guidance and implementation notes for Rork.
⟐ Business2026-09-03
My Second App From the Same Codebase Ships With a Distinct-Value Manifest
Google Play has drawn a clearer line around low-value apps. Here is how I decide where the distinct value of a sibling app lives, and the small script I run before every submission to check that the two apps have actually diverged.
⟐ Business2026-05-15
Rebuilding a Live Wallpaper App with Rork Max: Measured Hours and Post-Relaunch Metrics
I rebuilt a wallpaper app that was already live using Rork Max, timing every stage. Measured hours per phase, the spec details the generated code got wrong, how existing subscribers were migrated safely, and 30-day post-relaunch metrics.