Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Ring ships Wagmi v3 and viem 2.x with a custom connector picker and account menu (no @rainbow-me/rainbowkit). Multi-wallet support comes from Wagmi connectors configured in lib/wagmi-config.ts.
Typical production lineup (exact list is in your clone’s getConnectors()):
injected() — browser extensions and EIP-6963 discovery where available.metaMask() — explicit MetaMask connector (install peer @metamask/connect-evm).coinbaseWallet({ appName, appLogoUrl }) — install peer @coinbase/wallet-sdk.walletConnect({ projectId, metadata, showQrModal }) — mobile and broad wallet support (install peer @walletconnect/ethereum-provider), only if NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID is set and not a placeholder.WalletConnect is omitted when the project ID is missing to avoid 403 responses from WalletConnect Cloud.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
Ring ships Wagmi v3 and viem 2.x with a custom connector picker and account menu (no @rainbow-me/rainbowkit). Multi-wallet support comes from Wagmi connectors configured in lib/wagmi-config.ts.
Typical production lineup (exact list is in your clone’s getConnectors()):
injected() — browser extensions and EIP-6963 discovery where available.metaMask() — explicit MetaMask connector (install peer @metamask/connect-evm).coinbaseWallet({ appName, appLogoUrl }) — install peer @coinbase/wallet-sdk.walletConnect({ projectId, metadata, showQrModal }) — mobile and broad wallet support (install peer @walletconnect/ethereum-provider), only if NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID is set and not a placeholder.WalletConnect is omitted when the project ID is missing to avoid 403 responses from WalletConnect Cloud.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
Ring ships Wagmi v3 and viem 2.x with a custom connector picker and account menu (no @rainbow-me/rainbowkit). Multi-wallet support comes from Wagmi connectors configured in lib/wagmi-config.ts.
Typical production lineup (exact list is in your clone’s getConnectors()):
injected() — browser extensions and EIP-6963 discovery where available.metaMask() — explicit MetaMask connector (install peer @metamask/connect-evm).coinbaseWallet({ appName, appLogoUrl }) — install peer @coinbase/wallet-sdk.walletConnect({ projectId, metadata, showQrModal }) — mobile and broad wallet support (install peer @walletconnect/ethereum-provider), only if NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID is set and not a placeholder.WalletConnect is omitted when the project ID is missing to avoid 403 responses from WalletConnect Cloud.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
| WalletConnect Cloud projectId (WalletConnect Cloud). Required for QR / deep-link flows. |
RPC URLs for viem http() transports use public defaults unless you customize transports in wagmi-config.
| WalletConnect Cloud projectId (WalletConnect Cloud). Required for QR / deep-link flows. |
RPC URLs for viem http() transports use public defaults unless you customize transports in wagmi-config.
| WalletConnect Cloud projectId (WalletConnect Cloud). Required for QR / deep-link flows. |
RPC URLs for viem http() transports use public defaults unless you customize transports in wagmi-config.
useConnection() for address, chain, isConnected, and related state.useConnectors() (not useConnect().connectors).const c = useConnect(); c.mutate({ connector }) or mutateAsync when you need the hash in scope.useSwitchChain().mutate({ chainId }).useChains() (avoids duplicating chain metadata).useConnection() for address, chain, isConnected, and related state.useConnectors() (not useConnect().connectors).const c = useConnect(); c.mutate({ connector }) or mutateAsync when you need the hash in scope.useSwitchChain().mutate({ chainId }).useChains() (avoids duplicating chain metadata).useConnection() for address, chain, isConnected, and related state.useConnectors() (not useConnect().connectors).const c = useConnect(); c.mutate({ connector }) or mutateAsync when you need the hash in scope.useSwitchChain().mutate({ chainId }).useChains() (avoids duplicating chain metadata).Official migration reference: Migrate from v2 to v3.
createConfig uses ssr: true where noted in the codebase. Ring Platform’s canonical app also uses cookie storage so server-rendered pages can hydrate wallet state consistently (cookieStorage + createStorage in wagmi-config.ts). Clones without that wrapper may still run client-only Web3 providers; align with your layout’s dynamic import strategy.
Official migration reference: Migrate from v2 to v3.
createConfig uses ssr: true where noted in the codebase. Ring Platform’s canonical app also uses cookie storage so server-rendered pages can hydrate wallet state consistently (cookieStorage + createStorage in wagmi-config.ts). Clones without that wrapper may still run client-only Web3 providers; align with your layout’s dynamic import strategy.
Official migration reference: Migrate from v2 to v3.
createConfig uses ssr: true where noted in the codebase. Ring Platform’s canonical app also uses cookie storage so server-rendered pages can hydrate wallet state consistently (cookieStorage + createStorage in wagmi-config.ts). Clones without that wrapper may still run client-only Web3 providers; align with your layout’s dynamic import strategy.
lib/wagmi-config.ts — add or remove connectors from @wagmi/connectors / wagmi/connectors.appName, appLogoUrl, WalletConnect metadata) for your domain.useConnectors() output; if you see duplicate EIP-6963 entries, dedupe by connector.id in the picker component (Ring’s default picker already dedupes by id).lib/wagmi-config.ts — add or remove connectors from @wagmi/connectors / wagmi/connectors.appName, appLogoUrl, WalletConnect metadata) for your domain.useConnectors() output; if you see duplicate EIP-6963 entries, dedupe by connector.id in the picker component (Ring’s default picker already dedupes by id).lib/wagmi-config.ts — add or remove connectors from @wagmi/connectors / wagmi/connectors.appName, appLogoUrl, WalletConnect metadata) for your domain.useConnectors() output; if you see duplicate EIP-6963 entries, dedupe by connector.id in the picker component (Ring’s default picker already dedupes by id).NEXT_PUBLIC_* RPC keys as public: anyone can read them from the browser.NEXT_PUBLIC_* RPC keys as public: anyone can read them from the browser.NEXT_PUBLIC_* RPC keys as public: anyone can read them from the browser.