Universal adapter to Ethereum and Solana
Web3 wallets
Universal adapter to Ethereum and Solana
Features
- π Built-in functions for working with signatures, connecting wallets, tracking the status of transactions, ENS names, and more.
- πΌ Built-in wallet connectors for MetaMask, WalletConnect, Coinbase Wallet, Keplr, xDefi, Phantom (Solana) and Injected wallets.
- π Auto-refresh data on wallet, block, and network changes
- π¦ TypeScript ready
- π All supported networks are in networks.ts
Supported wallets
- MetaMask
- WalletConnect (all WalletConnect-compatible wallets are supported, >100 wallets!)
- Coinbase Wallet
- Phantom (Solana)
- Keplr (Cosmos, Osmosis, Astar)
- xDeFi (EVM networks, Bitcoin, Bitcoin Cash, Litecoin)
- Safe (aka Gnosis Safe Multisig Wallet)
Installation
yarn add @viaprotocol/web3-wallets
Quick start
import { useContext } from 'react'
import { WalletContext, WalletProvider } from '@viaprotocol/web3-wallets'
function App() {
return (
<WalletProvider>
<NestedComponent />
</WalletProvider>
)
}
function NestedComponent() {
const { connect, isConnected, address } = useContext(WalletContext)
if (!isConnected) {
return (
// Select MetaMask and connect to ETH Mainnet
<button
type="button"
onClick={() => connect({ name: 'MetaMask', chainId: 1 })}
>Connect wallet</button>
)
}
return (
<p>{address}</p>
)
}
Local development
Unfortunately, there is no playground in the library at the moment, so local development is done with yalc.
- First, install the library:
yarn global add yalc
-
Make changes to the
web3-wallets
code -
Run the following command to build the library:
yarn publish:yalc
- In the project you are going to test your functionality, initialize the package fetch from
yalc
yalc add @viaprotocol/web3-wallets
- Install
yalc
version of web3-wallets
yarn add @viaprotocol/web3-wallets
- After the library is installed, you can use it in your project.
(if you are using vite, you need to run it with --force
param)
- Run the following command to remove the library, after you are done with testing:
yalc remove @viaprotocol/web3-wallets && yarn
Contributing
We use Conventional Commits in our project to name commits. And we would be very grateful if you would also follow this convention.
Scope is optional.
βπ» Additionally, it would be cool to put emoji according to Gitmojiβs guide (VSCode plugin, WebStorm plugin)
- Fork it (https://github.com/viaprotocol/web3-wallets/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'β¨ feat: add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
Any questions?
You can write us in Discord with any questions about usage, integrations, adding new wallets, etc.