---
title: Ad formats
description: >-
  Overview of the ad formats supported by React Native Google Mobile Ads and how
  to choose between them.
---
> ## Documentation Index
> Fetch the complete documentation index at: https://react-native-google-mobile-ads.dev/llms.txt
> Use this file to discover all available pages before exploring further.

The Google Mobile Ads package supports the following ad formats. Pick the format that best fits the placement in your app:

- [App open](/ad-formats/app-open) — full screen, shown as your app is brought to the foreground.
- [Banner](/ad-formats/banner) — component based, occupies a fixed area of your UI (anchored, adaptive, collapsible).
- [Interstitial](/ad-formats/interstitial) — full screen, shown at natural transition points.
- [Rewarded](/ad-formats/rewarded) — full screen, rewards the user for completing an action.
- [Rewarded interstitial](/ad-formats/rewarded-interstitial) — full screen reward format that does not require opt-in.
- [Native](/ad-formats/native) — component based, rendered with your own layout.

Additional guides cover cross-cutting integration patterns:

- [React hooks](/ad-formats/hooks) — every hook in the library (fullscreen, app open manager,
  Ad Manager interstitial, native, multi-format, and pools) and the shared fullscreen lifecycle.
- [Google Ad Manager](/ad-formats/ad-manager) — Ad Manager (GAM) specific components and options.
- [Custom native (Ad Manager)](/ad-formats/custom-native) — Ad Manager custom native ad formats:
  custom assets read by exact name, and click handling with Ad Manager click reporting.

## Before loading any format

<Warning>
  Complete your consent flow before calling `mobileAds().initialize()` or loading an ad. Keep this
  page focused on format behavior; follow [Consent & privacy basics](/consent-basics) for the
  integration sequence and regional requirements.
</Warning>

<Info>
  Always use [test ads](/first-ad) while developing. Using production ad units on a device that is
  not registered as a test device can get your AdMob account suspended.
</Info>

## Load and refresh best practices

- Load fullscreen ads before the natural transition where you plan to show them, then show only
  after the loaded event or `status === 'loaded'`.
- Keep one load in flight per ad instance. The v17 hook API coalesces concurrent `load()` calls;
  with class APIs, guard your own loading state.
- Let the Google Mobile Ads SDK refresh a mounted banner according to the refresh interval
  configured for its ad unit. Do not add a second JavaScript refresh timer. Reload manually only
  for a lifecycle reason, such as the documented iOS foreground case.
- Do not retain loaded inventory indefinitely. Google documents a four-hour window for app open ads
  and a one-hour expiry on Android for
  [interstitial](https://developers.google.com/admob/android/interstitial) and
  [rewarded interstitial](https://developers.google.com/admob/android/rewarded-interstitial) ads.
  Other formats and platforms do not share one universal SDK expiry. For held pooled inventory, this library applies
  a conservative one-hour **publisher reload-policy default** to non-app-open formats; it is not a
  claim about every native SDK cache. Reload stale inventory before showing it. Pool handles
  expose `isStaleByPolicy()` when you use pools.
- Capture impression revenue through `onPaid`, `AdEventType.PAID`,
  `NativeAdEventType.PAID`, or a hook's `revenue`, depending on the API. See
  [Impression-level ad revenue](/impression-level-ad-revenue) and
  [Revenue telemetry and auction diagnostics](/revenue-telemetry-and-auction-diagnostics).

To keep a **buffer** of ready-to-show ads and poll at show time, see
[Preload pools and multi-format recipes](/preload-pools-and-multiformat-recipes).
For `destroy()`, structured errors, and other v17 deltas, see [Migrating to v17](/migration/v17).
