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.
For where content belongs in general, see the
content guide.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Optimism Documentation","colors":{"primary":"#FF0420","light":"#FF0420","dark":"#FF0420"},"logo":{"light":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c","dark":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_light.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=edf965cc513f1a46b1897e2a6494b43b"},"favicon":"https://mintcdn.com/optimism-373f39ad/x8TXRvd2PF-Wx1yv/public/favicon.png?fit=max\u0026auto=format\u0026n=x8TXRvd2PF-Wx1yv\u0026q=85\u0026s=7b7a602bd267ee638c0167179f41737c","navbar":{"links":[{"href":"https://www.optimism.io/blog","label":"Blog"},{"href":"https://github.com/ethereum-optimism/optimism/tree/develop/docs/public-docs","label":"GitHub"}]},"footer":{"socials":{"twitter":"https://twitter.com/optimism","github":"https://github.com/ethereum-optimism"}},"seo":{"metatags":{"canonical":"https://docs.optimism.io/","og:title":"Optimism Documentation","og:type":"website","twitter:card":"summary_large_image"}},"integrations":{"mixpanel":{"projectToken":"807e42c62989ff12427a35baa12b6218"}},"contextual":{"options":["copy","chatgpt","claude","mcp"],"display":"header"},"thumbnails":{"preset":"classic","appearance":"dark","surface":"neutral","background":"https://mintcdn.com/optimism-373f39ad/ZyL9bbNrDzMQhMLM/public/img/thumbnail-bg.png?fit=max\u0026auto=format\u0026n=ZyL9bbNrDzMQhMLM\u0026q=85\u0026s=5baf50afc7e4f4e6288de49b3df19d52","fonts":{"family":"Riforma LL","source":"public/fonts/RiformaLL-Regular.woff","format":"woff"},"eyebrow":{"source":"none"}},"interaction":{"drilldown":false},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"optimism-373f39ad","hasAudioNarration":false,"actualSubdomain":"optimism-373f39ad","customDomains":["docs.optimism.io"],"gitSource":{"type":"github","owner":"ethereum-optimism","repo":"optimism","deployBranch":"develop","contentDirectory":"docs/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae370aa878abd4f8baed6ff","collectionId":"a046324a-d997-4a23-995f-cab51ecc8ad4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae370aa878abd4f8baed6ff"},"feedback":{"thumbs":true,"issues":false,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae370aa878abd4f8baed6ff","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Reference","count":136},{"language":"default","tag":"Node Operators","count":119},{"language":"default","tag":"Protocol","count":98},{"language":"default","tag":"Chain Operators","count":75},{"language":"default","tag":"op-reth","count":74},{"language":"default","tag":"op-reth CLI reference","count":73},{"language":"default","tag":"App Developers","count":68},{"language":"default","tag":"Guides","count":52},{"language":"default","tag":"Tutorials","count":42},{"language":"default","tag":"How the protocol works","count":41}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/homepage.css","content":"@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-prose,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose p,[data-page-id=index] h1,body{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}[data-page-id=index] h1+p,[data-page-id=index]>p:first-of-type{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important;font-family:var(--font-riforma)!important;font-size:1.25rem!important;line-height:1.6!important;color:#6b7280!important;margin-bottom:2rem!important;margin-top:0!important;max-width:100%!important}html[class*=dark] [data-page-id=index] h1+p,html[class*=dark] [data-page-id=index]>p:first-of-type{color:#9ca3af!important}body{font-family:var(--font-riforma)!important}html[class*=dark] body{background:#0f172a!important}.btn-primary,.btn-secondary,.hero-content h1,.hero-content p{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}html[class*=dark] .hero-content p{color:#9ca3af}.btn-primary,.btn-secondary{border-radius:6px}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-card .home-card__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}.card-list-item__description,.card-list-item__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:block}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-logo img,a[href=\"/\"] img,header img[src*=logo],img[alt*=logo],nav img{max-height:13px!important;width:auto!important;height:13px!important}:root{--font-riforma:'Riforma LL', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;--font-mono:'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}.nx-prose,.nx-prose blockquote,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose li,.nx-prose p,.nx-prose td,.nx-prose th,a:not(pre a):not(code a),body,button,div:not([class*=language-]):not(pre):not(code),html,span:not([class*=language-]):not([class*=token]){font-family:var(--font-riforma)!important}.boolean,.cdata,.class-name,.comment,.constant,.deleted,.doctype,.function,.important,.keyword,.language-bash,.language-javascript,.language-json,.language-python,.language-sh,.language-shell,.language-solidity,.language-typescript,.language-yaml,.language-yml,.number,.nx-bg-primary-700\\/5,.nx-code-block,.nx-code-block *,.nx-code-block span,.nx-font-mono,.operator,.prolog,.property,.punctuation,.regex,.symbol,.tag,.token,.variable,[class*=language-],[class*=language-] *,[class*=language-] span,code,code *,code span,div[data-language],div[data-language] *,div[data-language] span,div[data-theme*=dark],div[data-theme*=light],pre,pre *,pre span,span[class*=token]{font-family:var(--font-mono)!important;font-feature-settings:normal!important}.nx-prose h1,.nx-prose h2,.nx-prose h3,h1,h2,h3{font-family:var(--font-riforma)!important;font-weight:400!important}[data-page-id=index]{max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}[data-page-id=index] h1{font-size:3rem!important;font-weight:400!important;line-height:1.1!important;margin-bottom:1rem!important;margin-top:0!important;padding-top:0!important;color:#111827!important;letter-spacing:-.02em!important}html[class*=dark] [data-page-id=index] h1{color:#f9fafb!important}[data-page-id=index] .nx-prose{padding-top:0!important;padding-left:0!important;padding-right:0!important;max-width:100%!important}.nx-container{max-width:none!important;padding:0!important}[data-page-id=index] h1,[data-page-id=index]>div>div{max-width:100%!important}body{background:#fff!important}.nx-bg-gradient-to-b,.nx-bg-gradient-to-bl,.nx-bg-gradient-to-br,.nx-bg-gradient-to-l,.nx-bg-gradient-to-r,.nx-bg-gradient-to-t,.nx-bg-gradient-to-tl,.nx-bg-gradient-to-tr,.nx-container{background:0 0!important}.hero-section{display:flex;align-items:center;justify-content:space-between;min-height:auto;padding:0;margin-bottom:2.5rem;max-width:100%;margin-left:0;margin-right:0;background:0 0}.hero-content{flex:1;max-width:505px}.hero-content h1,.hero-content p,[data-page-id=index] h1{font-family:var(--font-riforma)!important}.hero-content h1{font-size:2.5rem;font-weight:600;line-height:1.2;margin-bottom:.75rem;color:#111827;letter-spacing:-.025em}html[class*=dark] .hero-content h1{color:#f9fafb}.hero-content p{font-size:1.125rem;font-weight:400;line-height:1.6;margin-bottom:1rem;color:#6b7280}.hero-visual{flex:1;display:flex;justify-content:center;align-items:center}.hero-visual img{max-width:100%;height:auto}.hero-buttons{display:flex;gap:1rem}.btn-primary{font-family:var(--font-riforma)!important;background-color:#ff0420;color:#fff;padding:.75rem 1.5rem;border:0;border-radius:.75rem;font-weight:500;cursor:pointer;transition:background-color .2s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-primary:hover,.btn-secondary{background-color:#e00320;color:#fff;text-decoration:none}.btn-secondary{font-family:var(--font-riforma)!important;background-color:transparent;color:#1f2937;padding:.75rem 1.5rem;border:1px solid #d1d5db;border-radius:.75rem;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-secondary:hover{background-color:#f9fafb;border-color:#9ca3af;color:#1f2937;text-decoration:none}html[class*=dark] .btn-secondary{color:#f9fafb;border-color:#4b5563}html[class*=dark] .btn-secondary:hover{background-color:#374151;border-color:#6b7280;color:#f9fafb}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-cards{width:100%;margin-bottom:2.5rem;margin-top:0;max-width:100%;margin-left:0;margin-right:0;padding:0}.home-card{display:flex;flex-direction:column;padding:1.75rem;background:0 0;border:1px solid #e2e8f0;border-radius:12px;transition:all .2s ease}html[class*=dark] .home-card{background:#1e293b;border-color:#334155}.home-card .home-card__title{font-family:var(--font-riforma)!important;font-size:1.5rem!important;font-weight:400!important;margin:0 0 1.5rem;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .home-card .home-card__title{color:#f1f5f9}.home-card__footer{margin-top:auto;padding-top:1.5rem}.home-card__footer-link{color:#64748b;text-decoration:none;font-size:.875rem;font-weight:500;transition:color .2s ease}.home-card__footer-link:hover{color:#475569;text-decoration:none}html[class*=dark] .home-card__footer-link{color:#94a3b8}html[class*=dark] .card-list-item:hover .card-list-item__description,html[class*=dark] .home-card__footer-link:hover{color:#cbd5e1}.card-list{display:flex;flex-direction:column;gap:0}.card-list-item{display:flex;align-items:flex-start;gap:1rem;padding:.875rem 0;border-radius:6px;text-decoration:none;color:inherit;transition:all .2s ease;border-bottom:1px solid #f1f5f9}.card-list-item:last-child{border-bottom:none}html[class*=dark] .card-list-item{border-bottom-color:#334155}.card-list-item:hover .card-list-item__title,html[class*=dark] .card-list-item:hover .card-list-item__arrow{color:#ef4444}.card-list-item:hover .card-list-item__description{color:#475569}.card-list-item__number{width:2rem;height:2rem;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;flex-shrink:0;color:#475569}html[class*=dark] .card-list-item__number{background:#334155;color:#cbd5e1}.card-list-item__content{flex:1}.card-list-item__header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.card-list-item__description,.card-list-item__title{font-family:var(--font-riforma)!important;margin:0;transition:color .2s ease}.card-list-item__title{font-size:1rem;font-weight:400;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .card-list-item__title{color:#f1f5f9}.card-list-item__description{font-size:.875rem;color:#64748b;line-height:1.5}html[class*=dark] .card-list-item__description{color:#94a3b8}.card-list-item__badge{padding:.25rem .75rem;border-radius:16px;font-size:.75rem;font-weight:600;text-transform:capitalize}.card-list-item__badge--easy{background:#dcfce7;color:#166534}.card-list-item__badge--medium{background:#fef3c7;color:#92400e}.card-list-item__badge--hard{background:#fee2e2;color:#991b1b}html[class*=dark] .card-list-item__badge--easy{background:#14532d;color:#bbf7d0}html[class*=dark] .card-list-item__badge--medium{background:#92400e;color:#fef3c7}html[class*=dark] .card-list-item__badge--hard{background:#991b1b;color:#fecaca}.card-list-item__arrow{color:#cbd5e1;font-size:1.25rem;transition:all .2s ease;display:flex;align-items:center;justify-content:center;margin-top:.25rem}.card-list-item:hover .card-list-item__arrow{transform:translateX(4px);color:#ef4444}html[class*=dark] .card-list-item__arrow{color:#64748b}.nx-prose:not([data-page-id=index] .nx-prose){max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}.nx-card img,[class*=card] img[src*=\"/public/img/\"]{background:0 0!important}"}],"page":{"pagePath":"app-developers/tools-sdks/support-matrix","slug":"/app-developers/tools-sdks/support-matrix","pageMetadata":{"title":"Tools \u0026 SDKs Support Matrix","description":"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.","diataxis":"reference","href":"/app-developers/tools-sdks/support-matrix"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"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.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsx(_components.p,{children:`Items on this page refer to third-party projects or products that are not\nmaintained by Optimism. They are provided for convenience; refer to each\nproject’s own documentation as the source of truth.`})}),`\n`,_jsxs(_components.p,{children:[`This page is the canonical hub for the tools and SDKs that surround the OP Stack.\nFollowing the `,_jsx(_components.a,{href:`/op-stack/contribute/content-guide`,children:`content guide`}),`, each listing\nlinks exactly one canonical documentation home — this page routes, it does not\nrestate. What gets listed here (and what gets removed) is governed by the\n`,_jsx(_components.a,{href:`/app-developers/tools-sdks/listing-criteria`,children:`listing criteria`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`support-status-levels`,children:`Support Status Levels`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Production`})}),_jsx(_components.td,{children:`Stable and recommended for production use by its owner.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Developer preview`})}),_jsx(_components.td,{children:`Usable today, but its owner has declared it not yet ready for production; APIs may change.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Experimental`})}),_jsx(_components.td,{children:`A staging ground. Features may change, move, or be upstreamed elsewhere.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`the-matrix`,children:`The Matrix`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tool`}),_jsx(_components.th,{children:`Purpose`}),_jsx(_components.th,{children:`Owner`}),_jsx(_components.th,{children:`Canonical docs`}),_jsx(_components.th,{children:`Support status`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://viem.sh/op-stack`,children:_jsx(_components.code,{children:`viem/op-stack`})})}),_jsx(_components.td,{children:`General-purpose TypeScript client for OP Stack chains: deposits, withdrawals, L1 gas estimation, and all standard chain interaction, built into viem`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/wevm/viem`,children:`wevm`}),` (third party)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://viem.sh/op-stack`,children:`viem.sh/op-stack`})}),_jsx(_components.td,{children:`Production`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/ethereum-optimism/ecosystem/tree/main/packages/viem`,children:_jsx(_components.code,{children:`@eth-optimism/viem`})})}),_jsx(_components.td,{children:`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`}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/ecosystem`,children:_jsx(_components.code,{children:`ecosystem`})}),` repo)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/ethereum-optimism/ecosystem/tree/main/packages/viem#readme`,children:`Package README \u0026 SDK reference`})}),_jsx(_components.td,{children:`Experimental`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/ethereum-optimism/actions`,children:`Actions SDK`}),` (`,_jsx(_components.code,{children:`@eth-optimism/actions-sdk`}),`)`]}),_jsx(_components.td,{children:`High-level abstractions for building onchain apps — wallet, lend, and swap namespaces over Superchain protocols`}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/actions`,children:_jsx(_components.code,{children:`actions`})}),` repo)`]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/app-developers/quickstarts/actions`,children:`Actions quickstart`}),` and `,_jsx(_components.a,{href:`/app-developers/reference/actions/integrating-wallets`,children:`reference`}),` on this site`]}),_jsx(_components.td,{children:`Developer preview`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://wagmi.sh`,children:`wagmi`})}),_jsx(_components.td,{children:`React hooks for Ethereum apps; works with OP Stack chains as with any EVM chain`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/wevm/wagmi`,children:`wevm`}),` (third party)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://wagmi.sh`,children:`wagmi.sh`})}),_jsx(_components.td,{children:`Production`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/app-developers/tools-sdks/supersim`,children:`supersim`})}),_jsx(_components.td,{children:`Local Superchain simulator: one L1 plus multiple OP Stack L2s for testing L1↔L2 and L2↔L2 message passing without deploying to live networks`}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/supersim`,children:_jsx(_components.code,{children:`supersim`})}),` repo)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://supersim.pages.dev`,children:`Supersim docs`})}),_jsx(_components.td,{children:`Developer preview (all releases are alpha pre-releases; interop features in active development)`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/ethereum-optimism/super-cli`,children:`super-cli`}),` (`,_jsx(_components.code,{children:`sup`}),`)`]}),_jsx(_components.td,{children:`Foundry companion CLI for multichain workflows: deploy and verify contracts on multiple chains at once, bridge funds, use connected wallets`}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/super-cli`,children:_jsx(_components.code,{children:`super-cli`})}),` repo)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/ethereum-optimism/super-cli#readme`,children:`Repository README`})}),_jsx(_components.td,{children:`Experimental`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/ethereum-optimism/superchain-registry`,children:`superchain-registry`}),` tooling`]}),_jsxs(_components.td,{children:[`Not an SDK — the source-of-truth library of chain configs that OP Stack software (such as `,_jsx(_components.code,{children:`op-node`}),` and `,_jsx(_components.code,{children:`op-geth`}),`) consumes, plus the `,_jsx(_components.code,{children:`just`}),` tasks and validation checks used to add and verify a chain`]}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/superchain-registry`,children:_jsx(_components.code,{children:`superchain-registry`})}),` repo)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/ethereum-optimism/superchain-registry/tree/main/docs`,children:`Registry operations docs`})}),_jsx(_components.td,{children:`Production`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/app-developers/tools-sdks/op-alloy/intro`,children:`op-alloy`})}),_jsxs(_components.td,{children:[`Rust crates for interfacing with OP Stack chains: consensus, RPC, engine, and network types built on the `,_jsx(_components.a,{href:`https://github.com/alloy-rs/alloy`,children:`Alloy`}),` ecosystem; the type layer consumed by kona and op-reth`]}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/optimism/tree/develop/rust/op-alloy`,children:_jsx(_components.code,{children:`rust/op-alloy`})}),` in the monorepo)`]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/app-developers/tools-sdks/op-alloy/intro`,children:`op-alloy docs`}),` on this site`]}),_jsx(_components.td,{children:`Developer preview (owner-declared not yet production-ready; APIs may change)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/app-developers/tools-sdks/op-revm`,children:`op-revm`})}),_jsx(_components.td,{children:`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`}),_jsxs(_components.td,{children:[`Optimism (`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/optimism/tree/develop/rust/op-revm`,children:_jsx(_components.code,{children:`rust/op-revm`})}),` in the monorepo, vendored from upstream `,_jsx(_components.a,{href:`https://github.com/bluealloy/revm`,children:_jsx(_components.code,{children:`bluealloy/revm`})}),`)`]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/app-developers/tools-sdks/op-revm`,children:`op-revm docs`}),` on this site`]}),_jsx(_components.td,{children:`Production (consumed transitively through op-reth or kona by most users)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`choose-an-sdk-surface`,children:`Choose an SDK Surface`}),`\n`,_jsx(_components.p,{children:`Three of the rows above are TypeScript SDK surfaces that are easy to confuse.\nThe distinction:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Start with `,_jsx(_components.a,{href:`https://viem.sh/op-stack`,children:_jsx(_components.code,{children:`viem/op-stack`})}),`.`]}),` viem provides\nfirst-class OP Stack support in the core library: extend any viem client\nwith `,_jsx(_components.code,{children:`publicActionsL2()`}),` (and friends) imported from `,_jsx(_components.code,{children:`viem/op-stack`}),` to get\ndeposits, withdrawals, and L1 gas estimation. If a feature is available\nhere, this is its production home. Super Root withdrawal proving requires\n`,_jsx(_components.code,{children:`viem`}),` `,_jsx(_components.code,{children:`2.51.0`}),` or later.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Reach for `,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/ecosystem/tree/main/packages/viem`,children:_jsx(_components.code,{children:`@eth-optimism/viem`})}),`\nwhen you need what viem does not have yet.`]}),` The package’s stated goal is\nto upstream as much as possible into viem itself; until then it is the\nhome of Superchain interop actions and other pre-production features. The\n`,_jsx(_components.a,{href:`/app-developers/tutorials/interoperability/manual-relay`,children:`interop tutorials`}),`\nand `,_jsx(_components.a,{href:`/app-developers/tutorials/bridging/cross-dom-bridge-erc20`,children:`bridging tutorials`}),`\non this site use it.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Use the `,_jsx(_components.a,{href:`/app-developers/quickstarts/actions`,children:`Actions SDK`}),` for app-level\nbuilding blocks, not chain plumbing.`]}),` Where the two viem surfaces expose\nprotocol operations, the Actions SDK offers wallet, lend, and swap\nnamespaces for building end-user apps. It is a developer preview and not\nyet ready for production use.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Building in Rust rather than TypeScript? Start from\n`,_jsx(_components.a,{href:`/app-developers/tools-sdks/op-alloy/intro`,children:`op-alloy`}),` for OP Stack types and RPC\nsurfaces and `,_jsx(_components.a,{href:`/app-developers/tools-sdks/op-revm`,children:`op-revm`}),` for execution, and see\nthe `,_jsx(_components.a,{href:`/op-stack/components/index`,children:`Stack Components index`}),` for the Rust clients\nthemselves (op-reth, kona-node, kona-client).`]}),`\n`,_jsx(Heading,{level:`2`,id:`using-wagmi-with-the-op-stack`,children:`Using wagmi With the OP Stack`}),`\n`,_jsxs(_components.p,{children:[`If you build with React, you likely start from wagmi — and it works with OP\nStack chains out of the box. OP Stack chains are standard EVM chains, and\n`,_jsx(_components.code,{children:`wagmi/chains`}),` ships their definitions (`,_jsx(_components.code,{children:`optimism`}),`, `,_jsx(_components.code,{children:`base`}),`, `,_jsx(_components.code,{children:`zora`}),`, and every\nother chain from `,_jsx(_components.code,{children:`viem/chains`}),`). Nothing OP-specific is required for reads,\nwrites, or wallet connections.`]}),`\n`,_jsx(_components.p,{children:`For OP Stack–specific operations — deposits, withdrawals, interop — use the\nfact that wagmi is a wrapper over viem:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Get a viem client from wagmi with the\n`,_jsx(_components.a,{href:`https://wagmi.sh/react/api/hooks/useClient`,children:_jsx(_components.code,{children:`useClient`})}),` or\n`,_jsx(_components.a,{href:`https://wagmi.sh/react/api/hooks/useConnectorClient`,children:_jsx(_components.code,{children:`useConnectorClient`})}),`\nhooks, following wagmi’s own\n`,_jsx(_components.a,{href:`https://wagmi.sh/react/guides/viem`,children:`viem guide`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Extend that client with the `,_jsx(_components.a,{href:`https://viem.sh/op-stack`,children:_jsx(_components.code,{children:`viem/op-stack`})}),`\nactions and call them directly.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For Superchain interop specifically, the experimental\n`,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/ecosystem/tree/main/packages/wagmi`,children:_jsx(_components.code,{children:`@eth-optimism/wagmi`})}),`\npackage provides React hooks (such as `,_jsx(_components.code,{children:`useSendL2ToL2Message`}),`) over\n`,_jsx(_components.code,{children:`@eth-optimism/viem`}),`. Treat it like its underlying package: experimental.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Read the `,_jsx(_components.a,{href:`/app-developers/tools-sdks/listing-criteria`,children:`listing criteria and maintenance-sweep policy`}),`\nthat govern this page.`]}),`\n`,_jsxs(_components.li,{children:[`Adding a chain rather than building an app? See\n`,_jsx(_components.a,{href:`/chain-operators/guides/join-superchain-registry`,children:`Join the Superchain Registry`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`For where content belongs in general, see the\n`,_jsx(_components.a,{href:`/op-stack/contribute/content-guide`,children:`content guide`}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Tools \u0026 SDKs Support Matrix","description":"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.","diataxis":"reference","href":"/app-developers/tools-sdks/support-matrix"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Support Status Levels","slug":"support-status-levels","depth":2,"children":[]},{"title":"The Matrix","slug":"the-matrix","depth":2,"children":[]},{"title":"Choose an SDK Surface","slug":"choose-an-sdk-surface","depth":2,"children":[]},{"title":"Using wagmi With the OP Stack","slug":"using-wagmi-with-the-op-stack","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/optimism-373f39ad/6b11b6c32a46a09b/public/mixpanel-custom.js"],"subdomain":"optimism-373f39ad","siteName":"Optimism Documentation","title":"Optimism Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-02T19:35:05.642Z","originalFileLocation":"app-developers/tools-sdks/support-matrix.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"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.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"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.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=Tools+%26+SDKs+Support+Matrix\u0026amp;description=One+page+that+differentiates+the+OP+Stack+SDK+surfaces+and+developer+tools+%E2%80%94+what+each+is+for%2C+who+owns+it%2C+where+its+canonical+docs+live%2C+and+its+support+statu\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=46d254b5d482f3b339e966f98520f47817c908535625f61a182a70d36b70c9f3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=Tools+%26+SDKs+Support+Matrix\u0026amp;description=One+page+that+differentiates+the+OP+Stack+SDK+surfaces+and+developer+tools+%E2%80%94+what+each+is+for%2C+who+owns+it%2C+where+its+canonical+docs+live%2C+and+its+support+statu\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=46d254b5d482f3b339e966f98520f47817c908535625f61a182a70d36b70c9f3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF0420\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/app-developers/tools-sdks/support-matrix.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.optimism.io/#organization\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.optimism.io#website\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix#webpage\",\"url\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix\",\"name\":\"Tools \u0026 SDKs Support Matrix\",\"description\":\"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.\",\"dateModified\":\"2026-08-02T19:35:05.642Z\",\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tools \u0026 SDKs\",\"item\":\"https://docs.optimism.io/app-developers/tools-sdks/support-matrix\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools \u0026 SDKs Support Matrix\",\"item\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix#article\",\"headline\":\"Tools \u0026 SDKs Support Matrix\",\"name\":\"Tools \u0026 SDKs Support Matrix\",\"description\":\"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.\",\"url\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix\",\"mainEntityOfPage\":{\"@id\":\"https://docs.optimism.io//app-developers/tools-sdks/support-matrix#webpage\"},\"dateModified\":\"2026-08-02T19:35:05.642Z\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"}}]}\u003c/script>","siteName":"Optimism Documentation","nav":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Chain Operators","pages":[{"title":"Chain Operators","href":"/chain-operators"}]},{"tab":"Node Operators","pages":[{"title":"Node Operators","href":"/node-operators/overview"}]},{"tab":"App Developers","groups":[{"group":"Build an app","pages":[{"title":"App developers","sidebarTitle":"Overview","href":"/app-developers"},{"title":"App developer quickstart","href":"/app-developers/quickstarts/get-started"},{"title":"Integrating DeFi with Actions SDK","href":"/app-developers/quickstarts/actions"}]},{"group":"Guides","pages":[{"title":"Building apps on OP Stack chains","href":"/app-developers/guides/building-apps"},{"title":"Testing apps for OP Stack chains","href":"/app-developers/guides/testing-apps"},{"title":"Configuring Actions SDK","href":"/app-developers/guides/configuring-actions"},{"title":"Connecting a wallet to Actions SDK","href":"/app-developers/guides/connect-wallet-to-actions"},{"group":"Bridging","pages":[{"title":"Bridging basics","href":"/app-developers/guides/bridging/basics"},{"title":"Custom bridges","href":"/app-developers/guides/bridging/custom-bridge"},{"title":"Sending data between L1 and L2","href":"/app-developers/guides/bridging/messaging"},{"title":"Using the Standard Bridge","href":"/app-developers/guides/bridging/standard-bridge"},{"title":"Verifying bridged token addresses","href":"/app-developers/guides/bridging/verify-bridged-tokens"}]},{"group":"Interoperability","pages":[{"title":"Build interoperable apps on OP Stack devnet","href":"/app-developers/guides/interoperability/get-started"},{"title":"Interop message passing overview","href":"/app-developers/guides/interoperability/message-passing"},{"title":"Reading Logs with OP Stack Interop","href":"/app-developers/guides/interoperability/reading-logs"},{"title":"Message expiration","href":"/app-developers/guides/interoperability/message-expiration"}]},{"group":"Transactions","pages":[{"title":"Estimating transaction fees on OP Mainnet","href":"/app-developers/guides/transactions/estimates"},{"title":"Integrate Subblocks in your app","href":"/app-developers/guides/transactions/integrating-subblocks"},{"title":"Setting transaction gas parameters on OP Mainnet","href":"/app-developers/guides/transactions/parameters"},{"title":"Transaction statuses on OP Mainnet","href":"/app-developers/guides/transactions/statuses"},{"title":"Subblocks and gas usage on OP Stack","href":"/app-developers/guides/transactions/subblocks-and-gas-usage"},{"title":"Troubleshooting transactions","href":"/app-developers/guides/transactions/troubleshooting"}]}]},{"group":"Tutorials","pages":[{"title":"Deploy a contract to OP Sepolia","href":"/app-developers/tutorials/deploy-a-contract"},{"group":"Bridging","pages":[{"title":"Create an L2 token for the Standard Bridge","href":"/app-developers/tutorials/bridging/standard-bridge-standard-token"},{"title":"Bridging ERC-20 tokens to OP Mainnet","href":"/app-developers/tutorials/bridging/cross-dom-bridge-erc20"},{"title":"Communicating between OP Stack and Ethereum in Solidity","href":"/app-developers/tutorials/bridging/cross-dom-solidity"},{"title":"Submitting Transactions from L1","href":"/app-developers/tutorials/bridging/cross-dom-bridge-eth"},{"title":"Transferring ETH","href":"/app-developers/tutorials/bridging/bridge-crosschain-eth"},{"title":"Deposit transactions","href":"/app-developers/tutorials/bridging/deposit-transactions"},{"title":"Replaying a failed deposit","href":"/app-developers/tutorials/bridging/replay-failed-deposit"}]},{"group":"Interoperability","pages":[{"title":"Making crosschain contract calls (ping pong)","href":"/app-developers/tutorials/interoperability/contract-calls"},{"title":"Deploying crosschain event composability (contests)","href":"/app-developers/tutorials/interoperability/event-contests"},{"title":"Making cross-chain event reads (tic-tac-toe)","href":"/app-developers/tutorials/interoperability/event-reads"},{"title":"Relay transactions manually","href":"/app-developers/tutorials/interoperability/manual-relay"},{"title":"Interop message passing tutorial","href":"/app-developers/tutorials/interoperability/message-passing"}]},{"group":"Supersim","pages":[{"title":"First steps","href":"/app-developers/tutorials/development/supersim/first-steps"},{"title":"Install Supersim","href":"/app-developers/tutorials/development/supersim/installation"}]},{"group":"Transactions","pages":[{"title":"Estimating transaction costs on OP Stack","href":"/app-developers/tutorials/transactions/sdk-estimate-costs"},{"title":"Tracing deposits and withdrawals","href":"/app-developers/tutorials/transactions/sdk-trace-txns"},{"title":"Triggering OP Stack transactions from Ethereum","description":"Learn how to force transaction inclusion without the OP Stack Sequencer using Viem.","href":"/app-developers/tutorials/transactions/send-tx-from-eth"}]}]},{"group":"Tools \u0026 SDKs","pages":[{"title":"Tools \u0026 SDKs Support Matrix","href":"/app-developers/tools-sdks/support-matrix"},{"title":"Tools \u0026 SDKs Listing Criteria","description":"What a tool or SDK must meet to be listed on the support matrix, the removal rule, and the maintenance sweep that keeps listings accurate.","href":"/app-developers/tools-sdks/listing-criteria"},{"group":"op-alloy","pages":[{"title":"op-alloy","href":"/app-developers/tools-sdks/op-alloy/intro"},{"title":"Add op-alloy to your project","href":"/app-developers/tools-sdks/op-alloy/starting"},{"group":"Building","pages":[{"title":"Building","href":"/app-developers/tools-sdks/op-alloy/building/index"},{"title":"Consensus","href":"/app-developers/tools-sdks/op-alloy/building/consensus"},{"title":"RPC Engine Types","href":"/app-developers/tools-sdks/op-alloy/building/engine"}]}]},{"title":"op-revm","href":"/app-developers/tools-sdks/op-revm"},{"title":"Testnet faucets","href":"/app-developers/tools-sdks/faucets"},{"title":"Block explorers","href":"/app-developers/tools-sdks/block-explorers"},{"group":"Data","pages":[{"title":"Data and Dashboards","href":"/app-developers/tools-sdks/data/data-and-dashboards"},{"title":"Data Glossary","href":"/app-developers/tools-sdks/data/data-glossary"},{"title":"Analytics tools","href":"/app-developers/tools-sdks/data/analytics-tools"},{"title":"Oracles","href":"/app-developers/tools-sdks/data/oracles"}]},{"title":"Supersim Multichain Development Environment","href":"/app-developers/tools-sdks/supersim"},{"title":"Account abstraction","href":"/app-developers/tools-sdks/account-abstraction"}]},{"group":"Reference","pages":[{"title":"OP Stack RPC directory","href":"/app-developers/reference/rpc-providers"},{"group":"Actions SDK","pages":[{"title":"Integrating wallets","href":"/app-developers/reference/actions/integrating-wallets"},{"title":"Wallet Documentation","href":"/app-developers/reference/actions/wallet-definitions"},{"title":"Lend Documentation","href":"/app-developers/reference/actions/lend-documentation"},{"title":"Swap Documentation","href":"/app-developers/reference/actions/swap-documentation"}]},{"group":"Contracts","pages":[{"title":"Interoperability predeploys","href":"/app-developers/reference/contracts/interop/predeploy"}]},{"group":"Tokens","pages":[{"title":"Bridged token addresses","href":"/app-developers/reference/tokens/tokenlist"}]},{"group":"Supersim","pages":[{"title":"OPChainA (chainID 901)","href":"/app-developers/reference/tools/supersim/chain-a"},{"title":"OPChainB (chainID 902)","href":"/app-developers/reference/tools/supersim/chain-b"},{"title":"Fork mode","href":"/app-developers/reference/tools/supersim/fork"},{"title":"Included contracts","href":"/app-developers/reference/tools/supersim/included-contracts"},{"title":"Vanilla mode","href":"/app-developers/reference/tools/supersim/vanilla"}]}]}]},{"tab":"Protocol","pages":[{"title":"Protocol","href":"/op-stack/introduction/op-stack"}]},{"tab":"OP Mainnet","pages":[{"title":"OP Mainnet","href":"/op-mainnet"}]},{"tab":"Governance","pages":[{"title":"Governance","href":"/governance/protocol-upgrades"}]},{"tab":"Notices","pages":[{"title":"Notices","href":"/notices"}]}]},"title":"Optimism Documentation","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}