feat: Lighthouse CI, performance budgets, font pipeline consolidation - #1065
Merged
RUKAYAT-CODER merged 6 commits intoAug 27, 2026
Merged
Conversation
- Replace deprecated FID (First Input Delay) with INP (Interaction to Next Paint) in PerformanceMetric enum and webVitals.ts to match web-vitals v5 API - Fix 7 type errors in webVitals.ts: proper MetricType usage, remove stale onFID import, add RatedMetric type for type-safe threshold lookups - Add @lhci/cli to devDependencies, remove from depcheck ignore list - Update lighthouserc.json with desktop preset, performance/accessibility/ best-practices/seo category budgets, and per-metric numeric assertions - Add Lighthouse CI job to bundle-size.yml running against the expo web export - Update PERFORMANCE_MONITORING.md to reflect INP replacing FID 🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
… fabricated data - Expand performance-budget.json to cover startup, bundle size, frame rate, API latency (p50/p95/p99), memory, and Lighthouse budgets with rationale - Mark performance-baseline.json as fabricated until real measurements replace Math.random() values in MemoryAnalyzer, RuntimeAnalyzer, NetworkAnalyzer - checkPerfRegression.js now fails when a metric is missing instead of skipping - updatePerfBaseline.js refuses to overwrite a fabricated baseline - checkBundleSize.js and checkApiPerf.js use the expanded budget structure - measureStartupTime.js reads p95_ms from startupTime budget - Rewrite docs/PERFORMANCE_THRESHOLDS.md with per-metric budgets and rationale 🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
…ache key - Pin fonttools==4.62.0 in requirements.txt for reproducible font subsetting - Change CI step from `pip install fonttools` to `pip install -r requirements.txt` - Add requirements.txt to the font cache key so a tool upgrade invalidates the cache - Ensures font subsetting output is byte-identical across builds 🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
…ument pipeline - Delete scripts/subset-fonts.js (unused, hardcoded character sets, outputs WOFF2 incompatible with React Native) — CI depends on scripts/subset-fonts.py which dynamically scans source files for actual character usage - Collapse subset-fonts and fonts:subset npm scripts to both invoke the Python script - Add docs/FONT_PIPELINE.md documenting the three-stage pipeline: subsetting → analysis → runtime loading, including CRITICAL_FONTS / SECONDARY_FONTS relationship to subset output 🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
|
@ustaxs Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
This reverts commit 9f5488f.
Contributor
|
Thank you for contributing to the project. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaced deprecated FID with INP in PerformanceMetric enum and webVitals.ts (web-vitals v5 dropped FID)
Fixed 7 type errors in webVitals.ts — proper MetricType usage, removed stale onFID, added RatedMetric type
Added @lhci/cli to devDependencies, removed from depcheck ignore
Updated lighthouserc.json with desktop preset and per-metric budgets (FCP ≤ 3000ms, LCP ≤ 4000ms, CLS ≤ 0.25, TBT ≤ 3000ms, TTI ≤ 5000ms)
Added Lighthouse CI job to bundle-size.yml running against the expo web export
Closes #1000
Expanded performance-budget.json to cover startup, bundle size, frame rate, API latency (p50/p95/p99), memory, and Lighthouse budgets
Marked performance-baseline.json as fabricated until real measurements replace Math.random() values
checkPerfRegression.js now fails on missing metrics instead of silently skipping
updatePerfBaseline.js refuses to overwrite a fabricated baseline
Updated checkBundleSize.js, checkApiPerf.js, measureStartupTime.js to use expanded budget structure
Rewrote docs/PERFORMANCE_THRESHOLDS.md with per-metric budgets and rationale
Closes #1001
Task 3 — Fonttools Pinning (commit 9f6f1e8)
Pinned fonttools==4.62.0 in requirements.txt
Changed CI step from pip install fonttools to pip install -r requirements.txt
Added requirements.txt to the font cache key so upgrades invalidate the cache
Closes [Optimization]
requirements.txtpins font tooling but CI installsfonttoolsunpinned #1002Task 4 — Font Pipeline Consolidation (commit dbe1ec8)
Deleted scripts/subset-fonts.js (unused JS version with hardcoded character sets)
Collapsed subset-fonts and fonts:subset npm scripts to both invoke the Python script
Added docs/FONT_PIPELINE.md documenting the end-to-end pipeline
Closes [Optimization] Two font-subsetting scripts exist — a Python one and a JavaScript one — with different npm entry points #1003