@mysten/sui v2.0 and a new dApp Kit are here! Check out the migration guide
Mysten Labs SDKs
MigrationsMigrate to 2.0

SDK Maintainers

Upgrading SDKs to @mysten/sui@2.0.0

This guide covers the key breaking changes for SDK maintainers building on top of @mysten/sui.

For comprehensive SDK development patterns, see the Building SDKs guide.

Use ClientWithCoreApi

Accept ClientWithCoreApi instead of SuiClient to support all 3 Sui clients (JSON-RPC, GraphQL, gRPC):

- import { SuiClient } from '@mysten/sui/client';
+ import type { ClientWithCoreApi } from '@mysten/sui/client';

export class MySDKClient {
-   client: SuiClient;
+   client: ClientWithCoreApi;
}

Access Data via client.core methods

All data access methods are namespaced under client.core:

- const result = await this.client.getObject({ objectId });
+ const result = await this.client.core.getObject({ objectId });

- const result = await this.client.getOwnedObjects({ owner });
+ const result = await this.client.core.listOwnedObjects({ owner });
v1.x Methodv2.0 Method
client.getObject()client.core.getObject()
client.getOwnedObjects()client.core.listOwnedObjects()
client.getDynamicFieldObject()client.core.getDynamicField()
client.getDynamicFields()client.core.listDynamicFields()
client.multiGetObjects()client.core.getObjects()

See the Core API documentation for all available methods.

Use Peer Dependencies

Declare @mysten/* packages as peer dependencies:

{
	"peerDependencies": {
		"@mysten/sui": "^2.0.0"
	},
	"devDependencies": {
		"@mysten/sui": "^2.0.0"
	}
}

Client Extensions

v2.0 introduces client extensions that let users add your SDK to any Sui client:

import type { ClientWithCoreApi } from '@mysten/sui/client';

export function mySDK() {
	return {
		name: 'mySDK',
		register: (client: ClientWithCoreApi) => {
			return new MySDKClient({ client });
		},
	};
}

// Users can then extend any client
const client = new SuiGrpcClient({ ... }).$extend(mySDK());
await client.mySDK.doSomething();

See the Building SDKs guide for the complete extension pattern.

Code Generation

Use @mysten/codegen to generate type-safe TypeScript bindings from your Move packages. See the codegen documentation for setup instructions.

For complete SDK development patterns including client extensions, transaction thunks, and best practices, see the Building SDKs guide.

On this page