Skip to main content
Tempo is EVM compatible but has no native token: every transfer moves a TIP-20 stablecoin, and fees are paid in TIP-20 tokens too. Tempo therefore gets its own extension and its own network registry, separate from the EVM extensions on Adding EVM Extensions.

Installation

Add the extension

addTempoExtension registers Tempo’s network provider builder. Register it at module level next to your client, and enable Tempo in the Dynamic dashboard.
Tempo wallet accounts have chain: 'TEMPO', so use isTempoWalletAccount rather than the EVM guard to pick them out of a user’s accounts:

Read chain state

getTempoPublicClient resolves the active Tempo network from the Tempo registry and returns a viem PublicClient pointed at it.

Send a TIP-20 transfer

sendTip20Transaction transfers a TIP-20 token with a viem WalletClient created from the Tempo wallet account. tokenAddress is required, and decimals defaults to 18, so pass the token’s own decimals for tokens such as 6 decimal stablecoins. amount is the human-readable amount, not the smallest unit.
There is no native token on Tempo, so a value transfer without tokenAddress cannot succeed. sendTip20Transaction throws TempoNativeTokenError when tokenAddress is empty.

Recognize Tempo networks

isTempoChainId tells you whether a chain ID belongs to Tempo, which is useful when your app routes a network ID to chain-specific behavior. TEMPO_CHAIN_IDS holds the same list if you need to enumerate it.
isTempoNetworkProvider narrows a network provider to a TempoNetworkProvider, and isTempoWalletProvider does the same for wallet providers.
Last modified on September 23, 2026