Skip to content

feat: migrate notification endpoints to v2 #5945

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jun 18, 2025

Conversation

Prithpal-Sooriya
Copy link
Contributor

@Prithpal-Sooriya Prithpal-Sooriya commented Jun 9, 2025

Explanation

Reduces the number of API calls by 25-33% (cut 1/4 - 1/3 endpoints).
Removes complex encryption and decryption logic from UserStorage. This took at least 2s on mobile per request!
Enables us to have our notification backend to be the source of truth. We can now extend notifications easily without as much front-end work.

Test Drive PRs:

References

https://consensyssoftware.atlassian.net/browse/MMASSETS-888

Changelog

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, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

this slims down the number of API calls we make, and allows our backend to be the source of truth for notifications.
@Prithpal-Sooriya Prithpal-Sooriya force-pushed the MMASSETS-888/notification-v2-endpoints branch from 252aac6 to 15d0996 Compare June 9, 2025 20:47
@Prithpal-Sooriya
Copy link
Contributor Author

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Jun 9, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.1.0-preview-53749f1",
  "@metamask-previews/accounts-controller": "30.0.0-preview-53749f1",
  "@metamask-previews/address-book-controller": "6.1.0-preview-53749f1",
  "@metamask-previews/announcement-controller": "7.0.3-preview-53749f1",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-53749f1",
  "@metamask-previews/approval-controller": "7.1.3-preview-53749f1",
  "@metamask-previews/assets-controllers": "68.1.0-preview-53749f1",
  "@metamask-previews/base-controller": "8.0.1-preview-53749f1",
  "@metamask-previews/bridge-controller": "32.1.1-preview-53749f1",
  "@metamask-previews/bridge-status-controller": "29.1.0-preview-53749f1",
  "@metamask-previews/build-utils": "3.0.3-preview-53749f1",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-53749f1",
  "@metamask-previews/composable-controller": "11.0.0-preview-53749f1",
  "@metamask-previews/controller-utils": "11.10.0-preview-53749f1",
  "@metamask-previews/delegation-controller": "0.4.0-preview-53749f1",
  "@metamask-previews/earn-controller": "1.1.0-preview-53749f1",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-53749f1",
  "@metamask-previews/ens-controller": "16.0.0-preview-53749f1",
  "@metamask-previews/error-reporting-service": "1.0.0-preview-53749f1",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-53749f1",
  "@metamask-previews/foundryup": "1.0.0-preview-53749f1",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-53749f1",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-53749f1",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-53749f1",
  "@metamask-previews/keyring-controller": "22.0.2-preview-53749f1",
  "@metamask-previews/logging-controller": "6.0.4-preview-53749f1",
  "@metamask-previews/message-manager": "12.0.1-preview-53749f1",
  "@metamask-previews/multichain": "4.1.0-preview-53749f1",
  "@metamask-previews/multichain-api-middleware": "0.4.0-preview-53749f1",
  "@metamask-previews/multichain-network-controller": "0.8.0-preview-53749f1",
  "@metamask-previews/multichain-transactions-controller": "2.0.0-preview-53749f1",
  "@metamask-previews/name-controller": "8.0.3-preview-53749f1",
  "@metamask-previews/network-controller": "23.6.0-preview-53749f1",
  "@metamask-previews/notification-services-controller": "10.0.0-preview-53749f1",
  "@metamask-previews/permission-controller": "11.0.6-preview-53749f1",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-53749f1",
  "@metamask-previews/phishing-controller": "12.5.0-preview-53749f1",
  "@metamask-previews/polling-controller": "13.0.0-preview-53749f1",
  "@metamask-previews/preferences-controller": "18.1.0-preview-53749f1",
  "@metamask-previews/profile-sync-controller": "17.0.0-preview-53749f1",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-53749f1",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-53749f1",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-53749f1",
  "@metamask-previews/sample-controllers": "0.1.0-preview-53749f1",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-53749f1",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-53749f1",
  "@metamask-previews/signature-controller": "30.0.0-preview-53749f1",
  "@metamask-previews/token-search-discovery-controller": "3.2.0-preview-53749f1",
  "@metamask-previews/transaction-controller": "57.2.0-preview-53749f1",
  "@metamask-previews/user-operation-controller": "36.0.0-preview-53749f1"
}

- add API config cache to reduce API calls
- ensure push notifications only register active notification acconuts
- fetch notifications for active notification accounts
- when enabling notifications for a new device, correctly check if we need to register addresses for notifications.
- do not clear FCM token as we need it for backend cleanup when re-registering.
- make sure our APIs use lowercase addresses (these get hashed on the backend so need to be all same case)
@Prithpal-Sooriya
Copy link
Contributor Author

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.1.0-preview-7dcef379",
  "@metamask-previews/accounts-controller": "30.0.0-preview-7dcef379",
  "@metamask-previews/address-book-controller": "6.1.0-preview-7dcef379",
  "@metamask-previews/announcement-controller": "7.0.3-preview-7dcef379",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-7dcef379",
  "@metamask-previews/approval-controller": "7.1.3-preview-7dcef379",
  "@metamask-previews/assets-controllers": "68.1.0-preview-7dcef379",
  "@metamask-previews/base-controller": "8.0.1-preview-7dcef379",
  "@metamask-previews/bridge-controller": "32.1.1-preview-7dcef379",
  "@metamask-previews/bridge-status-controller": "29.1.0-preview-7dcef379",
  "@metamask-previews/build-utils": "3.0.3-preview-7dcef379",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-7dcef379",
  "@metamask-previews/composable-controller": "11.0.0-preview-7dcef379",
  "@metamask-previews/controller-utils": "11.10.0-preview-7dcef379",
  "@metamask-previews/delegation-controller": "0.4.0-preview-7dcef379",
  "@metamask-previews/earn-controller": "1.1.0-preview-7dcef379",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-7dcef379",
  "@metamask-previews/ens-controller": "16.0.0-preview-7dcef379",
  "@metamask-previews/error-reporting-service": "1.0.0-preview-7dcef379",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-7dcef379",
  "@metamask-previews/foundryup": "1.0.0-preview-7dcef379",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-7dcef379",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-7dcef379",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-7dcef379",
  "@metamask-previews/keyring-controller": "22.0.2-preview-7dcef379",
  "@metamask-previews/logging-controller": "6.0.4-preview-7dcef379",
  "@metamask-previews/message-manager": "12.0.1-preview-7dcef379",
  "@metamask-previews/multichain": "4.1.0-preview-7dcef379",
  "@metamask-previews/multichain-api-middleware": "0.4.0-preview-7dcef379",
  "@metamask-previews/multichain-network-controller": "0.8.0-preview-7dcef379",
  "@metamask-previews/multichain-transactions-controller": "2.0.0-preview-7dcef379",
  "@metamask-previews/name-controller": "8.0.3-preview-7dcef379",
  "@metamask-previews/network-controller": "23.6.0-preview-7dcef379",
  "@metamask-previews/notification-services-controller": "10.0.0-preview-7dcef379",
  "@metamask-previews/permission-controller": "11.0.6-preview-7dcef379",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-7dcef379",
  "@metamask-previews/phishing-controller": "12.5.0-preview-7dcef379",
  "@metamask-previews/polling-controller": "13.0.0-preview-7dcef379",
  "@metamask-previews/preferences-controller": "18.1.0-preview-7dcef379",
  "@metamask-previews/profile-sync-controller": "17.1.0-preview-7dcef379",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-7dcef379",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-7dcef379",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-7dcef379",
  "@metamask-previews/sample-controllers": "0.1.0-preview-7dcef379",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-7dcef379",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-7dcef379",
  "@metamask-previews/signature-controller": "30.0.0-preview-7dcef379",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-7dcef379",
  "@metamask-previews/transaction-controller": "57.2.0-preview-7dcef379",
  "@metamask-previews/user-operation-controller": "36.0.0-preview-7dcef379"
}

@Prithpal-Sooriya Prithpal-Sooriya marked this pull request as ready for review June 11, 2025 15:28
@Prithpal-Sooriya Prithpal-Sooriya requested review from a team as code owners June 11, 2025 15:28
@Prithpal-Sooriya Prithpal-Sooriya marked this pull request as draft June 11, 2025 15:28
@Prithpal-Sooriya
Copy link
Contributor Author

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.1.1-preview-8dfa2801",
  "@metamask-previews/accounts-controller": "30.0.0-preview-8dfa2801",
  "@metamask-previews/address-book-controller": "6.1.0-preview-8dfa2801",
  "@metamask-previews/announcement-controller": "7.0.3-preview-8dfa2801",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-8dfa2801",
  "@metamask-previews/approval-controller": "7.1.3-preview-8dfa2801",
  "@metamask-previews/assets-controllers": "68.1.0-preview-8dfa2801",
  "@metamask-previews/base-controller": "8.0.1-preview-8dfa2801",
  "@metamask-previews/bridge-controller": "32.1.1-preview-8dfa2801",
  "@metamask-previews/bridge-status-controller": "29.1.0-preview-8dfa2801",
  "@metamask-previews/build-utils": "3.0.3-preview-8dfa2801",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-8dfa2801",
  "@metamask-previews/composable-controller": "11.0.0-preview-8dfa2801",
  "@metamask-previews/controller-utils": "11.10.0-preview-8dfa2801",
  "@metamask-previews/delegation-controller": "0.4.0-preview-8dfa2801",
  "@metamask-previews/earn-controller": "1.1.0-preview-8dfa2801",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-8dfa2801",
  "@metamask-previews/ens-controller": "16.0.0-preview-8dfa2801",
  "@metamask-previews/error-reporting-service": "1.0.0-preview-8dfa2801",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-8dfa2801",
  "@metamask-previews/foundryup": "1.0.0-preview-8dfa2801",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-8dfa2801",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-8dfa2801",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-8dfa2801",
  "@metamask-previews/keyring-controller": "22.0.2-preview-8dfa2801",
  "@metamask-previews/logging-controller": "6.0.4-preview-8dfa2801",
  "@metamask-previews/message-manager": "12.0.1-preview-8dfa2801",
  "@metamask-previews/multichain": "4.1.0-preview-8dfa2801",
  "@metamask-previews/multichain-api-middleware": "0.4.0-preview-8dfa2801",
  "@metamask-previews/multichain-network-controller": "0.8.0-preview-8dfa2801",
  "@metamask-previews/multichain-transactions-controller": "2.0.0-preview-8dfa2801",
  "@metamask-previews/name-controller": "8.0.3-preview-8dfa2801",
  "@metamask-previews/network-controller": "23.6.0-preview-8dfa2801",
  "@metamask-previews/notification-services-controller": "10.0.0-preview-8dfa2801",
  "@metamask-previews/permission-controller": "11.0.6-preview-8dfa2801",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-8dfa2801",
  "@metamask-previews/phishing-controller": "12.6.0-preview-8dfa2801",
  "@metamask-previews/polling-controller": "13.0.0-preview-8dfa2801",
  "@metamask-previews/preferences-controller": "18.1.0-preview-8dfa2801",
  "@metamask-previews/profile-sync-controller": "17.1.0-preview-8dfa2801",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-8dfa2801",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-8dfa2801",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-8dfa2801",
  "@metamask-previews/sample-controllers": "0.1.0-preview-8dfa2801",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-8dfa2801",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-8dfa2801",
  "@metamask-previews/signature-controller": "30.0.0-preview-8dfa2801",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-8dfa2801",
  "@metamask-previews/transaction-controller": "57.3.0-preview-8dfa2801",
  "@metamask-previews/user-operation-controller": "36.0.0-preview-8dfa2801"
}

@Prithpal-Sooriya
Copy link
Contributor Author

Closing as we already have a PR open to resolve this :)

@Prithpal-Sooriya
Copy link
Contributor Author

Whoops wrong PR

now we only fetch notifications for addresses with notifications enabled
…etaMask/core into MMASSETS-888/notification-v2-endpoints
@Prithpal-Sooriya
Copy link
Contributor Author

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.1.1-preview-5ff65365",
  "@metamask-previews/accounts-controller": "30.0.0-preview-5ff65365",
  "@metamask-previews/address-book-controller": "6.1.0-preview-5ff65365",
  "@metamask-previews/announcement-controller": "7.0.3-preview-5ff65365",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-5ff65365",
  "@metamask-previews/approval-controller": "7.1.3-preview-5ff65365",
  "@metamask-previews/assets-controllers": "68.1.0-preview-5ff65365",
  "@metamask-previews/base-controller": "8.0.1-preview-5ff65365",
  "@metamask-previews/bridge-controller": "32.1.2-preview-5ff65365",
  "@metamask-previews/bridge-status-controller": "29.1.1-preview-5ff65365",
  "@metamask-previews/build-utils": "3.0.3-preview-5ff65365",
  "@metamask-previews/chain-agnostic-permission": "0.7.0-preview-5ff65365",
  "@metamask-previews/composable-controller": "11.0.0-preview-5ff65365",
  "@metamask-previews/controller-utils": "11.10.0-preview-5ff65365",
  "@metamask-previews/delegation-controller": "0.4.0-preview-5ff65365",
  "@metamask-previews/earn-controller": "1.1.1-preview-5ff65365",
  "@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-5ff65365",
  "@metamask-previews/ens-controller": "16.0.0-preview-5ff65365",
  "@metamask-previews/error-reporting-service": "1.0.0-preview-5ff65365",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-5ff65365",
  "@metamask-previews/foundryup": "1.0.0-preview-5ff65365",
  "@metamask-previews/gas-fee-controller": "23.0.0-preview-5ff65365",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-5ff65365",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-5ff65365",
  "@metamask-previews/keyring-controller": "22.0.2-preview-5ff65365",
  "@metamask-previews/logging-controller": "6.0.4-preview-5ff65365",
  "@metamask-previews/message-manager": "12.0.1-preview-5ff65365",
  "@metamask-previews/multichain-api-middleware": "0.4.0-preview-5ff65365",
  "@metamask-previews/multichain-network-controller": "0.8.0-preview-5ff65365",
  "@metamask-previews/multichain-transactions-controller": "2.0.0-preview-5ff65365",
  "@metamask-previews/name-controller": "8.0.3-preview-5ff65365",
  "@metamask-previews/network-controller": "23.6.0-preview-5ff65365",
  "@metamask-previews/notification-services-controller": "10.0.0-preview-5ff65365",
  "@metamask-previews/permission-controller": "11.0.6-preview-5ff65365",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-5ff65365",
  "@metamask-previews/phishing-controller": "12.6.0-preview-5ff65365",
  "@metamask-previews/polling-controller": "13.0.0-preview-5ff65365",
  "@metamask-previews/preferences-controller": "18.1.0-preview-5ff65365",
  "@metamask-previews/profile-sync-controller": "17.1.0-preview-5ff65365",
  "@metamask-previews/queued-request-controller": "10.0.0-preview-5ff65365",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-5ff65365",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-5ff65365",
  "@metamask-previews/sample-controllers": "0.1.0-preview-5ff65365",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-5ff65365",
  "@metamask-previews/selected-network-controller": "22.1.0-preview-5ff65365",
  "@metamask-previews/signature-controller": "30.0.0-preview-5ff65365",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-5ff65365",
  "@metamask-previews/transaction-controller": "57.3.0-preview-5ff65365",
  "@metamask-previews/user-operation-controller": "36.0.0-preview-5ff65365"
}

@Prithpal-Sooriya Prithpal-Sooriya marked this pull request as ready for review June 18, 2025 08:36
@Prithpal-Sooriya Prithpal-Sooriya enabled auto-merge (squash) June 18, 2025 08:52
@Prithpal-Sooriya Prithpal-Sooriya merged commit d732d28 into main Jun 18, 2025
214 checks passed
@Prithpal-Sooriya Prithpal-Sooriya deleted the MMASSETS-888/notification-v2-endpoints branch June 18, 2025 08:58
Sign up for free to 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.

2 participants