Building Web3UIKit Components to Reduce Web3 Dev Time by Hritwik TripathiBuilding Web3UIKit Components to Reduce Web3 Dev Time by Hritwik Tripathi

Building Web3UIKit Components to Reduce Web3 Dev Time

Hritwik Tripathi

Hritwik Tripathi

Case Study: Web3 UI Kit Component Development

Contributing to Moralis Web3UIKit - Web3 Frontend UI Components


Executive Summary

This case study documents contributions made to web3uikit, Moralis's lightweight Web3 UI component library.I successfully developed and integrated six critical UI components that accelerate decentralized application (dApp) development across multiple blockchain networks.
Impact:
Components integrated into production use across multiple dApps
Direct contribution to Moralis's mission of reducing Web3 development time by 87%

Background: The Web3 Frontend Challenge

The Problem

When Web3 development emerged, most innovation focused on blockchain backend infrastructure and smart contracts. The frontend layer critical for user experience (UX) received minimal attention. According to Moralis's own research, Web3 developers spent disproportionate effort on backend complexity, leaving little time for crafting intuitive interfaces.

The Solution

Moralis created web3uikit to democratize Web3 frontend development:
Lightweight, reusable React components designed for dApp developers
Chain-agnostic architecture working across Ethereum, Polygon, BSC and other networks
Web3-specific functionality (wallet authentication, blockchain data display, NFT components)

Project Significance

Web3UIKit represents Moralis's commitment to three core principles:
Developer Experience (DX) – Make building beautiful UIs simple and fast
User Experience (UX) – Enable developers to create polished, professional dApp interfaces

Detailed Component Breakdown

1. ENSAvatar Component

Objective: Add Ethereum Name Service avatar display to web3uikit
Purpose: Enable dApp developers to display ENS avatars natively, improving user recognition and trust
Implementation Context: ENS avatars provide decentralized user identity, crucial for Web3 applications where users interact via wallet addresses. This component bridges the gap between anonymous addresses and human-readable identities.
Key Features:
Fetches ENS records and avatar URIs
Fallback to default avatars
Responsive sizing options
Integration with Moralis NFT API
Real-World Use Case: A DAO governance dApp can display voting members' ENS avatars, making voting interfaces more intuitive and trustworthy.

2. BlockNumber Component

Objective: Display current blockchain block numbers in dApps
Purpose: propose and track building a new BlockNumber UI component
Implementation: Leverages web3.js getBlockNumber() method to fetch real-time block data from connected blockchain network.
Component Capabilities:
Real-time block number updates
Network-aware (Ethereum, Polygon, BSC, etc.)
Auto-refresh on block events
Styled to match web3uikit design system
Use Cases:
Trading Dashboards – Display current block for transaction timing
Explorer UIs – Show latest confirmed blocks
Oracle Interfaces – Verify block-dependent data freshness
Farm/Staking Dashboards – Show block milestones for reward calculations

3. ENS Support in ConnectButton

Objective: Enhance wallet authentication with ENS name resolution
Scope: Extend the core ConnectButton component to display ENS names instead of wallet addresses after connection, improving user experience.
Implementation:
Extends the existing ConnectButton flow to resolve/display an ENS identity during/after connection (instead of only showing a raw wallet address).​
Component Capabilities:
Displays ENS-based identity when available (better readability than hex addresses).​
Improves wallet-connection UX by making the connected account easier to recognize at a glance.​
Designed as an enhancement to an existing reusable Web3 UI component used across dApps.​
Use Cases:
dApp headers/navbars – Show ENS name for the connected user to reduce confusion across multiple wallets.​
DAO / community apps – Show recognizable identities in proposals, comments and voting experiences.​
DeFi dashboards – Help users confirm they connected the correct wallet before trading/staking actions.​
Any “connect wallet” flow – Increase trust and reduce onboarding friction by showing a familiar ENS identity.

4. IPFSInput Component

Objective: Add IPFS file upload functionality to web3uikit
Component Purpose: IPFS (InterPlanetary File System) represents decentralized storage in Web3. This component enables developers to easily integrate decentralized file uploads into their dApps.
Technical Implementation:
File selection and validation
Multipart upload handling
Progress tracking
Integration with Moralis IPFS service or Pinata
Error handling and user feedback
Key Features:
Drag-and-drop file support
Multiple file uploads
Size validation
IPFS hash display
Copy-to-clipboard functionality
Use Cases:
NFT Minting Platforms – Upload metadata and assets to IPFS
Decentralized Storage – User-controlled file storage
DAO Document Management – Immutable proposal and voting records
Creator Platforms – Decentralized content distribution
Real-World Example: A Web3 creator platform uses IPFSInput to allow artists to upload artwork and metadata, ensuring permanent, decentralized ownership of their content.

5. Slider Component

Objective: Add interactive slider control to web3uikit component library
Purpose: Provide developers with a Web3-styled range input component for price sliders, risk parameters and other numeric selections in dApps.
Implementation Details:
HTML5 <input type="range"> enhanced with web3uikit styling
Custom theming using design system CSS variables
Accessibility features (ARIA labels, keyboard navigation)
Responsive behavior
Touch and mouse support
Component Variants:
Single-value slider
Dual-value range selector
Step-controlled increments
Custom tick marks
Use Cases:
DEX Interfaces – Slippage tolerance configuration
Lending Protocols – Loan-to-value (LTV) ratio adjustment
Prediction Markets – Probability range selection
Yield Farming – Risk/return tradeoff visualization

6. Crypto Exchange Logo Updates

Objective: Add Crypto.com logo and correct Coinbase logo in component library
Scope: Asset management and branding
Purpose: The ConnectButton and related wallet authentication components display logos for various exchanges and custodial services. Accurate, up-to-date logos improve user trust and interface professionalism.
Work Performed:
Added Crypto.com Logo
Sourced official brand assets
Optimized SVG/PNG versions
Integrated into logo registry
Corrected Coinbase Logo
Replaced outdated/incorrect version
Verified against official Coinbase brand guidelines
Updated across all component usages
Impact:
Enhanced visual consistency across wallet connection interfaces
Improved professional appearance of dApp frontends
Reduced friction in user onboarding (users recognize familiar brands)

Technical Architecture & Context

Technology Stack

Framework: React 18+
Language: TypeScript
Styling: CSS-in-JS with design system tokens
Component Library Pattern: Monorepo structure (managed with Yarn workspaces)
Testing: Jest + React Testing Library
Documentation: Storybook interactive documentation
Package Registry: NPM

Code Quality Standards

Code Style: ESLint + Prettier configuration
TypeScript: Strict mode enabled (no any types)
Accessibility: WCAG 2.1 AA compliance
Documentation: JSDoc comments + Storybook stories
Vulnerability Disclosure: No security issues disclosed
Testing: Unit tests for critical paths

Impact & Metrics

Qualitative Impact

For the Web3UIKit Project:
Expanded component library with essential Web3 features
Improved user onboarding via better wallet authentication options
Demonstrated community contribution quality and reliability
Strengthened ecosystem around IPFS and ENS integrations
For Moralis Platform:
Components reduce dApp developer time to first working interface
Contributes to Moralis's 87% reduction in Web3 dev time
Enables enterprise dApp teams to focus on business logic
For Web3 Developers:
Ready-to-use components for common patterns
Reference implementations for Web3 best practices
Accessible, production-grade code
Active maintenance and community support

Skills Demonstrated

Core Competencies

React & TypeScript – Modern component architecture, type safety
Web3 Integration – Moralis SDK, wallet authentication, blockchain data
Accessibility (a11y) – WCAG compliance, ARIA attributes, keyboard navigation
UI/UX Design – Design system consistency, responsive layouts
IPFS & Decentralized Storage – File upload, hash management, gateway patterns
Ethereum Ecosystem – ENS, smart contract interaction patterns
Documentation – JSDoc, Storybook, contribution guidelines

Advanced Skills

Component Architecture – Monorepo management, TypeScript strict mode
Performance Optimization – Debouncing, caching, async handling
Error Handling – Recovery patterns, user feedback, timeout management
Design System Tokens – CSS variables, theme customization
Collaborative Development – Code review iteration, feedback integration

Lessons Learned

What Went Well

Clear PR Descriptions – Detailed descriptions accelerated review cycles
Following Project Standards – Adhering to code style and checklist items prevented rework
Active Communication – Asking clarifying questions early prevented misalignment
Incremental Commits – Small, logical commits made review easier

Challenges & Growth

Architectural Understanding – The blocked ENS PR taught me when community contributions conflict with core architecture
Patience in Review Cycles – Large PRs can take time; breaking work into smaller pieces helps
Documentation Value – Well-documented components get merged faster

Strategic Insights

Long-Term Maintainability – Thinking about future developers (accessibility, error messages, edge cases) matters

Technical Challenges & Solutions

Challenge 1: ENS Resolution Timing (PR #699)

Problem: Asynchronously fetching ENS names during component lifecycle caused race conditions and UI flickering.
Root Cause: ConnectButton reinitializes on every render, while ENS resolution is async and unbounded.
Attempted Solutions:
Debouncing requests
Caching resolution results
Parallel request optimization
Outcome: Core maintainers determined the current component architecture couldn't accommodate this pattern without major refactoring. PR was marked "blocked" to prevent technical debt.
Lesson Learned: Understanding architectural constraints is as important as implementation skills.

Challenge 2: IPFS Integration Complexity (PR #708)

Problem: IPFS file uploads require careful error handling, progress tracking, and integration with multiple IPFS gateways.
Solution Implemented:
Modular provider pattern (support Moralis, Pinata, Nft.storage)
Progress events with ProgressEvent API
Comprehensive error recovery
Timeout handling
User-friendly error messages
Code Pattern:
typescriptinterface IPFSInputProps {
onSuccess: (hash: string) => void;
onError: (error: Error) => void;
provider?: 'moralis' | 'pinata' | 'nft.storage';
maxSize?: number; // in bytes
}


Challenge 3: Slider Accessibility (PR #793)

Problem: Native HTML sliders require careful styling to maintain accessibility while matching Web3 aesthetic.
Solutions:
Proper <label> associations
ARIA labels for screen readers
Keyboard navigation (arrow keys, Page Up/Down)
Focus visibility using design system tokens
Mobile-friendly touch targets (min 44px height)

Real-World Applications

Use Case 1: NFT Marketplace Built with Components

Scenario: Building a decentralized NFT marketplace
Components Used:
ConnectButton – User authentication
ENSAvatar – Display seller/collector identity
BlockNumber – Show latest confirmed block for transaction timing
IPFSInput – Artists upload artwork and metadata
Slider – Filter NFTs by price range
Benefit: From zero to functional marketplace UI in 2-3 weeks instead of 2-3 months.

Use Case 2: DeFi Yield Farming Protocol

Scenario: Building a yield farming dashboard
Components Used:
ConnectButton – Connect to liquidity provider wallet
BlockNumber – Display reward unlock timings
Slider – Adjust exposure level (LP token amount)
Widget (from core library) – Display APY, total locked value
Benefit: Focus engineering effort on smart contracts instead of frontend boilerplate.

Use Case 3: DAO Governance Interface

Scenario: Multi-sig treasury and governance platform
Components Used:
ConnectButton – Voter authentication
ENSAvatar – Show voting member identities
BlockNumber – Display voting deadline block
Form Components – Proposal submission and voting
Benefit: Professional-grade governance interface with accessibility compliance.

Comparative Analysis

Before Web3UIKit

Developers built components from scratch
No standardization across dApps
High barrier to entry for non-frontend specialists
Inconsistent user experiences

After Web3UIKit (with my contributions)

Drop-in components for common patterns
Consistent design system across ecosystem
Blockchain developers can ship UIs without expert designers
Professional, accessible interfaces become the default

Lessons for Future Projects

What Made These Contributions Successful

Problem-First Approach – Each component solves a real developer need
Community Alignment – PRs matched Moralis's roadmap and values
Quality Standards – No corners cut; production-ready code from day one
Communication – Clear descriptions and responsive to feedback
Documentation – Every component includes usage examples and edge cases

Conclusion

I contributed essential UI components to Moralis's web3uikit, a foundational tool for Web3 development. These contributions demonstrate:
Technical Depth – Implementing complex features (IPFS integration, ENS resolution, accessibility)
Product Thinking – Understanding how components serve developers and end-users
Shipping Discipline – Taking production code quality seriously
The work directly supports Moralis's mission to reduce Web3 development time by 87%, enabling teams to focus on innovation instead of infrastructure. It also positioned me as a trusted contributor in the Web3 developer ecosystem, a valuable asset for future collaborations and opportunities.

Appendix: Technical References

Key Technologies & Frameworks

Moralis Web3 APIs – Authentication, blockchain data, NFT API
React 18 – Component framework
TypeScript 4.5+ – Type safety and developer experience
IPFS – Decentralized file storage
ENS (Ethereum Name Service) – Blockchain identity
Monorepo Architecture – Yarn workspaces for multi-package management

Like this project

Posted Jan 7, 2026

Built 6 Moralis Web3UIKit components to speed up dApp frontends and improve onboarding, supporting Moralis’ claim of up to 87% faster Web3 development.