Reels First-Position Ad Monetization on Cold Start
Designed a cold-start monetization system at Meta that replaces Reels loading states with high-value ads using an advanced Android pre-fetching framework.
Reels Hp1 Ads
Company: Meta
Surface: Instagram Reels
Role: Android Software Engineer
Impact Area: Cold Start Monetization, High-Priority Position Optimization
The Problem
In any content feed, the first position is the most valuable. It captures 100% of user attention before any scrolling occurs. On Instagram Reels, this position is referred to as Hp1 (high priority position 1). It is the first thing the user sees when the tab opens. It occupies the full viewport. It has no competition for attention.
For most sessions, Hp1 is filled with organic video content. But for a specific class of session (fresh install, cache cleared, or first launch after an extended period of inactivity), Hp1 is unavailable for organic content. The media cache is empty. Video content requires a network fetch and buffering cycle before it can display. During that window, the user sees a loading indicator.
That loading state is wasted screen time on the single most valuable impression slot in the Reels feed. The user opened Reels deliberately. Their intent is strong. And the surface is showing them a spinner.
The Opportunity
Pre-fetched interstitial ads do not have this problem. They are loaded and ready to render without a network round trip at the moment the tab opens, because they were fetched during earlier app idle time. They can fill the viewport immediately, before any organic content is available.
The insight behind Reels Hp1 Ads is that the cache-empty loading window, which is an obstacle for organic content delivery, is not an obstacle for pre-fetched ads. Ads can fill the gap. The user sees actual content instead of a loading indicator. The platform captures a high-quality impression at the highest-value position in the feed. And when organic video is ready, the transition back to normal Reels behavior happens on the user's next intentional swipe.
How It Works
The system operates on a straightforward conditional logic with careful state management:
When the user opens the Reels tab, the system checks whether a valid media cache exists. If it does, the session proceeds as normal and Hp1 Ads does not activate. If no valid cache is found, the system queries the pre-fetch store for a high-value interstitial ad.
If a pre-fetched ad is available, it is immediately injected at feed position one. The user sees the ad rendering in the full viewport instead of a loading state. Standard viewability tracking fires when the ad occupies the required viewport percentage, registering a high-quality impression.
The ad holds position one until the user actively swipes. At that point, organic content is typically loaded and buffered, and the feed transitions to the normal Reels experience from position two onward. The Hp1 slot is vacated cleanly.
If no pre-fetched ad is available when the cache-empty state is detected, the system falls through gracefully to the standard loading state. The feature requires no degraded state or error handling because a missing pre-fetch ad simply means Hp1 Ads does not activate for that session.
The Pre-Fetch Infrastructure
The success of Hp1 Ads is completely dependent on pre-fetch reliability. If the pre-fetch store is empty when a cache-empty session is detected, the feature cannot activate. Pre-fetch fill rate is the primary operational health metric for this feature, and improving it was a significant part of the implementation work.
I added pre-fetch triggers at multiple points in the app lifecycle:
App idle time. When the app is running in the foreground but not actively being used, background pre-fetch requests run to keep the store populated with fresh inventory.
App background events. When the app moves to the background, a background pre-fetch refresh is triggered, using the backgrounding window to prepare inventory for the next launch.
Network connectivity restoration. When the device regains connectivity after a period offline, a pre-fetch request runs to refresh the store in preparation for the likely upcoming session.
TTL expiry refresh. Pre-fetched ads carry a short TTL. As TTL expiry approaches, the store automatically triggers a refresh to ensure a fresh ad is always available rather than waiting for a cache-empty session to discover an expired pre-fetch.
Monitoring the fill rate across these trigger paths allowed continuous tuning of which triggers contributed most to fill rate improvement.
Impression Quality at Hp1
The impression quality for Hp1 Ads is among the highest on the Reels surface. Because the ad occupies the full viewport at session start in a state where the user has nothing else to look at, viewability rates approach 100% for this placement. The user attention quality is exceptional: no competing content, full viewport, session-start timing when engagement is typically at its highest.
The eCPM commanded by Hp1 placements reflects this quality premium. Even a moderate daily volume of Hp1 impressions represents meaningful revenue because the eCPM floor for this placement is significantly above the surface average.
A/B Experiment Results
The core hypothesis I needed to validate was whether users would respond negatively to seeing an ad at Hp1 during a cache-empty session compared to seeing a loading indicator. The concern was that injecting an ad in this slot would increase session abandonment (the user closing the app before engaging with Reels content) compared to the loading state baseline.
The experiment data was clear: session exit rate when the Hp1 ad was shown showed no meaningful increase compared to the loading state baseline. Users do not prefer a loading indicator over content, even when the content is an ad. This validated the hypothesis and gave the experiment the green light for full rollout.
The experiment also measured the downstream session experience: did users who saw an Hp1 ad continue engaging with Reels at normal rates after the ad completed? The data confirmed that the Hp1 impression did not suppress post-ad engagement, which meant the feature captured additional revenue without borrowing it from downstream session engagement.
Outcome
Reels Hp1 Ads converts a previously dead session state (the cache-empty loading window) into a high-quality interstitial impression at the most valuable position in the Reels feed. The engineering investment was proportionally small relative to the revenue recovered, because the opportunity was already there in every cache-empty session. It just needed a system designed to recognize and act on it.
The broader lesson: cold start and cache-empty scenarios are underanalyzed in most mobile product monetization strategies. They are small in percentage terms but large in absolute numbers at scale, and they represent captive user attention with no competing content. That combination makes them disproportionately valuable when the infrastructure to serve them is in place.