Polygon contract addresses and ABIs in two transports from one set of source files:
- npm package
@polygonlabs/meta— tree-shakableas constTypeScript ABIs, typed network metadata, and the same raw JSON files as the previous@maticnetwork/meta. - Public HTTP endpoint at
https://static.polygon.technology/...— the same JSON files served by nginx, unchanged from how@maticnetwork/meta@2.xexposed them.
pnpm add @polygonlabs/meta
# or
npm i @polygonlabs/metaRequires Node ≥ 24 and an ESM consumer.
import { abi } from '@polygonlabs/meta/abi/mainnet/v1/pos/AccessControl'
import { readContract } from 'viem'
await readContract(client, {
abi, // ← `as const` literal type — viem infers everything below
functionName: 'hasRole', // autocompleted from the literal tuple
args: [bytes32Role, address] // arg types inferred from the function's `inputs`
})The ABI is loaded only for the contracts you import. Unused contracts do not enter your bundle.
import { info } from '@polygonlabs/meta/info/mainnet/v1'
const ethChainId = info.Main.ChainId // typed as the literal `1`
const rootChainAddr = info.Main.Contracts.RootChainimport { networks } from '@polygonlabs/meta/info/networks'
for (const { network, version } of networks) {
// ...
}The same JSON files served by static.polygon.technology are also
reachable from the npm package, at the same paths:
import abi from '@polygonlabs/meta/network/mainnet/v1/artifacts/pos/AccessControl.json'
with { type: 'json' }https://static.polygon.technology/network/<chain>/<network>/artifacts/<type>/<Contract>.json
The HTTP endpoint serves the same JSON files as the npm package's
/network/* subpath. Use it for environments that can't import
modules (e.g. clients running in a browser without a bundler) or when
you want to fetch ABIs dynamically without bundling them.
CORS is open: the endpoint sends Access-Control-Allow-Origin: * and
allows GET, POST, OPTIONS so browsers can fetch() directly from
any origin.
@polygonlabs/meta/abi/<chain>/<network>/<type>/<Contract> # typed
@polygonlabs/meta/info/<chain>/<network> # typed
@polygonlabs/meta/info/networks # typed
@polygonlabs/meta/network/<chain>/<network>/artifacts/<type>/<C>.json # raw JSON
| chain | network | types |
|---|---|---|
mainnet |
v1 |
pos, plasma, fx-portal, genesis |
mainnet |
cherry |
zkevm |
testnet |
amoy |
pos, plasma, fx-portal, genesis |
testnet |
cardona |
zkevm |
See MIGRATION.md. The HTTP endpoint at
static.polygon.technology continues to work as before — the
migration only affects npm consumers.
See CONTRIBUTING.md. Source of truth is the JSON
tree under network/; the typed TS modules are codegenned by
scripts/codegen.mjs at build time.
MIT