~/arifin
GitHub ↗
~/arifin · Indonesia
WorkWritingAbout
GitHub ↗LinkedIn ↗Email
← work
2026·Solo build·oss

Xylem

OSS ↗
backgroundDebugging EVM chains during development requires a block explorer, but most are hosted services or need a backend. Nothing worked for a local Anvil node or a custom L2.
goalBuild a stateless EVM explorer that streams live data directly from any RPC and WebSocket endpoint with no backend required.
outcomeXylem — a zero-backend EVM explorer that works with Ethereum, testnets, local Anvil nodes, and custom L2s, deployable to Vercel in one step.
ReactTypeScriptEVMWebSocketJSON-RPCZero BackendBlock Explorer

The same frustration that led to Dexplorer — but for EVM chains. When working on EVM development, I wanted a zero-setup way to watch what was happening on a local Anvil node or a custom L2 without spinning up a full block explorer stack. Etherscan doesn't work for local chains. Running a self-hosted explorer means setting up a database, an indexer, and a web server. I wanted to just open a URL and see blocks.

The name comes from a botanical metaphor: xylem tissue transports nutrients from roots to leaves, this tool transports chain data from RPC nodes to the browser. The architecture is a pure React + TypeScript SPA — no backend, no database. It connects directly to any EVM RPC and WebSocket endpoint, streams live blocks and transactions, and lets you inspect details for any block, transaction, wallet, or contract bytecode. Configuration is via environment variable for single-network deployments or a config/config.json for multi-chain setups with multiple networks selectable at runtime.

WebSocket reconnection turned out to be the most subtle engineering problem. EVM nodes drop connections, throttle subscription counts, and return inconsistent error codes across implementations — Anvil, Geth, and Alchemy all behave slightly differently when a subscription expires or the connection drops. Building a reconnection layer that handles all three gracefully, without displaying stale block data while reconnecting, required more edge case handling than the core explorer logic.

Xylem deploys to Vercel with one push, or runs in Docker, Nginx, or Caddy. It works against any EVM chain — Ethereum mainnet, Sepolia, local Anvil instances, or custom L2s — and needs nothing running server-side. Useful during active development for watching transactions land without leaving your editor.

← all workwriting →
OSS ↗
ReactTypeScriptEVMWebSocketJSON-RPCZero BackendBlock Explorer
← all workwriting →