# Launch Wallet Services

> Web3Auth React Native SDK - launchWalletServices | Embedded Wallets

The `launchWalletServices` method launches a Secure Web Browser which allows you to use the templated wallet UI services. The method takes `ChainConfig` as the required input. Wallet Services is currently only available for EVM chains.

## Method

`launchWalletServices(chainConfig: ChainConfig, path?: string | null): Promise<void>;`

## Parameters

```javascript
const chainConfig = {
  chainId: '0x1', // Please use 0x1 for Mainnet
  rpcTarget: 'https://rpc.ethereum.org',
  displayName: 'Ethereum Mainnet',
  blockExplorerUrl: 'https://etherscan.io/',
  ticker: 'ETH',
  tickerName: 'Ethereum',
  logo: 'https://images.toruswallet.io/eth.svg',
}
```

<Tabs
  defaultValue="table"
  values={[
    { label: "Table", value: "table" },
    { label: "Type Declarations", value: "type" },
  ]}
>

<TabItem value="table">

| Parameter           | Description                            |
| ------------------- | -------------------------------------- |
| `chainNamespace`    | Namespace of the chain                 |
| `chainId`           | Chain ID of the chain                  |
| `rpcTarget`         | RPC target URL for the chain           |
| `wsTarget?`         | Web socket target URL for the chain    |
| `displayName?`      | Display name for the chain             |
| `blockExplorerUrl?` | URL of the block explorer              |
| `ticker?`           | Default currency ticker of the network |
| `tickerName?`       | Name for currency ticker               |
| `decimals?`         | Number of decimals for the currency    |
| `logo?`             | Logo for the token                     |
| `isTestnet?`        | Whether the network is testnet or not  |

</TabItem>

<TabItem value="type">

```tsx
export declare const CHAIN_NAMESPACES: {
  readonly EIP155: 'eip155'
  readonly SOLANA: 'solana'
  readonly CASPER: 'casper'
  readonly XRPL: 'xrpl'
  readonly OTHER: 'other'
}

export type ChainNamespaceType = (typeof CHAIN_NAMESPACES)[keyof typeof CHAIN_NAMESPACES]
export type CustomChainConfig = {
  chainNamespace: ChainNamespaceType
  /**
   * The chain id of the chain
   */
  chainId: string
  /**
   * RPC target Url for the chain
   */
  rpcTarget: string
  /**
   * web socket target url for the chain
   */
  wsTarget?: string
  /**
   * Display Name for the chain
   */
  displayName?: string
  /**
   * Url of the block explorer
   */
  blockExplorerUrl?: string
  /**
   * Default currency ticker of the network (e.g: ETH)
   */
  ticker?: string
  /**
   * Name for currency ticker (e.g: `Ethereum`)
   */
  tickerName?: string
  /**
   * Number of decimals for the currency ticker (e.g: 18)
   */
  decimals?: number
  /**
   * Logo for the token
   */
  logo?: string
  /**
   * Whether the network is testnet or not
   */
  isTestnet?: boolean
}
```

</TabItem>

</Tabs>

:::note

Access to Wallet Services is gated. You can use this feature in `sapphire_devnet` at no cost. The minimum [pricing plan](https://web3auth.io/pricing.html) to use this feature in a production environment is the **Scale Plan**.

:::

## Usage

```typescript
const chainConfig = {
  chainNamespace: ChainNamespace.EIP155,
  chainId: '0xaa36a7',
  rpcTarget: 'https://ethereum-sepolia.publicnode.com',
  // Avoid using public rpcTarget in production.
  // Use services like Infura
  displayName: 'Ethereum Sepolia Testnet',
  blockExplorerUrl: 'https://sepolia.etherscan.io',
  ticker: 'ETH',
  tickerName: 'Ethereum',
  decimals: 18,
  logo: 'https://cryptologos.cc/logos/ethereum-eth-logo.png',
}

await web3auth.launchWalletServices(chainConfig)
```
