# @uniswap-widget/vue
[](https://www.npmjs.com/package/@uniswap-widget/vue)
[](https://www.npmjs.com/package/@uniswap-widget/vue)
[](https://github.com/houtanrocky/uniswap-widget/blob/main/LICENSE)
A Vue 3 Uniswap swap widget, built on
[`@uniswap-widget/core`](https://github.com/houtanrocky/uniswap-widget/tree/main/packages/core). The same trading logic that powers
[`@uniswap-widget/react`](https://github.com/houtanrocky/uniswap-widget/tree/main/packages/react-uniswap) exposed as Vue components and composables.
```vue
```
## What's in the box
- **``** the swap UI (a port of the React widget).
- **``** the default provider: wagmi config + AppKit instance,
with the Reown wallet adapter wired in.
- **``** + adapters the wallet plugin (see below):
`useReownWalletAdapter` (default), `useInjectedWalletAdapter`.
- **Composables** `useWallet`, `useQuote`, `useSwap`, `createWidgetState` for
building your own UI on the core.
## Wallet adapters (plugin)
The widget is **wallet-agnostic** — it reads the connected account and an ethers
`Signer` from a small adapter (a Vue composable), so Reown AppKit is just the
default. Plug in any wallet library:
- **Default (Reown AppKit):** use `` as shown above.
- **Another wallet library:** pass `walletAdapter` to ``, or
skip it and wrap `` in ``.
A `WalletAdapter` is a composable returning a `WalletConnection`:
```ts
interface WalletConnection {
isConnected: Ref;
address: Ref;
getSigner: () => Promise; // what the core needs
connect: () => void | Promise;
disconnect?: () => void | Promise;
AccountButton?: Component; // optional account UI
}
type WalletAdapter = () => WalletConnection;
```
### Built-in: injected wallet (no Reown, no wagmi)
`useInjectedWalletAdapter` talks to `window.ethereum` using only `ethers`:
```vue
```
The default adapter still talks to `@wagmi/core` directly (no `@wagmi/vue` or
`@tanstack/vue-query` required).
## Peer dependencies
Provided by the host app: `vue`, `@wagmi/core`, `viem`, `ethers`, and the
`@uniswap/*` SDKs. `@reown/appkit` + `@reown/appkit-adapter-wagmi` are
**optional** (only for the default Reown adapter).
## Host requirements
The widget's network calls expect the host to proxy `/api/base-rpc` and
`/api/uniswap/v2/...` (see `examples/vue/vite.config.ts`).