Instant Games

Banner Ads

Updated: Apr 7, 2026
Copy for LLM
Deprecation Notice — Banner Ads
Banner ads are being deprecated on the Instant Games platform. Starting April 2026, banner ad impressions will gradually decrease, reaching full deprecation by March 31, 2027. After this date, banner ads will no longer be served.
Your game will continue to function normally — no code changes are required. Banner ad slots will simply return fewer impressions over time until reaching zero.
We strongly recommend integrating Rewarded Video Ads and/or In-App Purchases to replace declining banner revenue. Both options are available today and are intended to provide a less interruptive user experience while supporting your monetization strategy.
See the Banner Ad Deprecation FAQ below for details.
Banner ads are small, rectangular advertisements that display at the top or bottom of the screen while the player interacts with your game.
While banner ads generate lower revenue per impression compared to interstitial or rewarded ads, they provide a steady stream of passive revenue that adds up over time. They are an excellent complement to higher-impact ad formats in a well-rounded monetization strategy.

When to Use Banner Ads

Banner ads work best during moments when the player is not actively engaged in fast-paced gameplay. Good placements include:
  • Main menu screens and settings screens
  • Loading screens between levels
  • Level select and map screens
  • Leaderboard and score screens
  • Shop and inventory screens
  • Pause menus
  • Post-game results screens
Do not show banner ads during active gameplay. They take up valuable screen real estate and can distract the player at critical moments, leading to a negative experience. Always hide banners when gameplay begins and show them again when gameplay ends.

Creating a Banner Placement

Before integrating banner ads, create a placement in Monetization Manager:
  1. Go to the Monetization Manager.
  2. Select your app.
  3. Click Create Placement.
  4. Choose Instant Games as the platform.
  5. Select Banner as the ad format.
  6. Give the placement a descriptive name (e.g., “Main Menu Banner” or “Level Select Banner”).
  7. Save and note the Placement ID.

SDK Integration

The Instant Games SDK provides a straightforward API for banner ads.

Showing a Banner Ad

Use FBInstant.loadBannerAdAsync to load and display a banner ad:
FBInstant.loadBannerAdAsync(
  'YOUR_PLACEMENT_ID' // Your banner placement ID
).then(function () {
  console.log('Banner ad loaded and displayed.');
}).catch(function (error) {
  console.error('Failed to load banner ad:', error.code, error.message);
});
When loadBannerAdAsync resolves successfully, the banner ad is immediately visible on screen. Unlike interstitial and rewarded ads, there is no separate “show” step — loading a banner automatically displays it.

Hiding a Banner Ad

To remove the banner ad from the screen, call hideBannerAdAsync:
FBInstant.hideBannerAdAsync().then(function () {
  console.log('Banner ad hidden.');
}).catch(function (error) {
  console.error('Failed to hide banner ad:', error.code, error.message);
});
Banner ads are displayed as a fixed overlay at the bottom of the screen by default. The banner occupies a standard height (typically 50-60 pixels on mobile) and spans the full width of the game view.
Make sure your game UI does not place important interactive elements in the area where the banner will appear. If your game has buttons or other tappable elements near the bottom of the screen, you may need to adjust your layout when the banner is visible.

Complete Integration Example

Here is a complete example showing how to manage banner ads across different game states:
var bannerLoaded = false;

// Show a banner ad (call this when entering a menu, results screen, etc.)
function showBanner() {
  if (bannerLoaded) {
    return; // Banner is already showing
  }

  FBInstant.loadBannerAdAsync('YOUR_PLACEMENT_ID')
    .then(function () {
      bannerLoaded = true;
      console.log('Banner ad is now showing.');
    })
    .catch(function (error) {
      bannerLoaded = false;
      handleBannerError(error);
    });
}

// Hide the banner ad (call this when gameplay starts)
function hideBanner() {
  if (!bannerLoaded) {
    return; // No banner to hide
  }

  FBInstant.hideBannerAdAsync()
    .then(function () {
      bannerLoaded = false;
      console.log('Banner ad hidden.');
    })
    .catch(function (error) {
      console.error('Failed to hide banner:', error.code);
    });
}

// Handle banner ad errors
function handleBannerError(error) {
  switch (error.code) {
    case 'ADS_NO_FILL':
      // No ad available right now - try again later
      console.log('No banner ad available. Will retry later.');
      setTimeout(showBanner, 30000); // Retry after 30 seconds
      break;
    case 'ADS_FREQUENT_LOAD':
      // Loading too often - back off
      console.log('Banner load too frequent. Waiting before retry.');
      setTimeout(showBanner, 60000); // Retry after 60 seconds
      break;
    case 'ADS_TOO_MANY_INSTANCES':
      // Too many ad instances - this usually means you need to hide before showing
      console.log('Too many ad instances.');
      break;
    default:
      console.error('Banner error:', error.code, error.message);
  }
}

// Example: Integrating with game states
function onEnterMainMenu() {
  showBanner();
  // ... show menu UI
}

function onStartGameplay() {
  hideBanner();
  // ... begin gameplay
}

function onGameOver() {
  showBanner();
  // ... show results screen
}

function onEnterLeaderboard() {
  showBanner();
  // ... show leaderboard
}

Refreshing Banner Ads

Banner ads automatically refresh at regular intervals (typically every 30 seconds) while they are displayed. This means you do not need to manually reload banners — they will cycle through different ads on their own.
However, if you hide and then re-show a banner, you should call loadBannerAdAsync again to load a fresh ad.

Common Errors

Error CodeMeaningWhat To Do
ADS_NO_FILL
No banner ad is available to display.
This is normal, especially in markets with lower ad demand. Retry after 30-60 seconds. Do not spam retries.
ADS_FREQUENT_LOAD
You are calling loadBannerAdAsync too frequently.
Wait at least 30 seconds between load calls.
ADS_TOO_MANY_INSTANCES
Too many ad instances have been created.
Make sure you are hiding banners before loading new ones. Only one banner should be active at a time.
CLIENT_UNSUPPORTED
The current platform or client version does not support banner ads.
Do not attempt to show banners. This might occur on certain web or desktop clients.
INVALID_PARAM
The placement ID is incorrect or does not exist.
Double-check your placement ID in Monetization Manager.

Best Practices

Show Banners at the Right Time

  • Do: Show banners on menu screens, results screens, leaderboards, and other static screens where the player is browsing rather than actively playing.
  • Do not: Show banners during active gameplay. This causes accidental taps, obscures the game view, and frustrates players.

Handle the Banner Area in Your Layout

  • Reserve space at the bottom of your screen for the banner in your menu layouts. If the banner loads successfully, it will overlay your content in that area.
  • Test your game with and without banners to make sure nothing important is hidden beneath the banner.

Combine with Other Ad Formats

  • Banner ads are the lowest-revenue ad format per impression. They are best used as a complement to interstitial and rewarded ads, not as your sole ad format.
  • For example, show banners on menus, interstitials between levels, and rewarded ads for extra lives — this gives you three revenue streams covering different moments in the player experience.

Do Not Over-Refresh

  • Let the automatic refresh handle cycling ads. Repeatedly hiding and re-showing banners to force new ads will trigger ADS_FREQUENT_LOAD errors and may reduce your fill rate.

Respect the Player

  • If a player has purchased an “Ad-Free” or “Remove Ads” product through In-App Purchases, honor that purchase and do not show banner ads (or any other ads) to that player. Check for durable purchases on game start and disable ads accordingly.

Deprecation FAQ

Q: When will banner ads stop being served? Banner ad impressions will gradually decrease starting April 2026. By March 31, 2027, banner ads will be fully deprecated and no longer served on the Instant Games platform.
Q: Will the reduction happen all at once? No. The reduction is gradual — you will see a slow decline in banner impressions initially, with the rate of reduction increasing over time. There will be no sudden cut-off at any point.
Q: Do I need to make any code changes? No code changes are required for the deprecation itself. Banner ad slots in your game will simply serve fewer impressions over time. However, we recommend integrating Rewarded Video or In-App Purchases to replace the declining banner revenue.
Q: How will this affect my revenue? If your game relies on banner ads for monetization, you will see gradually declining banner revenue throughout the deprecation period, reaching zero by March 31, 2027. The impact depends on how much of your revenue comes from banners. We strongly recommend diversifying to Rewarded Video and/or In-App Purchases.
Q: What monetization alternatives are available?
  1. Rewarded Video (RV) — Players opt in to watch a video ad for an in-game reward. This format is designed to support player engagement and may offer higher CPMs. Integration guide
  2. In-App Purchases (IAP) — Sell virtual goods, currency, or premium content directly to players. Integration guide
Q: Will other ad formats be affected? No. Rewarded Video and standard Interstitials remain fully supported. Rewarded Interstitial Ads (RIA) were deprecated separately in 2025.
Q: Will my game break after March 31, 2027 if I still have banner ad code? No. Your game will continue to function normally. Banner ad slots will simply return no impressions. We recommend removing banner ad code when convenient, but it will not cause errors or affect gameplay.

Next Steps