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

Designing AdMob App Open Ad Frequency Without Hurting Retention — Operational Notes from Wallpaper Apps

Implementation notes from rebuilding the AdMob App Open Ad frequency design in a recent wallpaper app update. Minimum intervals, cold-start exceptions, and post-modal suppression are controlled dynamically through Remote Config, with Claude in Chrome handling the daily dashboard review.

AdMob73App Open AdRork585Retention13Indie Developer11Remote Config10Frequency Cap

✦ Premium Article

import { ArticleImage } from "@/components/ArticleImage";

I am Masaki Hirokawa, an artist and indie developer. In early May 2026, the longest design discussion in my latest wallpaper app update was around the frequency design for AdMob App Open Ads. Unlike interstitials, these ads occupy the most sensitive moment in the session — the instant the user opened the app — and a careless setup will quietly chip away at D1 retention. Across over a decade of running iOS and Android apps as a personal developer since 2014, with a portfolio that has accumulated more than 50 million downloads, App Open Ads are the format I have seen split most sharply between "well-designed and profitable" versus "carelessly placed and a net loss".

Today I want to share the process of reworking the App Open Ad frequency design for two of my six wallpaper apps, building on top of code generated by Rork. The Claude in Chrome workflow I now use to check dashboards each morning made it natural to push the frequency parameters out to Firebase Remote Config so I can tune behavior remotely.

Why App Open Ads Behave Differently from Other Formats

AdMob App Open Ads occupy the full screen the moment the app launches or returns to the foreground. They visually resemble interstitials, but the timing and the user's mental state are very different.

Interstitials should appear between user-initiated actions — the user is aware they just navigated. App Open Ads appear right after the user opened the app on their own initiative, before they have done anything inside. The user did not open the app to look at ads, and ignoring that distinction is what causes silent retention loss.

In my own apps (such as Ukiyo-e Wallpapers), one variant lost 2.1 points of D1 retention in the week after we introduced App Open Ads. A sibling app with a more carefully designed frequency policy saw retention essentially flat while ARPDAU rose 18%. Same ad format, same scale, very different outcomes — the frequency design carries most of that delta.

Four Ground Rules I Operate By

After a few iterations, here are the four rules I currently apply to the wallpaper apps.

  1. Never show on the first cold start: not after install, not after the first launch following an update. If you sour the first experience, no amount of subdued frequency later can win the user back.
  2. Minimum 120 seconds between foreground returns: a tighter interval ramps up the "I see an ad every time I switch apps" feeling. Under 60 seconds in my data, churn visibly worsens.
  3. Never show after a modal return: when the user returns from the photo library, share sheet, or purchase sheet, they switched away with clear intent and were always coming back. Hitting them with an ad on return punishes that intent.
  4. Skip after rapid bouncing sessions: if the user closed the app within a second on consecutive sessions, skip the next foreground ad once. They might be searching for something quickly, not browsing.

AdMob's official documentation recommends each of these individually. In my experience, applying them in isolation does not produce the lift — the combination is what makes the system stable. The temple carpenters in both sides of my family taught me by example that careful assembly of small parts is what makes a structure last for decades. I find ad frequency design works the same way; tweaking one parameter rarely changes the picture.

✦

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 implement minimum intervals, cold-start exemptions, and post-modal exceptions so AdMob App Open Ads don't erode D1 retention while still capturing eCPM
✦Designing Firebase Remote Config conditions for per-cohort ad frequency, with a Claude in Chrome workflow for pulling daily churn metrics by A/B group
✦Three weeks of measured fill rate, eCPM, and D7 retention from a wallpaper app group with 50M+ cumulative downloads, including the surprising case where lowering frequency increased ARPDAU
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-25
How I Push a Rork-Built App Toward $700/Month — A Field Guide to Pricing Tests, Retention, and Churn Defense
A premium playbook for taking a Rork-built app to roughly $700/month in revenue, focused on pricing tests, retention engineering, and churn defense. Distilled from 12 years of running indie apps in parallel — what actually moved revenue, what didn't, with realistic numbers and code.
⟐ 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.