> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrade SDK from V3 to V4

<Card title="Recommended: JavaScript SDK with React Hooks" icon="react" color="#4779FE">
  For new React apps, we recommend the JavaScript SDK with React Hooks (`@dynamic-labs-sdk/react-hooks`) instead of the legacy React SDK documented here. The JS SDK comes with many benefits such as a much smaller bundle size and other optimizations. Use the [React quickstart (JavaScript SDK)](/javascript/reference/react-quickstart) to get started.
</Card>

Below are the breaking changes in V4 so far. If you don't see anything you'll be affected by, you can skip this guide and simply update your SDK package to [the latest V4](https://www.npmjs.com/package/@dynamic-labs/sdk-react-core?activeTab=versions). Just make sure to also upgrade all your other dynamic packages too!

### Breaking changes

#### Starknet V6

We upgraded to Starknet v6 See this guide for more details: [https://starknetjs.com/docs/guides/migrate/](https://starknetjs.com/docs/guides/migrate/)

There are no code changes required on the Dynamic SDK side, however if you have installed the starknet package, you will need to upgrade to >= v6.11.0.

#### Walletbook methods

isWalletMethodSupported and isWalletEventSupported have been removed from wallet-book as part of a refactor to improve the way the SDK operates.

### eventsCallbacks removed

In V2, we deprecated the eventsCallbacks prop on the DynamicContextProvider in favour of a prop called `events` which has the same purpose. In V4 we are removing the old prop entirely.

### authToken and minAuthToken

In V4 we stopped exporting authToken and minAuthToken from the dynamic context. You can still get these values by calling `getAuthToken` and `getMinAuthToken`.
Note that if you just want to know if the user is logged in or not, you can use the `useIsLoggedIn` hook.

### useFunding hook method changed

In V4, we changed the `openFunding` method exported from `useFunding` hook to `openExternalFunding` which now takes in a required parameter of `onrampProvider`.

#### ZeroDev package upgraded to 5.4.5

In V4, we updated the ZeroDev package to 5.4.5 which contains some breaking changes regarding the kernel client. [Learn more here](https://docs.zerodev.app/sdk/getting-started/migration#sdk-53x--54x)

### New features

#### Events

[`useDynamicEvents`](/react/reference/hooks/usedynamicevents) which allows you to listen to events emitted by the SDK now exposes more events. The full list of available events is now:

*Auth Events*
authFailure
authFlowCancelled
authFlowClose
authFlowOpen
authInit
logout

*Wallet Events*
walletAdded
walletRemoved
embeddedWalletCreated
primaryWalletChanged
primaryWalletNetworkChanged
userWalletsChanged

*OTP/MFA Events*
emailVerificationResult
smsVerificationResult
mfaCompletionFailure
mfaCompletionSuccess
