Kids Mode in React Native SDK

If your React Native application is intended for kids, you must follow the policies of Apple and Google. If you’re using the Adapty SDK, a few simple steps will help you configure it to meet these policies and pass app store reviews.

On iOS, Kids Mode is enabled through the KidsMode Swift package trait, which compiles out all IDFA, AdSupport, and AppTrackingTransparency code. It requires the v4 SDK (which installs the native iOS SDK through Swift Package Manager) and Xcode 26 or later. See Updates in your iOS Podfile below.

What’s required?

You need to configure the Adapty SDK to disable the collection of:

In addition, we recommend using customer user ID carefully. User ID in format <FirstName.LastName> will be definitely treated as gathering personal data as well as using email. For Kids Mode, a best practice is to use randomized or anonymized identifiers (e.g., hashed IDs or device-generated UUIDs) to ensure compliance.

Enabling Kids Mode

Updates in the Adapty Dashboard

In the Adapty Dashboard, you need to disable the IP address collection. To do this, go to App settings and click Disable IP address collection under Collect users’ IP address.

Updates in your mobile app code

In order to comply with policies, disable the collection of the user’s IDFA (iOS), GAID/AAID (Android), and IP address when you activate the Adapty SDK:

import { adapty } from 'react-native-adapty';

adapty.activate('YOUR_PUBLIC_SDK_KEY', {
  // Disable IP address collection
  ipAddressCollectionDisabled: true,

  // Disable IDFA collection on iOS
  ios: {
    idfaCollectionDisabled: true,
  },

  // Disable Google Advertising ID collection on Android
  android: {
    adIdCollectionDisabled: true,
  },
});

Updates in your iOS Podfile

For the App Store Kids Category (or COPPA compliance), the native iOS SDK must be built with the KidsMode Swift package trait, which compiles out all IDFA, AdSupport, and AppTrackingTransparency code. React Native installs the native SDK through Swift Package Manager, which can’t forward package traits, so the SDK provides a Podfile helper that applies the trait for you. This step requires Xcode 26 or later.

In ios/Podfile, require the helper and call it after react_native_post_install:

require Pod::Executable.execute_command('node', ['-p',
  'require.resolve(
    "react-native-adapty/ios/adapty_kids_mode.rb",
    {paths: [process.argv[1]]},
  )', __dir__]).strip

# ...

post_install do |installer|
  react_native_post_install(
    installer,
    config[:reactNativePath],
    :mac_catalyst_enabled => false
  )

  adapty_enable_kids_mode(installer)
end

Then run pod install:

cd ios && pod install

To confirm Kids Mode is active, check that the adapty.activate(...) log line reports kids_mode_enabled: true. Keep the helper call in post_install permanently — React Native recreates the Swift package references on every pod install, and the helper re-applies the trait each time.

Updates in your Android manifest

If your app targets children only and compiles against Android 13 (API 33) or higher, Google Play requires that you don’t request the AD_ID permission. Another SDK in your app (analytics, attribution, or ads) may add this permission through manifest merging. Setting adIdCollectionDisabled stops Adapty from collecting the ID, but it doesn’t remove a permission that another SDK declares.

To remove the permission, add the following inside the <manifest> element of android/app/src/main/AndroidManifest.xml. The <manifest> element must declare xmlns:tools="http://schemas.android.com/tools".

<uses-permission
    android:name="com.google.android.gms.permission.AD_ID"
    tools:node="remove" />