◉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-04-11Intermediate

Lifting AdMob Revenue Through UI Design and Rork

Lessons from running AdMob apps as an indie developer: how UI design alone can lift ad revenue. Covers high-revenue layouts in Rork, frequency-cap implementation, how consent (ATT/UMP) shapes eCPM, and a Firebase testing loop, with working code.

AdMob73UI designRork585A/B testing3revenue optimization

✦ Premium Article

When I ran AdMob apps as an indie developer, checking the revenue report with my morning coffee was a daily ritual.

One day I nudged the interstitial on the game-over screen a few dozen pixels, and the following week ARPU jumped almost 20%. Not a single line of logic changed. The only thing that moved was where the ad met the player's eyes.

That was when it clicked: AdMob revenue isn't a number the ad network hands you. It's a number your UI decides. Google sets the CPM, but you decide when and where a user meets an ad.

What follows is a mix of the wins and the mistakes I accumulated running AdMob apps, mapped onto a concrete Rork workflow: choosing ad formats, capping frequency, handling consent, and verifying everything in Firebase, with code along the way.

Break revenue apart and you find the levers you actually control

AdMob revenue is a product of three terms:

Revenue = Impressions × CTR × CPM

Most developers fixate on CPM, but advertiser bidding sets that. The two terms you design are Impressions (how many ads appear per session) and CTR (how naturally those ads get tapped). Both are UI questions, and both turn directly into money.

What actually changed, before and after

For one casual game I only touched the UI:

Before — DAU 5,000, session 3 min, 1.2 impressions/session, CTR 3%, CPM 50 yen, daily revenue ~900 yen.

After — DAU 5,000 (unchanged), session 3.5 min (ads stopped getting in the way), 2.0 impressions/session, CTR 5%, CPM 50 yen (unchanged), daily revenue ~2,500 yen.

Same DAU, same CPM, 2.8x revenue. The placement design did all the work.

Ad placement has a comfortable order

Whether an ad lands depends on the user's state of mind. In my apps, this order held up consistently.

Best: the game-over screen. The moment players see "Game Over," their guard is down and they're waiting for what's next. A fullscreen interstitial here pushed CTR to 8–12%, versus 1–2% for a banner, and it rarely felt intrusive.

Next: pause and menu screens. Users paused on their own, so they're primed to wait. A 300x250 banner above the "Resume" button earns impressions without friction.

Avoid: mid-gameplay. Interrupting focus wrecks the experience. I tried it once early on; "too many ads" filled the reviews and my rating dropped. Short-term impressions rose, but churn and uninstalls cost more than I gained.

✦

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
✦A Swift implementation of interstitial frequency caps (cooldown + games-between-ads), plus the lesson learned when I shipped without one
✦How ATT/UMP consent flows move your eCPM, and where to place the priming screen to lift opt-in rates
✦How to stop confusing monthly ARPU with daily ARPDAU, worked through a real DAU 5,000 / 150,000 yen app
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-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.
⟐ Business2026-05-03
From Rork to $1,000/month with AdMob — A Practical Indie Developer's Monetization Playbook
How to take a Rork-built mobile app toward meaningful monthly AdMob revenue: category fit, getting the ATT-before-initialize order right, time-based interstitial pacing, judging by ARPDAU, app-ads.txt, and running a small portfolio.