Skip to content

feat(ramps): refactor RampsControllerState to use nested objects for each resource type#7779

Merged
AxelGes merged 22 commits intomainfrom
ramps-loading-state
Feb 3, 2026
Merged

feat(ramps): refactor RampsControllerState to use nested objects for each resource type#7779
AxelGes merged 22 commits intomainfrom
ramps-loading-state

Conversation

@georgeweiler
Copy link
Copy Markdown
Contributor

@georgeweiler georgeweiler commented Jan 29, 2026

Explanation

  • Restructured RampsControllerState to use nested ResourceState objects for each resource type: userRegion, countries, providers, tokens, paymentMethods, and quotes
  • Each resource now contains data, selected, isLoading, and error properties in a single object
  • Removed all trigger methods (e.g., fetchUserRegion) from hooks - the controller now manages fetching internally
  • Removed flat selected* properties (e.g., selectedProvider) - these are now nested within each resource

This eliminates the need for consumers to reconstruct cache keys to check loading/error states, and provides a consistent, unified structure for accessing resource data and metadata.

Before

const requestSelector = useMemo(
  () => selectPaymentMethodsRequest({ region, action, paymentMethodCurrency, ... }),
  [region, action, paymentMethodCurrency, ...]
);
const { isLoading, error } = useSelector(requestSelector);
const paymentMethods = useSelector(selectPaymentMethods);
const selectedPaymentMethod = useSelector(selectSelectedPaymentMethod);

After

const {
  data: paymentMethods,
  selected: selectedPaymentMethod,
  isLoading,
  error,
} = useSelector(selectPaymentMethods);

New State Structure

interface ResourceState<TData, TSelected = null> {
  data: TData;
  selected: TSelected;
  isLoading: boolean;
  error: string | null;
}

interface RampsControllerState {
  userRegion: ResourceState<UserRegion | null>;
  countries: ResourceState<Country[]>;
  providers: ResourceState<Provider[], Provider | null>;
  tokens: ResourceState<TokensResponse | null, RampsToken | null>;
  paymentMethods: ResourceState<PaymentMethod[], PaymentMethod | null>;
  quotes: ResourceState<QuotesResponse | null>;
  requests: RequestsState;
}

Breaking Changes

  • All resource properties are now nested objects with data, selected, isLoading, and error
  • Removed flat properties: selectedProvider, selectedToken, selectedPaymentMethod
  • Removed flat loading/error properties: userRegionLoading, userRegionError, etc.

References

Mobile PR to adopt breaking change: MetaMask/metamask-mobile#25414

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

Medium Risk
Medium risk due to a breaking state-shape change and updated async fetching/loading/error semantics that can affect consumers and race-condition behavior.

Overview
Breaking: Refactors RampsControllerState so each resource (countries, providers, tokens, paymentMethods, quotes) is a nested ResourceState with data, selected, isLoading, and error, removing the flat selected* fields.

Updates request execution to track per-resource loading/error (with in-flight ref-counting and staleness guards via isResultCurrent) and replaces the old trigger* fire-and-forget APIs with internal #fireAndForget usage. Exports ResourceType/ResourceState and adds RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS plus tests to ensure messenger delegation and new concurrency/error behaviors.

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

@georgeweiler georgeweiler changed the title Ramps loading state feat(ramps): adds top-level loading and error state to RampsController Jan 29, 2026
@georgeweiler georgeweiler marked this pull request as ready for review January 29, 2026 21:06
@georgeweiler georgeweiler requested review from a team as code owners January 29, 2026 21:06
Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts
@georgeweiler georgeweiler changed the title feat(ramps): adds top-level loading and error state to RampsController feat(ramps): refactor RampsControllerState to use nested objects for each resource type Jan 29, 2026
Comment thread packages/ramps-controller/src/RampsController.ts Outdated
@georgeweiler
Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 2, 2026

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

Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts Outdated
Comment thread packages/ramps-controller/src/RampsController.ts Outdated
Comment thread packages/ramps-controller/src/RampsController.ts Outdated
Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts
@georgeweiler georgeweiler disabled auto-merge February 2, 2026 19:40
@AxelGes AxelGes enabled auto-merge February 2, 2026 19:57
Comment thread packages/ramps-controller/src/RampsController.ts Outdated
Comment thread packages/ramps-controller/src/RampsController.ts
Comment thread packages/ramps-controller/src/RampsController.ts
AxelGes
AxelGes previously approved these changes Feb 3, 2026
@georgeweiler
Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 3, 2026

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

Comment thread packages/ramps-controller/src/RampsController.ts
@georgeweiler
Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 3, 2026

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

Copy link
Copy Markdown

@cursor cursor Bot left a comment

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.

state.selectedPaymentMethod = null;
state.providers.selected = null;
state.paymentMethods.data = [];
state.paymentMethods.selected = null;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale error/loading state when provider/token selection changes

Medium Severity

When setSelectedProvider or setSelectedToken is called, paymentMethods.data and paymentMethods.selected are reset but paymentMethods.isLoading and paymentMethods.error are not. This differs from resetDependentResources which properly resets all four fields. When clearing selection (passing null/undefined), stale error or loading states persist indefinitely since no new request is triggered. When setting a new selection, the UI briefly shows both isLoading: true AND the previous error simultaneously until the new request completes.

Additional Locations (2)

Fix in Cursor Fix in Web

Copy link
Copy Markdown
Contributor

@amitabh94 amitabh94 left a comment

Choose a reason for hiding this comment

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

Left a comment for more explanation. Approving to unblock.

* When provided, resource-level error is only set/cleared if this returns true.
* Used to avoid applying stale errors after e.g. region or selection changes.
*/
isResultCurrent?: () => boolean;
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.

Cam you explain how this would be used ?

@AxelGes AxelGes added this pull request to the merge queue Feb 3, 2026
Merged via the queue into main with commit 599d52d Feb 3, 2026
302 checks passed
@AxelGes AxelGes deleted the ramps-loading-state branch February 3, 2026 12:58
AxelGes added a commit that referenced this pull request Feb 3, 2026
…ethod

- Fix #quotePollingOptions being cleared immediately after being set,
  which prevented polling restart when dependencies changed
- Remove unused #setUserRegionRefetchCount variable
- Restore breaking change entry in CHANGELOG from #7779
- Add destroy() method for proper cleanup of polling interval
AxelGes added a commit that referenced this pull request Feb 3, 2026
…ethod

- Fix #quotePollingOptions being cleared immediately after being set,
  which prevented polling restart when dependencies changed
- Remove unused #setUserRegionRefetchCount variable
- Restore breaking change entry in CHANGELOG from #7779
- Add destroy() method for proper cleanup of polling interval
AxelGes added a commit that referenced this pull request Feb 3, 2026
…ethod

- Fix #quotePollingOptions being cleared immediately after being set,
  which prevented polling restart when dependencies changed
- Remove unused #setUserRegionRefetchCount variable
- Restore breaking change entry in CHANGELOG from #7779
- Add destroy() method for proper cleanup of polling interval
AxelGes added a commit that referenced this pull request Feb 3, 2026
…ethod

- Fix #quotePollingOptions being cleared immediately after being set,
  which prevented polling restart when dependencies changed
- Remove unused #setUserRegionRefetchCount variable
- Restore breaking change entry in CHANGELOG from #7779
- Add destroy() method for proper cleanup of polling interval
AxelGes added a commit that referenced this pull request Feb 3, 2026
…ethod

- Fix #quotePollingOptions being cleared immediately after being set,
  which prevented polling restart when dependencies changed
- Remove unused #setUserRegionRefetchCount variable
- Restore breaking change entry in CHANGELOG from #7779
- Add destroy() method for proper cleanup of polling interval
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.

3 participants