Vigia

Upgrading expo-notifications from 57.x to 58.x

Comparison of the public API of expo-notifications 57.0.23 and 58.1.4, computed automatically from their TypeScript types. A changed signature is a candidate for a breaking change, not a certainty.

Summary

Removed import paths0
Removed exports0
Changed signatures7
Removed class or interface members0
Changed class or interface members0
Newly deprecated0
Requirement changes (engines, peer dependencies)0
New exports3

Removed exports

None detected.

Changed signatures

exportBeforeAfter
expo-notifications · DateTriggerInput{ type: SchedulableTriggerInputTypes.DATE; date: number | Date; channelId?: string | undefined; }{ type: SchedulableTriggerInputTypes.DATE; date: number | Date; channelId?: string | undefined; delivery?: NotificationDelivery | undefined; }
expo-notifications · DailyTriggerInput{ type: SchedulableTriggerInputTypes.DAILY; channelId?: string | undefined; hour: number; minute: number; }{ type: SchedulableTriggerInputTypes.DAILY; channelId?: string | undefined; hour: number; minute: number; delivery?: NotificationDelivery | undefined; }
expo-notifications · WeeklyTriggerInput{ type: SchedulableTriggerInputTypes.WEEKLY; channelId?: string | undefined; weekday: number; hour: number; minute: number; }{ type: SchedulableTriggerInputTypes.WEEKLY; channelId?: string | undefined; weekday: number; hour: number; minute: number; delivery?: NotificationDelivery | undefined; }
expo-notifications · YearlyTriggerInput{ type: SchedulableTriggerInputTypes.YEARLY; channelId?: string | undefined; day: number; month: number; hour: number; minute: number; }{ type: SchedulableTriggerInputTypes.YEARLY; channelId?: string | undefined; day: number; month: number; hour: number; minute: number; delivery?: NotificationDelivery | undefined; }
expo-notifications · MonthlyTriggerInput{ type: SchedulableTriggerInputTypes.MONTHLY; channelId?: string | undefined; day: number; hour: number; minute: number; }{ type: SchedulableTriggerInputTypes.MONTHLY; channelId?: string | undefined; day: number; hour: number; minute: number; delivery?: NotificationDelivery | undefined; }
expo-notifications · NotificationContentInput{ title?: string | null | undefined; subtitle?: string | null | undefined; body?: string | null | undefined; data?: Record<string, unknown> | undefined; badge?: number | undefined; sound?: boolean | "default" | "defaultCritical" | "defaultRingtone" | (string & {}) | undefined; launchImageName?: string | undefined; vibrate?: number[] | undefined; priority?: string | undefined; color?: string | undefined; autoDismiss?: boolean | undefined; categoryIdentifier?: string | undefined; sticky?: boolean | undefined; attachments?: NotificationContentAttachmentIos[] | undefined; interruptionLevel?: Inter…{ title?: string | null | undefined; subtitle?: string | null | undefined; body?: string | null | undefined; data?: Record<string, unknown> | undefined; badge?: number | undefined; sound?: boolean | "default" | "defaultCritical" | "defaultRingtone" | (string & {}) | undefined; launchImageName?: string | undefined; vibrate?: number[] | undefined; priority?: string | undefined; color?: string | undefined; autoDismiss?: boolean | undefined; categoryIdentifier?: string | undefined; threadIdentifier?: string | undefined; sticky?: boolean | undefined; attachments?: NotificationContentAttachmentIos[]…
expo-notifications · NotificationContentAndroid{ badge?: number | undefined; color?: string | undefined; priority?: AndroidNotificationPriority | undefined; vibrationPattern?: number[] | undefined; }{ badge?: number | undefined; color?: string | undefined; priority?: AndroidNotificationPriority | undefined; vibrationPattern?: number[] | undefined; threadIdentifier: string | null; }

Removed class or interface members

None detected.

Changed class or interface members

None detected.

Newly deprecated

None detected.

Requirement changes (engines, peer dependencies)

None detected.

New exports (3)
importexportkind
expo-notificationsNotificationDeliverytype
expo-notificationsgetExactAlarmPermissionsAsyncfunction
expo-notificationsrequestExactAlarmPermissionsAsyncfunction

Changelog between these versions

Text published by the package authors, shown as-is.

58.1.4
### Patch Changes

- Updated dependencies.
  - @expo/image-utils@0.12.5
  - expo-constants@58.0.12
58.1.3
### Patch Changes

- [iOS] Fix a crash (`EXC_BAD_ACCESS` in `__RawDictionaryStorage.find`) when the JS notification handler responds while the same foreground notification times out or another one arrives, by handling `handleNotificationAsync` on the main queue. ([#51370](https://github.com/expo/expo/pull/51370) by [@GersonRocha9](https://github.com/GersonRocha9))
- Updated dependencies. ([#51368](https://github.com/expo/expo/pull/51368), [#49784](https://github.com/expo/expo/pull/49784))
  - expo-application@58.1.1
  - expo-constants@58.0.11
58.1.2
### Patch Changes

- Updated dependencies. ([#51209](https://github.com/expo/expo/pull/51209))
  - expo-application@58.1.0
58.1.1
### Patch Changes

- [Android] Add support for grouping notifications via `threadIdentifier`. ([#43388](https://github.com/expo/expo/pull/43388) by [@vonovak](https://github.com/vonovak))
- [Android] Add `getExactAlarmPermissionsAsync` and `requestExactAlarmPermissionsAsync` to check and request the exact alarm permission. ([#50919](https://github.com/expo/expo/pull/50919) by [@vonovak](https://github.com/vonovak))
- [Internal] [Android] Return notification permission responses as records instead of bundles. ([#51060](https://github.com/expo/expo/pull/51060) by [@vonovak](https://github.com/vonovak))
- Updated dependencies. ([#51077](https://github.com/expo/expo/pull/51077))
  - expo-application@58.0.4
  - @expo/image-utils@0.12.4
  - expo-constants@58.0.10
58.1.0
### Minor Changes

- Add `enableRemoteNotifications` config plugin option. Set it to `false` to skip the APNs entitlement for apps that use only local notifications. Defaults to `true`. ([#50891](https://github.com/expo/expo/pull/50891) by [@netmaxt3r](https://github.com/netmaxt3r))

### Patch Changes

- Updated dependencies. ([#50391](https://github.com/expo/expo/pull/50391))
  - @expo/image-utils@0.12.3
58.0.11
### Patch Changes

- Bump precompiled artifacts due to ABI breakage in expo-modules-jsi@58.0.6. ([#50881](https://github.com/expo/expo/pull/50881) by [@kitten](https://github.com/kitten))
- Updated dependencies. ([#50881](https://github.com/expo/expo/pull/50881))
  - expo-application@58.0.3
58.0.10
### Patch Changes

- Allow native push token requests to retry after a transient failure while preserving shared in-flight requests. ([#50848](https://github.com/expo/expo/pull/50848) by [@JoaoPauloCMarra](https://github.com/JoaoPauloCMarra))
- [Android] Fix notification action buttons going missing after an app update that changes R8 minification, until the app is opened again. ([#50799](https://github.com/expo/expo/pull/50799) by [@icoric4](https://github.com/icoric4))
58.0.9
### Patch Changes

- Force-bump all packages, due to migration to changesets. ([#50762](https://github.com/expo/expo/pull/50762) by [@kitten](https://github.com/kitten))
- Updated dependencies. ([#50762](https://github.com/expo/expo/pull/50762), [#49511](https://github.com/expo/expo/pull/49511), [#50661](https://github.com/expo/expo/pull/50661))
  - @expo/image-utils@0.12.2
  - expo-application@58.0.2
  - expo-constants@58.0.9
58.0.8
_This version does not introduce any user-facing changes._
58.0.7
_This version does not introduce any user-facing changes._
58.0.6
_This version does not introduce any user-facing changes._
58.0.5
_This version does not introduce any user-facing changes._
58.0.4
_This version does not introduce any user-facing changes._
58.0.3
_This version does not introduce any user-facing changes._
58.0.2
_This version does not introduce any user-facing changes._
58.0.1
_This version does not introduce any user-facing changes._
58.0.0
### 🛠 Breaking changes

- Show notifications that arrive while the app is in the foreground, unless the app asks for another behavior with `setNotificationHandler`. A handler that doesn't answer within 3 seconds no longer drops the notification. `setNotificationHandler(null)` still stops `expo-notifications` from showing a notification. ([#49072](https://github.com/expo/expo/pull/49072) by [@vonovak](https://github.com/vonovak))
- [Android] Prevent an FCM `dataString` field from overriding the notification's derived data. ([#49274](https://github.com/expo/expo/pull/49274) by [@vonovak](https://github.com/vonovak))

### 🎉 New features

- [android] Add a `delivery` option to `DateTriggerInput` and the repeating wall-clock triggers (`DailyTriggerInput`, `WeeklyTriggerInput`, `MonthlyTriggerInput`, `YearlyTriggerInput`). Set it to `'alarmClock'` to deliver the notification via `AlarmManager.setAlarmClock()`, which OEM battery policies do not defer. Intended for time-critical, user-facing alarms. ([#49687](https://github.com/expo/expo/pull/49687) by [@capt-muji](https://github.com/capt-muji))
- [ios] Forward notification center calls to a `UNUserNotificationCenterDelegate` that another library set, so that both libraries keep working. ([#48313](https://github.com/expo/expo/pull/48313) by [@vonovak](https://github.com/vonovak))
- [ios] Add support for grouping notifications via `threadIdentifier`. ([#49429](https://github.com/expo/expo/pull/49429) by [@vonovak](https://github.com/vonovak))
- [Android] Add a `largeIcon` config plugin property that sets the notification large icon. ([#49481](https://github.com/expo/expo/pull/49481) by [@expo-bot](https://github.com/expo-bot))

### 🐛 Bug fixes

- [Android] Prevent a crash when reading the notification large icon from a manifest without meta-data. ([#49273](https://github.com/expo/expo/pull/49273) by [@vonovak](https://github.com/vonovak))
- [iOS] Fix a data race on `NotificationCenterManager`'s delegate list that crashed the app with `SIGSEGV` when one app context registered its modules while another tore its own down, such as on a dev-client reload or `Updates.reloadAsync()`. [#49554](https://github.com/expo/expo/pull/49554) by [@dennytosp](https://github.com/dennytosp))
- [Android] Prevented `onUserLeaveHint` from firing when a notification tap opens the app, which made picture-in-picture implementations enter PiP unexpectedly. ([#48471](https://github.com/expo/expo/pull/48471) by [@stareezy-1](https://github.com/stareezy-1))
- [iOS] Avoid warning when an aborted push token registration request rejects with a native fetch cancellation error. ([#48547](https://github.com/expo/expo/pull/48547) by [@JoaoPauloCMarra](https://github.com/JoaoPauloCMarra))
- [Android] Prevent a crash on notification tap when `getLaunchIntentForPackage` throws on some OEM ROMs. ([#47889](https://github.com/expo/expo/pull/47889) by [@nunocaseiro](https://github.com/nunocaseiro))
- [web] Fixed crash when browser storage is blo

Give your AI agent these facts

Vigia is a free MCP server: your coding agent checks versions, breaking changes and vulnerabilities before it writes code. No signup, no API key.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Add to CursorAdd to VS Code★ Star on GitHub

Any other MCP client
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Agent skill (SKILL.md): tells the agent when to use Vigia · GitHub Action for pull requests

Frequently asked questions

What are the breaking changes when upgrading expo-notifications from 57 to 58?

Between expo-notifications 57.0.23 and 58.1.4, Vigia found 0 removed exports, 7 changed signatures and 0 removed or changed class or interface members.

What became deprecated in expo-notifications 58?

0 exports or members are newly marked as deprecated in expo-notifications 58.1.4.

For agents

GET https://vigia.coredls.cloud/v1/packages/npm/expo-notifications/upgrade?from=57.0.23&to=58.1.4