Ad formats

Overview of the ad formats supported by React Native Google Mobile Ads and how to choose between them.

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

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

Two additional guides cover cross-cutting integration patterns:

  • React 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 Manager (GAM) specific components and options.

Before loading any format

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 and 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 and 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. For destroy(), structured errors, and other v17 deltas, see Migrating to v17.