Skip to content

Add selectors for ConnectivityController#7701

Merged
cryptodev-2s merged 7 commits intomainfrom
add-connectivity-controller-selectors
Apr 1, 2026
Merged

Add selectors for ConnectivityController#7701
cryptodev-2s merged 7 commits intomainfrom
add-connectivity-controller-selectors

Conversation

@cryptodev-2s
Copy link
Copy Markdown
Contributor

@cryptodev-2s cryptodev-2s commented Jan 22, 2026

Explanation

The ConnectivityController currently defines selectors for accessing its state directly in clients, making it inconsistent with our guidelines.

Solution:

  • Added selectConnectivityStatus - simple selector that returns the current connectivity status
  • Added selectIsOffline - memoized selector using reselect that returns true when offline

The selectors are exported from the package and can be used with Redux or directly with controller state.

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

Low Risk
Low risk: adds new exported selectors and a reselect dependency without changing controller behavior or state shape.

Overview
Adds a new exported connectivityControllerSelectors API with selectConnectivityStatus and a memoized selectIsOffline (via reselect) for reading ConnectivityControllerState.

Updates @metamask/connectivity-controller to depend on reselect, adds unit tests for the selectors, and documents the addition in the package changelog.

Written by Cursor Bugbot for commit d10a1ef. This will update automatically on new commits. Configure here.

@cryptodev-2s cryptodev-2s self-assigned this Jan 22, 2026
@cryptodev-2s cryptodev-2s force-pushed the add-connectivity-controller-selectors branch from 4d04889 to 3ec2a74 Compare January 22, 2026 10:53
@cryptodev-2s
Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
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": "4.0.0-preview-3ec2a74",
  "@metamask-previews/accounts-controller": "35.0.2-preview-3ec2a74",
  "@metamask-previews/address-book-controller": "7.0.1-preview-3ec2a74",
  "@metamask-previews/analytics-controller": "1.0.0-preview-3ec2a74",
  "@metamask-previews/announcement-controller": "8.0.0-preview-3ec2a74",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-3ec2a74",
  "@metamask-previews/approval-controller": "8.0.0-preview-3ec2a74",
  "@metamask-previews/assets-controller": "0.0.0-preview-3ec2a74",
  "@metamask-previews/assets-controllers": "95.3.0-preview-3ec2a74",
  "@metamask-previews/base-controller": "9.0.0-preview-3ec2a74",
  "@metamask-previews/bridge-controller": "64.8.0-preview-3ec2a74",
  "@metamask-previews/bridge-status-controller": "64.4.3-preview-3ec2a74",
  "@metamask-previews/build-utils": "3.0.4-preview-3ec2a74",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-3ec2a74",
  "@metamask-previews/claims-controller": "0.4.1-preview-3ec2a74",
  "@metamask-previews/composable-controller": "12.0.0-preview-3ec2a74",
  "@metamask-previews/connectivity-controller": "0.1.0-preview-3ec2a74",
  "@metamask-previews/controller-utils": "11.18.0-preview-3ec2a74",
  "@metamask-previews/core-backend": "5.0.0-preview-3ec2a74",
  "@metamask-previews/delegation-controller": "2.0.0-preview-3ec2a74",
  "@metamask-previews/earn-controller": "11.1.0-preview-3ec2a74",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-3ec2a74",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-3ec2a74",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-3ec2a74",
  "@metamask-previews/ens-controller": "19.0.2-preview-3ec2a74",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-3ec2a74",
  "@metamask-previews/eth-block-tracker": "15.0.1-preview-3ec2a74",
  "@metamask-previews/eth-json-rpc-middleware": "23.0.0-preview-3ec2a74",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-3ec2a74",
  "@metamask-previews/foundryup": "1.0.1-preview-3ec2a74",
  "@metamask-previews/gas-fee-controller": "26.0.2-preview-3ec2a74",
  "@metamask-previews/gator-permissions-controller": "1.1.0-preview-3ec2a74",
  "@metamask-previews/json-rpc-engine": "10.2.1-preview-3ec2a74",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-3ec2a74",
  "@metamask-previews/keyring-controller": "25.0.0-preview-3ec2a74",
  "@metamask-previews/logging-controller": "7.0.1-preview-3ec2a74",
  "@metamask-previews/message-manager": "14.1.0-preview-3ec2a74",
  "@metamask-previews/messenger": "0.3.0-preview-3ec2a74",
  "@metamask-previews/multichain-account-service": "5.1.0-preview-3ec2a74",
  "@metamask-previews/multichain-api-middleware": "1.2.6-preview-3ec2a74",
  "@metamask-previews/multichain-network-controller": "3.0.2-preview-3ec2a74",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-3ec2a74",
  "@metamask-previews/name-controller": "9.0.0-preview-3ec2a74",
  "@metamask-previews/network-controller": "29.0.0-preview-3ec2a74",
  "@metamask-previews/network-enablement-controller": "4.1.0-preview-3ec2a74",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-3ec2a74",
  "@metamask-previews/permission-controller": "12.2.0-preview-3ec2a74",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-3ec2a74",
  "@metamask-previews/perps-controller": "0.0.0-preview-3ec2a74",
  "@metamask-previews/phishing-controller": "16.1.0-preview-3ec2a74",
  "@metamask-previews/polling-controller": "16.0.2-preview-3ec2a74",
  "@metamask-previews/preferences-controller": "22.0.0-preview-3ec2a74",
  "@metamask-previews/profile-metrics-controller": "3.0.0-preview-3ec2a74",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-3ec2a74",
  "@metamask-previews/ramps-controller": "4.1.0-preview-3ec2a74",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-3ec2a74",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-3ec2a74",
  "@metamask-previews/sample-controllers": "4.0.2-preview-3ec2a74",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-3ec2a74",
  "@metamask-previews/selected-network-controller": "26.0.2-preview-3ec2a74",
  "@metamask-previews/shield-controller": "5.0.0-preview-3ec2a74",
  "@metamask-previews/signature-controller": "39.0.1-preview-3ec2a74",
  "@metamask-previews/storage-service": "0.0.1-preview-3ec2a74",
  "@metamask-previews/subscription-controller": "5.4.0-preview-3ec2a74",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-3ec2a74",
  "@metamask-previews/transaction-controller": "62.9.2-preview-3ec2a74",
  "@metamask-previews/transaction-pay-controller": "11.0.2-preview-3ec2a74",
  "@metamask-previews/user-operation-controller": "41.0.2-preview-3ec2a74"
}

@cryptodev-2s cryptodev-2s marked this pull request as ready for review January 22, 2026 13:52
@cryptodev-2s cryptodev-2s requested a review from a team as a code owner January 22, 2026 13:52
@cryptodev-2s cryptodev-2s force-pushed the add-connectivity-controller-selectors branch from 3ec2a74 to 02071b5 Compare January 22, 2026 13:52
@cryptodev-2s cryptodev-2s requested a review from mcmire January 22, 2026 13:52
mcmire
mcmire previously approved these changes Jan 22, 2026
Copy link
Copy Markdown
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

LGTM!

@cryptodev-2s
Copy link
Copy Markdown
Contributor Author

@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@5.0.1-preview-27e0999e0
@metamask-previews/accounts-controller@37.0.0-preview-27e0999e0
@metamask-previews/address-book-controller@7.1.0-preview-27e0999e0
@metamask-previews/ai-controllers@0.6.0-preview-27e0999e0
@metamask-previews/analytics-controller@1.0.0-preview-27e0999e0
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-27e0999e0
@metamask-previews/announcement-controller@8.0.0-preview-27e0999e0
@metamask-previews/app-metadata-controller@2.0.0-preview-27e0999e0
@metamask-previews/approval-controller@9.0.0-preview-27e0999e0
@metamask-previews/assets-controller@3.1.1-preview-27e0999e0
@metamask-previews/assets-controllers@101.0.1-preview-27e0999e0
@metamask-previews/base-controller@9.0.0-preview-27e0999e0
@metamask-previews/base-data-service@0.1.0-preview-27e0999e0
@metamask-previews/bridge-controller@69.2.1-preview-27e0999e0
@metamask-previews/bridge-status-controller@70.0.1-preview-27e0999e0
@metamask-previews/build-utils@3.0.4-preview-27e0999e0
@metamask-previews/chain-agnostic-permission@1.5.0-preview-27e0999e0
@metamask-previews/claims-controller@0.4.3-preview-27e0999e0
@metamask-previews/client-controller@1.0.0-preview-27e0999e0
@metamask-previews/compliance-controller@1.0.1-preview-27e0999e0
@metamask-previews/composable-controller@12.0.0-preview-27e0999e0
@metamask-previews/config-registry-controller@0.1.1-preview-27e0999e0
@metamask-previews/connectivity-controller@0.1.0-preview-27e0999e0
@metamask-previews/controller-utils@11.19.0-preview-27e0999e0
@metamask-previews/core-backend@6.2.0-preview-27e0999e0
@metamask-previews/delegation-controller@2.0.2-preview-27e0999e0
@metamask-previews/earn-controller@11.1.2-preview-27e0999e0
@metamask-previews/eip-5792-middleware@3.0.1-preview-27e0999e0
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-27e0999e0
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-27e0999e0
@metamask-previews/ens-controller@19.1.0-preview-27e0999e0
@metamask-previews/error-reporting-service@3.0.1-preview-27e0999e0
@metamask-previews/eth-block-tracker@15.0.1-preview-27e0999e0
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-27e0999e0
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-27e0999e0
@metamask-previews/foundryup@1.0.1-preview-27e0999e0
@metamask-previews/gas-fee-controller@26.1.0-preview-27e0999e0
@metamask-previews/gator-permissions-controller@2.1.1-preview-27e0999e0
@metamask-previews/geolocation-controller@0.1.1-preview-27e0999e0
@metamask-previews/json-rpc-engine@10.2.3-preview-27e0999e0
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-27e0999e0
@metamask-previews/keyring-controller@25.1.0-preview-27e0999e0
@metamask-previews/logging-controller@8.0.0-preview-27e0999e0
@metamask-previews/message-manager@14.1.0-preview-27e0999e0
@metamask-previews/messenger@0.3.0-preview-27e0999e0
@metamask-previews/multichain-account-service@7.1.0-preview-27e0999e0
@metamask-previews/multichain-api-middleware@2.0.0-preview-27e0999e0
@metamask-previews/multichain-network-controller@3.0.5-preview-27e0999e0
@metamask-previews/multichain-transactions-controller@7.0.2-preview-27e0999e0
@metamask-previews/name-controller@9.1.0-preview-27e0999e0
@metamask-previews/network-controller@30.0.0-preview-27e0999e0
@metamask-previews/network-enablement-controller@5.0.0-preview-27e0999e0
@metamask-previews/notification-services-controller@23.0.0-preview-27e0999e0
@metamask-previews/permission-controller@12.2.1-preview-27e0999e0
@metamask-previews/permission-log-controller@5.0.0-preview-27e0999e0
@metamask-previews/perps-controller@1.3.0-preview-27e0999e0
@metamask-previews/phishing-controller@17.0.0-preview-27e0999e0
@metamask-previews/polling-controller@16.0.3-preview-27e0999e0
@metamask-previews/preferences-controller@23.0.0-preview-27e0999e0
@metamask-previews/profile-metrics-controller@3.1.1-preview-27e0999e0
@metamask-previews/profile-sync-controller@28.0.0-preview-27e0999e0
@metamask-previews/ramps-controller@12.0.1-preview-27e0999e0
@metamask-previews/rate-limit-controller@7.0.0-preview-27e0999e0
@metamask-previews/react-data-query@0.1.0-preview-27e0999e0
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-27e0999e0
@metamask-previews/sample-controllers@4.0.3-preview-27e0999e0
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-27e0999e0
@metamask-previews/selected-network-controller@26.0.3-preview-27e0999e0
@metamask-previews/shield-controller@5.0.2-preview-27e0999e0
@metamask-previews/signature-controller@39.1.0-preview-27e0999e0
@metamask-previews/storage-service@1.0.0-preview-27e0999e0
@metamask-previews/subscription-controller@6.1.0-preview-27e0999e0
@metamask-previews/transaction-controller@63.2.0-preview-27e0999e0
@metamask-previews/transaction-pay-controller@18.1.0-preview-27e0999e0
@metamask-previews/user-operation-controller@41.1.0-preview-27e0999e0

@cryptodev-2s cryptodev-2s requested a review from mcmire March 26, 2026 13:52
@cryptodev-2s cryptodev-2s enabled auto-merge March 26, 2026 13:52
Comment thread packages/connectivity-controller/src/selectors.test.ts Outdated
@cryptodev-2s cryptodev-2s requested a review from mcmire March 26, 2026 14:31
Copy link
Copy Markdown
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

One more thing and then I can approve.

Comment thread packages/connectivity-controller/CHANGELOG.md Outdated
@cryptodev-2s cryptodev-2s requested review from a team and mcmire March 31, 2026 20:21
Copy link
Copy Markdown
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

LGTM!

@cryptodev-2s cryptodev-2s added this pull request to the merge queue Apr 1, 2026
Merged via the queue into main with commit dbd0c44 Apr 1, 2026
332 checks passed
@cryptodev-2s cryptodev-2s deleted the add-connectivity-controller-selectors branch April 1, 2026 15:39
micaelae pushed a commit that referenced this pull request Apr 7, 2026
## Explanation

The ConnectivityController currently defines selectors for accessing its
state directly in clients, making it inconsistent with our guidelines.

**Solution:**
- Added `selectConnectivityStatus` - simple selector that returns the
current connectivity status
- Added `selectIsOffline` - memoized selector using `reselect` that
returns `true` when offline

The selectors are exported from the package and can be used with Redux
or directly with controller state.

## References

<!-- None -->

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: adds new exported selectors and a `reselect` dependency
without changing controller behavior or state shape.
> 
> **Overview**
> Adds a new exported `connectivityControllerSelectors` API with
`selectConnectivityStatus` and a memoized `selectIsOffline` (via
`reselect`) for reading `ConnectivityControllerState`.
> 
> Updates `@metamask/connectivity-controller` to depend on `reselect`,
adds unit tests for the selectors, and documents the addition in the
package changelog.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d10a1ef. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
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