Skip to content

feat(deps): remove WalletConnect from the app config and install tree - #131

Merged
pasevin merged 1 commit into
mainfrom
chore/drop-walletconnect-connector
Aug 20, 2026
Merged

pasevin merged 1 commit into
mainfrom
chore/drop-walletconnect-connector

Conversation

@pasevin

@pasevin pasevin commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Why

@wagmi/connectors hard-depends on @walletconnect/ethereum-provider, which pulls in @reown/appkit. Reown moved AppKit to the Reown Community License at 1.8.3: commercial fees above 500 monthly active users, a clause making it a material condition that all use connect to Reown's gateway, and a confidentiality clause.

Pinning was the alternative and it is a dead end:

@walletconnect/ethereum-provider AppKit Licence npm status
2.21.1 1.7.8 Apache-2.0 deprecated
2.22.0+ 1.8.9+ community current

The deprecation line and the licence line are the same line. Upstream agrees — from the connector's own JSDoc in @wagmi/connectors@6.2.0:

@deprecated NOTE: This connector uses a vulnerable dependency downstream (… > pino@7.11.0) […] Normally the Wagmi team would upgrade @walletconnect/ethereum-provider […] but it was relicensed recently from Apache to a non-permissive license.

Main removal: OpenZeppelin/openzeppelin-adapters#74.

What changed here

Dropped the globalServiceConfigs.walletconnect block — including its committed projectId — from apps/role-manager/public/app.config.json. Nothing reads it now.

Worth noting no wallet option changes in this app: both wallet UI kits here are already configured as "custom".

Removing configuration does not remove the packages — @wagmi/connectors declares the provider as a hard dependency and this repo consumes the published adapters. So .pnpmfile.cjs strips it, plus the Stellar kit's @walletconnect/modal and sign-client.

Safe in both cases: each host reaches WalletConnect through a single isolated module nothing else imports — the wagmi one behind a await import() in a connector nothing registers, the kit's in neither its barrel nor allowAllModules(). Keying on the host manifests rather than pnpm.patchedDependencies keeps this independent of both package versions and of how deeply they are pulled in.

@walletconnect/*  324 -> 0  lockfile entries
@reown/*           48 -> 0

Verification

  • 53 test files pass
  • typecheck, lint and format:check clean
  • pnpm install --frozen-lockfile passes

@pasevin
pasevin force-pushed the chore/drop-walletconnect-connector branch from 2ffe046 to f3eba81 Compare August 20, 2026 20:12
BREAKING CHANGE: globalServiceConfigs.walletconnect is removed from
apps/role-manager/public/app.config.json, including its committed projectId.
Nothing reads it now.

WalletConnect's provider pulls in @reown/appkit, which moved to the Reown Community
License at 1.8.3: commercial fees above 500 monthly active users, a clause making
it a material condition that all use connect to Reown's gateway, and a
confidentiality clause. Pinning is a dead end -- every non-deprecated
@walletconnect/ethereum-provider release pins a community-licensed AppKit, and
every release still pinning Apache-2.0 AppKit 1.7.8 is deprecated on npm.

No wallet option actually changes in this app: both wallet UI kits here are already
configured as "custom".

- .pnpmfile.cjs strips @walletconnect/ethereum-provider from @wagmi/connectors and
  @walletconnect/modal plus sign-client from the Stellar wallets kit, alongside the
  Trezor hook already on main. Each host reaches WalletConnect through a single
  isolated module nothing else imports.
- Added a bundler stub. @wagmi/connectors re-exports a walletConnect module
  containing `await import('@walletconnect/ethereum-provider')`, and Rollup resolves
  dynamic imports at build time even when the call site is unreachable, so stripping
  the package broke the production build. The specifier is aliased to a stub that
  throws, so any future accidental use is loud.

Result: @reown/*, @walletconnect/* and @trezor/* are all at zero lockfile entries.

Verified: 53 test files pass, typecheck, lint and format:check clean, the production
build succeeds, and pnpm install --frozen-lockfile passes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pasevin
pasevin force-pushed the chore/drop-walletconnect-connector branch from f3eba81 to e46dbf0 Compare August 20, 2026 21:19
@pasevin
pasevin merged commit 7ec08bc into main Aug 20, 2026
11 checks passed
@pasevin
pasevin deleted the chore/drop-walletconnect-connector branch August 20, 2026 23:45
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant