Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

NestedProviderError

Nested <TxKitProvider> detected.

Cause

A standalone <TxKitProvider> was rendered inside another <TxKitProvider>. Each standalone provider creates its own wagmi store and QueryClient. Nesting them produces duplicate stores, breaks wallet state, and causes "Maximum update depth exceeded" crashes originating from wagmi's useSyncExternalStore reading a fresh Map reference on each render.

Solution

Use one <TxKitProvider> per app. To display multiple theme or variant previews side by side, apply CSS classes on wrapper divs instead of nesting providers:

<TxKitProvider config={config}>
  <div className="tx-root tx-dark">
    <ConnectWallet />
  </div>
  <div className="tx-root tx-light">
    <ConnectWallet />
  </div>
  <div className="tx-root tx-sharp">
    <ConnectWallet />
  </div>
</TxKitProvider>

If you need multiple wallet contexts in the same app (rare), wrap the inner subtree with your own <WagmiProvider> + <QueryClientProvider> and use <TxKitProvider embedded> - embedded providers safely reuse the outer wagmi.

<TxKitProvider config={config}>
  {/* main app */}
  <WagmiProvider config={otherWagmiConfig}>
    <QueryClientProvider client={otherQueryClient}>
      <TxKitProvider embedded>
        {/* isolated subtree */}
      </TxKitProvider>
    </QueryClientProvider>
  </WagmiProvider>
</TxKitProvider>