# What changed in @metamask/snaps-sdk

> 59 changes in @metamask/snaps-sdk 128 to 168 from its official release notes, upgrade guides and advisories: 29 breaking, 2 security, 7 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@metamask/snaps-sdk/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @metamask/snaps-sdk 168

### Fixes and other changes

- Logging of unhandled errors is improved. (168.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v168.0.0)

## @metamask/snaps-sdk 167

### Fixes and other changes

- Ensures dates are properly validated after a duration offset. (167.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v167.0.0)

## @metamask/snaps-sdk 165

### New APIs and options

- SnapController, MultichainRoutingService, and ExecutionService accept an optional originMetadata parameter for specifying additional metadata about a request's origin. (165.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v165.0.0)

## @metamask/snaps-sdk 160

### Breaking changes

- SnapController now tracks Snap lifecycle analytics events and requires the listed analytics action and lifecycle events in its messenger. (160.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v160.0.0)
- The SnapController constructor now requires a clientConfig parameter for tracking analytics for OTA Snap updates. (160.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v160.0.0)

### New APIs and options

- Adds the requestPeriodicUpdate method to SnapRegistryController. (160.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v160.0.0)

## @metamask/snaps-sdk 156

### Breaking changes

- Omit installing Snaps from the results of getAllSnaps. (156.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v156.0.0)
- Omit installing Snaps from the results of getRunnableSnaps. (156.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v156.0.0)

## @metamask/snaps-sdk 155

### Fixes and other changes

- MultichainRoutingService no longer relies on account metadata. (155.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v155.0.0)

## @metamask/snaps-sdk 154

### Fixes and other changes

- Increased the iframe unload timeout. (154.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v154.0.0)

## @metamask/snaps-sdk 152

### Fixes and other changes

- Skip refetching the registry in handleRegistryUpdate. (152.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v152.0.0)

## @metamask/snaps-sdk 151

### Fixes and other changes

- The KeyringOrigin caveat is now explicitly optional. (151.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v151.0.0)

## @metamask/snaps-sdk 150

### Behavior and default changes

- Always consumes the latest registry; SnapController now listens for SnapRegistryController:registryUpdated. (150.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v150.0.0)

## @metamask/snaps-sdk 148

### Breaking changes

- Removed in favour of ExecutionService; migrate implementations and references to the new abstract class. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Action types were renamed from DoSomething to ControllerNameDoSomethingAction; update references to the renamed actions. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Event types were renamed from OnSomething to ControllerOnSomethingEvent; update event references. SnapStateChange was replaced by SnapControllerStateChangeEvent. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Replaced the ExecutionService interface with an abstract class; it takes the place of AbstractExecutionService. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Renamed MultichainRouter to MultichainRoutingService, and its action types were updated accordingly. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Now requires SnapController:getRunnableSnaps instead of SnapController:getAllSnaps. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- The decrementActiveReferences action and method were removed. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Returns null rather than undefined when a Snap is not found; callers should handle the new missing-Snap result. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Removed as a public method from SnapController. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Removed as a public method from SnapController. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- The incrementActiveReferences action and method were removed. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Several methods were renamed to match their action names, including get to getSnap, has to hasSnap, and install to installSnaps; update callers accordingly. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Now requires SnapController:getRunnableSnaps instead of SnapController:getAllSnaps. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)
- Renamed JsonSnapsRegistry to SnapRegistryController, including the controller name and action types. (148.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v148.0.0)

## @metamask/snaps-sdk 147

### Fixes and other changes

- An error handler is now always attached to the RPC stream. (147.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v147.0.0)

## @metamask/snaps-sdk 146

### Breaking changes

- The method is allowed only after the interface has been displayed. (146.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v146.0.0)

## @metamask/snaps-sdk 144

### Fixes and other changes

- Recovers if preinstalled Snaps source code is missing. (144.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v144.0.0)

## @metamask/snaps-sdk 143

### Fixes and other changes

- Increases the maximum listener limit for rpcStream. (143.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v143.0.0)
- Reinitializes SnapController after state is cleared, so it can continue operating with fresh state. (143.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v143.0.0)

## @metamask/snaps-sdk 142

### Breaking changes

- The constructor no longer accepts the closeAllConnections argument. (142.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v142.0.0)
- Executor parameters are passed as an object, changing how callers provide them. (142.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v142.0.0)
- Unconnected accounts can no longer be used through MultichainRouter. (142.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v142.0.0)

### New APIs and options

- Source code is stored using StorageService, changing how developers provide storage for source code. (142.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v142.0.0)

### Fixes and other changes

- SnapController state is updated when SnapsRegistry changes. (142.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v142.0.0)

## @metamask/snaps-sdk 141

### Breaking changes

- Requests to this method are blocked. (141.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v141.0.0)

### Security

- Requests are inspected before being sent. (141.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v141.0.0)

## @metamask/snaps-sdk 138

### Fixes and other changes

- Unload the iframe before removing it. (138.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v138.0.0)
- Ensure the stream multiplex is destroyed. (138.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v138.0.0)

## @metamask/snaps-sdk 137

### New APIs and options

- Adds support for external images. (137.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v137.0.0)
- Adds an isReady state property. (137.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v137.0.0)

### Behavior and default changes

- Skips updating the registry when the signature has not changed. (137.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v137.0.0)

## @metamask/snaps-sdk 136

### Security

- Detect and recover missing permissions for preinstalled Snaps. (136.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v136.0.0)

## @metamask/snaps-sdk 135

### Performance

- Registry verification is faster. (135.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v135.0.0)

### Behavior and default changes

- The default ping timeout has been increased. (135.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v135.0.0)

## @metamask/snaps-sdk 134

### New APIs and options

- Adds support for the DateTimePicker component, allowing Snap developers to use it in interactive interfaces. (134.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v134.0.0)

### Fixes and other changes

- Registry fetching now uses no-cache. (134.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v134.0.0)

## @metamask/snaps-sdk 133

### Breaking changes

- JsonSnapsRegistry requires the clientConfig constructor argument to support specified clientVersions in the registry. (133.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v133.0.0)
- SnapController requires the ensureOnboardingComplete constructor argument to ensure the user has onboarded before usage. (133.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v133.0.0)

## @metamask/snaps-sdk 132

### Fixes and other changes

- The feature flag is overridden when automatic updates are used. (132.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v132.0.0)

## @metamask/snaps-sdk 131

### Breaking changes

- Removes the logic for granting CAIP-25 permissions. (131.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v131.0.0)

### New APIs and options

- Adds NPM proxy support. (131.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v131.0.0)

### Fixes and other changes

- Keeps dynamic permissions when a Snap is updated. (131.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v131.0.0)
- Prevents initial connections from being revoked as unused when a Snap is updated. (131.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v131.0.0)

## @metamask/snaps-sdk 129

### Breaking changes

- The metadata property `anonymous` was renamed to `includeInDebugSnapshot`. (129.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v129.0.0)
- Controllers and services now accept Messenger from @metamask/messenger instead of RestrictedMessenger from @metamask/base-controller. (129.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v129.0.0)

## @metamask/snaps-sdk 128

### Breaking changes

- Throws when a Snap is not installed. (128.0.0) — [release notes](https://github.com/MetaMask/snaps/releases/tag/v128.0.0)
