Conversation
🦋 Changeset detectedLatest commit: 3070cd1 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This stack of pull requests is managed by Graphite. Learn more about stacking. |
…d of local duplicate Remove the locally defined NotificationBehavior type in utils.ts and import it from getNotificationsModule, which derives it from the expo-notifications namespace. This prevents the local type from silently diverging if the canonical type evolves (e.g. shouldShowAlert deprecation in SDK 55).
… unavailable When requestPushPermission returns 'unavailable' (e.g. Android Expo Go), bail early instead of falling through to the 'User may have denied the permission' warning, which is incorrect in that context.
…tion paths Add tests covering: - getNotificationsModule returns null and warns on Android Expo Go - getNotificationsModule caches null result and only warns once - utils.requestPushPermission returns 'unavailable' when module is null - utils.getExpoPushToken returns null when module is null - utils.setupDefaultAndroidChannel no-ops when module is null - utils.registerForPushNotifications bails silently on 'unavailable' status - utils.registerForPushNotifications warns on denied permission
…encies Exact version pins in published library dependencies can cause duplicate native module installs for consumers. Use ~15.15.3 for consistency with other deps in the same block. Addresses comment by @cursor: exact version pin on library dependency
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #926 +/- ##
==========================================
+ Coverage 64.61% 64.89% +0.28%
==========================================
Files 207 208 +1
Lines 9711 9769 +58
Branches 1254 1274 +20
==========================================
+ Hits 6275 6340 +65
+ Misses 3411 3404 -7
Partials 25 25
|
| return cachedModule; | ||
| } | ||
|
|
||
| if (isAndroidExpoGo()) { |
There was a problem hiding this comment.
Should this have a version check as well? E.g. checking the package version that they're running or the android device version?

Description
Upgrades Expo SDK from 53 to 55 across
@knocklabs/expo,@knocklabs/react-native, and the example app.Dependency upgrades:
expo-*packages to their SDK 55 equivalentsreact-native-reanimatedfrom 3.x to 4.x and addreact-native-worklets(both bundled in Expo Go)react-native-svgto ~15.15.3 (fixesbufferimport error on iOS)react-native-gesture-handler,react-native-screens,react-native-safe-area-context, navigation packages to SDK 55 compatible versions@expo/log-box(new peer dep from expo-router 55)Config changes:
newArchEnabledfromapp.json(default/only option in SDK 55)edgeToEdgeEnabledfromapp.json(field removed in SDK 55)reactCanaryexperiment (React 19.2 is now stable)Android Expo Go push notification handling:
expo-notificationsviagetNotificationsModule()to avoid a crash on Android Expo Go, where Expo removed remote push notification support in SDK 53 and made it a hard throw in SDK 55Constants.executionEnvironmentbefore attemptingrequire()— the module's top-level side-effect throws in a way that bypasses JavaScript try/catchconsole.warnexplaining the limitation and linking to the development build docs