> For the complete documentation index, see [llms.txt](/llms.txt).

# Embedded Wallets events and status

This page documents the key properties and lifecycle events available from an Embedded Wallets instance. These allow you to track the connection status, react to changes, and build responsive user experiences.

## `connected`

Returns `true` if a wallet is connected, otherwise `false`.

#### Interface

```ts
get connected(): boolean;

```

#### Usage

```js
const isConnected = web3auth.connected

```

## `connection`

Returns the active wallet connection, including the Ethereum provider and Solana wallet when connected.

#### Usage

```js
const provider = web3auth.connection?.ethereumProvider ?? null
const solanaWallet = web3auth.connection?.solanaWallet ?? null

```

note

In Web SDK v11, reading `web3auth.provider` returns `undefined`. Use `connection` instead.

## `primaryConnectorName`

Name of the currently connected primary wallet connector, or `null` if not connected.

#### Interface

```ts
get primaryConnectorName(): WALLET_CONNECTOR_TYPE | null;

```

##### `WALLET_CONNECTOR_TYPE`

**Table**

| Event               | Description                 |
| ------------------- | --------------------------- |
| `AUTH`              | Web3Auth connector.         |
| `WALLET_CONNECT_V2` | WalletConnect V2 connector. |
| `COINBASE`          | Coinbase connector.         |
| `BASE_ACCOUNT`      | Base Account connector.     |
| `METAMASK`          | MetaMask connector.         |

**Interface**

```ts
export type WALLET_CONNECTOR_TYPE = (typeof WALLET_CONNECTORS)[keyof typeof WALLET_CONNECTORS]
export declare const WALLET_CONNECTORS: {
  readonly AUTH: 'auth'
  readonly WALLET_CONNECT_V2: 'wallet-connect-v2'
  readonly COINBASE: 'coinbase'
  readonly BASE_ACCOUNT: 'base-account'
  readonly METAMASK: 'metamask'
}

```

#### Usage

```js
const connectorName = web3auth.primaryConnectorName

```

## `status`

Current status of the Web3Auth instance. Emits status change events.

#### Interface

```ts
status: CONNECTOR_STATUS_TYPE

```

##### `CONNECTOR_STATUS_TYPE`

**Table**

| Event               | Description                                                                 |
| ------------------- | --------------------------------------------------------------------------- |
| `NOT_READY`         | Triggered when the connector is not ready.                                  |
| `READY`             | Triggered when the connector is ready.                                      |
| `CONNECTING`        | Triggered when a connection is being established.                           |
| `CONNECTED`         | Triggered when a wallet is successfully connected.                          |
| `DISCONNECTING`     | Triggered when the wallet is in the process of Disconnecting.               |
| `DISCONNECTED`      | Triggered when the wallet is Disconnected.                                  |
| `ERRORED`           | Triggered when an error occurs during the connection lifecycle.             |
| `AUTHORIZING`       | Triggered while the SDK requests a signature to issue the `idToken`.        |
| `AUTHORIZED`        | Triggered when the wallet is connected and the `idToken` is issued.         |
| `CONSENT_REQUIRING` | Triggered when the user must accept the terms before the session continues. |

**Interface**

```ts
export type CONNECTOR_STATUS_TYPE = (typeof CONNECTOR_STATUS)[keyof typeof CONNECTOR_STATUS]
export declare const CONNECTOR_STATUS: {
  readonly NOT_READY: 'not_ready'
  readonly READY: 'ready'
  readonly CONNECTING: 'connecting'
  readonly CONNECTED: 'connected'
  readonly DISCONNECTING: 'disconnecting'
  readonly DISCONNECTED: 'disconnected'
  readonly ERRORED: 'errored'
  readonly AUTHORIZED: 'authorized'
  readonly AUTHORIZING: 'authorizing'
  readonly CONSENT_REQUIRING: 'consent_requiring'
}

```

#### Usage

```js
const status = web3auth.status

```

## `currentChain`

Returns the current chain configuration if connected.

#### Interface

```ts
get currentChain(): CustomChainConfig | undefined;

```

#### `chainConfig`

In Web SDK v11, configure chains on the [Embedded Wallets dashboard](/embedded-wallets/dashboard/chains-and-networks/). The shape of each chain matches `CustomChainConfig`:

```javascript
const chainConfig = {
  chainNamespace: 'eip155',
  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',
}

```

**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  |
| `fallbackRpcTargets?` | Fallback RPC target URLs               |
| `fallbackWsTargets?`  | Fallback web socket target URLs        |

**Type Declarations**

```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 = ProviderConfig & {
  fallbackRpcTargets?: string[]
  fallbackWsTargets?: string[]
}

export interface ProviderConfig {
  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
}

```

#### Usage

```js
const chain = web3auth.currentChain

```

## `primaryConnector`

Returns the connector instance for the connected primary wallet, or `null`.

#### Interface

```ts
get primaryConnector(): IConnector<unknown> | null;

```

#### Usage

```js
const connector = web3auth.primaryConnector

```

## `accountAbstractionProvider`

Returns the account abstraction provider if available.

#### Interface

```ts
get accountAbstractionProvider(): AccountAbstractionProvider | null;

```

#### Usage

```js
const aaProvider = web3auth.accountAbstractionProvider

```

## `getConnector`

Returns a connector instance for a given connector name and chain namespace.

#### Interface

```ts
getConnector(connectorName: WALLET_CONNECTOR_TYPE, chainNamespace?: ChainNamespaceType): IConnector<unknown> | null;

export type WALLET_CONNECTOR_TYPE = (typeof WALLET_CONNECTORS)[keyof typeof WALLET_CONNECTORS];
export declare const WALLET_CONNECTORS: {
  readonly AUTH: "auth";
  readonly WALLET_CONNECT_V2: "wallet-connect-v2";
  readonly COINBASE: "coinbase";
  readonly BASE_ACCOUNT: "base-account";
  readonly METAMASK: "metamask";
};
export type ChainNamespaceType = (typeof CHAIN_NAMESPACES)[keyof typeof CHAIN_NAMESPACES];

```

#### Usage

```js
import { WALLET_CONNECTORS } from '@web3auth/modal'

const connector = web3auth.getConnector(WALLET_CONNECTORS.WALLET_CONNECT_V2, 'eip155')

```

## `getPlugin`

Returns a plugin instance by name, or `null` if not found.

#### Interface

```ts
getPlugin(name: string): IPlugin | null;

export interface IPlugin extends SafeEventEmitter {
  name: string;
  status: PLUGIN_STATUS_TYPE;
  SUPPORTED_CONNECTORS: WALLET_CONNECTOR_TYPE[];
  pluginNamespace: PluginNamespace;
  initWithWeb3Auth(web3auth: IWeb3AuthCore, whiteLabel?: WhiteLabelData, analytics?: Analytics): Promise<void>;
  connect(): Promise<void>;
  disconnect(): Promise<void>;
  cleanup(): Promise<void>;
}

```

#### Usage

```js
import { EVM_PLUGINS } from '@web3auth/modal'

// EVM_PLUGINS.WALLET_SERVICES is 'wallet-services'
const plugin = web3auth.getPlugin(EVM_PLUGINS.WALLET_SERVICES)

```

## Events

The `Web3Auth` instance is an event emitter. Subscribe to lifecycle events with `web3auth.on()` and the `CONNECTOR_EVENTS` constants.

```js
import { CONNECTOR_EVENTS } from '@web3auth/modal'

web3auth.on(CONNECTOR_EVENTS.CONNECTED, data => {
  console.log('Connected with', data.connectorName)
})

web3auth.on(CONNECTOR_EVENTS.DISCONNECTED, () => {
  console.log('Disconnected')
})

web3auth.on(CONNECTOR_EVENTS.ERRORED, error => {
  console.error(error)
})

```

`CONNECTOR_EVENTS` includes every `CONNECTOR_STATUS` value, plus:

```ts
export const CONNECTOR_EVENTS = {
  ...CONNECTOR_STATUS,
  CONNECTOR_DATA_UPDATED: 'connector_data_updated',
  CACHE_CLEAR: 'cache_clear',
  CONNECTORS_UPDATED: 'connectors_updated',
  MFA_ENABLED: 'mfa_enabled',
  REHYDRATION_ERROR: 'rehydration_error',
  // Emitted when the active connection changes without a full reconnect (for example, account switch)
  CONNECTION_UPDATED: 'connection_updated',
  CONSENT_ACCEPTED: 'consent_accepted',
} as const

```
