@@ -100,6 +100,18 @@ excerpt: "ملخص قصير"
1001009. Test mobile responsiveness
10110110. Verify language toggle works
102102
103+ ### Performance (PageSpeed)
104+ 11. Use WebP images with JPG/PNG fallbacks
105+ 12. Add `loading="lazy"` to images below the fold
106+ 13. Add `loading="eager"` and `fetchpriority="high"` to hero/LCP images
107+ 14. Preload critical fonts with `<link rel="preload" as="font" crossorigin>`
108+ 15. Add `font-display: swap` to all `@font-face` declarations
109+ 16. Preload hero/LCP images on pages where they appear
110+ 17. Use async CSS loading: `<link rel="preload" as="style" onload="this.rel='stylesheet'">`
111+ 18. Inline critical above-the-fold CSS in `<head>`
112+ 19. Specify `width` and `height` on images to prevent layout shift
113+ 20. Run `make prod-build` before committing
114+
103115---
104116
105117## 🚫 NEVER
@@ -115,6 +127,17 @@ excerpt: "ملخص قصير"
1151279. Merge without testing both languages
11612810. Create cramped layouts — white space is design
117129
130+ ### Performance (PageSpeed)
131+ 11. Serve unoptimized images (always use WebP, compress JPG/PNG)
132+ 12. Use images larger than needed (resize to display size)
133+ 13. Forget `loading="lazy"` on below-fold images
134+ 14. Chain critical requests (HTML → CSS → Font) — preload instead
135+ 15. Use render-blocking CSS without inlining critical styles
136+ 16. Load fonts without `font-display: swap`
137+ 17. Omit `width`/`height` on images (causes layout shift)
138+ 18. Use external font CDNs — self-host fonts instead
139+ 19. Ship unminified CSS (use `sass: style: compressed` in `_config.yml`)
140+
118141---
119142
120143## ✅ VERIFICATION (After Every Change)
0 commit comments