Skip to content

feat: update notification-services-controller to support new Segment schema - #8944

Merged
zelkibuilds merged 25 commits into
mainfrom
feat/update-notifications-controller
Jul 21, 2026
Merged

feat: update notification-services-controller to support new Segment schema#8944
zelkibuilds merged 25 commits into
mainfrom
feat/update-notifications-controller

Conversation

@zelkibuilds

@zelkibuildszelkibuilds commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Explanation

Implements the notification-services-controller portion of the notifications-analytics rework (PLAN §5): push events expose first-class analytics fields, and the in-app model gains a notification_subtype.

  • §5.1 — Push parsing.web/push-utils.ts now reads the top-level FCM fields via toPushAnalyticsPayload instead of JSON-parsing data["data"] behind the isOnChainRawNotification gate. All push kinds (on-chain/platform/snap/feature-announcement) flow through one path; the §5.5 banner-display gap goes away.
  • §5.2 — Push event payload. Added PushAnalyticsPayload (notification_id, notification_type, notification_subtype, profile_id?, chain_id?, deeplink?). Both push events (onNewNotifications, pushNotificationClicked) now carry [PushAnalyticsPayload]; createSubscribeToPushNotifications handler signatures updated to match.
  • §5.3 — In-app subtype (model enrich). Added a required notification_subtype field to BaseNotification/INotification, populated in the processors via a new getNotificationSubtype(n) helper (on-chain kind / snap / features_announcement / platform fallback). Type-checking guarantees every processed notification carries it. id/type are
    unchanged.
  • §5.5 — Removed the metadata parsing path and the nested blob.
  • Inbox-on-push. The push payload no longer carries the notification body, so the onNewNotifications subscriber now re-fetches via fetchAndUpdateMetamaskNotifications() instead of inserting the payload.

Open questions

  • Snap IDs. Snaps still get a client-generated uuid() in processSnapNotification — keep client-side or move upstream?

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

High Risk
Breaking messenger and push subscription APIs plus a change from local push merge to API refetch for the inbox; consumers must adopt new payload shapes and coordinate with push-services FCM key format.

Overview
Aligns notification-services-controller with the notifications-analytics rework: push flows expose first-class Segment fields, and in-app notifications carry a normalized notification_subtype.

Push (breaking). Web FCM handling drops nested data["data"] / metadata parsing and builds PushAnalyticsPayload from top-level keys via toPushAnalyticsPayload. Messenger events onNewNotifications and pushNotificationClicked, plus createSubscribeToPushNotifications handlers, now pass PushAnalyticsPayload instead of INotification.

Inbox on push. Because pushes no longer include the full notification body, onNewNotifications triggers fetchAndUpdateMetamaskNotifications() instead of merging the push into the list, with coalescing so at most one fetch runs and one refetch is queued while a fetch is in flight.

In-app model.notification_subtype is required on BaseNotification / INotification, set in processors through getNotificationSubtype (on-chain kind, platform server subtype, snap / feature-announcement type). getNotificationSubtype and toPushAnalyticsPayload are exported for extension and mobile consumers.

Reviewed by Cursor Bugbot for commit ae4885f. Bugbot is set up for automated code reviews on this repo. Configure here.

@zelkibuilds
zelkibuildsforce-pushed the feat/update-notifications-controller branch from 9dbca22 to 9811cb9CompareJune 1, 2026 11:48
@zelkibuilds
zelkibuildsforce-pushed the feat/update-notifications-controller branch from e51bf05 to 16656edCompareJune 1, 2026 12:12
@zelkibuilds
zelkibuilds marked this pull request as ready for review June 3, 2026 08:44
@zelkibuilds
zelkibuilds requested review from a team as code ownersJune 3, 2026 08:44

@zelkibuildszelkibuilds left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some open questions in PR description + code

@zelkibuilds
zelkibuildsforce-pushed the feat/update-notifications-controller branch from b1c77d8 to 81b5f29CompareJune 3, 2026 10:38
@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.0-preview-81b5f29eb
@metamask-previews/accounts-controller@38.1.2-preview-81b5f29eb
@metamask-previews/address-book-controller@7.1.2-preview-81b5f29eb
@metamask-previews/ai-controllers@0.7.0-preview-81b5f29eb
@metamask-previews/analytics-controller@1.1.0-preview-81b5f29eb
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-81b5f29eb
@metamask-previews/announcement-controller@8.1.0-preview-81b5f29eb
@metamask-previews/app-metadata-controller@2.0.1-preview-81b5f29eb
@metamask-previews/approval-controller@9.0.1-preview-81b5f29eb
@metamask-previews/assets-controller@8.2.0-preview-81b5f29eb
@metamask-previews/assets-controllers@108.3.0-preview-81b5f29eb
@metamask-previews/authenticated-user-storage@2.0.0-preview-81b5f29eb
@metamask-previews/base-controller@9.1.0-preview-81b5f29eb
@metamask-previews/base-data-service@0.1.3-preview-81b5f29eb
@metamask-previews/bridge-controller@73.2.0-preview-81b5f29eb
@metamask-previews/bridge-status-controller@72.0.0-preview-81b5f29eb
@metamask-previews/build-utils@3.0.4-preview-81b5f29eb
@metamask-previews/chain-agnostic-permission@1.6.1-preview-81b5f29eb
@metamask-previews/chomp-api-service@3.1.0-preview-81b5f29eb
@metamask-previews/claims-controller@0.5.2-preview-81b5f29eb
@metamask-previews/client-controller@1.0.1-preview-81b5f29eb
@metamask-previews/compliance-controller@2.1.0-preview-81b5f29eb
@metamask-previews/composable-controller@12.0.1-preview-81b5f29eb
@metamask-previews/config-registry-controller@0.3.2-preview-81b5f29eb
@metamask-previews/connectivity-controller@0.2.0-preview-81b5f29eb
@metamask-previews/controller-utils@12.1.0-preview-81b5f29eb
@metamask-previews/core-backend@6.3.1-preview-81b5f29eb
@metamask-previews/delegation-controller@3.0.1-preview-81b5f29eb
@metamask-previews/earn-controller@12.2.0-preview-81b5f29eb
@metamask-previews/eip-5792-middleware@3.0.4-preview-81b5f29eb
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-81b5f29eb
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-81b5f29eb
@metamask-previews/ens-controller@19.1.3-preview-81b5f29eb
@metamask-previews/eth-block-tracker@15.0.1-preview-81b5f29eb
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-81b5f29eb
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-81b5f29eb
@metamask-previews/foundryup@1.0.1-preview-81b5f29eb
@metamask-previews/gas-fee-controller@26.2.2-preview-81b5f29eb
@metamask-previews/gator-permissions-controller@4.2.0-preview-81b5f29eb
@metamask-previews/geolocation-controller@0.1.3-preview-81b5f29eb
@metamask-previews/json-rpc-engine@10.5.0-preview-81b5f29eb
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-81b5f29eb
@metamask-previews/keyring-controller@26.0.0-preview-81b5f29eb
@metamask-previews/logging-controller@8.0.2-preview-81b5f29eb
@metamask-previews/message-manager@14.1.2-preview-81b5f29eb
@metamask-previews/messenger@1.2.0-preview-81b5f29eb
@metamask-previews/messenger-cli@0.2.0-preview-81b5f29eb
@metamask-previews/money-account-balance-service@1.0.2-preview-81b5f29eb
@metamask-previews/money-account-controller@0.3.1-preview-81b5f29eb
@metamask-previews/money-account-upgrade-controller@2.0.3-preview-81b5f29eb
@metamask-previews/multichain-account-service@10.0.1-preview-81b5f29eb
@metamask-previews/multichain-api-middleware@3.1.2-preview-81b5f29eb
@metamask-previews/multichain-network-controller@3.1.2-preview-81b5f29eb
@metamask-previews/multichain-transactions-controller@7.1.0-preview-81b5f29eb
@metamask-previews/name-controller@9.1.2-preview-81b5f29eb
@metamask-previews/network-controller@32.0.0-preview-81b5f29eb
@metamask-previews/network-enablement-controller@5.2.0-preview-81b5f29eb
@metamask-previews/notification-services-controller@24.1.2-preview-81b5f29eb
@metamask-previews/passkey-controller@2.0.1-preview-81b5f29eb
@metamask-previews/permission-controller@13.1.1-preview-81b5f29eb
@metamask-previews/permission-log-controller@5.1.0-preview-81b5f29eb
@metamask-previews/perps-controller@7.0.0-preview-81b5f29eb
@metamask-previews/phishing-controller@17.2.0-preview-81b5f29eb
@metamask-previews/polling-controller@16.0.6-preview-81b5f29eb
@metamask-previews/preferences-controller@23.1.0-preview-81b5f29eb
@metamask-previews/profile-metrics-controller@3.1.5-preview-81b5f29eb
@metamask-previews/profile-sync-controller@28.1.1-preview-81b5f29eb
@metamask-previews/ramps-controller@14.1.0-preview-81b5f29eb
@metamask-previews/rate-limit-controller@7.0.1-preview-81b5f29eb
@metamask-previews/react-data-query@0.2.1-preview-81b5f29eb
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-81b5f29eb
@metamask-previews/sample-controllers@5.0.1-preview-81b5f29eb
@metamask-previews/seedless-onboarding-controller@10.0.0-preview-81b5f29eb
@metamask-previews/selected-network-controller@26.1.3-preview-81b5f29eb
@metamask-previews/shield-controller@5.1.2-preview-81b5f29eb
@metamask-previews/signature-controller@39.2.3-preview-81b5f29eb
@metamask-previews/snap-account-service@0.2.1-preview-81b5f29eb
@metamask-previews/social-controllers@2.2.1-preview-81b5f29eb
@metamask-previews/storage-service@1.0.1-preview-81b5f29eb
@metamask-previews/subscription-controller@6.1.3-preview-81b5f29eb
@metamask-previews/transaction-controller@66.0.0-preview-81b5f29eb
@metamask-previews/transaction-pay-controller@23.1.0-preview-81b5f29eb
@metamask-previews/user-operation-controller@41.2.3-preview-81b5f29eb
@metamask-previews/wallet@2.0.0-preview-81b5f29eb

@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.0-preview-5620ede0b
@metamask-previews/accounts-controller@38.1.2-preview-5620ede0b
@metamask-previews/address-book-controller@7.1.2-preview-5620ede0b
@metamask-previews/ai-controllers@0.7.0-preview-5620ede0b
@metamask-previews/analytics-controller@1.1.0-preview-5620ede0b
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-5620ede0b
@metamask-previews/announcement-controller@8.1.0-preview-5620ede0b
@metamask-previews/app-metadata-controller@2.0.1-preview-5620ede0b
@metamask-previews/approval-controller@9.0.1-preview-5620ede0b
@metamask-previews/assets-controller@8.2.0-preview-5620ede0b
@metamask-previews/assets-controllers@108.3.0-preview-5620ede0b
@metamask-previews/authenticated-user-storage@2.0.0-preview-5620ede0b
@metamask-previews/base-controller@9.1.0-preview-5620ede0b
@metamask-previews/base-data-service@0.1.3-preview-5620ede0b
@metamask-previews/bridge-controller@73.2.0-preview-5620ede0b
@metamask-previews/bridge-status-controller@72.0.0-preview-5620ede0b
@metamask-previews/build-utils@3.0.4-preview-5620ede0b
@metamask-previews/chain-agnostic-permission@1.6.1-preview-5620ede0b
@metamask-previews/chomp-api-service@3.1.0-preview-5620ede0b
@metamask-previews/claims-controller@0.5.2-preview-5620ede0b
@metamask-previews/client-controller@1.0.1-preview-5620ede0b
@metamask-previews/compliance-controller@2.1.0-preview-5620ede0b
@metamask-previews/composable-controller@12.0.1-preview-5620ede0b
@metamask-previews/config-registry-controller@0.3.2-preview-5620ede0b
@metamask-previews/connectivity-controller@0.2.0-preview-5620ede0b
@metamask-previews/controller-utils@12.1.0-preview-5620ede0b
@metamask-previews/core-backend@6.3.1-preview-5620ede0b
@metamask-previews/delegation-controller@3.0.1-preview-5620ede0b
@metamask-previews/earn-controller@12.2.0-preview-5620ede0b
@metamask-previews/eip-5792-middleware@3.0.4-preview-5620ede0b
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-5620ede0b
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-5620ede0b
@metamask-previews/ens-controller@19.1.3-preview-5620ede0b
@metamask-previews/eth-block-tracker@15.0.1-preview-5620ede0b
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-5620ede0b
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-5620ede0b
@metamask-previews/foundryup@1.0.1-preview-5620ede0b
@metamask-previews/gas-fee-controller@26.2.2-preview-5620ede0b
@metamask-previews/gator-permissions-controller@4.2.0-preview-5620ede0b
@metamask-previews/geolocation-controller@0.1.3-preview-5620ede0b
@metamask-previews/json-rpc-engine@10.5.0-preview-5620ede0b
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-5620ede0b
@metamask-previews/keyring-controller@26.0.0-preview-5620ede0b
@metamask-previews/logging-controller@8.0.2-preview-5620ede0b
@metamask-previews/message-manager@14.1.2-preview-5620ede0b
@metamask-previews/messenger@1.2.0-preview-5620ede0b
@metamask-previews/messenger-cli@0.2.0-preview-5620ede0b
@metamask-previews/money-account-balance-service@1.0.2-preview-5620ede0b
@metamask-previews/money-account-controller@0.3.1-preview-5620ede0b
@metamask-previews/money-account-upgrade-controller@2.0.3-preview-5620ede0b
@metamask-previews/multichain-account-service@10.0.1-preview-5620ede0b
@metamask-previews/multichain-api-middleware@3.1.2-preview-5620ede0b
@metamask-previews/multichain-network-controller@3.1.2-preview-5620ede0b
@metamask-previews/multichain-transactions-controller@7.1.0-preview-5620ede0b
@metamask-previews/name-controller@9.1.2-preview-5620ede0b
@metamask-previews/network-controller@32.0.0-preview-5620ede0b
@metamask-previews/network-enablement-controller@5.2.0-preview-5620ede0b
@metamask-previews/notification-services-controller@24.1.2-preview-5620ede0b
@metamask-previews/passkey-controller@2.0.1-preview-5620ede0b
@metamask-previews/permission-controller@13.1.1-preview-5620ede0b
@metamask-previews/permission-log-controller@5.1.0-preview-5620ede0b
@metamask-previews/perps-controller@7.0.0-preview-5620ede0b
@metamask-previews/phishing-controller@17.2.0-preview-5620ede0b
@metamask-previews/polling-controller@16.0.6-preview-5620ede0b
@metamask-previews/preferences-controller@23.1.0-preview-5620ede0b
@metamask-previews/profile-metrics-controller@3.1.5-preview-5620ede0b
@metamask-previews/profile-sync-controller@28.1.1-preview-5620ede0b
@metamask-previews/ramps-controller@14.1.0-preview-5620ede0b
@metamask-previews/rate-limit-controller@7.0.1-preview-5620ede0b
@metamask-previews/react-data-query@0.2.1-preview-5620ede0b
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-5620ede0b
@metamask-previews/sample-controllers@5.0.1-preview-5620ede0b
@metamask-previews/seedless-onboarding-controller@10.0.0-preview-5620ede0b
@metamask-previews/selected-network-controller@26.1.3-preview-5620ede0b
@metamask-previews/shield-controller@5.1.2-preview-5620ede0b
@metamask-previews/signature-controller@39.2.3-preview-5620ede0b
@metamask-previews/snap-account-service@0.2.1-preview-5620ede0b
@metamask-previews/social-controllers@2.2.1-preview-5620ede0b
@metamask-previews/storage-service@1.0.1-preview-5620ede0b
@metamask-previews/subscription-controller@6.1.3-preview-5620ede0b
@metamask-previews/transaction-controller@66.0.0-preview-5620ede0b
@metamask-previews/transaction-pay-controller@23.1.0-preview-5620ede0b
@metamask-previews/user-operation-controller@41.2.3-preview-5620ede0b
@metamask-previews/wallet@2.0.0-preview-5620ede0b

@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.2-preview-6cc5f3961
@metamask-previews/accounts-controller@39.0.1-preview-6cc5f3961
@metamask-previews/address-book-controller@7.1.2-preview-6cc5f3961
@metamask-previews/ai-controllers@0.7.0-preview-6cc5f3961
@metamask-previews/analytics-controller@1.1.1-preview-6cc5f3961
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-6cc5f3961
@metamask-previews/announcement-controller@8.1.0-preview-6cc5f3961
@metamask-previews/app-metadata-controller@2.0.1-preview-6cc5f3961
@metamask-previews/approval-controller@9.0.2-preview-6cc5f3961
@metamask-previews/assets-controller@9.0.1-preview-6cc5f3961
@metamask-previews/assets-controllers@109.1.0-preview-6cc5f3961
@metamask-previews/authenticated-user-storage@2.0.0-preview-6cc5f3961
@metamask-previews/base-controller@9.1.0-preview-6cc5f3961
@metamask-previews/base-data-service@0.1.3-preview-6cc5f3961
@metamask-previews/bridge-controller@75.1.1-preview-6cc5f3961
@metamask-previews/bridge-status-controller@72.1.0-preview-6cc5f3961
@metamask-previews/build-utils@3.0.4-preview-6cc5f3961
@metamask-previews/chain-agnostic-permission@1.6.2-preview-6cc5f3961
@metamask-previews/chomp-api-service@3.1.0-preview-6cc5f3961
@metamask-previews/claims-controller@0.5.3-preview-6cc5f3961
@metamask-previews/client-controller@1.0.1-preview-6cc5f3961
@metamask-previews/compliance-controller@2.1.0-preview-6cc5f3961
@metamask-previews/composable-controller@12.0.1-preview-6cc5f3961
@metamask-previews/config-registry-controller@0.4.1-preview-6cc5f3961
@metamask-previews/connectivity-controller@0.2.0-preview-6cc5f3961
@metamask-previews/controller-utils@12.2.0-preview-6cc5f3961
@metamask-previews/core-backend@6.3.3-preview-6cc5f3961
@metamask-previews/delegation-controller@3.0.2-preview-6cc5f3961
@metamask-previews/earn-controller@12.2.0-preview-6cc5f3961
@metamask-previews/eip-5792-middleware@3.0.4-preview-6cc5f3961
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-6cc5f3961
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-6cc5f3961
@metamask-previews/ens-controller@19.1.3-preview-6cc5f3961
@metamask-previews/eth-block-tracker@15.0.1-preview-6cc5f3961
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-6cc5f3961
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-6cc5f3961
@metamask-previews/foundryup@1.0.1-preview-6cc5f3961
@metamask-previews/gas-fee-controller@26.2.2-preview-6cc5f3961
@metamask-previews/gator-permissions-controller@4.2.0-preview-6cc5f3961
@metamask-previews/geolocation-controller@0.1.3-preview-6cc5f3961
@metamask-previews/json-rpc-engine@10.5.0-preview-6cc5f3961
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-6cc5f3961
@metamask-previews/keyring-controller@27.1.0-preview-6cc5f3961
@metamask-previews/logging-controller@8.0.2-preview-6cc5f3961
@metamask-previews/message-manager@14.1.2-preview-6cc5f3961
@metamask-previews/messenger@1.2.0-preview-6cc5f3961
@metamask-previews/messenger-cli@0.2.0-preview-6cc5f3961
@metamask-previews/money-account-balance-service@2.0.0-preview-6cc5f3961
@metamask-previews/money-account-controller@0.3.3-preview-6cc5f3961
@metamask-previews/money-account-upgrade-controller@2.0.5-preview-6cc5f3961
@metamask-previews/multichain-account-service@10.0.3-preview-6cc5f3961
@metamask-previews/multichain-api-middleware@3.1.4-preview-6cc5f3961
@metamask-previews/multichain-network-controller@3.1.3-preview-6cc5f3961
@metamask-previews/multichain-transactions-controller@7.1.1-preview-6cc5f3961
@metamask-previews/name-controller@9.1.2-preview-6cc5f3961
@metamask-previews/network-controller@32.0.0-preview-6cc5f3961
@metamask-previews/network-enablement-controller@5.3.0-preview-6cc5f3961
@metamask-previews/notification-services-controller@24.1.3-preview-6cc5f3961
@metamask-previews/passkey-controller@2.0.1-preview-6cc5f3961
@metamask-previews/permission-controller@13.1.1-preview-6cc5f3961
@metamask-previews/permission-log-controller@5.1.0-preview-6cc5f3961
@metamask-previews/perps-controller@8.1.0-preview-6cc5f3961
@metamask-previews/phishing-controller@17.2.0-preview-6cc5f3961
@metamask-previews/polling-controller@16.0.6-preview-6cc5f3961
@metamask-previews/preferences-controller@23.1.0-preview-6cc5f3961
@metamask-previews/profile-metrics-controller@3.2.0-preview-6cc5f3961
@metamask-previews/profile-sync-controller@28.2.0-preview-6cc5f3961
@metamask-previews/ramps-controller@14.2.0-preview-6cc5f3961
@metamask-previews/rate-limit-controller@7.0.1-preview-6cc5f3961
@metamask-previews/react-data-query@0.2.1-preview-6cc5f3961
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-6cc5f3961
@metamask-previews/sample-controllers@5.0.1-preview-6cc5f3961
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-6cc5f3961
@metamask-previews/selected-network-controller@26.1.3-preview-6cc5f3961
@metamask-previews/shield-controller@5.1.2-preview-6cc5f3961
@metamask-previews/signature-controller@39.2.5-preview-6cc5f3961
@metamask-previews/snap-account-service@0.3.1-preview-6cc5f3961
@metamask-previews/social-controllers@2.2.1-preview-6cc5f3961
@metamask-previews/storage-service@1.0.2-preview-6cc5f3961
@metamask-previews/subscription-controller@6.2.0-preview-6cc5f3961
@metamask-previews/transaction-controller@68.0.0-preview-6cc5f3961
@metamask-previews/transaction-pay-controller@23.7.0-preview-6cc5f3961
@metamask-previews/user-operation-controller@41.2.4-preview-6cc5f3961
@metamask-previews/wallet@3.0.0-preview-6cc5f3961
@metamask-previews/wallet-cli@0.0.0-preview-6cc5f3961

@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-preview

oilnam
oilnam previously approved these changes Jun 17, 2026
@zelkibuilds
zelkibuildsforce-pushed the feat/update-notifications-controller branch from 4c965c0 to bb35b41CompareJuly 10, 2026 08:39
@zelkibuilds
zelkibuilds requested a review from a team as a code ownerJuly 10, 2026 08:39
@zelkibuildszelkibuilds self-assigned this Jul 10, 2026
@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.4-preview-1590150f2
@metamask-previews/accounts-controller@39.0.4-preview-1590150f2
@metamask-previews/address-book-controller@7.1.2-preview-1590150f2
@metamask-previews/ai-controllers@0.8.0-preview-1590150f2
@metamask-previews/analytics-controller@1.2.1-preview-1590150f2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-1590150f2
@metamask-previews/announcement-controller@8.1.0-preview-1590150f2
@metamask-previews/app-metadata-controller@2.0.1-preview-1590150f2
@metamask-previews/approval-controller@9.0.2-preview-1590150f2
@metamask-previews/assets-controller@10.2.0-preview-1590150f2
@metamask-previews/assets-controllers@109.4.0-preview-1590150f2
@metamask-previews/authenticated-user-storage@3.0.0-preview-1590150f2
@metamask-previews/base-controller@9.1.0-preview-1590150f2
@metamask-previews/base-data-service@0.1.3-preview-1590150f2
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-1590150f2
@metamask-previews/bridge-controller@77.3.2-preview-1590150f2
@metamask-previews/bridge-status-controller@74.1.1-preview-1590150f2
@metamask-previews/build-utils@3.0.4-preview-1590150f2
@metamask-previews/chain-agnostic-permission@1.7.0-preview-1590150f2
@metamask-previews/chomp-api-service@3.1.0-preview-1590150f2
@metamask-previews/claims-controller@0.5.3-preview-1590150f2
@metamask-previews/client-controller@1.0.1-preview-1590150f2
@metamask-previews/client-utils@1.0.0-preview-1590150f2
@metamask-previews/compliance-controller@2.1.0-preview-1590150f2
@metamask-previews/composable-controller@12.0.1-preview-1590150f2
@metamask-previews/config-registry-controller@0.4.1-preview-1590150f2
@metamask-previews/connectivity-controller@0.3.0-preview-1590150f2
@metamask-previews/controller-utils@12.3.0-preview-1590150f2
@metamask-previews/core-backend@6.5.0-preview-1590150f2
@metamask-previews/delegation-controller@3.0.2-preview-1590150f2
@metamask-previews/earn-controller@12.2.2-preview-1590150f2
@metamask-previews/eip-5792-middleware@3.0.4-preview-1590150f2
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-1590150f2
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-1590150f2
@metamask-previews/ens-controller@19.1.5-preview-1590150f2
@metamask-previews/eth-block-tracker@15.0.1-preview-1590150f2
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-1590150f2
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-1590150f2
@metamask-previews/foundryup@1.0.1-preview-1590150f2
@metamask-previews/gas-fee-controller@26.2.4-preview-1590150f2
@metamask-previews/gator-permissions-controller@4.2.2-preview-1590150f2
@metamask-previews/geolocation-controller@0.1.3-preview-1590150f2
@metamask-previews/java-tron-up@1.0.0-preview-1590150f2
@metamask-previews/json-rpc-engine@10.5.0-preview-1590150f2
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-1590150f2
@metamask-previews/keyring-controller@27.1.0-preview-1590150f2
@metamask-previews/local-node-utils@1.0.0-preview-1590150f2
@metamask-previews/logging-controller@8.0.2-preview-1590150f2
@metamask-previews/message-manager@14.1.2-preview-1590150f2
@metamask-previews/messenger@2.0.0-preview-1590150f2
@metamask-previews/messenger-cli@0.2.0-preview-1590150f2
@metamask-previews/money-account-api-data-service@0.1.0-preview-1590150f2
@metamask-previews/money-account-balance-service@2.2.0-preview-1590150f2
@metamask-previews/money-account-controller@0.3.3-preview-1590150f2
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-1590150f2
@metamask-previews/multichain-account-service@12.0.0-preview-1590150f2
@metamask-previews/multichain-api-middleware@4.0.1-preview-1590150f2
@metamask-previews/multichain-network-controller@3.2.1-preview-1590150f2
@metamask-previews/multichain-transactions-controller@7.1.1-preview-1590150f2
@metamask-previews/name-controller@9.1.2-preview-1590150f2
@metamask-previews/network-connection-banner-controller@0.1.0-preview-1590150f2
@metamask-previews/network-controller@34.0.0-preview-1590150f2
@metamask-previews/network-enablement-controller@5.4.1-preview-1590150f2
@metamask-previews/notification-services-controller@25.0.0-preview-1590150f2
@metamask-previews/passkey-controller@2.0.1-preview-1590150f2
@metamask-previews/permission-controller@13.1.1-preview-1590150f2
@metamask-previews/permission-log-controller@5.1.0-preview-1590150f2
@metamask-previews/perps-controller@9.2.1-preview-1590150f2
@metamask-previews/phishing-controller@17.2.0-preview-1590150f2
@metamask-previews/platform-api-docs@0.0.0-preview-1590150f2
@metamask-previews/polling-controller@16.0.8-preview-1590150f2
@metamask-previews/preferences-controller@23.1.0-preview-1590150f2
@metamask-previews/profile-metrics-controller@4.0.1-preview-1590150f2
@metamask-previews/profile-sync-controller@28.2.0-preview-1590150f2
@metamask-previews/ramps-controller@15.1.0-preview-1590150f2
@metamask-previews/rate-limit-controller@7.0.1-preview-1590150f2
@metamask-previews/react-data-query@0.2.1-preview-1590150f2
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-1590150f2
@metamask-previews/sample-controllers@5.0.3-preview-1590150f2
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-1590150f2
@metamask-previews/selected-network-controller@26.1.5-preview-1590150f2
@metamask-previews/shield-controller@5.1.2-preview-1590150f2
@metamask-previews/signature-controller@39.2.7-preview-1590150f2
@metamask-previews/smart-transactions-controller@25.0.0-preview-1590150f2
@metamask-previews/snap-account-service@2.0.0-preview-1590150f2
@metamask-previews/social-controllers@2.4.0-preview-1590150f2
@metamask-previews/solana-test-validator-up@1.0.0-preview-1590150f2
@metamask-previews/stellar-quickstart-up@0.0.0-preview-1590150f2
@metamask-previews/storage-service@1.0.2-preview-1590150f2
@metamask-previews/subscription-controller@6.2.0-preview-1590150f2
@metamask-previews/transaction-controller@68.3.0-preview-1590150f2
@metamask-previews/transaction-pay-controller@24.0.0-preview-1590150f2
@metamask-previews/user-operation-controller@41.2.6-preview-1590150f2
@metamask-previews/wallet@7.0.0-preview-1590150f2
@metamask-previews/wallet-cli@0.0.0-preview-1590150f2

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 069d5ce. Configure here.

@zelkibuilds

Copy link
Copy Markdown
ContributorAuthor

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.5-preview-069d5ced2
@metamask-previews/accounts-controller@39.0.5-preview-069d5ced2
@metamask-previews/address-book-controller@7.1.2-preview-069d5ced2
@metamask-previews/ai-controllers@0.8.0-preview-069d5ced2
@metamask-previews/analytics-controller@1.2.1-preview-069d5ced2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-069d5ced2
@metamask-previews/announcement-controller@8.1.0-preview-069d5ced2
@metamask-previews/app-metadata-controller@2.0.1-preview-069d5ced2
@metamask-previews/approval-controller@9.0.2-preview-069d5ced2
@metamask-previews/assets-controller@11.0.0-preview-069d5ced2
@metamask-previews/assets-controllers@109.4.1-preview-069d5ced2
@metamask-previews/authenticated-user-storage@3.0.1-preview-069d5ced2
@metamask-previews/base-controller@9.1.0-preview-069d5ced2
@metamask-previews/base-data-service@0.1.3-preview-069d5ced2
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-069d5ced2
@metamask-previews/bridge-controller@77.5.0-preview-069d5ced2
@metamask-previews/bridge-status-controller@74.3.0-preview-069d5ced2
@metamask-previews/build-utils@3.0.4-preview-069d5ced2
@metamask-previews/chain-agnostic-permission@1.7.0-preview-069d5ced2
@metamask-previews/chomp-api-service@3.1.0-preview-069d5ced2
@metamask-previews/claims-controller@0.5.3-preview-069d5ced2
@metamask-previews/client-controller@1.0.1-preview-069d5ced2
@metamask-previews/client-utils@1.1.0-preview-069d5ced2
@metamask-previews/compliance-controller@2.1.0-preview-069d5ced2
@metamask-previews/composable-controller@12.0.1-preview-069d5ced2
@metamask-previews/config-registry-controller@0.4.1-preview-069d5ced2
@metamask-previews/connectivity-controller@0.3.0-preview-069d5ced2
@metamask-previews/controller-utils@12.3.0-preview-069d5ced2
@metamask-previews/core-backend@6.5.0-preview-069d5ced2
@metamask-previews/delegation-controller@3.0.2-preview-069d5ced2
@metamask-previews/earn-controller@12.2.2-preview-069d5ced2
@metamask-previews/eip-5792-middleware@3.0.5-preview-069d5ced2
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-069d5ced2
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-069d5ced2
@metamask-previews/ens-controller@19.1.5-preview-069d5ced2
@metamask-previews/eth-block-tracker@15.0.1-preview-069d5ced2
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-069d5ced2
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-069d5ced2
@metamask-previews/foundryup@1.0.1-preview-069d5ced2
@metamask-previews/gas-fee-controller@26.2.4-preview-069d5ced2
@metamask-previews/gator-permissions-controller@4.2.3-preview-069d5ced2
@metamask-previews/geolocation-controller@0.1.3-preview-069d5ced2
@metamask-previews/java-tron-up@1.0.0-preview-069d5ced2
@metamask-previews/json-rpc-engine@10.5.0-preview-069d5ced2
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-069d5ced2
@metamask-previews/keyring-controller@27.1.0-preview-069d5ced2
@metamask-previews/local-node-utils@1.0.0-preview-069d5ced2
@metamask-previews/logging-controller@8.0.2-preview-069d5ced2
@metamask-previews/message-manager@14.1.2-preview-069d5ced2
@metamask-previews/messenger@2.0.0-preview-069d5ced2
@metamask-previews/messenger-cli@0.2.0-preview-069d5ced2
@metamask-previews/money-account-api-data-service@0.1.0-preview-069d5ced2
@metamask-previews/money-account-balance-service@2.2.0-preview-069d5ced2
@metamask-previews/money-account-controller@0.3.3-preview-069d5ced2
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-069d5ced2
@metamask-previews/multichain-account-service@13.0.0-preview-069d5ced2
@metamask-previews/multichain-api-middleware@4.0.1-preview-069d5ced2
@metamask-previews/multichain-network-controller@3.2.1-preview-069d5ced2
@metamask-previews/multichain-transactions-controller@7.1.1-preview-069d5ced2
@metamask-previews/name-controller@9.1.2-preview-069d5ced2
@metamask-previews/network-connection-banner-controller@0.1.0-preview-069d5ced2
@metamask-previews/network-controller@34.0.0-preview-069d5ced2
@metamask-previews/network-enablement-controller@5.6.0-preview-069d5ced2
@metamask-previews/notification-services-controller@25.0.0-preview-069d5ced2
@metamask-previews/passkey-controller@2.1.0-preview-069d5ced2
@metamask-previews/permission-controller@13.1.1-preview-069d5ced2
@metamask-previews/permission-log-controller@5.1.0-preview-069d5ced2
@metamask-previews/perps-controller@9.2.1-preview-069d5ced2
@metamask-previews/phishing-controller@17.3.0-preview-069d5ced2
@metamask-previews/platform-api-docs@0.0.0-preview-069d5ced2
@metamask-previews/polling-controller@16.0.8-preview-069d5ced2
@metamask-previews/preferences-controller@23.1.0-preview-069d5ced2
@metamask-previews/profile-metrics-controller@4.0.2-preview-069d5ced2
@metamask-previews/profile-sync-controller@28.3.0-preview-069d5ced2
@metamask-previews/ramps-controller@17.0.0-preview-069d5ced2
@metamask-previews/rate-limit-controller@7.0.1-preview-069d5ced2
@metamask-previews/react-data-query@0.2.2-preview-069d5ced2
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-069d5ced2
@metamask-previews/sample-controllers@5.0.3-preview-069d5ced2
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-069d5ced2
@metamask-previews/selected-network-controller@26.1.5-preview-069d5ced2
@metamask-previews/sentinel-api-service@1.0.0-preview-069d5ced2
@metamask-previews/shield-controller@5.1.3-preview-069d5ced2
@metamask-previews/signature-controller@39.2.7-preview-069d5ced2
@metamask-previews/smart-transactions-controller@25.0.1-preview-069d5ced2
@metamask-previews/snap-account-service@2.0.0-preview-069d5ced2
@metamask-previews/social-controllers@2.5.0-preview-069d5ced2
@metamask-previews/solana-test-validator-up@1.0.0-preview-069d5ced2
@metamask-previews/stellar-quickstart-up@0.0.0-preview-069d5ced2
@metamask-previews/storage-service@1.0.2-preview-069d5ced2
@metamask-previews/subscription-controller@6.2.1-preview-069d5ced2
@metamask-previews/transaction-controller@69.0.0-preview-069d5ced2
@metamask-previews/transaction-pay-controller@25.0.0-preview-069d5ced2
@metamask-previews/user-operation-controller@41.2.7-preview-069d5ced2
@metamask-previews/wallet@7.0.1-preview-069d5ced2
@metamask-previews/wallet-cli@0.0.0-preview-069d5ced2

@baptiste-marchandbaptiste-marchand left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

Comment threadpackages/notification-services-controller/CHANGELOG.md Outdated
* @param notification - a raw or processed notification.
* @returns the normalised subtype string.
*/
export function getNotificationSubtype(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth adding a small getNotificationType helper to avoid the confusion between subtypes and types in the clients?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getNotificationSubtype exists because notification_subtype needs to be derived and has to be computed from different source fields depending on the shape. notification.type, on the other hand, is always set upstream and directly readable on every notification shape, so there's nothing to derive unless I'm missing some context.

Would getNotificationType mainly be for ergonomics? Giving clients a consistent helper to read type the same way they'd call getNotificationSubtype for subtype?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that's my suggestion. But feel free not to add it if you don't find it relevant

@zelkibuilds
zelkibuilds added this pull request to the merge queueJul 21, 2026
Merged via the queue into main with commit 509cc32Jul 21, 2026
427 checks passed
@zelkibuilds
zelkibuilds deleted the feat/update-notifications-controller branch July 21, 2026 08:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@zelkibuilds@oilnam@baptiste-marchand