# Migrate to 0.38.0

> Migrate from SDK version 0.37 to 0.38 with updated module structure and API changes.

> **Warning:** The 1.0 release of the SDK contains many additional changes. This document might help as an
> intermediate step when upgrading from older versions of the SDK, but all apps should be upgraded to
> the latest version of the SDK instead of 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](#module-packages) 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 SuiJsonRpcClient](/sui/clients) 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](/sui/cryptography/keypairs)
  topic for more information.
- `signAndExecuteTransaction`: This method was not deprecated, but is now part of
  `SuiJsonRpcClient`.
- `Connection` classes - The `Connection` classes (`Connection`, `devnetConnection`, and so on) have
  been deprecated in favor ofSuiJsonRpcClientuiClient` for establishing the connection. See
  [Network Interactions with SuiJsonRpcClient](/sui/clients) for more information.
- The `superstruct` type definitions for `JsonRPCProvider` types are replaced with generated types
  exported from `@mysten/sui/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 transactions

Signing and sending transactions changes slightly with the deprecation of the `Signer` pattern. For
an example of transaction signing, see the
[Sui Programmable Transaction Blocks Basics](/sui/transaction-building/basics) topic.

### Faucet requests

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

```ts

await requestSuiFromFaucetV0({
	host: getFaucetHost('devnet'),
	recipient: '<SUI_ADDRESS>',
});
```