ARC-89 metadata SDK is ready on Testnet, with the MainNet registry still TBD
The Algorand Foundation's TypeScript SDK for ARC-89 stores asset descriptions in a registry app's box storage instead of an off-chain file. It works on Testnet, where the registry held 20 records as of October 27; the spec's MainNet deployment entry still reads TBD.

A developer who wants an Algorand asset's description to sit on the chain rather than on a file host now has a TypeScript package for the job. The asa-metadata-registry-ts1 SDK is a client for ARC-892, the ASA Metadata Registry: a single application whose box storage holds one record per asset, keyed by the asset's eight-byte ID. The Algorand Foundation3 sponsors the standard and publishes the SDK.
According to its documentation, the package reads a record with one call to a node, or through a simulation that returns what a smart contract sees. It creates, replaces and deletes records. It splits large metadata into chunks. It migrates assets described under the older ARC-3, ARC-19 and ARC-69 conventions. The release that carried it to this state is slight: v1.0.0-beta.1045, published October 21, carries a single bug fix, a build-tool bump to clear a high-severity audit advisory. The substantive one landed the day before: a breaking v1.0.0-beta.967 that targets the registry's v1.0.0 contracts on AVM 13, according to its release notes.
How a record sits on the chain
An Algorand Standard Asset's descriptive fields are fixed at creation: its name, unit name, total supply, decimals and URL. Everything a buyer reads had to live elsewhere: the image, the description, the traits, in an IPFS file behind the URL, or a JSON note on a configuration transaction. The registry puts the smaller, structured part inside chain state instead. Each record carries a fixed 518-byte header with reversible and irreversible flags and a hash that binds its contents. Reads go through algod, the node API, or directly from another smart contract on the AVM.
That last path is the part worth a moment. A contract that can read an asset's record in the same group that moves the asset can act on its traits at settlement instead of trusting an off-chain feed. AVM 139, which arrived with Go-Algorand 5.0.010 in August, added 'foreign' box opcodes for reading another application's boxes.
What it costs
The money involved is a deposit, not a fee. In the SDK's cookbook, creating a 117-byte record prints a minimum-balance payment of 72,90011 microALGO, or 0.0729 ALGO. Its delete example returns 37,70012 microALGO for a smaller record. The specification computes the amount as a flat charge plus a per-byte rate multiplied by the delta size, over the box key, the header and the metadata. It exposes both parameters for clients to read. The deposit comes back when the record is deleted.
The blank where MainNet should be
Three places would name a MainNet registry, and all three are empty. The specification's deployment table reads 'TBD' for MainNet. The SDK's deployment file sets the mainnet app id to null with the comment 'mainnet app id is TBD'. An open issue13 listing the follow-up steps for after deployment ends with the line 'Blocked on the MainNet deployment of the registry.14'
The author frames it as imminent. Cosimo Bassi, who posts as @cusma_b, wrote on October 20 that ARC-89 is 'approaching MainNet' and that the Python and TypeScript SDKs 'have been updated to v1.0.015 and are closing in on release'. A pull request he merged into the specification says it 'closes the last gaps in ARC-89 ahead of the MainNet deployment16'.
Two Testnet registries, one of them current
The SDK points at Testnet application 7729683541718. That application exists on Testnet, is not deleted, and its box storage holds 20 metadata records, read on October 27. The Algorand Developer Portal's ARC-89 page still names application 7533240841920 and calls the record's version field 'Last Modified Round'. The specification and the SDK use 772968354 and the name 'Revision'. Both applications exist on Testnet, and neither has been deleted. A developer who follows the portal writes against the older one.
Lora21, the explorer that ships with AlgoKit, was reported by PXke in August to read a registry record as of its 2.4.0-beta22.
The default install is a placeholder
The package has a packaging wrinkle worth knowing before installing. On npm, the package's registry entry23 shows both the 'latest' and 'beta' tags resolving to 0.0.1-beta.0, a March 27 release that describes itself as 'asa-metadata-registry-sdk placeholder for Algorand'. The working code sits on the 'main' tag, at 1.0.0-beta.10. According to npm's publication times, no version appeared between April 27 and October 20. The repository was moving, though: the beta.5 release page reports 11524 commits to main since that release.
What the record does and does not promise
The registry enforces who may write, how large a record can be, and whether it can change. Authorization goes to the asset's manager address, not its creator. A manager can declare a record immutable, and the specification says the registry itself must never be updated once deployed. The registry treats the metadata body as opaque bytes, so consumers must validate a record and its flag claims before trusting them. None of the specification, the reference repository or the TypeScript repository mentions a security audit.
How much is there
Usage is small and measurable. The npm package recorded 36 downloads in the last week and 96 in the last month, as of October 27.
- Metadata records on TestNet: 20 records.
- Minimum balance for a small record: 72,900 microALGO.
- SDK downloads last month: 96 downloads.
The standard's own adoption file25 lists no wallets, tooling, infrastructure or dapps yet, and one explorer in progress. The specification's front matter still reads 'Last Call' against a deadline of February 1, 2026.26
A developer trying the SDK today pins the main tag, points at application 772968354, and works on Testnet.
18 figures in this story are checked. 2 were read straight from the chain.See every check
Sources
- 1github.com/algorandfoundation/asa-metadata-registry-ts github.com↩
- 2ARCs/ARCs/arc-0089.md at main · algorandfoundation/ARCs · GitHub github.com↩
- 3Algorand Foundation github.com↩
- 4Release v1.0.0-beta.10 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩
- 6Release v1.0.0-beta.9 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩
- 13feat(deployments): add the MainNet registry deployment · Issue #133 · algorandfoundation/asa-metadata-registry-ts github.com↩
- 17772968354 lora.algokit.io↩
- 19753324084 lora.algokit.io↩
- 21Lora lora.algokit.io↩
- 23registry.npmjs.org/@algorandfoundation/asa-metadata-registry-sdk registry.npmjs.org↩
- 25raw.githubusercontent.com/algorandfoundation/ARCs/main/adoption/arc-0089.yaml raw.githubusercontent.com↩
Further sources (7)
- ARC-89: AVM 13, global revision tracker, content-only metadata hash, canonical discovery by cusma · Pull Request #481 · github.com
- raw.githubusercontent.com/algorandfoundation/asa-metadata-registry-ts/main/docs/cookbook.md raw.githubusercontent.com
- Release v1.0.0 · algorandfoundation/arc89 · GitHub github.com
- MainNet and TestNet Update: Go-Algorand 5.0.0 - Announcements - Algorand forum.algorand.co
- x.com/cusma_b/status/2112579605584355771 x.com
- Release v1.0.0-beta.5 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com
- Issues · algorandfoundation/asa-metadata-registry-ts · GitHub github.com