@goblink/connect v0.1.0

One provider. One hook.
Every chain.

Universal multi-chain wallet SDK. 9 blockchain ecosystems, 350+ wallets, one unified API. Drop the provider hell.

Get Started
Before— 7 nested providers
<WagmiProvider config={config}>
  <QueryClientProvider client={queryClient}>
    <RainbowKitProvider>
      <SolanaProvider>
        <BitcoinProvider>
          <SuiProvider>
            <NEARProvider>
              <App />
            </NEARProvider>
          </SuiProvider>
        </BitcoinProvider>
      </SolanaProvider>
    </RainbowKitProvider>
  </QueryClientProvider>
</WagmiProvider>
After— 1 provider, all chains
<BlinkConnectProvider
  chains={["evm", "solana", "bitcoin", "sui", "near"]}
  appName="My dApp"
>
  <App />
</BlinkConnectProvider>
Ecosystems

9 Ecosystems. 350+ Wallets.

From EVM mainnets to Sui Move contracts — one SDK covers every major blockchain ecosystem.

EVM
15 chains
Solana
Mainnet & Devnet
Bitcoin
BTC & Ordinals
Sui
Move VM
N
NEAR
Protocol
A
Aptos
Move VM
Starknet
L2 ZK-Rollup
TON
The Open Network
TRON
TRC-20
Developer Experience

Three APIs. That's It.

A provider, a hook, and a button. Everything you need to connect any wallet on any chain.

Drop-in Provider

app.tsx
import { goBlink ConnectProvider } from "@goblink/connect";

export default function App({ children }) {
  return (
    <BlinkConnectProvider
      chains={["evm", "solana", "bitcoin", "sui"]}
      appName="My dApp"
      socialLogin={["google", "github", "discord"]}
    >
      {children}
    </BlinkConnectProvider>
  );
}

Ready-made Button

header.tsx
import { ConnectButton } from "@goblink/connect";

function Header() {
  return (
    <header>
      <h1>My dApp</h1>
      <ConnectButton
        theme="dark"
        showBalance={true}
        showChainIcon={true}
      />
    </header>
  );
}

Universal Hook

wallet-info.tsx
import { useWallet } from "@goblink/connect";

function WalletInfo() {
  const {
    address,
    chain,
    connect,
    disconnect,
    isConnected,
  } = useWallet();

  if (!isConnected) {
    return (
      <button onClick={() => connect()}>
        Connect Wallet
      </button>
    );
  }

  return (
    <div>
      <p>{chain}: {address}</p>
      <button onClick={disconnect}>Disconnect</button>
    </div>
  );
}
Features

Built for Real dApps

Everything you need to ship production wallet connections. Nothing you don't.

Single Provider

Replace 7+ nested provider wrappers with one <BlinkConnectProvider>. Clean, readable, maintainable.

🔗

Unified API

One useWallet() hook for all 9 ecosystems. Same interface whether you're on Ethereum or Sui.

🌳

Tree-Shakeable

Only bundle the chains you use. Import EVM + Solana? That's all that ships. Zero bloat.

📱

Multi-Connect

Users can connect wallets from multiple chains simultaneously. No disconnecting to switch.

🔑

Social Login

Google, Apple, Discord, X, GitHub login via ReOwn AppKit. Onboard non-crypto users instantly.

🛡️

TypeScript-First

Full type safety across all chain adapters. Autocomplete for every chain, wallet, and method.

🧩

Framework Agnostic

React components + vanilla JS client. Use with Next.js, Vite, Remix, or plain JavaScript.

💾

Persistent Sessions

Wallet connections persist across page reloads. Users reconnect automatically on return.

Comparison

The Only SDK That Covers All 9

See how goBlink Connect stacks up against the alternatives.

FeaturegoBlink ConnectRainbowKitConnectKitAppKit
EVM
Solana
Bitcoin
Sui
NEAR
Aptos
Starknet
TON
TRON
Multi-connectPartial
Social login
Install

Up and Running in Seconds

$npm install@goblink/connect

Peer dependencies: react >= 18, react-dom >= 18. Chain adapters are auto-installed based on your config.

Start building with goBlink Connect

MIT licensed. Open source. Ship multi-chain wallet connections in minutes, not weeks.