◉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-25Advanced

How I Layered Rewarded, Interstitial, and App Open Ads to Lift ARPDAU 1.4× on My Wallpaper App

Optimizing AdMob's three formats individually hit a ceiling — they were eating each other's impressions. After redesigning Rewarded, Interstitial, and App Open as a coordinated 3-layer system with strict role separation and an exclusion gate, ARPDAU climbed 1.4× over nine weeks. The full playbook, code, and weekly numbers.

AdMob73RewardedInterstitialApp OpenARPDAUWallpaper Apps3Indie Developer11Rork585

✦ Premium Article

My wallpaper app's AdMob revenue had been flat for about six months. I'm Masaki Hirokawa (@dolice), an artist and indie iOS/Android developer. I've been shipping apps since 2014, and after my catalog crossed 50 million cumulative downloads, I started running into a wall: optimizing each ad format individually no longer moved the needle. When I pushed Rewarded harder, Interstitial impressions dropped. When I added App Open, Rewarded completion rates fell. The three ad formats were cannibalizing each other.

Over nine weeks this spring, I rebuilt the AdMob stack around a single idea: treat the three formats as a coordinated 3-layer system, not three independent levers. ARPDAU (average revenue per daily active user) climbed 1.4× and monthly AdMob revenue returned to a number I had only seen once before — over one million yen in a single month. Here is the design and the operational log.

Why You Have to Think in Three Layers

The official AdMob docs cover Rewarded, Interstitial, and App Open separately. Read in isolation, each guide reasonably tells you to maximize frequency without hurting UX. The problem starts the moment you put all three into the same app. Their guidelines start interfering with each other.

The first collision I hit looked like this: Rewarded promised "watch an ad to unlock three extra wallpapers," but App Open fired immediately before the unlock prompt. Users perceived a wall of ads and bounced. Crashlytics reported zero crashes, yet Rewarded impressions dropped about 30% that week. The root cause was simple — three formats were competing for a single finite resource: the user's attention.

The essence of 3-layer thinking is to assign each format a clear role — lead actor, seasoning, and leak bucket — and have them defer to one another at runtime. I only put that into words after running a wallpaper catalog at 50M+ downloads long enough to feel that single-format optimization had hit a ceiling that no amount of fine-tuning could break through.

The Three Roles — Lead Actor, Seasoning, Leak Bucket

Here is the split I locked in over nine weeks.

The lead actor is Rewarded. It is the only format where the user makes an active choice — "watch this ad and I get something." That positive exchange shows up in higher eCPM (2–3× the others in my apps), higher retention for users who complete a view, and lower review-page complaints. I now start every monetization design by maximizing where this format can fire.

The seasoning is Interstitial. It fits at session boundaries — moments where the user is between actions, not in the middle of one. On a wallpaper app, that means "after swiping through ten wallpapers, when switching categories." The opposite — firing while the user is actively choosing something — pushes CTR up but cuts retention. I tested that once in early 2026 and Day 7 retention fell 11 points. I haven't forgotten.

The leak bucket is App Open. It earns its keep by catching sessions where neither of the other two formats fired. If Rewarded never triggered and Interstitial got rate-limited, App Open recovers some revenue. Promote it to a starring role and users get an ad on every cold launch — a fast track to one-star reviews.

✦

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
✦Role split (lead actor / seasoning / leak bucket) for Rewarded, Interstitial, and App Open — plus the exclusion-gate code that eliminated ad-on-ad collisions
✦The four ARPDAU metrics I track weekly and the Firebase Remote Config-driven cap tuning that moved the needle
✦Three concrete failure modes from the nine-week rollout, including the moment a 'permanent unlock' reward gutted next-week views by 70%
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-04
Rork App Revenue Design: Where Ads and Subscriptions Eat Each Other
How to layer AdMob, subscriptions, and one-time purchases in a Rork app without letting them cannibalize each other. Covers value-density placement, entitlement-first RevenueCat architecture, server-side receipt verification, and behavior-triggered paywalls.
⟐ Business2026-09-06
Your Blended eCPM Dropped and Revenue Went Up: Splitting the Change Into Country Mix and Rate
Blended eCPM is a weighted average, not a price. Here is how I split a month-over-month change into a country-mix effect and a rate effect that reconcile exactly to the total, plus what to check before you cut a low-eCPM country.
⟐ Business2026-05-21
Putting AdMob Bidding into Production for a Rork App — Five Networks Bidding in Parallel, eCPM Trends, and Daily Operations
I moved the AdMob mediation layer of my Rork-generated apps from waterfall to bidding, with five ad networks bidding in parallel. Here are my real-world numbers after three weeks of production, the SDK pitfalls, and how I delegate daily monitoring to Claude in Chrome.