İki sorun düzeltildi:
1) next.config.ts'e images.pexels.com (+ unsplash) eklendi
- Mevcut 6 referans projesinde Pexels görsel URL'leri var
- 'Invalid src prop on next/image' hatası giderildi
- images.unsplash.com da eklendi (gelecekte kullanım için)
2) ConsentInit artık /public/consent-default.js'i src ile yüklüyor
- React 19 + Next.js 16'da inline <script>{code}</script> ve
<script dangerouslySetInnerHTML> her ikisi de 'Encountered a script
tag while rendering React component' warning'i üretiyor
- Statik dosya + <script src> pattern'i React'ın temiz şekilde
kabul ettiği yöntem — warning yok, davranış aynı
- GTM de aynı şekilde async src kullanıyor (önceki inline snippet
yerine direkt GTM URL'i)
- Consent default hala synchronous (script src defer/async olmadan)
— gtag('consent','default') hiçbir analytics yüklenmeden çalışır
- noscript iframe fallback korundu
Sorun:
React 19 + Next.js 16'da next/script componenti inline scripts (children
ile) için 'Encountered a script tag while rendering React component'
hatası veriyor. <script> child node React'ta artık warning üretiyor.
Çözüm:
ConsentInit'te next/script yerine düz <script dangerouslySetInnerHTML>
kullanıyoruz. Bu inline script HTML parse edildiği anda çalışır —
beforeInteractive davranışını taklit eder, hatta daha güvenilir.
Avantaj:
- gtag('consent','default') hiçbir analytics scripti yüklenmeden önce
kaydedilir (Google Consent Mode v2 zorunluluğu)
- GTM snippet'i de aynı şekilde body'nin başında çalışır
- noscript fallback iframe korundu