QA: Keplr wallet not working on yieldomega.com (production) #219
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega#219
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
A participant reported that Keplr does not work on https://yieldomega.com (connect and/or transact). This issue tracks manual QA and investigation on production (and local parity) before any connector change ships.
Related (may share root cause): #215 — Connect wallet does not fire for most of the available wallets
Current stack (for investigators)
frontend/src/wagmi-config.tsVITE_WALLETCONNECT_PROJECT_IDis set)@keplr-wallet/rainbow-connector/keplrWalletentry todaymultiInjectedProviderDiscovery: true) — Keplr may only appear if its browser extension registers an EVM providerdocs/frontend/wallet-connection.md(#58 SafePal, #81 single-chain, #95 wrong-network gating)Expected behavior
Users with Keplr (browser extension EVM enabled, or mobile via WalletConnect if supported) can:
chainIdmatching productionVITE_CHAIN_ID)/timecurve/simpleor/referralsregister preflight) without silent failureActual behavior (reported)
Keplr does not work on yieldomega.com — exact failure mode TBD (not listed, connect click no-op, wrong network, signature rejected, etc.).
Repro information to collect from reporter
Test plan (assignee)
A — Production https://yieldomega.com
/timecurve/simpleB — Local parity (optional)
bash scripts/start-qa-local-full-stack.shor documented stack with production-likeVITE_CHAIN_ID/VITE_WALLETCONNECT_PROJECT_IDfrom deploy env.C — If Keplr is missing from modal only
Evaluate official integration:
@keplr-wallet/rainbow-connector— addkeplrWalletto RainbowKit wallet group (same pattern as #58 SafePal). Do not close this issue on code merge alone — confirm production deploy.Acceptance criteria
Doc / invariant follow-ups (if product supports Keplr)
docs/frontend/wallet-connection.mdsupported-wallet listdocs/testing/manual-qa-checklists.md(mirror #58 checklist style)Walked A1-A5 on production. Desktop wallet 0x8Fe47aD07812aE322b2034d13E7d57af83DC0CeA. Keplr mobile app v2.1.165 build 319.
A1 — PASS. Keplr shows up in the RainbowKit modal under Installed via EIP-6963 discovery, no explicit @keplr-wallet/rainbow-connector needed.
A1 mid-flow — Keplr's own UI asks the user to pick which EVM chain to connect, then prompts Add MegaETH to Keplr because MegaETH isn't in Keplr's chain registry. The chain config Keplr offers to add points VITE_RPC_URL globalstake first (the dead fallback I flagged in #216). User has to approve adding the chain on first connect.
A2 — PASS. Header shows connected address, MEGAETH pill, no wrong-network banner.
A3 — PASS. /timecurve loaded with wallet-gated reads — charm preview, CL8Y balance, prize podiums.
A4 — FAIL. Loaded yieldomega.com inside Keplr mobile app's built-in browser, tapped Connect. The RainbowKit modal lists Rainbow / Base Account / MetaMask / SafePal / WalletConnect — Keplr is NOT in the modal even though we're browsing inside Keplr's own app. Keplr mobile dapp browser does not inject itself as an EIP-6963 provider.
Tried the WalletConnect path instead. The deep link keplrwallet://wcV2/wc?uri=... fails to open with net::ERR_UNKNOWN_URL_SCHEME. The keplrwallet:// scheme is not registered as a handler on this device, so the WC session never starts.
A5 — separate finding, filing a new issue. WalletConnect handshake hangs across multiple wallets (MetaMask mobile, Trust Wallet, Keplr mobile) — looks like WC is broken on production in general, not Keplr-specific. MetaMask desktop extension does connect eventually but takes ~2min to complete the handshake.
Console findings (desktop) — possibly relevant to the original report:
Multiple wallet extensions fight over window.ethereum at page load. Saw:
EIP-6963 sidesteps this for wallets that register through it (which is how Keplr surfaces cleanly in the desktop modal). But wallets still try to grab window.ethereum for legacy paths, and only one wins. If the reporter has multiple wallets installed and MetaMask or Backpack won the race, Keplr's legacy injection path would break.
Summary:
Working theory on the reporter:
Useful questions for the reporter:
mentioned in issue #220
Response from user on keplr:
"Tried with keplr desktop extension on chrome windows.
It always shows 0 fees and cant approve the TX"
"On keplr android app it doesn't show megaeth network at all so couldn't try"
User switched to rabby wallet, but keplr still needs investigations
Investigation note (codebase + web research, no code changes)
Scope: Static analysis of
frontend/src/wagmi-config.ts,docs/frontend/wallet-connection.md, related issues (#215, #216), reporter comments, and Brouie’s 2026-05-20 production QA. This consolidates likely root causes and ranked fixes for assignees.Executive summary
Keplr failures on yieldomega.com are not one bug — they split by platform and failure mode:
eth_estimateGas/ fee UI; possible Keplr EVM approve/gas bugseth_estimateGason MegaETH RPC; test Rabby/MM; upgrade Keplr; consider dApp-side gas/fee hints per MegaETH send-tx docswindow.ethereuminjection race; EIP-6963 is the supported pathkeplrWalletconnectorhttps://mainnet.megaeth.com/rpc, chainId 4326 (MegaETH connect guide)keplrwallet://scheme not registeredCodebase findings
No explicit Keplr connector —
wagmi-config.tslists Safe, Rainbow, Base Account, MetaMask, SafePal, WalletConnect only. Grep shows no@keplr-wallet/rainbow-connector/keplrWalletin repo.EIP-6963 discovery is enabled (
multiInjectedProviderDiscovery: true). Brouie confirmed Keplr appears under Installed on desktop production without the npm connector — matches design in issue description.Single-chain wagmi — only
configuredChain()(MegaETH 4326 in prod viaVITE_CHAIN_ID). Keplr must add/switch to MegaETH; first connect triggerswallet_addEthereumChainwith RPC from wagmi chain metadata (first comma-separatedVITE_RPC_URLentry).RPC URL ordering (#216) —
megaethMainnetOrderedRpcUrls()uses env URLs only (no frontend public fallbacks). If productionVITE_RPC_URLlistshttps://rpc-megaeth-mainnet.globalstake.iofirst (indexer still documents this fallback inindexer/src/config.rs), Keplr’s “Add MegaETH” prompt may point at a dead or CORS-blocked RPC → broken reads/estimates after add. Fix: ensure production build putshttps://mainnet.megaeth.com/rpcfirst (or sole) inVITE_RPC_URL.Transaction path — writes use
writeContractWithGasBuffer(+30% on successfulestimateContractGas; on estimate failure,submit-without-overridelets the wallet estimate). Pre-sign UI warns when simulation fails (useTimeCurveSaleSession/ Arena). 0 fee in Keplr may mean estimate returned 0/empty or wallet cannot price MegaETH storage gas.Docs gap —
wallet-connection.mddocuments SafePal (#58) but not Keplr; no manual QA checklist for #219 yet.Reporter-specific theory (desktop, “0 fees, can’t approve”)
PlasticDigits relay (2026-05-20): Chrome Windows, Keplr extension; user switched to Rabby.
Likely explanations (ranked):
MegaETH fee display / estimation — Base fee 0.001 gwei + dual compute+storage gas (spec). Total cost can round to $0.00 in wallet UI while still being valid — but if Keplr treats missing/invalid estimate as 0, it may disable Approve. MegaETH docs warn standard local/wallet estimators may undercount storage gas; dApps should estimate against MegaETH RPC.
Keplr EVM bugs — chainapsis merged fixes for EVM gas estimation on ERC-20 approve (e.g. PR #1922 on
keplr-wallet). Reporter should update Keplr extension and retry on latest build.Wrong or broken RPC after chain add — if user added MegaETH with globalstake (or other bad URL),
eth_estimateGas/eth_sendTransactionfail silently in wallet chrome.Multi-extension conflict — Brouie saw
Cannot redefine property: ethereum/ MetaMask vs Backpack races. Less likely if user only uses Keplr via EIP-6963, but worth asking.Not the primary issue: missing
keplrWalletin RainbowKit list (reporter got far enough to see a tx approval screen).Recommended fixes (product / eng)
P0 — Operator / env (no connector code)
VITE_RPC_URL: canonical first →https://mainnet.megaeth.com/rpc; remove or demote dead globalstake URL for client builds.P1 — Product support
@keplr-wallet/rainbow-connectorkeplrWalletto Popular group (same pattern as SafePal #58) — improves discoverability; does not fix mobile in-app browser or 0-fee approve by itself.wallet-connection.md+ manual QA checklist (#219).P2 — Tx reliability (if estimates confirmed failing)
estimateContractGasuses capable RPC; consider MegaETH-specific min gas limits ormaxFeePerGasguidance per MegaETH developer docs.onEstimateRevert: "rethrow"on critical paths so users never reach a wallet with failed simulation (today some paths fall through to wallet estimator).P3 — Mobile
Verification checklist for assignee
Desktop (reporter repro):
eth_estimateGas/eth_sendTransactionerrors when clicking Buy/approvemainnet.megaeth.comMobile:
Regression: MetaMask desktop + one WC wallet after any wagmi change.
References
wagmi-config.ts,docs/frontend/wallet-connection.mdmentioned in issue #215
Walked your verification checklist item 4 (Rabby comparison) on the same dapp.
Setup: Rabby extension on Chrome desktop, connected to https://yieldomega.com on MegaETH, wallet funded with ETH + CL8Y. Clicked Buy CHARM, captured the Rabby approval popup, cancelled before sign.
Rabby popup decoded:
0x1b68bb...f2bf71(TimeCurve proxy)buySame chain, same contract, same dapp, same operation as the reporter's broken Keplr flow — Rabby simulates clean, shows a real fee, produces a signable popup.
Comparison:
What this isolates:
Yieldomega backend is fine — Rabby successfully simulates against the TimeCurve proxy on MegaETH and prices the tx. Protocol + chain + dapp wiring all work.
The failure is Keplr-side. Two of your investigation note theories are both supported:
eth_estimateGascall routes to globalstake, it gets no answer → fee defaults to 0 → wallet may disable Approve. Rabby doesn't use yieldomega's VITE_RPC_URL, it uses its own MegaETH chain definition — which is why Rabby works on the same dapp/profile.Remaining checklist items still not walked:
window.ethereumrace on this profile (evmAsk, requestProvider, MetaMask, Backpack fighting); did not capture today's specific Keplr build.eth_estimateGas/eth_sendTransactionerrors on Keplr Buy/approve: not walked. Popup-observation method can't reach the Keplr signing screen without funding a Keplr-controlled address.Easiest reporter-facing remediation per your playbook:
Tell the reporter to (a) update Keplr to latest, and (b) manually edit their Keplr MegaETH chain config to RPC
https://mainnet.megaeth.com/rpc. If that resolves "0 fees, can't approve" → confirms RPC config theory. If not → Keplr EVM bug, hand-off back to chainapsis.