Repository navigation
10.2.0
·
293 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- React Native:
TimestampTrigger.repeatIntervalfor calendar-based custom repeat intervals on timestamp triggers. Timestamp triggers now support custom repeat intervals such as every 2 days, every 2 weeks, and every 3 months from the selected start timestamp. - React Native:
RepeatFrequency.MONTHLYfor monthly timestamp trigger recurrence. Yearly recurrence is not supported. - iOS: custom repeat intervals are implemented with a bounded rolling schedule of one-shot local notifications, with top-up when the app becomes active, when the user interacts with a notification, or when a rolling notification is delivered in foreground.
Changed
- iOS: removed the legacy
UILocalNotificationlaunch-options fallback from the initial-notification path. Supported iOS versions use the modernUNUserNotificationCenterDelegate/UNNotificationResponsepath for notification taps andgetInitialNotification(). - iOS: migrated deprecated SiriKit call intent identifiers to Apple's unified
INStartCallIntentIdentifier. The publicIOSIntentIdentifier.START_CALLshould be used for notification category intent identifiers. LegacySTART_AUDIO_CALLandSTART_VIDEO_CALLvalues remain accepted for compatibility, but now map to the unified call intent identifier.getNotificationCategories()can returnSTART_CALLwhen reading back call intent categories from iOS. - iOS: deprecated announcement and notification-summary options are now treated as compatibility no-ops on supported iOS versions. Explicit announcement authorization requests are no longer needed because announcement authorization is included by iOS on supported versions, while notification summary arguments are ignored by iOS 15+. The JS fields remain available for backward compatibility and are marked as deprecated in the TypeScript reference.
- iOS:
foregroundPresentationOptions.alertis now implemented with the modern banner/list presentation options on supported iOS versions instead of calling the deprecatedUNNotificationPresentationOptionAlert. The JS option remains available for backward compatibility. - iOS behavior change: repeating
TimestampTriggernotifications now use a bounded rolling schedule of one-shot local notifications instead of a native repeatingUNCalendarNotificationTrigger. This makes custom repeat intervals (repeatInterval) andRepeatFrequency.MONTHLYpossible, respects the selected start timestamp, and rebalances the rolling pending-notification budget across active series. Apps that relied on iOS native repeating calendar triggers being scheduled indefinitely should review the new iOS rolling-window behavior: the library keeps upcoming occurrences scheduled and tops them up when the app becomes active, when the user interacts with a notification, or when a rolling notification is delivered in foreground. iOS does not wake an app merely because a local notification was delivered while the app is killed or suspended, so the rolling window cannot be extended indefinitely unless the app runs again. - Android: timestamp trigger recurrence now advances by
repeatFrequency * repeatIntervalusing calendar-aware scheduling. Existing triggers withoutrepeatIntervalkeep the previous behavior with interval1. - Tooling:
yarn gen:referencenow formats generated reference docs with Prettier so repeated runs are idempotent. The smoke app also has a dedicated Jest setup for a lightweight import/render gate, with owned iOS build warnings cleaned up.
Fixed
- iOS: rolling timestamp triggers now rebalance the bounded pending-notification window across all active rolling series. This prevents earlier recurring triggers from consuming the entire iOS pending budget and blocking later triggers such as
DAILY + repeatInterval: 2,WEEKLY + repeatInterval: 2, andMONTHLY + repeatInterval: 3from coexisting. - Android: cleaned up owned build/lint warnings by modernizing Gradle assignment syntax, replacing deprecated React Native activity access in the Kotlin bridge, adding an explicit action guard to
RebootBroadcastReceiver, usingLocale.ROOTfor resource-name normalization, and removing the invalid smoke-appFOREGROUND_SERVICE_SHORT_SERVICEpermission.
Notes
- Android:
RepeatFrequency.MONTHLYis supported with AlarmManager. It is not supported withalarmManager: false, because WorkManager uses duration-based intervals and does not provide calendar-month recurrence semantics. - iOS: custom repeat intervals cannot be extended indefinitely while the app remains killed/suspended and the user never interacts with notifications, because iOS does not wake the app merely when a local notification is delivered.
📦 npm: https://www.npmjs.com/package/react-native-notify-kit/v/10.2.0