React error #418: fixing a matchMedia hydration mismatch with useSyncExternalStoreMinified React error #418 on every page load came from reading window.matchMedia in a useState initializer. useSyncExternalStore fixed it.7 min read·mohamedgado.hashnode.dev1O7h ago
Why a CSS rotate with will-change: transform makes images and text blurryMy screenshots looked pixelated though the files were sharp. A 0.9deg rotate under will-change: transform was the cause. The CSS before and after.7 min read·mohamedgado.hashnode.dev7h ago
Next.js metadata openGraph not inherited: why my subpages lost og:site_nameNext.js merges metadata shallowly, so a page that sets openGraph drops the layout's og:site_name, og:locale and twitter handles. How I found it and fixed it.6 min read·mohamedgado.hashnode.dev7h ago
Next.js soft 404: why notFound() returned 200 behind loading.tsxUnknown slugs on my Next.js App Router site returned HTTP 200 with index and noindex tags. loading.tsx was the cause, dynamicParams = false the fix.6 min read·mohamedgado.hashnode.dev1O7h ago
Discovered – currently not indexed in Search Console: what it means and what fixed it50 of my pages sat in Discovered – currently not indexed. Here is what the status means, why Google skipped them, and the fixes that worked.7 min read·mohamedgado.hashnode.dev7h ago