> ## 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.

# useDynamicModals

> [card] Recommended: JavaScript SDK with React Hooks
>
> 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)](https://docs.dynamic.xyz/docs/javascript/reference/react-quickstart.md) to get started.

## Summary

This hook can be used to programmatically show/hide some dynamic modals.
The hook needs to be initialized within a child of [DynamicContextProvider](https://docs.dynamic.xyz/docs/react/reference/providers/dynamiccontextprovider.md).

> [!NOTE]
>
> If you are not using `DynamicEmbeddedWidget`, you need to use this hook with [DynamicMultiWalletPromptsWidget](https://docs.dynamic.xyz/docs/react/reference/components/dynamicmultiwalletpromptswidget.md) to display the modals.

## setShowLinkNewWalletModal

Type: `Dispatch<SetStateAction>`

Use it to link a new wallet when the user is logged in.

### Example

```TypeScript theme={"system"}
const LinkNewWalletButton = () => {
  const { setShowLinkNewWalletModal } = useDynamicModals();
  return (
    <button
      onClick={() => setShowLinkNewWalletModal(true)}
    >
      Link a new wallet
    </button>
  );
};
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.