TypeScript SDK
Sui TypeScript SDK Quick Start

Sui TypeScript SDK Quick Start

The Sui TypeScript SDK is a modular library of tools for interacting with the Sui blockchain. Use it to send queries to RPC nodes, build and sign transactions, and interact with a Sui or local network.

Installation

npm i @mysten/sui.js

Network locations

The following table lists the locations for Sui networks.

NetworkFull nodefaucet
localhttp://127.0.0.1:9000 (default)http://127.0.0.1:9123/gas (default)
Devnethttps://fullnode.devnet.sui.io:443https://faucet.devnet.sui.io/gas
Testnethttps://fullnode.testnet.sui.io:443https://faucet.testnet.sui.io/gas
Mainnethttps://fullnode.mainnet.sui.io:443null
⚠️

Use dedicated nodes/shared services rather than public endpoints for production apps. The public endpoints maintained by Mysten Labs (fullnode.<NETWORK>.sui.io:443) are rate-limited, and support only 100 requests per 30 seconds or so. Do not use public endpoints in production applications with high traffic volume.

You can either run your own Full nodes, or outsource this to a professional infrastructure provider (preferred for apps that have high traffic). You can find a list of reliable RPC endpoint providers for Sui on the Sui Dev Portal (opens in a new tab) using the Node Service tab.

Migrate to version 0.38.0

The Sui TypeScript SDK was refactored beginning with version 0.38.0. If you are updating from an earlier version of the SDK, there are some changes you should consider when updating your code.

Module structure

The Sui TypeScript SDK is now divided into modular components. Before version 0.38.0, you imported the complete SDK module. Now, you upload the individual packages of the SDK module instead. See the Module Packages section for the list of packages.

Deprecated classes

The Sui TypeScript SDK deprecates the following classes with version 0.38.0:

  • JsonRpcProvider - The JsonRpcProvider class is deprecated in favor of the suiClient class when creating a client for a Sui network. See Network Interactions with SuiClient for more information.
  • SignerWithProver and RawSigner - Key pairs now directly support signing transactions and messages without the need of a Signer class. See the Key pairs topic for more information.
  • signAndExecuteTransactionBlock - This method was not deprecated, but is now part of SuiClient.
  • Connection classes - The Connection classes (Connection, devnetConnection, and so on) have been deprecated in favor of using suiClient for establishing the connection. See Network Interactions with SuiClient for more information.
  • The superstruct type definitions for JsonRPCProvider types are replaced with generated types exported from @mysten/sui.js/client. The new type definitions are pure TypeScript types that you can't use for runtime validation.
  • A more stable JSON-RPC API has reduced the need for many of the SDK "getter" methods, which are now deprecated.

Signing transaction blocks

Signing and sending transaction blocks changes slightly with the deprecation of the Signer pattern. For an example of transaction signing, see the Sui Programmable Transaction Blocks Basics topic.

Faucet requests

The ability to request SUI from a faucet is not part of SuiClient as it was with JsonRpcProvider. Instead, you must use the requestSuiFromFaucetV0 method from @mysten/sui.js/faucet. The @mysten/sui.js/faucet import also provides a getFaucetHost method to retrieve the faucet URL for localnet, testnet, or devnet networks.

import { getFaucetHost, requestSuiFromFaucetV0 } from '@mysten/sui.js/faucet';
 
await requestSuiFromFaucetV0({
	host: getFaucetHost('devnet'),
	recipient: '<SUI_ADDRESS>',
});

Module packages

The SDK contains a set of modular packages that you can use independently or together. Import just what you need to keep your code light and compact.