A React Native module that provides native alarm scheduling capabilities
npm install rn-alarm-kit> ## 🚧 Under Construction 🚧
>
> ⚠️ This library is currently under active development and is not yet production-ready.
>
> - 🔨 APIs may change without notice
> - 📝 Documentation is being improved
> - 🐛 Known issues are being addressed
> - ✨ New features are being added
>
> Use at your own risk in production environments.
A React Native module that provides native alarm scheduling capabilities using iOS 26's AlarmKit framework. Create powerful, system-level alarms with one-time or recurring schedules and custom UI presentations.
| Platform | Status | Minimum Version |
| -------- | -------------- | --------------- |
| iOS | ✅ Supported | iOS 26.0+ |
| Android | 🔜 Coming Soon | TBA |
Note: Android support is planned for a future release.
- ✅ Schedule alarms at specific times (24-hour format)
- ✅ One-time or recurring alarms (weekly schedule)
- ✅ Custom alarm UI with title, buttons, and colors
- ✅ Request alarm authorization
- ✅ List all scheduled alarms
- ✅ Cancel all alarms
- ✅ Built with Expo Modules for seamless integration
- iOS 26.0+
- React Native with Expo
- Xcode 26.0+
``bash`
npm install rn-alarm-kit
Or with yarn:
`bash`
yarn add rn-alarm-kit
Add the following to your Info.plist:
`xml`
Update your Podfile to set the minimum iOS version:
`ruby`
platform :ios, '26.0'
Then run:
`bash`
cd ios && pod install
Before scheduling alarms, request user authorization:
`typescript
import ReactNativeAlarmkit from "rn-alarm-kit";
const authorized = await ReactNativeAlarmkit.requestAuthorization();
if (authorized) {
console.log("Alarm permissions granted");
}
`
`typescript
// Schedule alarm for 8:30 AM (one-time)
const alarmId = await ReactNativeAlarmkit.scheduleAlarm(
8, // hour (0-23)
30, // minute (0-59)
null // no repeat days
);
console.log("Alarm scheduled:", alarmId);
`
`typescript`
// Schedule alarm for 7:00 AM on Monday, Wednesday, Friday
const alarmId = await ReactNativeAlarmkit.scheduleAlarm(
7, // hour
0, // minute
[2, 4, 6] // days: 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=Fri, 7=Sat
);
`typescript`
// Schedule alarm for 6:00 AM every day
const alarmId = await ReactNativeAlarmkit.scheduleAlarm(
6, // hour (6:00 AM)
0, // minute
[1, 2, 3, 4, 5, 6, 7] // All days of the week
);
#### Weekends Only
`typescript`
// Schedule alarm for 9:00 AM on weekends
const alarmId = await ReactNativeAlarmkit.scheduleAlarm(
9, // hour (9:00 AM)
0, // minute
[1, 7] // 1=Sunday, 7=Saturday
);
`typescript
const alarms = ReactNativeAlarmkit.listAlarms();
// Returns array of alarm objects:
// [
// {
// id: "UUID-STRING",
// state: "scheduled",
// scheduledTime: "08:30 (Mon, Wed, Fri)"
// }
// ]
`
TODO
`typescriptCancelled ${result.cancelledCount} alarms
const result = ReactNativeAlarmkit.cancelAllAlarms();
console.log();`
Requests permission to schedule alarms. Returns true if authorized, false otherwise.
Schedules an alarm and returns its unique ID.
Parameters:
- hour (0-23): Hour in 24-hour formatminute
- (0-59): MinuterepeatDays
- (optional): Array of days to repeat (1=Sunday, 2=Monday, ..., 7=Saturday). Pass null or empty array for one-time alarm.
Returns: Alarm UUID as a string
Returns all scheduled alarms.
Returns: Array of objects with:
- id: Alarm UUIDstate
- : Current alarm state (e.g., "scheduled", "alerting")scheduledTime
- : Formatted time and repeat days (e.g., "08:30 (Mon, Wed)")
Cancels all scheduled alarms.
Returns: Object with success status and count of cancelled alarms
See the example app for a complete implementation with a UI for:
- Day selection checkboxes
- Time input (hour and minute)
- Alarm listing
- Cancel all functionality
When scheduling recurring alarms, use these numbers:
- 1 - Sunday2
- - Monday3
- - Tuesday4
- - Wednesday5
- - Thursday6
- - Friday7
- - Saturday
All times use 24-hour format:
- 0 = midnight (12:00 AM)12
- = noon (12:00 PM)23` = 11:00 PM
-
Currently iOS only (requires iOS 26.0+). Android support to be added at some point in the near feature
Contributions are welcome! Please open an issue or submit a pull request.
MIT
Wael Fadlallah (@wael-fadlallah)
- GitHub Repository
- Report Issues
- Apple AlarmKit Documentation