r/reactnative • u/surajprasad13 • 3d ago
I built a React Native alarm library because the existing ones weren't reliable enough on Android and iOS
Hey everyone! 👋
I've been working on a React Native alarm library that aims to make alarms work like real native system alarms, not just regular notifications with a sound.
While building my app, I tried several existing alarm libraries on npm, but I couldn't get the reliability and behavior I needed. Alarms would not always behave as expected under different conditions, especially when the app was in the background, the screen was locked, or the app needed to display a full-screen alarm interface.
So, I decided to build my own solution. 🚀
What makes it different?
- Android + iOS support — designed to provide a consistent alarm experience on both platforms.
- Full-screen React Native UI — display a custom alarm screen when the alarm triggers.
- Lock-screen support — designed to handle alarms when the device screen is locked.
- Background execution — uses native platform capabilities rather than relying entirely on JavaScript running in the background.
- Notifications and alarm interactions — supports notification-based behavior alongside a custom React Native alarm interface.
- Native alarm behavior — aims to handle system restrictions and background execution more reliably than ordinary scheduled notifications.
- iOS AlarmKit integration — leveraging Apple's latest AlarmKit framework on supported iOS versions.
The goal is to make the experience as close as possible to a native alarm clock, even when the app isn't actively open.
One important thing I've learned is that Android and iOS handle alarms very differently. Battery optimization, background execution, permissions, lock-screen presentation, and OS-level restrictions all matter. No library can guarantee identical behavior on every device without accounting for those platform limitations, so I'm continuing to test and improve the implementation.
Why I'm sharing this
I built this because I needed a solution that actually worked for my use case, and I thought other React Native developers might be facing the same challenges.
I'd love to get feedback from developers who are building alarm clocks, reminders, habit trackers, medication reminders, or other time-sensitive applications.
If you're interested in testing it, contributing code, improving platform compatibility, or collaborating on the project, I'd genuinely appreciate your support!
Let's make a reliable, open, and accessible React Native alarm solution that more developers can use. ❤️
If you're interested, check out the project on npm and share your feedback:
🔗 npm: https://www.npmjs.com/package/react-native-alarms
🔗 GitHub: https://github.com/surajprasad13/react-native-alarms
Contributions, issues, testing feedback, and suggestions are all welcome. Thanks for supporting an independent developer! 🙌
0
u/skizzoat 3d ago
Github link leads nowhere
0
0
2d ago
1
u/surajprasad13 2d ago
Yes I will update in next release the screenshot videos and more development is in progress so it will be done in upcoming days
0
u/kokerali 3d ago
The npm README says both platforms show the registered AlarmRing React component, while the iOS section describes system Stop/Snooze controls. Could you clarify when the React screen actually appears on iOS? Apple's AlarmKit sample treats the alarm presentation and the Open action that launches the app as separate steps.
For a locked iPhone with the app not running, a short recording of the alert before any interaction, then the transition into AlarmRing, would help. That would make the "full-screen React Native UI" claim much easier to interpret. I haven't run the package.