---
title: Prerequisites
description: The versions and settings required before this library will install.
---
> ## 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.

This page explains the versions and settings required. Your app must have every item below, or the native install fails.

1. React Native 0.86.0 or newer (`peerDependencies`: `react-native >=0.86.0`).
2. New Architecture turned on. The Legacy Architecture is not supported.
3. iOS deployment target 15.1 (`RNGoogleMobileAds.podspec`).
4. Android `minSdkVersion` 24 (`sdkVersions.android.minSdk` in package metadata).

An upgrade from an older release of this library is on the [Migrating to v17](/migration/v17) page.

## New Architecture (required)

v17 includes Turbo Modules and Fabric components only. If the New Architecture is off, the native install fails.

- **iOS:** CocoaPods raises when `RCT_NEW_ARCH_ENABLED=0`.
- **Android:** Gradle throws when `newArchEnabled` is set and is not `true` in `android/gradle.properties`.

Enable the New Architecture in your app, or remove an explicit old-architecture opt-out, before you install pods or build Android.

<Info>
  React Native 0.82 and newer may ignore `newArchEnabled=false` for its own build. This module's
  Gradle build still fails when `newArchEnabled` is present and is not `true`. Treat the New
  Architecture as mandatory on both platforms. Do not rely on the Legacy Architecture path.
</Info>

## iOS CocoaPods deployment targets

Xcode 27 rejects `IPHONEOS_DEPLOYMENT_TARGET` values below 15.0. This package's podspec minimum is 15.1, but Google Mobile Ads and User Messaging Platform (UMP) resource-bundle targets can still inherit `platforms.ios` 12.0 from those pods. Set every pod target in your app `Podfile` `post_install` so the deployment target is at least 15.1:

```ruby
post_install do |installer|
  # existing post_install hooks

  min_ios = '15.1'
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      current = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
      next if current && current.to_f >= min_ios.to_f

      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = min_ios
    end
  end
end
```

React Native's `updateOSDeploymentTarget` only rewrites pod native target configs. The resource-bundle targets still need this clamp. The example app's `Podfile` uses the same pattern.

## Android host notes

The supported and tested Android host baseline uses compile and target API level 36 and Build Tools 36.0.0. Standalone package builds use Android Gradle Plugin 8.6.0. The library does not enforce the host application's Android Gradle Plugin version.

<Info>
  On Android, before you release your app, select **Yes, my app contains ads** in the Google Play Console under **Policy and programmes** > **App content** > **Manage**.
</Info>

## Android Kotlin compatibility

Google Mobile Ads Android software development kit (SDK) 25.4 includes Kotlin 2.3 metadata. This library supports Kotlin 1.9.25 and newer:

- With Kotlin 1.9.25 through versions earlier than 2.3, the library adds `-Xskip-metadata-version-check` only to its own Kotlin compile tasks.
- With Kotlin 2.3 or newer, no metadata skip is added.

The scoped compiler flag is safe here because this module consumes the Google Mobile Ads public Java application programming interface (API). It is a compiler compatibility setting, not a dependency exclusion. If Kotlin code in your app or another module directly consumes an affected dependency, upgrade that module to Kotlin 2.3 or newer, or configure its compile tasks separately.
