From 85ea6a9a1ac8f2f934cc1afd67b39e530fd2d6e8 Mon Sep 17 00:00:00 2001 From: ignaciosantise <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 14 May 2026 23:26:17 -0400 Subject: [PATCH 1/3] feat: add WalletConnect logger option --- .changeset/walletconnect-logger-option.md | 12 ++++++++++ packages/appkit/src/AppKit.ts | 6 +++-- .../src/connectors/WalletConnectConnector.ts | 12 ++++++---- packages/appkit/src/types.ts | 22 +++++++++++++++++++ packages/common/src/types/wallet/connector.ts | 21 ++++++++++++++++++ 5 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 .changeset/walletconnect-logger-option.md diff --git a/.changeset/walletconnect-logger-option.md b/.changeset/walletconnect-logger-option.md new file mode 100644 index 000000000..51d1e55d2 --- /dev/null +++ b/.changeset/walletconnect-logger-option.md @@ -0,0 +1,12 @@ +--- +'@reown/appkit-bitcoin-react-native': patch +'@reown/appkit-coinbase-react-native': patch +'@reown/appkit-common-react-native': patch +'@reown/appkit-core-react-native': patch +'@reown/appkit-ethers-react-native': patch +'@reown/appkit-solana-react-native': patch +'@reown/appkit-ui-react-native': patch +'@reown/appkit-wagmi-react-native': patch +--- + +feat: add `logger` option to `createAppKit` for controlling `@walletconnect/universal-provider` log output. Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`) or a custom pino-compatible `Logger` instance. When omitted, WalletConnect's default logging is preserved. diff --git a/packages/appkit/src/AppKit.ts b/packages/appkit/src/AppKit.ts index b8acec1ee..97d7cbaf4 100644 --- a/packages/appkit/src/AppKit.ts +++ b/packages/appkit/src/AppKit.ts @@ -393,7 +393,8 @@ export class AppKit { if (CustomConnector) { await CustomConnector.init({ storage: this.config.storage, - metadata: this.config.metadata + metadata: this.config.metadata, + logger: this.config.logger }); return CustomConnector; @@ -413,7 +414,8 @@ export class AppKit { }); await this.walletConnectConnector.init({ storage: this.config.storage, - metadata: this.config.metadata + metadata: this.config.metadata, + logger: this.config.logger }); return this.walletConnectConnector; diff --git a/packages/appkit/src/connectors/WalletConnectConnector.ts b/packages/appkit/src/connectors/WalletConnectConnector.ts index 33daf3790..906316dc4 100644 --- a/packages/appkit/src/connectors/WalletConnectConnector.ts +++ b/packages/appkit/src/connectors/WalletConnectConnector.ts @@ -1,5 +1,5 @@ import { WcController } from '@reown/appkit-core-react-native'; -import UniversalProvider from '@walletconnect/universal-provider'; +import UniversalProvider, { type UniversalProviderOpts } from '@walletconnect/universal-provider'; import { WalletConnector, type AppKitNetwork, @@ -33,7 +33,8 @@ export class WalletConnectConnector extends WalletConnector { const provider = await this.getUniversalProvider({ projectId: this.config.projectId, - metadata: ops.metadata + metadata: ops.metadata, + logger: ops.logger as UniversalProviderOpts['logger'] }); this.provider = provider as Provider; @@ -83,16 +84,19 @@ export class WalletConnectConnector extends WalletConnector { private async getUniversalProvider({ projectId, - metadata + metadata, + logger }: { projectId: string; metadata: Metadata; + logger?: UniversalProviderOpts['logger']; }): Promise { if (!this.provider) { this.provider = (await UniversalProvider.init({ projectId, metadata, - storage: this.storage + storage: this.storage, + ...(logger !== undefined && { logger }) })) as Provider; } diff --git a/packages/appkit/src/types.ts b/packages/appkit/src/types.ts index 52abc02ef..1ab3a80e3 100644 --- a/packages/appkit/src/types.ts +++ b/packages/appkit/src/types.ts @@ -13,6 +13,18 @@ import { type SIWXConfig } from '@reown/appkit-common-react-native'; +type WalletConnectLoggerLevel = 'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'; + +type WalletConnectLogger = { + child(bindings: Record): WalletConnectLogger; + trace: (...args: unknown[]) => void; + debug: (...args: unknown[]) => void; + info: (...args: unknown[]) => void; + warn: (...args: unknown[]) => void; + error: (...args: unknown[]) => void; + fatal: (...args: unknown[]) => void; +}; + /** * Configuration interface for initializing the AppKit instance. * This interface defines all the required and optional parameters needed to set up @@ -136,6 +148,16 @@ export interface AppKitConfig { */ debug?: OptionsControllerState['debug']; + /** + * Optional logger configuration forwarded to `@walletconnect/universal-provider`. + * Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`) + * or a custom pino-compatible `Logger` instance. When omitted, WalletConnect's + * default logging is used. + * + * @example logger: 'silent' + */ + logger?: WalletConnectLoggerLevel | WalletConnectLogger; + /** * Optional theme mode for the AppKit UI. * Controls whether the interface uses light or dark theme. diff --git a/packages/common/src/types/wallet/connector.ts b/packages/common/src/types/wallet/connector.ts index a0eef5eba..fbdaf83b4 100644 --- a/packages/common/src/types/wallet/connector.ts +++ b/packages/common/src/types/wallet/connector.ts @@ -32,9 +32,30 @@ export type ConnectOptions = { universalLink?: string; }; +export type WalletConnectLoggerLevel = + | 'silent' + | 'fatal' + | 'error' + | 'warn' + | 'info' + | 'debug' + | 'trace'; + +// Structural subset of the pino-compatible logger WalletConnect expects. +export type WalletConnectLogger = { + child(bindings: Record): WalletConnectLogger; + trace: (...args: unknown[]) => void; + debug: (...args: unknown[]) => void; + info: (...args: unknown[]) => void; + warn: (...args: unknown[]) => void; + error: (...args: unknown[]) => void; + fatal: (...args: unknown[]) => void; +}; + export type ConnectorInitOptions = { storage: Storage; metadata: Metadata; + logger?: WalletConnectLoggerLevel | WalletConnectLogger; }; export abstract class WalletConnector extends EventEmitter { From e5bd7ae1d88ece2c7c256fca00f99dc514ac6596 Mon Sep 17 00:00:00 2001 From: ignaciosantise <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 14 May 2026 23:40:14 -0400 Subject: [PATCH 2/3] fix: restrict WalletConnect logger to levels --- .changeset/walletconnect-logger-option.md | 2 +- .../src/connectors/WalletConnectConnector.ts | 7 ++++--- packages/appkit/src/types.ts | 20 ++++--------------- packages/common/src/types/wallet/connector.ts | 13 +----------- 4 files changed, 10 insertions(+), 32 deletions(-) diff --git a/.changeset/walletconnect-logger-option.md b/.changeset/walletconnect-logger-option.md index 51d1e55d2..290177c96 100644 --- a/.changeset/walletconnect-logger-option.md +++ b/.changeset/walletconnect-logger-option.md @@ -9,4 +9,4 @@ '@reown/appkit-wagmi-react-native': patch --- -feat: add `logger` option to `createAppKit` for controlling `@walletconnect/universal-provider` log output. Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`) or a custom pino-compatible `Logger` instance. When omitted, WalletConnect's default logging is preserved. +feat: add `logger` option to `createAppKit` for controlling `@walletconnect/universal-provider` log output. Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). When omitted, WalletConnect's default logging is preserved. diff --git a/packages/appkit/src/connectors/WalletConnectConnector.ts b/packages/appkit/src/connectors/WalletConnectConnector.ts index 906316dc4..00db95bfc 100644 --- a/packages/appkit/src/connectors/WalletConnectConnector.ts +++ b/packages/appkit/src/connectors/WalletConnectConnector.ts @@ -1,5 +1,5 @@ import { WcController } from '@reown/appkit-core-react-native'; -import UniversalProvider, { type UniversalProviderOpts } from '@walletconnect/universal-provider'; +import UniversalProvider from '@walletconnect/universal-provider'; import { WalletConnector, type AppKitNetwork, @@ -30,11 +30,12 @@ export class WalletConnectConnector extends WalletConnector { override async init(ops: ConnectorInitOptions) { super.init(ops); + const logger = typeof ops.logger === 'string' ? ops.logger : undefined; const provider = await this.getUniversalProvider({ projectId: this.config.projectId, metadata: ops.metadata, - logger: ops.logger as UniversalProviderOpts['logger'] + logger }); this.provider = provider as Provider; @@ -89,7 +90,7 @@ export class WalletConnectConnector extends WalletConnector { }: { projectId: string; metadata: Metadata; - logger?: UniversalProviderOpts['logger']; + logger?: string; }): Promise { if (!this.provider) { this.provider = (await UniversalProvider.init({ diff --git a/packages/appkit/src/types.ts b/packages/appkit/src/types.ts index 1ab3a80e3..4680300fc 100644 --- a/packages/appkit/src/types.ts +++ b/packages/appkit/src/types.ts @@ -3,6 +3,7 @@ import { type Features, type UniversalProviderConfigOverride, type WalletConnector, + type ConnectorInitOptions, type BlockchainAdapter, type Metadata, type Network, @@ -13,18 +14,6 @@ import { type SIWXConfig } from '@reown/appkit-common-react-native'; -type WalletConnectLoggerLevel = 'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'; - -type WalletConnectLogger = { - child(bindings: Record): WalletConnectLogger; - trace: (...args: unknown[]) => void; - debug: (...args: unknown[]) => void; - info: (...args: unknown[]) => void; - warn: (...args: unknown[]) => void; - error: (...args: unknown[]) => void; - fatal: (...args: unknown[]) => void; -}; - /** * Configuration interface for initializing the AppKit instance. * This interface defines all the required and optional parameters needed to set up @@ -150,13 +139,12 @@ export interface AppKitConfig { /** * Optional logger configuration forwarded to `@walletconnect/universal-provider`. - * Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`) - * or a custom pino-compatible `Logger` instance. When omitted, WalletConnect's - * default logging is used. + * Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). + * When omitted, WalletConnect's default logging is used. * * @example logger: 'silent' */ - logger?: WalletConnectLoggerLevel | WalletConnectLogger; + logger?: ConnectorInitOptions['logger']; /** * Optional theme mode for the AppKit UI. diff --git a/packages/common/src/types/wallet/connector.ts b/packages/common/src/types/wallet/connector.ts index fbdaf83b4..27dc29218 100644 --- a/packages/common/src/types/wallet/connector.ts +++ b/packages/common/src/types/wallet/connector.ts @@ -41,21 +41,10 @@ export type WalletConnectLoggerLevel = | 'debug' | 'trace'; -// Structural subset of the pino-compatible logger WalletConnect expects. -export type WalletConnectLogger = { - child(bindings: Record): WalletConnectLogger; - trace: (...args: unknown[]) => void; - debug: (...args: unknown[]) => void; - info: (...args: unknown[]) => void; - warn: (...args: unknown[]) => void; - error: (...args: unknown[]) => void; - fatal: (...args: unknown[]) => void; -}; - export type ConnectorInitOptions = { storage: Storage; metadata: Metadata; - logger?: WalletConnectLoggerLevel | WalletConnectLogger; + logger?: WalletConnectLoggerLevel; }; export abstract class WalletConnector extends EventEmitter { From d56c6dbc7eb711a562f22a0f38f0c9059481229a Mon Sep 17 00:00:00 2001 From: ignaciosantise <25931366+ignaciosantise@users.noreply.github.com> Date: Tue, 19 May 2026 08:44:16 -0300 Subject: [PATCH 3/3] fix: align logger docs and changeset --- .changeset/walletconnect-logger-option.md | 3 ++- packages/appkit/src/connectors/WalletConnectConnector.ts | 5 ++--- packages/appkit/src/types.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.changeset/walletconnect-logger-option.md b/.changeset/walletconnect-logger-option.md index 290177c96..657eadbf4 100644 --- a/.changeset/walletconnect-logger-option.md +++ b/.changeset/walletconnect-logger-option.md @@ -1,4 +1,5 @@ --- +'@reown/appkit-react-native': patch '@reown/appkit-bitcoin-react-native': patch '@reown/appkit-coinbase-react-native': patch '@reown/appkit-common-react-native': patch @@ -9,4 +10,4 @@ '@reown/appkit-wagmi-react-native': patch --- -feat: add `logger` option to `createAppKit` for controlling `@walletconnect/universal-provider` log output. Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). When omitted, WalletConnect's default logging is preserved. +feat: add `logger` option to `createAppKit` for controlling `@walletconnect/universal-provider` log output. Accepts a log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). When omitted, WalletConnect's default logging is preserved. diff --git a/packages/appkit/src/connectors/WalletConnectConnector.ts b/packages/appkit/src/connectors/WalletConnectConnector.ts index 00db95bfc..5452dc9d4 100644 --- a/packages/appkit/src/connectors/WalletConnectConnector.ts +++ b/packages/appkit/src/connectors/WalletConnectConnector.ts @@ -30,12 +30,11 @@ export class WalletConnectConnector extends WalletConnector { override async init(ops: ConnectorInitOptions) { super.init(ops); - const logger = typeof ops.logger === 'string' ? ops.logger : undefined; const provider = await this.getUniversalProvider({ projectId: this.config.projectId, metadata: ops.metadata, - logger + logger: ops.logger }); this.provider = provider as Provider; @@ -90,7 +89,7 @@ export class WalletConnectConnector extends WalletConnector { }: { projectId: string; metadata: Metadata; - logger?: string; + logger?: ConnectorInitOptions['logger']; }): Promise { if (!this.provider) { this.provider = (await UniversalProvider.init({ diff --git a/packages/appkit/src/types.ts b/packages/appkit/src/types.ts index 4680300fc..d754bde87 100644 --- a/packages/appkit/src/types.ts +++ b/packages/appkit/src/types.ts @@ -139,7 +139,7 @@ export interface AppKitConfig { /** * Optional logger configuration forwarded to `@walletconnect/universal-provider`. - * Accepts a pino log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). + * Accepts a log level (`'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace'`). * When omitted, WalletConnect's default logging is used. * * @example logger: 'silent'