Files
explorer-monorepo/docs/API_ANALYSIS_AND_RECOMMENDATIONS.md

9.7 KiB

API Analysis and UX/UI Recommendations

Executive Summary

After testing all API endpoints and analyzing the frontend code, I've identified several critical issues, inconsistencies, and opportunities for improvement.

🔴 Critical Issues

1. Broken API Endpoints

Problem: Multiple endpoints return 400 errors with message: "Params 'module' and 'action' are required parameters"

Affected Endpoints:

  • /api/v1/blocks/138/{blockNumber} - Returns 400
  • /api/v1/transactions/138/{txHash} - Returns 400
  • /api/v1/addresses/138/{address} - Returns 400
  • /api/v1/transactions?from_address={address} - Returns 400
  • /api/v2/status - Returns 400
  • /health - Returns 400

Impact:

  • Block detail pages don't work
  • Transaction detail pages don't work
  • Address detail pages don't work
  • Health checks fail

Recommendation:

  • Fix API routing to properly handle REST endpoints
  • Ensure /api/v1/* and /api/v2/* routes are properly configured
  • Implement proper health check endpoint

2. Data Structure Mismatches

Problem: Frontend expects different data structures than what Blockscout API provides

Blockscout Block Structure:

{
  "items": [{
    "hash": "0x...",
    "height": 158162,
    "miner": { "hash": "0x..." },
    "transaction_count": 0,
    "gas_used": "0",
    "gas_limit": "30000000",
    "timestamp": "2025-12-24T22:02:37.000000Z"
  }]
}

Frontend Expects:

  • block.number (but Blockscout has height)
  • block.miner as string (but Blockscout has miner.hash)
  • block.transaction_count ✓ (matches)
  • block.gas_used ✓ (matches)
  • block.timestamp ✓ (matches)

Blockscout Transaction Structure:

{
  "items": [{
    "hash": "0x...",
    "from": { "hash": "0x..." },
    "to": { "hash": "0x..." },
    "value": "5000000000000000000",
    "block_number": null,  // May be missing!
    "status": "ok",
    "gas_used": "21000"
  }]
}

Frontend Expects:

  • tx.from as string (but Blockscout has from.hash)
  • tx.to as string (but Blockscout has to.hash)
  • tx.block_number (may be null in Blockscout)
  • tx.status as number (but Blockscout has string "ok"/"error")

Recommendation:

  • Create adapter functions to normalize Blockscout data to expected format
  • Handle null/undefined values gracefully
  • Map status strings to numbers (ok=1, error=0)

3. Missing Error Handling

Issues:

  • No retry logic for failed API calls
  • No user-friendly error messages
  • No fallback when Blockscout API is unavailable
  • No loading states for detail pages

Recommendation:

  • Implement exponential backoff retry logic
  • Show user-friendly error messages with retry buttons
  • Add fallback to cached data when API fails
  • Add skeleton loaders for better UX

🟡 Data Inconsistencies

1. Stats Endpoint Mismatch

Current Stats Response:

{
  "total_blocks": "153990",
  "total_transactions": "66",
  "total_addresses": "38",
  "average_block_time": 2.0E+3,
  "gas_prices": { "slow": 0.01, "average": 0.01, "fast": 0.01 }
}

Issues:

  • Numbers are strings instead of numbers
  • average_block_time is in milliseconds (2000ms = 2 seconds) but not clearly labeled
  • Gas prices are very low (0.01) - may be incorrect or need formatting
  • Missing fields: network hash rate, difficulty, total supply

Recommendation:

  • Return numbers as numbers, not strings
  • Add units to time values (e.g., "2.0s" instead of "2000")
  • Format gas prices properly (show in gwei)
  • Add missing network statistics

2. Block Data Gaps

Missing Information:

  • Block rewards
  • Uncle blocks
  • Base fee per gas (present but not displayed)
  • Burnt fees
  • Difficulty trend

Recommendation:

  • Display all available block data
  • Add visual indicators for EIP-1559 blocks
  • Show fee burn information

3. Transaction Data Gaps

Missing Information:

  • Transaction type (EIP-1559, legacy, etc.)
  • Max fee per gas
  • Priority fee
  • Burnt fees
  • Internal transactions
  • Token transfers
  • Event logs
  • Input data decoding

Recommendation:

  • Display transaction type badge
  • Show fee breakdown (base + priority + burnt)
  • Add tabs for internal transactions and token transfers
  • Decode and display event logs
  • Add input data decoder

🟢 UX/UI Improvements

1. Loading States

Current Issues:

  • Generic spinner for all loading states
  • No indication of what's loading
  • No progress indication for long operations

Recommendations:

  • Add skeleton loaders matching content structure
  • Show specific loading messages ("Loading block #12345...")
  • Add progress bars for pagination
  • Implement optimistic UI updates

2. Error States

Current Issues:

  • Generic error messages
  • No retry buttons
  • No error recovery suggestions

Recommendations:

  • Show specific error messages with context
  • Add "Retry" buttons for failed requests
  • Provide helpful error recovery suggestions
  • Log errors for debugging

3. Empty States

Current Issues:

  • Generic "No data" messages
  • No guidance on what to do next

Recommendations:

  • Add helpful empty state illustrations
  • Provide search suggestions
  • Show example queries
  • Add links to popular addresses/blocks

4. Navigation & Breadcrumbs

Current Issues:

  • No breadcrumb navigation
  • Hard to navigate back from detail pages
  • No history tracking

Recommendations:

  • Add breadcrumb navigation
  • Implement browser history for detail pages
  • Add "Back" buttons
  • Show navigation history

5. Search Functionality

Current Issues:

  • Search box exists but functionality unclear
  • No search suggestions
  • No search history

Recommendations:

  • Implement smart search (detect block/address/tx hash)
  • Add search suggestions/autocomplete
  • Show recent searches
  • Add search filters (blocks, transactions, addresses)

6. Responsive Design

Recommendations:

  • Test on mobile devices
  • Optimize tables for small screens
  • Add mobile-friendly navigation
  • Implement touch gestures

7. Performance Optimizations

Current Issues:

  • Loading all data on page load
  • No pagination for large lists
  • No caching

Recommendations:

  • Implement virtual scrolling for large lists
  • Add pagination with page size options
  • Cache API responses
  • Implement service worker for offline support
  • Lazy load images and non-critical content

8. Accessibility

Recommendations:

  • Add ARIA labels to all interactive elements
  • Ensure keyboard navigation works
  • Add focus indicators
  • Test with screen readers
  • Add skip navigation links

📊 Missing Features

1. Advanced Filtering

Recommendations:

  • Filter blocks by date range
  • Filter transactions by type, status, value range
  • Filter addresses by balance, transaction count
  • Save filter presets

2. Export Functionality

Recommendations:

  • Export block/transaction data as CSV/JSON
  • Print-friendly views
  • Share links for specific blocks/transactions

3. Watchlists & Favorites

Recommendations:

  • Save favorite addresses
  • Watchlist for specific transactions
  • Price alerts
  • Notification system

4. Charts & Analytics

Recommendations:

  • Network activity charts
  • Gas price trends
  • Transaction volume over time
  • Address activity graphs

5. Token Information

Recommendations:

  • Token list with prices
  • Token transfer tracking
  • Token holder information
  • Token contract verification status

🔧 Technical Recommendations

1. API Improvements

Recommendations:

  • Implement GraphQL endpoint for flexible queries
  • Add WebSocket support for real-time updates
  • Implement rate limiting with clear error messages
  • Add API versioning strategy
  • Create API documentation

2. Code Organization

Recommendations:

  • Split large index.html into modules
  • Implement proper state management
  • Add TypeScript for type safety
  • Create reusable components
  • Implement proper error boundaries

3. Testing

Recommendations:

  • Add unit tests for utility functions
  • Add integration tests for API calls
  • Add E2E tests for critical user flows
  • Implement visual regression testing

4. Monitoring & Analytics

Recommendations:

  • Add error tracking (Sentry, etc.)
  • Implement performance monitoring
  • Add user analytics
  • Track API response times
  • Monitor API error rates

📋 Priority Action Items

High Priority (Fix Immediately)

  1. Fix broken API endpoints (/api/v1/*, /health)
  2. Implement data adapters for Blockscout format
  3. Add proper error handling and retry logic
  4. Fix data structure mismatches

Medium Priority (Next Sprint)

  1. Improve loading states with skeleton loaders
  2. Add breadcrumb navigation
  3. Implement search functionality
  4. Add export functionality
  5. Display missing transaction/block data

Low Priority (Future Enhancements)

  1. Add charts and analytics
  2. Implement watchlists
  3. Add token information
  4. Create mobile app
  5. Add WebSocket support

📝 API Endpoint Status

Endpoint Status Notes
/api/v2/stats Working Returns stats data
/api/v2/blocks Working Returns paginated blocks
/api/v2/transactions Working Returns paginated transactions
/api/v2/status Broken Returns 400 error
/api/v1/blocks/{chain}/{number} Broken Returns 400 error
/api/v1/transactions/{chain}/{hash} Broken Returns 400 error
/api/v1/addresses/{chain}/{address} Broken Returns 400 error
/health Broken Returns 400 error

🎯 Success Metrics

Track these metrics to measure improvements:

  • API error rate (target: <1%)
  • Page load time (target: <2s)
  • Time to interactive (target: <3s)
  • User error rate (target: <5%)
  • Search success rate (target: >80%)

Last Updated: 2025-12-24 Analysis By: AI Assistant Status: Ready for Implementation