<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Marco Crupi</title>
    <description>The latest articles on Forem by Marco Crupi (@marco_crupi).</description>
    <link>https://forem.com/marco_crupi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1577892%2Fd353a255-6681-4d61-bb9f-8b85859694e6.jpg</url>
      <title>Forem: Marco Crupi</title>
      <link>https://forem.com/marco_crupi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/marco_crupi"/>
    <language>en</language>
    <item>
      <title>The Best Notification Libraries for React Native in 2026: Which One Should You Choose?</title>
      <dc:creator>Marco Crupi</dc:creator>
      <pubDate>Tue, 14 Apr 2026 15:53:27 +0000</pubDate>
      <link>https://forem.com/marco_crupi/the-best-notification-libraries-for-react-native-in-2026-which-one-should-you-choose-2nje</link>
      <guid>https://forem.com/marco_crupi/the-best-notification-libraries-for-react-native-in-2026-which-one-should-you-choose-2nje</guid>
      <description>&lt;p&gt;Notifications in React Native look simple—right up until you have to rely on them in a real app.&lt;/p&gt;

&lt;p&gt;Sending a notification is easy. Making it work &lt;strong&gt;consistently&lt;/strong&gt;, with the app in the background, terminated, or running on modern Android versions with aggressive restrictions, is a very different problem.&lt;/p&gt;

&lt;p&gt;By 2026, the landscape has changed significantly. Some long-standing libraries have been archived, and the number of real options has narrowed. At the same time, the gap between the remaining choices is substantial.&lt;/p&gt;

&lt;p&gt;In this article, we’ll look at &lt;strong&gt;which libraries are actually worth using&lt;/strong&gt;, what they concretely enable, and where one makes more sense than another.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. react-native-notify-kit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;react-native-notify-kit&lt;/strong&gt; is a fork of Notifee, whose repository is now archived, and it was built as a &lt;strong&gt;drop-in replacement&lt;/strong&gt;: same public API, but with an updated implementation for modern React Native.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it differs from Notifee at a technical level
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compatibility with recent React Native versions&lt;/strong&gt;: official support for modern React Native releases (&amp;gt;= 0.73) without relying on the legacy bridge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updated bridge layer&lt;/strong&gt;: integration with the New Architecture (TurboModules/JSI), which avoids several limitations of the old &lt;code&gt;NativeModules&lt;/code&gt; approach, especially in more delicate lifecycle scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core built from source&lt;/strong&gt;: no frozen precompiled AARs; the core is built together with the app, which reduces Gradle cache issues and improves compatibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More reliable triggers on Android&lt;/strong&gt;: &lt;strong&gt;AlarmManager&lt;/strong&gt; is used as the default backend (with fallback support), instead of WorkManager, which leads to better reliability under Doze and when the app is in the background or fully closed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreground services updated for Android 12–14+&lt;/strong&gt;: proper handling of &lt;code&gt;foregroundServiceType&lt;/code&gt;, immediate notification startup, and consistent behavior even under newer platform restrictions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More robust iOS event handling&lt;/strong&gt;: fixes around delegates and lifecycle behavior that previously caused lost events or interference with &lt;code&gt;@react-native-firebase/messaging&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe-by-default behavior&lt;/strong&gt;: sensible defaults (for example, tap actions opening the app and safer &lt;code&gt;pressAction&lt;/code&gt; handling) designed to prevent common production bugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practical terms, you use it the same way, but the underlying implementation is built to hold up under the real constraints imposed by current mobile operating systems.&lt;/p&gt;

&lt;p&gt;That makes &lt;strong&gt;react-native-notify-kit&lt;/strong&gt; the right choice when notifications are not just “a message popup,” but a critical part of your app’s behavior.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: this library is developed and maintained by the author of this article. It is used in production in a real-world app in the fitness space, where reliable timers and background notification handling are essential. Beyond day-to-day usage, the project is actively maintained with the goal of keeping it aligned with ongoing changes in React Native and the mobile platforms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What you can actually build with it
&lt;/h3&gt;

&lt;p&gt;With this library, you can handle real and complex scenarios such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workout timers that keep running even when the screen is off&lt;/li&gt;
&lt;li&gt;Persistent notifications (for example, “download in progress” or “workout active”)&lt;/li&gt;
&lt;li&gt;Notifications with updatable progress bars&lt;/li&gt;
&lt;li&gt;Full-screen Android experiences for cases like alarms or incoming-call style flows&lt;/li&gt;
&lt;li&gt;Background tasks that need to remain active&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, it fits anything that requires real control over notification behavior, especially on Android.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use it
&lt;/h3&gt;

&lt;p&gt;The key point is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Notifications always seem to work when the app is open.&lt;br&gt;
The problems start when the app goes into the background or gets closed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This library is built specifically for those situations.&lt;/p&gt;

&lt;p&gt;In concrete terms, that means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scheduled notifications are more reliable even when the app is closed&lt;/li&gt;
&lt;li&gt;Timers do not stop when the app moves to the background&lt;/li&gt;
&lt;li&gt;Notification behavior is more consistent in edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use it
&lt;/h3&gt;

&lt;p&gt;Use it if you’re building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fitness apps (timers, rest periods, tracking)&lt;/li&gt;
&lt;li&gt;Productivity apps (pomodoro timers, task flows, advanced reminders)&lt;/li&gt;
&lt;li&gt;Apps that perform work in the background&lt;/li&gt;
&lt;li&gt;Any app where notifications need to be as reliable as possible, even in edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Expo Notifications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Expo Notifications&lt;/strong&gt; is the simplest and most immediate option for teams working in the Expo ecosystem or dealing with standard notification use cases.&lt;/p&gt;

&lt;p&gt;That is not a coincidence. After Notifee was archived, it was widely pointed to as the recommended path for developers who wanted to stay within a supported experience inside the React Native ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you can actually do with it
&lt;/h3&gt;

&lt;p&gt;Expo Notifications covers most common use cases without much friction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send push notifications&lt;/li&gt;
&lt;li&gt;Show local and scheduled notifications&lt;/li&gt;
&lt;li&gt;Manage permissions, tokens, and listeners without unnecessary complexity&lt;/li&gt;
&lt;li&gt;Handle badges, notification taps, and standard app-opening flows&lt;/li&gt;
&lt;li&gt;Work effectively in Expo projects without having to go too deep into the native layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is a very good fit for reminders, promotional notifications, content updates, transactional notifications, and more broadly for apps where notifications are mainly used to inform the user or bring them back into the app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use it
&lt;/h3&gt;

&lt;p&gt;There are practical reasons why Expo Notifications is often the most sensible choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast setup&lt;/li&gt;
&lt;li&gt;Works well in Expo-based projects&lt;/li&gt;
&lt;li&gt;Great for MVPs and simpler apps&lt;/li&gt;
&lt;li&gt;APIs that are complete enough for most consumer applications&lt;/li&gt;
&lt;li&gt;Clear documentation and a fairly straightforward integration path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, it gives you a lot with relatively little effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where it works especially well
&lt;/h3&gt;

&lt;p&gt;Expo Notifications is a strong choice if you are building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social apps&lt;/li&gt;
&lt;li&gt;E-commerce apps&lt;/li&gt;
&lt;li&gt;Editorial or content-driven apps&lt;/li&gt;
&lt;li&gt;Business apps with standard reminders&lt;/li&gt;
&lt;li&gt;MVPs where speed to production matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your goal is to send push notifications, show local notifications, handle taps, and deep-link the user to a specific screen inside the app, it is often more than enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where it starts to feel limiting
&lt;/h3&gt;

&lt;p&gt;Its limitations become more apparent once your requirements get more advanced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It does not expose direct control over &lt;strong&gt;Android foreground services&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Control over persistent notifications and advanced behaviors is limited&lt;/li&gt;
&lt;li&gt;Background and terminated-app behavior is still heavily shaped by &lt;strong&gt;operating system policies&lt;/strong&gt; such as Doze and the iOS lifecycle, rather than being fully controllable from the app side&lt;/li&gt;
&lt;li&gt;For Android push notifications, starting with Expo SDK 53, Expo Go requires a development build: this is not a functional limitation of the library itself, but it is a practical constraint worth knowing about&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put differently, it works very well as long as your use case is standard, but it becomes restrictive when you need fine-grained control over notification behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use it
&lt;/h3&gt;

&lt;p&gt;Use it if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You are already using Expo&lt;/li&gt;
&lt;li&gt;You need standard notification features&lt;/li&gt;
&lt;li&gt;You want to move quickly without diving into native implementation details&lt;/li&gt;
&lt;li&gt;Your app’s value does not depend on persistent timers, long-running background tasks, or advanced notification behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-world comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Expo Notifications&lt;/th&gt;
&lt;th&gt;react-native-notify-kit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Push notifications&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple local notifications&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliable background timers&lt;/td&gt;
&lt;td&gt;Not its focus&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foreground services (Android)&lt;/td&gt;
&lt;td&gt;Not directly supported&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persistent notifications&lt;/td&gt;
&lt;td&gt;Limited / not the focus&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavior control&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ease of use&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. OneSignal, Firebase, and APNs: where they actually fit
&lt;/h2&gt;

&lt;p&gt;This is where it helps to draw a clear distinction, because “notifications” is often used as an umbrella term for tools that are, in reality, solving very different problems.&lt;/p&gt;

&lt;p&gt;Not everything related to push notifications is a direct alternative to Expo Notifications or react-native-notify-kit.&lt;/p&gt;

&lt;h3&gt;
  
  
  FCM and APNs are not “client-side notification libraries”
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;FCM (Firebase Cloud Messaging)&lt;/strong&gt; and &lt;strong&gt;APNs (Apple Push Notification service)&lt;/strong&gt; are primarily delivery channels.&lt;/p&gt;

&lt;p&gt;In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your backend or an external service sends the message&lt;/li&gt;
&lt;li&gt;FCM routes it to Android devices&lt;/li&gt;
&lt;li&gt;APNs routes it to Apple devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes them the infrastructure layer behind push notifications—not the UX layer, and not the fine-grained control layer inside your app.&lt;/p&gt;

&lt;p&gt;For that reason, on their own, they are not equivalent to a library such as Expo Notifications or react-native-notify-kit.&lt;/p&gt;

&lt;h3&gt;
  
  
  OneSignal is different: it is not just delivery
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;OneSignal&lt;/strong&gt; is not simply a delivery channel like FCM or APNs. It is a full platform with a React Native SDK.&lt;/p&gt;

&lt;p&gt;That means it can do more than act as a pure sender:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it integrates an SDK directly into the app&lt;/li&gt;
&lt;li&gt;it provides listeners for notification clicks&lt;/li&gt;
&lt;li&gt;it allows some control over foreground notification behavior&lt;/li&gt;
&lt;li&gt;it adds a dashboard, segmentation, analytics, in-app messaging, and automations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, &lt;strong&gt;OneSignal can absolutely be used on the app side as well&lt;/strong&gt;, not just as a backend delivery service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why it still is not the same thing as Expo Notifications or react-native-notify-kit
&lt;/h3&gt;

&lt;p&gt;Because its role is different.&lt;/p&gt;

&lt;p&gt;Expo Notifications and react-native-notify-kit are libraries you choose primarily based on &lt;strong&gt;how you want to manage notifications inside your app&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;OneSignal, by contrast, is a broader platform: delivery, targeting, analytics, and the client SDK are all bundled into the same product.&lt;/p&gt;

&lt;p&gt;Put another way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if you want a library that you integrate into your codebase and largely control yourself, you are thinking in terms of &lt;strong&gt;Expo Notifications&lt;/strong&gt; or &lt;strong&gt;react-native-notify-kit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;if you also want a ready-made platform for delivery, segmentation, dashboards, and campaigns, &lt;strong&gt;OneSignal&lt;/strong&gt; becomes a much more natural fit&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When OneSignal makes sense
&lt;/h3&gt;

&lt;p&gt;OneSignal is especially compelling if you want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;avoid building a custom backend for push delivery&lt;/li&gt;
&lt;li&gt;run campaigns, segmentation, and automations&lt;/li&gt;
&lt;li&gt;have analytics and dashboards ready out of the box&lt;/li&gt;
&lt;li&gt;manage push notifications and in-app messages in the same place&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is therefore a more &lt;strong&gt;product- and platform-oriented&lt;/strong&gt; choice, rather than a purely SDK-oriented one.&lt;/p&gt;

&lt;h3&gt;
  
  
  The limitation you need to understand clearly
&lt;/h3&gt;

&lt;p&gt;Even though OneSignal ships with a real client SDK, it should not be viewed as a perfect replacement for a library focused on advanced native notification control.&lt;/p&gt;

&lt;p&gt;If your main problem is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android foreground services&lt;/li&gt;
&lt;li&gt;tightly controlled persistent notifications&lt;/li&gt;
&lt;li&gt;reliable background timers&lt;/li&gt;
&lt;li&gt;advanced and predictable behavior in edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then the core issue is still the client-side library you are using inside the app.&lt;/p&gt;

&lt;h3&gt;
  
  
  So how should you think about these tools?
&lt;/h3&gt;

&lt;p&gt;The most accurate way to frame them is this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FCM / APNs&lt;/strong&gt; → delivery infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OneSignal&lt;/strong&gt; → push platform with a client SDK&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expo Notifications / react-native-notify-kit&lt;/strong&gt; → app-side libraries for notification handling and behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction is more useful than the generic question “which is the best library?”, because it separates tools that are actually addressing different layers of the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose in practice
&lt;/h2&gt;

&lt;p&gt;The real decision is not just about libraries. It is mainly about &lt;strong&gt;the kind of app you are building&lt;/strong&gt; and how much control you need.&lt;/p&gt;

&lt;h3&gt;
  
  
  If your app looks like this:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Social&lt;/li&gt;
&lt;li&gt;E-commerce&lt;/li&gt;
&lt;li&gt;Content-focused&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Expo Notifications is often the most sensible choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  If your app looks like this:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fitness (timers, rest periods, sessions)&lt;/li&gt;
&lt;li&gt;Tracking (time, activity, processes)&lt;/li&gt;
&lt;li&gt;Advanced productivity tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You probably need something like react-native-notify-kit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The truth few people say out loud
&lt;/h2&gt;

&lt;p&gt;Most libraries work well in demos.&lt;/p&gt;

&lt;p&gt;The real problems appear when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app gets killed&lt;/li&gt;
&lt;li&gt;The operating system throttles background work&lt;/li&gt;
&lt;li&gt;The device enters power-saving mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where the difference between a “simple” solution and a &lt;strong&gt;reliable&lt;/strong&gt; one becomes obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In 2026, the choice is clearer than ever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want simplicity → &lt;strong&gt;Expo Notifications&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Want control and reliability → &lt;strong&gt;react-native-notify-kit&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no universally correct choice.&lt;/p&gt;

&lt;p&gt;There is only the right choice &lt;strong&gt;for the kind of app you are building&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;h3&gt;
  
  
  react-native-notify-kit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/marcocrupi/react-native-notify-kit" rel="noopener noreferrer"&gt;https://github.com/marcocrupi/react-native-notify-kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/react-native-notify-kit" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-native-notify-kit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Expo Notifications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/expo/expo/tree/main/packages/expo-notifications" rel="noopener noreferrer"&gt;https://github.com/expo/expo/tree/main/packages/expo-notifications&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/expo-notifications" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/expo-notifications&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  OneSignal React Native SDK
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/OneSignal/react-native-onesignal" rel="noopener noreferrer"&gt;https://github.com/OneSignal/react-native-onesignal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/react-native-onesignal" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-native-onesignal&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  React Native Firebase Messaging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/invertase/react-native-firebase/tree/main/packages/messaging" rel="noopener noreferrer"&gt;https://github.com/invertase/react-native-firebase/tree/main/packages/messaging&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@react-native-firebase/messaging" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@react-native-firebase/messaging&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  FCM and APNs
&lt;/h3&gt;

&lt;p&gt;FCM and APNs are not npm packages or GitHub repositories equivalent to the libraries listed above; they are delivery services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firebase Cloud Messaging: &lt;a href="https://firebase.google.com/docs/cloud-messaging" rel="noopener noreferrer"&gt;https://firebase.google.com/docs/cloud-messaging&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apple Push Notification service: &lt;a href="https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns" rel="noopener noreferrer"&gt;https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>opensource</category>
      <category>npm</category>
    </item>
    <item>
      <title>Le migliori librerie di notifiche per React Native nel 2026: quale scegliere?</title>
      <dc:creator>Marco Crupi</dc:creator>
      <pubDate>Tue, 14 Apr 2026 15:40:03 +0000</pubDate>
      <link>https://forem.com/marco_crupi/le-migliori-librerie-di-notifiche-per-react-native-nel-2026-quale-scegliere-2jk</link>
      <guid>https://forem.com/marco_crupi/le-migliori-librerie-di-notifiche-per-react-native-nel-2026-quale-scegliere-2jk</guid>
      <description>&lt;p&gt;Le notifiche in React Native sembrano semplici, finché non inizi a usarle davvero.&lt;/p&gt;

&lt;p&gt;Inviare una notifica è facile. Farla funzionare &lt;strong&gt;sempre&lt;/strong&gt;, con app in background, chiusa, su Android moderno con restrizioni aggressive, è tutta un’altra storia.&lt;/p&gt;

&lt;p&gt;Nel 2026 il panorama è cambiato molto: alcune librerie storiche sono state archiviate e oggi le scelte reali si sono ridotte. Ma le differenze tra queste scelte sono enormi.&lt;/p&gt;

&lt;p&gt;In questo articolo vediamo &lt;strong&gt;quali librerie usare davvero&lt;/strong&gt;, cosa fanno in concreto e in quali casi una è meglio dell’altra.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. react-native-notify-kit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;react-native-notify-kit&lt;/strong&gt; è un fork di Notifee, il cui repository oggi è archiviato, progettato come &lt;strong&gt;drop-in replacement&lt;/strong&gt;: stessa API pubblica, ma con un’implementazione aggiornata per React Native moderno.&lt;/p&gt;

&lt;h3&gt;
  
  
  In cosa differisce tecnicamente da Notifee
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compatibilità con React Native recente&lt;/strong&gt;: supporto ufficiale alle versioni moderne di React Native (&amp;gt;= 0.73) senza dipendere dal legacy bridge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bridge aggiornato&lt;/strong&gt;: integrazione con la New Architecture (TurboModules/JSI), evitando diversi limiti del vecchio &lt;code&gt;NativeModules&lt;/code&gt;, soprattutto nei casi di lifecycle più delicati.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core compilato dal sorgente&lt;/strong&gt;: niente AAR precompilati “congelati”; il core viene buildato insieme all’app, con meno problemi di cache Gradle e compatibilità.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trigger affidabili su Android&lt;/strong&gt;: uso di &lt;strong&gt;AlarmManager&lt;/strong&gt; come backend di default (con fallback), invece di WorkManager → migliore affidabilità con Doze, app in background o chiusa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreground service aggiornati per Android 12–14+&lt;/strong&gt;: gestione di &lt;code&gt;foregroundServiceType&lt;/code&gt;, avvio immediato della notifica e comportamento coerente anche con le restrizioni più recenti.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestione eventi iOS più robusta&lt;/strong&gt;: fix su delegate e lifecycle che causavano eventi persi o interferenze con &lt;code&gt;@react-native-firebase/messaging&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comportamenti “safe by default”&lt;/strong&gt;: default sensati (es. tap che apre l’app, gestione &lt;code&gt;pressAction&lt;/code&gt;) per evitare bug comuni in produzione.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In pratica: stesso modo di usarla, ma con un’implementazione che regge i vincoli reali dei sistemi operativi attuali.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;react-native-notify-kit&lt;/strong&gt; è quindi la scelta giusta quando le notifiche non sono solo “un messaggino”, ma una parte critica della tua app.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nota: questa libreria è sviluppata e mantenuta dall’autore di questo articolo. Viene utilizzata in produzione in un’app reale (ambito fitness), dove la gestione affidabile di timer e notifiche in background è fondamentale. Oltre all’uso pratico, il progetto viene mantenuto attivamente con l’obiettivo di tenerlo aggiornato rispetto alle evoluzioni di React Native e delle piattaforme mobile.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Cosa puoi farci davvero
&lt;/h3&gt;

&lt;p&gt;Con questa libreria puoi gestire scenari reali e complessi, ad esempio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timer di allenamento che continuano a funzionare anche con schermo spento&lt;/li&gt;
&lt;li&gt;Notifiche persistenti (tipo “download in corso” o “allenamento attivo”)&lt;/li&gt;
&lt;li&gt;Notifiche con progress bar aggiornabili&lt;/li&gt;
&lt;li&gt;Schermate full-screen su Android, per casi come sveglie o chiamate&lt;/li&gt;
&lt;li&gt;Task in background che devono rimanere attivi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In pratica, è adatta a tutto ciò che richiede controllo reale sul comportamento delle notifiche, soprattutto lato Android.&lt;/p&gt;

&lt;h3&gt;
  
  
  Perché usarla
&lt;/h3&gt;

&lt;p&gt;Il punto chiave è questo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Le notifiche funzionano sempre finché l’app è aperta.&lt;br&gt;
I problemi iniziano quando l’app è in background o chiusa.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Questa libreria è progettata proprio per quei casi.&lt;/p&gt;

&lt;p&gt;In concreto significa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Le notifiche schedulate risultano più affidabili anche con app chiusa&lt;/li&gt;
&lt;li&gt;I timer non si fermano quando l’app va in background&lt;/li&gt;
&lt;li&gt;Le notifiche si comportano in modo più coerente nei casi limite&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quando usarla
&lt;/h3&gt;

&lt;p&gt;Usala se stai sviluppando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App fitness (timer, rest, tracking)&lt;/li&gt;
&lt;li&gt;App di produttività (pomodoro, task, reminder avanzati)&lt;/li&gt;
&lt;li&gt;App che fanno operazioni in background&lt;/li&gt;
&lt;li&gt;Qualsiasi app dove le notifiche devono essere il più possibile affidabili anche nei casi limite&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Expo Notifications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Expo Notifications&lt;/strong&gt; è la soluzione più semplice e immediata per chi lavora nell’ecosistema Expo o ha use case standard.&lt;/p&gt;

&lt;p&gt;Non a caso, dopo l’archiviazione di Notifee, è stata indicata come la strada consigliata per chi vuole rimanere su un’esperienza supportata all’interno dell’ecosistema React Native.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cosa puoi farci davvero
&lt;/h3&gt;

&lt;p&gt;Con Expo Notifications puoi coprire senza particolari difficoltà la maggior parte dei casi d’uso comuni:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inviare notifiche push&lt;/li&gt;
&lt;li&gt;Mostrare notifiche locali e schedulate&lt;/li&gt;
&lt;li&gt;Gestire permessi, token e listener senza impazzire&lt;/li&gt;
&lt;li&gt;Gestire badge, tap sulla notifica e flussi standard di apertura app&lt;/li&gt;
&lt;li&gt;Lavorare bene in progetti Expo senza dover entrare troppo nei dettagli nativi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;È una soluzione molto adatta per reminder, notifiche promozionali, aggiornamenti contenuto, notifiche transazionali e, più in generale, per tutte quelle app in cui la notifica serve soprattutto a informare o riportare l’utente dentro l’app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Perché usarla
&lt;/h3&gt;

&lt;p&gt;Ci sono motivi concreti per cui Expo Notifications è spesso la scelta più sensata:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup veloce&lt;/li&gt;
&lt;li&gt;Funziona bene in progetti Expo&lt;/li&gt;
&lt;li&gt;Ottima per MVP e app semplici&lt;/li&gt;
&lt;li&gt;API sufficientemente complete per la maggior parte delle app consumer&lt;/li&gt;
&lt;li&gt;Documentazione chiara e percorso di integrazione abbastanza lineare&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In pratica, ti permette di ottenere molto con poco sforzo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dove funziona particolarmente bene
&lt;/h3&gt;

&lt;p&gt;Expo Notifications è una buona scelta se stai costruendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App social&lt;/li&gt;
&lt;li&gt;App e-commerce&lt;/li&gt;
&lt;li&gt;App editoriali o content-based&lt;/li&gt;
&lt;li&gt;App business con reminder standard&lt;/li&gt;
&lt;li&gt;MVP dove vuoi arrivare in produzione rapidamente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se il tuo obiettivo è inviare notifiche push, mostrare notifiche locali, gestire il tap e portare l’utente in una schermata precisa dell’app, spesso è più che sufficiente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quando inizia a stare stretta
&lt;/h3&gt;

&lt;p&gt;I limiti emergono quando inizi a fare cose più avanzate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Non espone un controllo diretto sui &lt;strong&gt;foreground service Android&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Controllo limitato su notifiche persistenti e comportamenti avanzati&lt;/li&gt;
&lt;li&gt;Il comportamento in background o con app chiusa dipende fortemente dalle &lt;strong&gt;policy del sistema operativo (Doze, lifecycle iOS)&lt;/strong&gt; e non è completamente controllabile lato app&lt;/li&gt;
&lt;li&gt;Per le push su Android, da Expo SDK 53 in poi in Expo Go serve una development build: non è un limite funzionale della libreria, ma è un vincolo pratico da conoscere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In altre parole, funziona molto bene finché il tuo use case è standard, ma diventa limitante quando hai bisogno di controllo preciso sul comportamento delle notifiche.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quando usarla
&lt;/h3&gt;

&lt;p&gt;Usala se:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stai usando Expo&lt;/li&gt;
&lt;li&gt;Hai bisogno di notifiche standard&lt;/li&gt;
&lt;li&gt;Vuoi andare veloce senza entrare nei dettagli nativi&lt;/li&gt;
&lt;li&gt;Il valore della tua app non dipende da timer persistenti, task lunghi in background o comportamenti avanzati della notifica&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Confronto reale
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Expo Notifications&lt;/th&gt;
&lt;th&gt;react-native-notify-kit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Push notifications&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notifiche locali semplici&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timer affidabili in background&lt;/td&gt;
&lt;td&gt;Non è il suo focus&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foreground service (Android)&lt;/td&gt;
&lt;td&gt;Non supportato in modo diretto&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notifiche persistenti&lt;/td&gt;
&lt;td&gt;Limitato / non è il focus&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controllo comportamento&lt;/td&gt;
&lt;td&gt;Medio&lt;/td&gt;
&lt;td&gt;Alto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Facilità d’uso&lt;/td&gt;
&lt;td&gt;Alta&lt;/td&gt;
&lt;td&gt;Media&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. OneSignal, Firebase e APNs: dove si collocano davvero
&lt;/h2&gt;

&lt;p&gt;Qui conviene fare una distinzione netta, perché sotto l’etichetta “notifiche” si mettono spesso strumenti molto diversi tra loro.&lt;/p&gt;

&lt;p&gt;Non tutto ciò che riguarda le push è una libreria concorrente di Expo Notifications o react-native-notify-kit.&lt;/p&gt;

&lt;h3&gt;
  
  
  FCM e APNs non sono librerie di notifica “client-side”
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;FCM (Firebase Cloud Messaging)&lt;/strong&gt; e &lt;strong&gt;APNs (Apple Push Notification service)&lt;/strong&gt; sono soprattutto canali di delivery.&lt;/p&gt;

&lt;p&gt;In pratica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;il tuo backend o un servizio esterno invia il messaggio&lt;/li&gt;
&lt;li&gt;FCM lo inoltra ai device Android&lt;/li&gt;
&lt;li&gt;APNs lo inoltra ai device Apple&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sono quindi la base infrastrutturale della push notification, non la parte di UX o di controllo fine dentro l’app.&lt;/p&gt;

&lt;p&gt;Per questo motivo, presi da soli, non sono l’equivalente di una libreria come Expo Notifications o react-native-notify-kit.&lt;/p&gt;

&lt;h3&gt;
  
  
  OneSignal è diverso: non è solo delivery
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;OneSignal&lt;/strong&gt; non è un semplice canale di invio come FCM/APNs. È una piattaforma completa con un SDK React Native.&lt;/p&gt;

&lt;p&gt;Questo significa che può fare più di un puro “sender”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;integra un SDK dentro l’app&lt;/li&gt;
&lt;li&gt;gestisce listener per il click sulla notifica&lt;/li&gt;
&lt;li&gt;permette di controllare il comportamento delle notifiche in foreground&lt;/li&gt;
&lt;li&gt;aggiunge dashboard, segmentazione, analytics, in-app messages e automazioni&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quindi sì: &lt;strong&gt;OneSignal può assolutamente essere usato anche lato app&lt;/strong&gt;, e non solo come backend di invio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Perché allora non è la stessa cosa di Expo Notifications o react-native-notify-kit?
&lt;/h3&gt;

&lt;p&gt;Perché il suo ruolo è diverso.&lt;/p&gt;

&lt;p&gt;Expo Notifications e react-native-notify-kit sono librerie che scegli soprattutto per &lt;strong&gt;come vuoi gestire le notifiche dentro la tua app&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;OneSignal invece è una piattaforma più ampia: unisce invio, targeting, analytics e SDK client nello stesso prodotto.&lt;/p&gt;

&lt;p&gt;In altre parole:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;se vuoi una libreria da integrare nel tuo codice e controllare tu quasi tutto, ragioni in termini di &lt;strong&gt;Expo Notifications&lt;/strong&gt; o &lt;strong&gt;react-native-notify-kit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;se vuoi anche una piattaforma pronta per invio, segmentazione, dashboard e campagne, &lt;strong&gt;OneSignal&lt;/strong&gt; entra in gioco in modo molto più naturale&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quando OneSignal ha senso
&lt;/h3&gt;

&lt;p&gt;OneSignal è particolarmente sensato se vuoi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evitare di costruire un backend custom per l’invio push&lt;/li&gt;
&lt;li&gt;fare campagne, segmentazione e automazioni&lt;/li&gt;
&lt;li&gt;avere analytics e dashboard già pronti&lt;/li&gt;
&lt;li&gt;gestire nello stesso posto push e in-app messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;È quindi una scelta più “product/platform-oriented” che puramente “SDK-oriented”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Il limite da capire bene
&lt;/h3&gt;

&lt;p&gt;Anche se OneSignal ha uno SDK client reale, non va letto come un sostituto perfetto di una libreria focalizzata sul controllo avanzato delle notifiche native.&lt;/p&gt;

&lt;p&gt;Se il tuo problema principale è:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;foreground service Android&lt;/li&gt;
&lt;li&gt;notifiche persistenti molto controllate&lt;/li&gt;
&lt;li&gt;timer affidabili in background&lt;/li&gt;
&lt;li&gt;comportamento avanzato e prevedibile nei casi limite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;allora il punto centrale resta la libreria client che usi dentro l’app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quindi come leggerli correttamente
&lt;/h3&gt;

&lt;p&gt;Il modo più corretto di vedere questi strumenti è questo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FCM / APNs&lt;/strong&gt; → infrastruttura di delivery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OneSignal&lt;/strong&gt; → piattaforma push con SDK client&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expo Notifications / react-native-notify-kit&lt;/strong&gt; → librerie lato app per gestione e comportamento delle notifiche&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questa distinzione è più utile della classica domanda “qual è la migliore libreria?”, perché separa strumenti che in realtà risolvono problemi diversi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come scegliere davvero
&lt;/h2&gt;

&lt;p&gt;La scelta non è solo tra librerie. È soprattutto tra &lt;strong&gt;tipi di app&lt;/strong&gt; e livello di controllo che ti serve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Se la tua app è così:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Social&lt;/li&gt;
&lt;li&gt;E-commerce&lt;/li&gt;
&lt;li&gt;App contenuto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Expo Notifications è spesso la scelta più sensata.&lt;/p&gt;

&lt;h3&gt;
  
  
  Se la tua app è così:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fitness (timer, rest, sessioni)&lt;/li&gt;
&lt;li&gt;Tracking (tempo, attività, processi)&lt;/li&gt;
&lt;li&gt;Tool produttività avanzati&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hai probabilmente bisogno di qualcosa come react-native-notify-kit.&lt;/p&gt;

&lt;h2&gt;
  
  
  La verità che pochi dicono
&lt;/h2&gt;

&lt;p&gt;La maggior parte delle librerie funziona bene nelle demo.&lt;/p&gt;

&lt;p&gt;I problemi arrivano quando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L’app viene killata&lt;/li&gt;
&lt;li&gt;Il sistema operativo limita i processi&lt;/li&gt;
&lt;li&gt;Il device entra in modalità risparmio energetico&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ed è lì che si vede la differenza tra una soluzione “semplice” e una soluzione &lt;strong&gt;affidabile&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusione
&lt;/h2&gt;

&lt;p&gt;Nel 2026 la scelta è più chiara che mai:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vuoi semplicità → &lt;strong&gt;Expo Notifications&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Vuoi controllo e affidabilità → &lt;strong&gt;react-native-notify-kit&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Non esiste una scelta giusta in assoluto.&lt;/p&gt;

&lt;p&gt;Esiste la scelta giusta &lt;strong&gt;per il tipo di app che stai costruendo&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Link utili
&lt;/h2&gt;

&lt;h3&gt;
  
  
  react-native-notify-kit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/marcocrupi/react-native-notify-kit" rel="noopener noreferrer"&gt;https://github.com/marcocrupi/react-native-notify-kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/react-native-notify-kit" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-native-notify-kit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Expo Notifications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/expo/expo/tree/main/packages/expo-notifications" rel="noopener noreferrer"&gt;https://github.com/expo/expo/tree/main/packages/expo-notifications&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/expo-notifications" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/expo-notifications&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  OneSignal React Native SDK
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/OneSignal/react-native-onesignal" rel="noopener noreferrer"&gt;https://github.com/OneSignal/react-native-onesignal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/react-native-onesignal" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-native-onesignal&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  React Native Firebase Messaging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/invertase/react-native-firebase/tree/main/packages/messaging" rel="noopener noreferrer"&gt;https://github.com/invertase/react-native-firebase/tree/main/packages/messaging&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@react-native-firebase/messaging" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@react-native-firebase/messaging&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  FCM e APNs
&lt;/h3&gt;

&lt;p&gt;FCM e APNs non sono pacchetti npm o repository GitHub equivalenti alle librerie citate sopra: sono servizi di delivery.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firebase Cloud Messaging: &lt;a href="https://firebase.google.com/docs/cloud-messaging" rel="noopener noreferrer"&gt;https://firebase.google.com/docs/cloud-messaging&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apple Push Notification service: &lt;a href="https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns" rel="noopener noreferrer"&gt;https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>opensource</category>
      <category>npm</category>
    </item>
    <item>
      <title>Notifee is Archived. Here’s a Maintained, New-Architecture Drop-in Replacement</title>
      <dc:creator>Marco Crupi</dc:creator>
      <pubDate>Fri, 10 Apr 2026 20:45:12 +0000</pubDate>
      <link>https://forem.com/marco_crupi/notifee-is-archived-heres-a-maintained-new-architecture-drop-in-replacement-3ib5</link>
      <guid>https://forem.com/marco_crupi/notifee-is-archived-heres-a-maintained-new-architecture-drop-in-replacement-3ib5</guid>
      <description>&lt;p&gt;In December 2024, &lt;a href="https://github.com/invertase/notifee" rel="noopener noreferrer"&gt;Notifee&lt;/a&gt; stopped receiving updates. In April 2026, Invertase officially archived the repository. If you shipped a React Native app that depended on Notifee’s advanced Android features such as foreground services, rich styles, progress indicators and full-screen intents, this left a real gap with no clean migration path.&lt;/p&gt;

&lt;p&gt;I ran into that gap directly. My workout tracking app relies on local notifications and foreground-service timers to keep set counters and rest timers running when the screen is off. The official alternative, &lt;code&gt;expo-notifications&lt;/code&gt;, doesn’t support foreground services. For this class of apps, there wasn’t a viable replacement.&lt;/p&gt;

&lt;p&gt;So I forked Notifee, migrated it to React Native’s New Architecture (TurboModules), and started fixing long-standing issues that had accumulated in the upstream tracker. The result is &lt;a href="https://github.com/marcocrupi/react-native-notify-kit" rel="noopener noreferrer"&gt;&lt;code&gt;react-native-notify-kit&lt;/code&gt;&lt;/a&gt;, which Invertase now links from their archived README as a community-maintained drop-in replacement.&lt;/p&gt;

&lt;p&gt;This post isn’t a catalogue of every fix, and it’s not a takedown of the original library. The &lt;a href="https://github.com/marcocrupi/react-native-notify-kit/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;CHANGELOG&lt;/a&gt; has the full, detailed list. What follows is a clear picture of what the fork is, what problems it solves, and when you should (or shouldn’t) use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this fork actually gives you
&lt;/h2&gt;

&lt;p&gt;A few things matter immediately when evaluating whether this is relevant to your app.&lt;/p&gt;

&lt;p&gt;It’s a true drop-in replacement. The public API is fully compatible with &lt;code&gt;@notifee/react-native&lt;/code&gt;. Migration is literally a find-and-replace on the import path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn remove @notifee/react-native
yarn add react-native-notify-kit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- import notifee from '@notifee/react-native';
&lt;/span&gt;&lt;span class="gi"&gt;+ import notifee from 'react-native-notify-kit';
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default export is intentionally still called &lt;code&gt;notifee&lt;/code&gt;, so your existing code keeps compiling unchanged. That said, runtime behavior is not identical in all cases. Some changes are explicitly marked as BREAKING in the CHANGELOG. For example, apps using &lt;code&gt;asForegroundService: true&lt;/code&gt; on Android 14+ must declare a &lt;code&gt;foregroundServiceType&lt;/code&gt; in their AndroidManifest, or the library will fail fast with a clear error. Other changes include immediate foreground service notifications on Android 12+, different DELIVERED event behavior on iOS, and default pressAction values on Android. Read the CHANGELOG if your app depends on specific runtime behavior.&lt;/p&gt;

&lt;p&gt;It’s built for modern React Native. The library targets the New Architecture only. The Android bridge has been rewritten in Kotlin as a TurboModule, while the iOS bridge now conforms to TurboModules using JSI. There is no support for the legacy Bridge. Minimum supported React Native version is 0.73, with a development target of 0.84. This wasn't just a refactor. Upstream Notifee was built against the legacy Bridge/NativeModules API, and although React Native's Interop Layer still lets old-style modules run under Bridgeless mode, upstream Notifee hasn't been tested or validated against any React Native version newer than 0.73 (its last release was December 2024, well before 0.84 shipped in February 2026). Relying on the interop layer indefinitely for a library that's no longer receiving updates isn't a position you want to be in for a production app, which is why this fork was rewritten natively against the TurboModule APIs on both platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It fixes real production issues, not just edge cases&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Without turning this into a changelog, here are the main categories of problems that have been addressed so far:&lt;/p&gt;

&lt;p&gt;• Inconsistent or broken event delivery between iOS and Android&lt;br&gt;
• Foreground service instability and delayed notifications on Android 12+&lt;br&gt;
• Trigger notifications failing under modern Android constraints such as Doze mode, permission changes and OEM behavior&lt;br&gt;
• Interoperability issues with &lt;code&gt;@react-native-firebase/messaging&lt;/code&gt;&lt;br&gt;
• iOS delegate and lifecycle edge cases causing lost events or incorrect behavior&lt;/p&gt;

&lt;p&gt;If you’ve used Notifee in production, these are the kinds of problems you end up working around manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this fits vs &lt;code&gt;expo-notifications&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;When Invertase archived Notifee, they pointed developers to two options: &lt;code&gt;expo-notifications&lt;/code&gt; and this fork. They solve different problems.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;expo-notifications&lt;/code&gt; if you are on Expo, if you only need standard local or push notifications, or if your use case doesn’t require deep Android control. It is actively maintained, simpler to integrate, and the right choice for most apps.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;react-native-notify-kit&lt;/code&gt; if your app depends on advanced Android capabilities. This includes foreground services for long-running tasks, advanced notification styles such as BigPicture or Messaging, progress notifications, persistent notifications, or full-screen intents like alarm or call screens.&lt;/p&gt;

&lt;p&gt;In practice, if you were already using Notifee for non-trivial reasons, you likely still need those features. This fork exists so you don’t have to give them up.&lt;/p&gt;

&lt;p&gt;Other libraries cover different parts of the stack. &lt;code&gt;@react-native-firebase/messaging&lt;/code&gt; handles push delivery but does not provide full control over local notifications. &lt;code&gt;react-native-push-notification&lt;/code&gt; was archived in January 2025 (read-only repository). This fork integrates cleanly with Firebase Messaging and resolves a long-standing iOS compatibility issue between the two.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this exists (and what it’s not)
&lt;/h2&gt;

&lt;p&gt;This is not a rewrite and not a new abstraction layer. The core notification logic from Notifee is preserved. The work here focuses on keeping that core usable on modern React Native, fixing issues that block real-world apps, and making behavior more predictable across platforms.&lt;/p&gt;

&lt;p&gt;There’s no claim that this replaces every other solution. The goal is more pragmatic. If your app depended on Notifee’s advanced feature set, you should be able to keep building without rewriting your notification system.&lt;/p&gt;

&lt;p&gt;Long term, the direction is incremental. Improve reliability, close gaps where it makes sense, and reduce the number of hard limitations developers run into.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to try it
&lt;/h2&gt;

&lt;p&gt;If your app currently uses &lt;code&gt;@notifee/react-native&lt;/code&gt;, the migration is straightforward. The real value is seeing whether your existing issues disappear or at least become easier to reason about.&lt;/p&gt;

&lt;p&gt;If you try it, useful contributions include reporting successful migrations, reporting issues with clear reproduction steps, and sharing bugs you previously worked around.&lt;/p&gt;

&lt;p&gt;That feedback loop is what turns a fork into a maintained project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/marcocrupi/react-native-notify-kit" rel="noopener noreferrer"&gt;https://github.com/marcocrupi/react-native-notify-kit&lt;/a&gt;&lt;br&gt;
npm: &lt;a href="https://www.npmjs.com/package/react-native-notify-kit" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/react-native-notify-kit&lt;/a&gt;&lt;br&gt;
README: &lt;a href="https://github.com/marcocrupi/react-native-notify-kit/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/marcocrupi/react-native-notify-kit/blob/main/README.md&lt;/a&gt;&lt;br&gt;
CHANGELOG: &lt;a href="https://github.com/marcocrupi/react-native-notify-kit/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/marcocrupi/react-native-notify-kit/blob/main/CHANGELOG.md&lt;/a&gt;&lt;br&gt;
Original Notifee (archived): &lt;a href="https://github.com/invertase/notifee" rel="noopener noreferrer"&gt;https://github.com/invertase/notifee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks to Invertase for building the original library. This fork exists because it’s still worth using and worth maintaining.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>refactoring</category>
      <category>opensource</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
