---
title: Environment Support
description: Understand how the package integrates with the various development ecosystems.
---

## Support Table

The table below lists the current supported environments for `react-native-notify-kit` and the repository's current development target:

| Environment                                           | Supported              | Notes                                                                                                              |
| ----------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
| React Native                                          | >= 0.73.0 (peer range) | **New Architecture required.** Development target: 0.85.3; see [RN 0.88 validation](#react-native-088-validation). |
| Android APIs                                          | Android 7.0+ (API 24)  | Library module baseline: `minSdk = 24`, `targetSdk = 35`; host compile SDK inherited with minimum/fallback 35.     |
| iOS version                                           | 15.1+                  | Matches the `RNNotifee.podspec` platform target.                                                                   |
| [Hermes Support](https://reactnative.dev/docs/hermes) | Yes                    | Default on modern React Native.                                                                                    |
| Packagers                                             | Metro                  | Untested on non-standard packagers.                                                                                |

## Additional Requirements

- **Xcode**: 14.3 or higher (required by iOS 15.1 deployment target + modern React Native).
- **Java**: JDK 17+ for Android builds. JDK 17 and JDK 21 are validated baselines. Newer JDKs may work when supported by the consumer Android toolchain. JDK 8 and 11 are **not** supported.
- **Android Gradle Plugin**: API 35 and WorkManager 2.11.1 require at least 8.6.0; higher compile SDKs and React Native versions can require newer AGP.
- **Gradle**: select the version supported by the chosen AGP and React Native template. AGP 8.6 requires at least Gradle 8.7; Gradle 8.x is not a universal requirement.
- **Node**: >= 22 (matches the repository's toolchain).
- **Yarn**: 4.6.0 (matches the repository's package manager).

## Android Baselines and Validation Targets

- **Library/module baseline**: `minSdk = 24`, `targetSdk = 35`, Java/Kotlin JVM target 17. `compileSdk` is the higher of 35 and a usable `rootProject.ext.compileSdkVersion`; SDK 37 is not required. The library does not change host SDK properties. It explicitly keeps `aarMetadata.minCompileSdk = 35` so AGP 9 does not raise the AAR consumer minimum to the inherited compile SDK; dependencies may impose their own minimums.
- **Configuration convention**: positive integer API levels, equivalent decimal strings and stable `android-N` identifiers are accepted within the 32-bit integer range. Missing property: fallback 35. Present but unusable property: fallback 35 with a warning. Fractions, booleans, null, overflow and previews are rejected. Hosts using only the app DSL, version catalogs or convention plugins must expose the root extra property before library evaluation to select a higher SDK. Build/toolchain/SDK errors are not swallowed.
- **Toolchain selection**: API 35 requires AGP 8.6.0 or newer; API 36 requires 8.9.1 or newer; API 37 requires 9.1.1 or newer. Follow the [official AGP/SDK and AGP/Gradle tables](https://developer.android.com/build/releases/about-agp) plus your React Native and dependency requirements.
- **Current bare smoke target**: React Native 0.85.3, app `compileSdk = 36`, app `targetSdk = 36`, Gradle wrapper 9.3.1; AGP 8.12.0 is provided by the installed RN Gradle plugin. These fixture values do not establish compatibility for every consumer. Separate RN 0.88 validation is described below.
- **Standalone limitation**: the legacy classpath now declares AGP 8.6.0, but the library folder alone lacks the plugin/consumer wiring needed for a complete standalone build. Standalone support is not claimed; use a configured React Native consumer.

## React Native 0.88 Validation

TypeScript builds, consumer type checks and client tests passed with React Native 0.85.3 and 0.88.0. The Server SDK tests also passed. Android native tests passed with RN 0.85.3/JDK 17 and RN 0.88/JDK 21.

An RN 0.88/SDK 37 Android build and selected notification APIs were verified on a Pixel running Android 17/API 37 before the final asset-validator changes; those final changes have host regression coverage, not a new device qualification. These checks do not establish full support for every RN 0.88 feature. FCM, foreground-service recovery and consumer-specific native modules are not fully qualified in that setup.

## Android Unit Test Toolchain

The repository uses Robolectric 4.17. Tests without an explicit SDK configuration default to API 24, the library's minimum supported Android API, independently of `compileSdk`. Explicit test SDK configurations take precedence.

API 36/37 Robolectric tests require a JDK 21 test JVM. The Gradle test tasks use the JDK selected for the build; a JDK 17 invocation can restrict tests to earlier APIs with `-Drobolectric.enabledSdks=24,26,28,29,30,31,32,33,34,35`. Java/Kotlin compilation targets remain 17. This test requirement does not impose JDK 21 on every consumer build or change Android runtime requirements.

## Platforms

- **Android** and **iOS** are the supported runtime platforms.
- **Web** has a stub module only — `NotifeeNativeModule.web.ts` returns empty modules and no functionality is implemented.
