One page that differentiates the OP Stack SDK surfaces and developer tools — what each is for, who owns it, where its canonical docs live, and its support status.
Items on this page refer to third-party projects or products that are not
maintained by Optimism. They are provided for convenience; refer to each
project’s own documentation as the source of truth.
This page is the canonical hub for the tools and SDKs that surround the OP Stack.
Following the content guide, each listing
links exactly one canonical documentation home — this page routes, it does not
restate. What gets listed here (and what gets removed) is governed by the
listing criteria.
viem extension for OP Stack features that have not yet been upstreamed into viem — Superchain interop actions and utilities; used by this site’s bridging and interop tutorials
Not an SDK — the source-of-truth library of chain configs that OP Stack software (such as op-node and op-geth) consumes, plus the just tasks and validation checks used to add and verify a chain
Rust crates for interfacing with OP Stack chains: consensus, RPC, engine, and network types built on the Alloy ecosystem; the type layer consumed by kona and op-reth
Rust crate implementing the OP Stack’s EVM: a revm variant with deposit transactions, L1 and operator fee accounting, and OP-specific precompiles; the EVM inside op-reth and kona
Three of the rows above are TypeScript SDK surfaces that are easy to confuse.
The distinction:
Start with viem/op-stack. viem provides
first-class OP Stack support in the core library: extend any viem client
with publicActionsL2() (and friends) imported from viem/op-stack to get
deposits, withdrawals, and L1 gas estimation. If a feature is available
here, this is its production home. Super Root withdrawal proving requires
viem2.51.0 or later.
Reach for @eth-optimism/viem
when you need what viem does not have yet. The package’s stated goal is
to upstream as much as possible into viem itself; until then it is the
home of Superchain interop actions and other pre-production features. The
interop tutorials
and bridging tutorials
on this site use it.
Use the Actions SDK for app-level
building blocks, not chain plumbing. Where the two viem surfaces expose
protocol operations, the Actions SDK offers wallet, lend, and swap
namespaces for building end-user apps. It is a developer preview and not
yet ready for production use.
Building in Rust rather than TypeScript? Start from
op-alloy for OP Stack types and RPC
surfaces and op-revm for execution, and see
the Stack Components index for the Rust clients
themselves (op-reth, kona-node, kona-client).
If you build with React, you likely start from wagmi — and it works with OP
Stack chains out of the box. OP Stack chains are standard EVM chains, and
wagmi/chains ships their definitions (optimism, base, zora, and every
other chain from viem/chains). Nothing OP-specific is required for reads,
writes, or wallet connections.For OP Stack–specific operations — deposits, withdrawals, interop — use the
fact that wagmi is a wrapper over viem:
Extend that client with the viem/op-stack
actions and call them directly.
For Superchain interop specifically, the experimental
@eth-optimism/wagmi
package provides React hooks (such as useSendL2ToL2Message) over
@eth-optimism/viem. Treat it like its underlying package: experimental.