npm / viem
viem
What changed in viem 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
2 breaking1 security5 new APIs and options2 behavior and defaults5 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initviem 215 changes
Breaking changes 2
Renamed the experimental native multisig APIs to configurable accounts, following TIP-1107.
Now builds the manager from a Store instead of a custom get/set/remove source.
Security 1
Preserves relay-filled validBefore and validAfter bounds so sponsored Tempo transactions retain a valid fee-payer signature.
New APIs and options 5
Added the ousd token address to Addresses in viem/tempo.
Tempo actions now provide typed TempoExecutionError errors, with per-module subclasses carrying decoded arguments, fetched onchain details, and resolution hints.
Added an action for saving authorizations signed elsewhere.
Added the QMS Testnet chain.
Added a Tempo plugin that saves key authorizations signed with Actions.accessKey.signAuthorization and attaches them to the access key's next transaction, including configurable account authorizations at quorum.
Behavior and default changes 2
Updated the RPC and block explorer URLs from arc.network to arc.io.
Updated the Tempo mainnet and testnet Earn factory addresses to the latest releases.
Fixes and other changes 5
The transport timeout now applies while reading the response body and when the request is given an abort signal.
No longer drops the first parameter when a space follows an opening parenthesis; the same fix applies to toFunctionSelector, toEventSelector, and toSignature.
Calling unsubscribe on webSocket and ipc transports after reconnect now uses the current subscription id, preventing subscription leaks.
Concurrent waits no longer resolve using the first call's options or leave a later wait for the same id hanging.
Now detects replacement transactions and avoids reporting a repriced transaction as replaced when RPC address casing differs.