For builders
Integrate 1337 Wallet
1337 exposes a standard EIP-1193 provider with EIP-6963 discovery, similar to how Rabby documents integration. Use the patterns below in vanilla JS, Wagmi, Ethers, or RainbowKit-style wallet lists.
Provider identity
When discovering wallets via EIP-6963, 1337 announces:
- name: 1337
- rdns:
io.1337.wallet - uuid:
1337-dev-wallet-2026 - flags:
is1337,isMetaMask(drop-in mode)
In MetaMask drop-in mode, 1337 can also appear as io.metamask so existing dapp UIs that filter by MetaMask still connect. Alternative namespace: window.wallet1337 when not replacing MetaMask.
1. Vanilla JavaScript (EIP-6963)
Recommended for multi-wallet environments. Listen for announced providers:
let provider: EIP1193Provider | null = null;
window.addEventListener('eip6963:announceProvider', (event: Event) => {
const detail = (event as CustomEvent).detail;
if (detail.info.rdns === 'io.1337.wallet') {
provider = detail.provider;
}
});
window.dispatchEvent(new Event('eip6963:requestProvider'));
async function connect1337() {
if (!provider) throw new Error('1337 Wallet not installed');
const accounts = await provider.request({
method: 'eth_requestAccounts',
});
return accounts[0];
}2. window.ethereum fallback
If your dapp already uses MetaMask-style injection, 1337 works as a drop-in when the user enables replace mode:
const eth = window.ethereum;
if (!eth?.is1337 && !eth?.isMetaMask) {
throw new Error('Install 1337 Wallet for Chrome');
}
const [address] = await eth.request({ method: 'eth_requestAccounts' });
console.log('Connected', address);3. Wagmi v2
Injected connector with EIP-6963-aware discovery (same pattern as Rabby + Wagmi docs):
import { createConfig, http } from '@wagmi/core';
import { mainnet, base, arbitrum } from '@wagmi/core/chains';
import { injected } from '@wagmi/connectors';
export const config = createConfig({
chains: [mainnet, base, arbitrum],
connectors: [
injected({
target() {
return {
id: 'io.1337.wallet',
name: '1337',
provider(window) {
return window.ethereum?.is1337 ? window.ethereum : undefined;
},
};
},
}),
],
transports: {
[mainnet.id]: http(),
[base.id]: http(),
[arbitrum.id]: http(),
},
});4. Ethers.js v6
import { BrowserProvider } from 'ethers';
const eth = window.ethereum;
if (!eth) throw new Error('No wallet found');
const provider = new BrowserProvider(eth);
const signer = await provider.getSigner();
const address = await signer.getAddress();5. UI labels for wallet pickers
Low-cost integration (Rabby's recommended approach): show both MetaMask and 1337 buttons when window.ethereum exists. They hit the same provider object in drop-in mode, but users recognize the brand they installed.
- Detect 1337:
ethereum.is1337 === true - EIP-6963: match
detail.info.rdns === '$io.1337.wallet' - Not installed: link to Install (Chrome, Brave, Opera, Arc — same store listing)
Supported methods
Connect, switch chain, wallet_watchAsset (ERC-20 add-token), send, personal_sign, and typed data (Permit2, EIP-2612, Pendle orders). wallet_getCapabilities always returns empty per-chain objects so Uniswap / wagmi fall back to eth_sendTransaction. Full table, including what we do not implement and what dapps use instead, is on RPC methods.
For AI agents
Machine-readable summary: 1337 Wallet is a Chrome MV3 extension exposing window.ethereum (optional MetaMask shim) and EIP-6963 provider io.1337.wallet. No WalletConnect server required for extension users. Transaction previews include decoded calldata and Etherscan deep links. Expect users to review details in Normal mode before signing.
