Skip to content

feat: Lighthouse CI, performance budgets, font pipeline consolidation - #1065

Merged
RUKAYAT-CODER merged 6 commits into
rinafcode:mainfrom
ustaxs:feat/lighthouse-perf-budgets-font-pipeline
Aug 27, 2026
Merged

feat: Lighthouse CI, performance budgets, font pipeline consolidation#1065
RUKAYAT-CODER merged 6 commits into
rinafcode:mainfrom
ustaxs:feat/lighthouse-perf-budgets-font-pipeline

Conversation

@ustaxs

@ustaxs ustaxs commented Aug 27, 2026

Copy link
Copy Markdown
Contributor
  • Task 1 — Lighthouse CI Setup (commit ce868d4)

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

  • Task 2 — Performance Budgets & Regression Detection (commit 76ec573)

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

ustaxs and others added 4 commits August 27, 2026 08:56
- 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]>
@drips-wave

drips-wave Bot commented Aug 27, 2026

Copy link
Copy Markdown

@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! 🚀

Learn more about application limits

ustaxs and others added 2 commits August 27, 2026 09:13
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <[email protected]>
@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Thank you for contributing to the project.

@RUKAYAT-CODER
RUKAYAT-CODER merged commit d470907 into rinafcode:main Aug 27, 2026
2 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment