React Native permissions generator

React Native push notifications permission

Delivering remote or scheduled local notifications needs android.permission.POST_NOTIFICATIONS on Android 13 and later, where notifications became a runtime permission with a system prompt. iOS has no Info.plist key for it; the prompt is triggered by the runtime request alone.

expo-notifications declares the Android grant through its config plugin and requestPermissionsAsync asks on both platforms. Ask when the user turns on a feature that notifies, not at launch — the first prompt is the one most users decline, and a declined iOS prompt cannot be shown again.

Push notifications at a glance

Android grants
android.permission.POST_NOTIFICATIONS
iOS Info.plist key
None — iOS prompts from the runtime request alone.
Expo package
expo-notifications
Config plugin
expo-notifications
What it enables
Deliver remote or scheduled local notifications.
What the user agrees to
Send you notifications

The declarations, for Expo and the bare workflow

Expo config

app.json
{
  "expo": {
    "ios": {},
    "android": {
      "permissions": [
        "android.permission.POST_NOTIFICATIONS"
      ]
    },
    "plugins": [
      "expo-router",
      "expo-notifications"
    ]
  }
}

Prebuild writes these into the native projects; the config plugin is what makes the package's native code part of the build.

Bare workflow, Android

android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Bare workflow, iOS

ios/<App>/Info.plist
<!-- No iOS usage descriptions required by this selection. -->

Install the library

terminal
npx expo install expo-notifications

Push notifications permission, answered

The longer version is in the guide React Native permissions that satisfy both stores.

What permission does React Native need for push notifications?
On Android, declare android.permission.POST_NOTIFICATIONS in AndroidManifest.xml (or expo.android.permissions in app.json). iOS has no Info.plist key for this feature; the system prompt is triggered by the runtime request that expo-notifications exposes.
Do I still have to request push notifications at runtime?
Yes. The declaration only makes the request possible. The first time the feature is used, call the request API from expo-notifications; the operating system shows the prompt ("Send you notifications") and remembers the answer. A declared but never requested permission does nothing, and a requested but never declared one fails.
Why was my app rejected over the push notifications permission?
Google Play reviews the android.permission.POST_NOTIFICATIONS declaration against the app's visible features, so a grant that no screen uses is a finding. On iOS the prompt itself is the review surface: ask at the moment the feature is used, not on launch.

Declare every feature the app uses

The React Native permissions generator builds the complete set from the same catalogue — tick each device feature and copy the paired Android grants and iOS usage descriptions, the Expo app.json fragment and the install line together. In the Nodlume workspace the declarations come from the screens themselves: a screen that uses the camera is what adds the camera permission to the Expo Router project it exports.

Open the generator

Other React Native permissions

We'd like to use Google cookies to understand how Nodlume is used and to measure our advertising. Nothing loads until you choose, and declining does not affect anything in the app.