Skip to content

Conversation

@ignaciosantise
Copy link
Collaborator

@ignaciosantise ignaciosantise commented May 8, 2025

Summary

Enable support for multiple chains to AppKit React Native

📁 Important files:

  • packages/appkit/src/AppKit.ts -> Centralizes general logic. Handles the connections, adapters, subscribes to adapter events to update controllers

  • packages/appkit/src/connectors/WalletConnectConnector.ts -> Connector that uses Universal Provider internally

  • packages/core/src/controllers/ConnectionsController.ts -> This is the most important Controller, which replaces AccountController and NetworkController. It contains all connections related data. It also has a derived state to make things easier

  • packages/solana/src/adapter.ts -> Basic adapter for Solana

  • packages/ethers/src/adapter.ts -> Basic adapter for EVM connections using Ethers

  • packages/bitcoin/src/adapter.ts -> Basic adapter for Bitcoin

  • packages/appkit/src/AppKitContext.tsx -> The instance of AppKit is saved on a context, so the view can access it and execute methods. So now instead of views calling controller methods directly, its all centralized in AppKit.

    • disconnection logic -> packages/appkit/src/views/w3m-account-default-view/index.tsx calls AppKit disconnect instead of clearing controllers, etc.
  • packages/common -> The package contains the new abstractions for Connectors, Adapters and Providers.

📚 Related resources


Note

Introduce multichain support with unified connection management, new adapters/connectors (EVM, Solana, Bitcoin), and broad UI/native updates.

  • Core
    • Replace AccountController and NetworkController with controllers/ConnectionsController.ts and related state/derived-state updates.
    • Expand controllers and utils for onramp, swap, events, routing, storage, and network handling.
  • AppKit (React/Web)
    • Centralize logic in src/AppKit.ts with context via src/AppKitContext.tsx and new hooks (useAppKit*, useAccount, useProvider).
    • Add connectors/WalletConnectConnector.ts and route/modal/view updates across modal/, partials/, and views/ for multichain flows (connect, network switch, onramp, swap, wallet info).
  • Adapters/Packages
    • Add base adapters and clients for packages/ethers, packages/solana, and packages/bitcoin with shared abstractions in packages/common.
    • Update packages/wagmi, packages/coinbase*, packages/siwe, and packages/ui to integrate multichain and new UI elements/components.
  • Native (React Native gallery app)
    • Update app config, metro/babel, and add new views/components/utilities for multichain actions (Ethers, Solana, Bitcoin) and wallet flows.
    • Add e2e tests and fixtures for onramp and wallet modal.
  • Wallet frame/webview
    • Add packages/wallet with frame/webview providers, storage, schema, and helpers.
  • Tooling/CI
    • Add/update GitHub Actions workflows (release/snapshot), Yarn releases/config, and repo configs.

Written by Cursor Bugbot for commit 8444e2e. This will update automatically on new commits. Configure here.

@changeset-bot
Copy link

changeset-bot bot commented May 8, 2025

🦋 Changeset detected

Latest commit: 8444e2e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 9 packages
Name Type
@reown/appkit-coinbase-react-native Patch
@reown/appkit-bitcoin-react-native Patch
@reown/appkit-react-native Patch
@reown/appkit-common-react-native Patch
@reown/appkit-ethers-react-native Patch
@reown/appkit-solana-react-native Patch
@reown/appkit-wagmi-react-native Patch
@reown/appkit-core-react-native Patch
@reown/appkit-ui-react-native Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@socket-security
Copy link

socket-security bot commented May 8, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​storybook/​theming@​8.6.141001005193100
Added@​babel/​plugin-transform-react-jsx-development@​7.27.11001006089100
Added@​babel/​plugin-syntax-private-property-in-object@​7.14.51001006382100
Added@​babel/​plugin-syntax-class-static-block@​7.14.51001006382100
Added@​babel/​plugin-transform-dotall-regex@​7.27.11001006389100
Added@​babel/​plugin-transform-regexp-modifiers@​7.27.11001006389100
Updated@​babel/​plugin-transform-unicode-regex@​7.25.9 ⏵ 7.27.11001006389 -1100
Updated@​babel/​plugin-syntax-export-default-from@​7.25.9 ⏵ 7.27.11001006489 -2100
Added@​babel/​plugin-syntax-unicode-sets-regex@​7.18.61001006482100
Added@​storybook/​react-webpack5@​8.6.1410010064100100
Added@​pkgr/​core@​0.1.21001006485100
Added@​babel/​plugin-transform-unicode-sets-regex@​7.27.11001006589100
Added@​babel/​plugin-transform-reserved-words@​7.27.11001006589100
Updated@​babel/​plugin-syntax-jsx@​7.25.9 ⏵ 7.27.11001006589100
Updated@​babel/​helper-annotate-as-pure@​7.22.5 ⏵ 7.27.31001006589100
Updated@​babel/​plugin-transform-class-properties@​7.25.9 ⏵ 7.27.11001006589 -1100
Updated@​babel/​plugin-transform-private-methods@​7.25.9 ⏵ 7.27.11001006589 -1100
Updated@​babel/​plugin-transform-named-capturing-groups-regex@​7.25.9 ⏵ 7.27.11001006689 -1100
Updated@​babel/​plugin-transform-optional-catch-binding@​7.25.9 ⏵ 7.27.11001006689 -1100
Updated@​babel/​plugin-transform-sticky-regex@​7.25.9 ⏵ 7.27.11001006689 -1100
Added@​babel/​plugin-transform-duplicate-named-capturing-groups-regex@​7.27.11001006689100
Added@​babel/​plugin-transform-unicode-property-regex@​7.27.11001006689100
Added@​babel/​plugin-transform-strict-mode@​7.27.11001006689100
Added@​babel/​plugin-transform-property-literals@​7.27.11001006689100
Added@​babel/​plugin-transform-member-expression-literals@​7.27.11001006689100
Updated@​babel/​plugin-transform-arrow-functions@​7.25.9 ⏵ 7.27.11001006689100
Added@​babel/​plugin-syntax-import-assertions@​7.27.11001006689100
Added@​storybook/​addon-webpack5-compiler-babel@​3.0.61001006789100
Updated@​babel/​helper-skip-transparent-expression-wrappers@​7.22.5 ⏵ 7.27.11001006789100
Updated@​babel/​plugin-transform-literals@​7.25.9 ⏵ 7.27.11001006789 -1100
Updated@​babel/​plugin-transform-numeric-separator@​7.25.9 ⏵ 7.27.11001006789 -1100
Added@​babel/​plugin-transform-json-strings@​7.27.11001006789100
See 136 more rows in the dashboard

View full report

@ignaciosantise ignaciosantise changed the base branch from develop to feat/onramp May 8, 2025 15:10
@github-actions
Copy link
Contributor

Published pre-release version: 0.0.0-canary-20250513154354

@github-actions
Copy link
Contributor

github-actions bot commented Jul 3, 2025

Published pre-release version: 0.0.0-canary-20250703193538

Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SonarCloud found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@ignaciosantise ignaciosantise marked this pull request as ready for review October 2, 2025 14:18
Copilot AI review requested due to automatic review settings October 2, 2025 14:18
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces multichain support for AppKit React Native, enabling the library to support multiple blockchain networks including EVM, Solana, and Bitcoin. The implementation centralizes connection handling through a new ConnectionsController that replaces the previous AccountController and NetworkController.

Key Changes

  • Implemented unified connection management through ConnectionsController
  • Created blockchain adapters for different chains (EVM, Solana, Bitcoin)
  • Introduced modular connector system with abstracted interfaces
  • Updated version from 1.3.2 to 2.0.0-alpha.6 across all packages

Reviewed Changes

Copilot reviewed 247 out of 537 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/core/src/__tests__/controllers/ Removed old controller tests and updated existing ones to support new multichain architecture
packages/common/src/types/ Added comprehensive type definitions for adapters, connectors, networks, and blockchain interfaces
packages/coinbase/ New coinbase connector implementation with provider abstraction
packages/bitcoin/ New Bitcoin adapter with UTXO handling and message signing capabilities
packages/appkit/src/views/ Updated UI views to work with new connection model and improved UX

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@reown-com reown-com deleted a comment from cursor bot Oct 6, 2025
cursor[bot]

This comment was marked as outdated.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Oct 8, 2025

@ignaciosantise ignaciosantise merged commit 08113ea into develop Oct 8, 2025
10 checks passed
@ignaciosantise ignaciosantise deleted the feat/multichain branch October 8, 2025 15:48
@github-actions github-actions bot locked and limited conversation to collaborators Oct 8, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants