Skip to content

[notifications]: fix crash in NotificationForwarderActivity on Android 11/12#43203

Merged
vonovak merged 2 commits intomainfrom
vonovak/fix-notification-forwarder-null-extras
Feb 17, 2026
Merged

[notifications]: fix crash in NotificationForwarderActivity on Android 11/12#43203
vonovak merged 2 commits intomainfrom
vonovak/fix-notification-forwarder-null-extras

Conversation

@vonovak
Copy link
Copy Markdown
Contributor

@vonovak vonovak commented Feb 17, 2026

due to Parcelable deserialization failures

Why

closes #38908

How

On some Android versions (especially 11 and 12), custom Parcelable extras stored in a PendingIntent can come back as null when the system delivers the intent to NotificationForwarderActivity. This causes a
crash when the user taps a notification. This PR adds byte array serialization of the notification and action data alongside the existing Parcelable extras. When the Parcelable extras are null, the code falls
back to deserializing from the byte arrays. As a safety net, NotificationForwarderActivity also catches the failure and opens the app instead of crashing.

Test Plan

  • tests run in CI

Checklist

@github-actions
Copy link
Copy Markdown
Contributor

Subscribed to pull request

File Patterns Mentions
packages/expo-notifications/** @douglowder

Generated by CodeMention

@vonovak vonovak requested a review from douglowder February 17, 2026 10:01
@expo-bot expo-bot added the bot: suggestions ExpoBot has some suggestions label Feb 17, 2026
Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
@expo-bot expo-bot added bot: passed checks ExpoBot has nothing to complain about and removed bot: suggestions ExpoBot has some suggestions labels Feb 17, 2026
@expo-bot
Copy link
Copy Markdown
Collaborator

The Pull Request introduced fingerprint changes against the base commit: cac0c20

Fingerprint diff
[
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-notifications/android",
      "reasons": [
        "expoAutolinkingAndroid"
      ],
      "hash": "66fa608c0e01aebbcb5d835af63b19c8fdbce3b9"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-notifications/android",
      "reasons": [
        "expoAutolinkingAndroid"
      ],
      "hash": "9caf67006de510b0ef5aaaa31ac795e2d5b8690d"
    }
  }
]

Generated by PR labeler 🤖

@vonovak vonovak merged commit 800a991 into main Feb 17, 2026
24 checks passed
@vonovak vonovak deleted the vonovak/fix-notification-forwarder-null-extras branch February 17, 2026 10:33
benjaminkomen pushed a commit to benjaminkomen/expo that referenced this pull request Feb 25, 2026
…d 11/12 (expo#43203)

due to Parcelable deserialization failures

# Why

closes expo#38908

# How

On some Android versions (especially 11 and 12), custom Parcelable
extras stored in a PendingIntent can come back as null when the system
delivers the intent to NotificationForwarderActivity. This causes a
crash when the user taps a notification. This PR adds byte array
serialization of the notification and action data alongside the existing
Parcelable extras. When the Parcelable extras are null, the code falls
back to deserializing from the byte arrays. As a safety net,
NotificationForwarderActivity also catches the failure and opens the app
instead of crashing.

# Test Plan

- tests run in CI

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot: fingerprint changed bot: passed checks ExpoBot has nothing to complain about

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[expo-notifications] IllegalArgumentException: notification and action should not be null

3 participants