Notification Channels

Since Android 8.0 (API 26) every notification belongs to a channel, or it does not appear. Users see each channel's name and importance in the app's settings and can change them, while your app can no longer change a channel's importance or sound once it exists. Core React Native 36,878 has no channel API; expo-notifications (57.0.21 here, added with npx expo install expo-notifications and a rebuild) has one:

src/android/AndroidApis.tsx: creating channels and listing them (excerpt)TSX
  await Notifications.setNotificationChannelAsync('new-arrivals', {
    name: 'New arrivals', description: 'Books from your wish list are in stock',
    importance: Notifications.AndroidImportance.HIGH,
  });
// ...
  const channels = await Notifications.getNotificationChannelsAsync();
  channels.forEach((c) =>
    console.log(`channel ${c.id} "${c.name}" importance ${c.importance}`));
Output
 LOG  channel orders "Order updates" importance 5
 LOG  channel new-arrivals "New arrivals" importance 6

A scheduleNotificationAsync() call with trigger: { channelId: 'new-arrivals' } then posted the notification in DrawerLayoutAndroid's figure. Android's own record of the channels disagrees about importance:

The channels as Android's notification service stores themShell
adb shell dumpsys notification --noredact \
  | grep -o "mId='\(new-arrivals\|orders\)', mName=[^,]*, [^,]*, mImportance=[0-9]" \
  | sort -u
Output
mId='new-arrivals', mName=New arrivals, mDescription=hasDescription , mImportance=4
mId='orders', mName=Order updates, mDescription=, mImportance=3

Both are right: Expo 6,418 's AndroidImportance enum has its own numbering, so its HIGH is 6 while Android's IMPORTANCE_HIGH is 4. Compare names, not numbers. Create channels at startup (repeating one with the same values does nothing) and give each a narrow purpose, so users mute promotions rather than everything. Push Notifications builds push notifications on this.