# Configuration

All the options for configuring the wc-client provider.

The wc-client provider takes a configuration object. Only `projectId` is required.

```tsx
// src/common/wc-config.ts
import type { Config } from '@joey-wallet/wc-client';
import core from '@joey-wallet/wc-client/core';

const chains = core.constants.chains;

export default {
  /**
   * Required. Your WalletConnect project ID from the Reown dashboard.
   * @see https://dashboard.reown.com
   */
  projectId: process.env.NEXT_PUBLIC_PROJECT_ID,

  /**
   * Namespaces requested from the wallet. Defaults to the XRPL namespace.
   */
  namespaces: chains.xrplNamespace,

  /**
   * Chain to use when connecting. Defaults to the first chain in `namespaces`.
   */
  defaultChain: chains.xrpl.mainnet.id, // 'xrpl:0'

  /**
   * Wallets to feature in the connect modal and to build deep links for.
   * Joey is included automatically if you don't set this.
   */
  walletDetails: [
    {
      name: 'Joey Wallet',
      // Joey's WalletConnect Explorer wallet ID (not a Reown project ID)
      projectId: 'd9f5432e932c6fad8e19a0cea9d4a3372a84aed16e98a52e6655dd2821a63404',
      deeplinkFormat: 'joey://settings/wc?uri=',
    },
  ],

  /**
   * Log debug output to the console.
   * @default false
   */
  verbose: false,

  /**
   * Persist sessions (in IndexedDB) so users stay connected across reloads.
   */
  storage: {
    enabled: true,
    custom: null, // optional custom storage implementation
  },

  /**
   * Your app's details, shown to the user in Joey when they connect.
   */
  metadata: {
    name: 'Your dApp',
    description: 'A decentralized application for the XRP Ledger',
    url: 'https://your-dapp.com',
    icons: ['https://your-dapp.com/icon.png'],
    redirect: {
      universal: 'https://your-dapp.com',
    },
  },
} as Config;
```

## Notes

- **`walletDetails[].projectId`** holds Joey's **WalletConnect Explorer wallet ID**, despite the field's name. It's the same ID you'd pass to AppKit's `featuredWalletIds`. Your own Reown project ID goes in the top-level `projectId`.
- **`metadata.redirect`** is an object with `native` and/or `universal` URLs. After a sign-in that started in an external browser, Joey uses it to send the user back to your app.
- **Methods:** Joey serves `xrpl_signTransaction`, `xrpl_signTransactionFor` and `xrpl_signTransactionBulk`. See [Methods](/docs/integration/supported-networks/xrp-ledger/methods).

For the full type definition, see [`config.ts` in the wc-client repository](https://github.com/Joey-Wallet/wc-client/blob/develop/packages/core/src/typings/config.ts).
