A reflection on how web standards have evolved the developer experience, drawing parallels between early web development and today's blockchain ecosystem challenges.
CSS Eras: A Personal Timeline
The author's web development journey began at the tail-end of HTML tables and the start of CSS floats. By the time they entered the industry as a paid developer, the Web Standards Project had concluded because standards had become established and browser wars were over. This meant missing the "wild west" era where developers either wrote extensive compatibility code or chose a single browser and hoped for the best.
Working in blockchain development now provides a window into what those early web days must have been like.
Blockchain Standards: The Ethereum Ecosystem
Background: Ethereum introduced smart contracts as the first blockchain to enable programmable financial transactions. Like web standards, Ethereum has its own standards process through Ethereum Improvement Proposals (EIPs) - conceptually descended from Python Enhancement Proposals (PEPs).
EIP-1193: Defines the Ethereum Provider JavaScript API, specifying how wallets must expose their API via a JavaScript "Provider" object. This allows applications to make Ethereum RPC requests and respond to state changes in the blockchain, client, and wallet.
The Multi-Wallet Problem
Initially, this system worked fine when MetaMask dominated as the beginner-friendly browser extension wallet. However, as the ecosystem expanded with multiple wallet products, a critical problem emerged:
The Issue: Browser extension wallets inject their Ethereum providers into the same window.ethereum object. Users cannot control which Provider interacts with the application - the last wallet to load typically wins.
The Solution: EIP-6963 (Multi Injected Provider Discovery) was created to resolve this conflict, establishing expectations for how browser wallets should behave.
Standards vs. Reality
Having a defined standard is only the beginning. Browser wallet extension developers aren't forced to implement standards within specific deadlines. This mirrors web browser implementation timelines - for example, Firefox only started supporting View Transitions four days ago (at time of writing), while Chrome released it in early March 2023 and Safari in mid-September 2024.
Traffic Laws as Metaphor: The author jokes about Malaysian traffic laws being "suggestions" - similarly, standards exist but implementation varies by vendor and timeline.
The Developer Experience Gap
Web Standards Focus: HTML, CSS, and JavaScript standards focus on end-user interaction with browsers - developers think along these lines.
Ethereum Standards Focus: These standards focus on wallet-to-blockchain interaction, placing the dApp-to-wallet relationship one level removed.
Real Problem Example: Disconnecting a wallet from a dApp. EIP-1193's disconnect event indicates the wallet lost blockchain connection - not that the user disconnected from the application. This creates UX issues when users want to switch wallets, as the old provider persists.
Current Workarounds:
- Libraries like Wagmi provide abstraction layers simulating disconnection with shims
- MetaMask offers proprietary
wallet_revokePermissionsAPI - Proposed standards like ERC-7715 (Grant Permissions from Wallets) aim to eventually solve these issues
Lessons and Appreciation
Developing dApps mirrors early web development - the ecosystem is still determining what deserves standardization. This experience provides perspective on what building websites during browser wars must have been like.
While not experiencing the full exasperation of those earlier times, it creates deep appreciation for the work that made web standards reality. Today's developers can confidently build sites knowing they'll behave consistently across browsers - something not to be taken for granted.
The Takeaway: Web standards enable predictable interfaces for developers building on foundational elements. The journey from specification to implementation takes time, but the end result - reliable, consistent behavior - dramatically improves developer experience and end-user satisfaction.
A salute to web pioneers who paved the way. 🫡