
An ad appears. You look for the skip button. There isn't one. You wait 15 seconds. You reach for the faint, half-transparent button blinking in the corner, your finger misses, and you land on the ad's landing page. It's irritating. But you keep using the app.
That irritation isn't a mistake. It's designed.

Advertising is fundamentally a supply-side system. Advertisers want to show their ads to more people. Ad platforms earn more the more impressions they generate. App developers earn more the longer they keep users watching ads.
These parties share one important thing. Everyone's goal is to make users watch more ads.
The metrics that matter most in the ad ecosystem are mostly these:
So ads are naturally designed to hold on to the user's time longer. Ads where the skip button shows up late, close buttons shrunk and hidden, ads that take several taps to dismiss. This UX isn't a simple design slip. It's UX produced by the ad market's KPIs. And there's one defining trait here: user experience is not a core metric of this ecosystem.
Not every supply-side party shares the same incentive, though. An advertiser buys one impression and the transaction is over. The platform takes its matching fee. But a publisher needs that user in the next session, next week, next month. A user who leaves today is not tomorrow's impression. So publishers are essentially the only ones who treat LTV as a direct variable. Yet the industry's KPIs are built around impressions. Publishers face daily pressure pointed away from their own incentive. And once they get used to that pressure, their own app's ads naturally drift toward the industry default.
Ad UX hasn't always looked the way it does now. It has shifted every time the ad market's structure shifted. The biggest change came after ATT (App Tracking Transparency) in 2021.
Earlier mobile advertising relied on relatively precise targeting. You could track fairly accurately who used which app and what their interests were. ATT changed that. As targeting accuracy dropped, the ad market started moving in a different direction.
Show precisely → show often
Advertising keeps moving closer to an attention economy. The simplest way to lift ad performance is to show more ads and keep users watching longer. Ad UX looks like it's getting worse because the ad market's structure is moving that way.
Add competition, and the shift accelerates. One app strengthens its ads and lifts revenue, a competing app copies the approach, and that approach becomes the industry standard. Then another problem appears. As users get used to the ads, click-through rates fall. How do you hold revenue steady?
The answer is simple. Show more ads.
So ad UX gets more aggressive over time. A market that has started moving in this direction rarely slows itself down, because short-term revenue metrics keep justifying the trend.
If ads are this inconvenient, users should leave the app. They mostly don't, and the reason is simple. Users have already built up time and data inside that app. The records they wrote, the routines they set, the learning history they kept going. Deleting an app isn't just removing one app.
It means giving up everything they've built.
So users complain about ads and keep using the app anyway. The complaints land in reviews. Some users do leave, but they leave quietly. Because the metrics show no visible change, this structure accelerates further.
The loss hasn't disappeared, though. It's just piling up slowly somewhere else. The rating slips bit by bit. Recommendations drop. D7 retention for new users dips slightly. LTV collapses first in the segments most exposed to ads. None of these traces show up on the ad revenue dashboard. So unless you deliberately look for them, you won't see them. Ad revenue settles daily, but LTV is evaluated by the quarter. In that gap, the loss moves somewhere hard to recover from.

A publisher can't single-handedly stop the slide in ad UX. Ad platform policy, how advertisers run their campaigns, industry convention, all of it moves together. But that doesn't mean there's nothing you can do.
What matters is product strategy.
The worse ad UX gets, the better the product experience has to be. Users should still want to keep using the app after they've seen an ad. When you show the ad matters too. Show an ad before a user has fully experienced the app's value, and that user remembers only the ad and leaves. A user who experiences the value first takes the same ad differently. Frequency works the same way. Ten more days of a user staying can be worth more than the revenue from one ad.
Concretely, a series of decisions stack up. When the first ad appears for a new user. How many ads run within a single session, and at what intervals. Which format each screen uses. How you weight rewarded versus interstitial. These decisions accumulate, and the same ad revenue produces an entirely different retention curve. Cutting ads isn't the answer. Where and how you place them is the answer.
Delight Room's DARO focuses on helping app developers choose and control their own approach to advertising. If revenue comes first, we find an ad strategy that minimizes user churn; if retention matters more, we work out together how to cut ads while protecting as much revenue as possible. These two directions aren't really different things. Only the priority differs. Both start from the same question. What kind of app is this, and what kind of users does it have.
The most important premise is one thing.
Understand your own app's users. And set a clear priority between revenue and retention.
Once those two are settled, every decision in your ad strategy points the same way. If they aren't settled, the decisions wobble every time. Short-term revenue dips, so you add ads; reviews turn bad, so you cut them again. In that back-and-forth, the real loss accumulates in retention and LTV.
Advertising has been a supply-side system from the start. And the ad ecosystem keeps changing. You can't stop that trend.
But you can choose how your product responds inside it. The biggest risk is not making that choice. Don't let the industry's default become your app's default.