Performance Vitals: a unified scoring system to guide performance health and prioritization
Article Summary
Coinbase scaled from a handful of engineers on one platform to four platforms with zero standardized performance measurement. How do you unify performance tracking across web, mobile, backend, and extensions?
Coinbase's engineering team created Performance Vitals, a company-wide scoring system that extends Google's Core Web Vitals across their entire stack. They built custom metrics for React Native and backend services, giving every team a common language for performance.
Key Takeaways
- Uses 85th percentile threshold (stricter than Google's 75th) for catching regressions early
- Created Navigation Total Blocking Time (NTBT) to measure UI responsiveness during page transitions
- Backend services must respond under 300ms, GraphQL under 500ms for 'good' scores
- Real-time anomaly detection alerts teams immediately when performance drops
- Open sourcing React Native Core Vitals library in coming quarters
A unified scoring system (0-100) across frontend and backend lets teams set shared KRs and speak the same performance language from sprint planning to incident response.
About This Article
Coinbase didn't have enough performance data from React Native and backend services. This made it hard to spot where performance could improve or to prioritize fixes consistently across four different platforms.
Leonardo Zizzamia's team built on Google Web Vitals best practices and created App Render Complete (ARC) for React Native. They set a 5-second threshold based on Android community research. For the backend, they added metrics like GraphQL Response Time (GRT) with a 500ms cap.
Teams can now filter by product, platform, and region to catch performance regressions as they happen. They use these metrics to set shared quarterly KRs. For example, the mobile app improved its NTBT score from 70% to 90% good.