requestProvider.js ethereum error
(anonymous) @ bindings_wasm.js:3013
consoleNoisePatch.ts:37 Cannot update a component (DeployVaultMain) while rendering a different component (Hydrate). To locate the bad setState() call inside Hydrate, follow the stack trace as described in https://react.dev/link/setstate-in-render
Analysis
I’m going to trace these as two separate regressions: wallet-provider injection collisions (window.ethereum redefine/getter) and the React setState during Hydrate in DeployVault. I’ll inspect the relevant hooks/config and patch both so the app ignores hostile extension injection and defers state updates until after hydration.
Tools invoked: rg, rg, rg, rg
Analysis
Tools invoked: ReadFile, ReadFile, ReadFile, ReadFile, ReadFile
Analysis
I found existing guards for extension collisions, so the wallet errors are mostly extension-side noise, but the Hydrate warning likely comes from a render-phase update inside DeployVault. I’m now inspecting the top-level deploy page initialization path for any setter called during render and will patch it to run in an effect.
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile, ReadFile, ReadFile, ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: rg
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ReadFile
Analysis
I’ve identified a low-risk mitigation path: gate EIP-6963 requestProvider dispatch when window.ethereum is already locked, and mount the heavy deploy surface only after first commit to avoid the Hydrate render-phase update warning. I’m applying both now.
Tools invoked: ApplyPatch
Analysis
Tools invoked: ApplyPatch
Analysis
Tools invoked: Shell
Analysis
Tools invoked: AwaitShell
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: rg
Analysis
Tools invoked: ReadFile
Analysis
Tools invoked: ApplyPatch
Analysis
Tools invoked: Shell
Analysis
Tools invoked: AwaitShell
Analysis
Tools invoked: AwaitShell
Analysis
Tools invoked: ReadLints
Analysis
Patched both problem lanes in app code:
-
Wallet injection collision hardening in frontend/src/config/wagmi.ts
- Added a startup collision check (
detectEthereumProviderCollision()). - When collision is detected (locked/getter-only
window.ethereum, multiple injected providers, or persisted collision signal), the app now skips EIP-6963requestProviderdispatch entirely. - This prevents our app from triggering extension races that throw:
Cannot set property ethereum of #<Window> which has only a getterCannot redefine property: ethereum
- Added a startup collision check (
-
Hydration/render-state warning fix in frontend/src/pages/deploy/DeployVault.tsx
DeployVaultnow gates heavy mount until first post-hydration commit usinguseDeferUntilAfterCommit().- While waiting one commit, it renders a small loading shell.
- This avoids
DeployVaultMainstate updates duringHydraterender and removes:Cannot update a component (DeployVaultMain) while rendering a different component (Hydrate)
Validation:
pnpm -C frontend typecheck✅- lints on edited files ✅
About the remaining console lines you pasted:
requestProvider.js,evmAsk.js,injected.jsstack traces are extension-side scripts, not your app bundle.xmtp_mls ... welcome ... already processedis typically a non-fatal duplicate-welcome sync noise event.- If you still see noisy wallet collisions, quickest runtime fix is still to keep one EVM extension enabled per profile (or use Base App/Coinbase-only profile).
Was this page helpful?