Skip to content

Memo - Support navigateur Svelte 4, Svelte 5 et builds TV legacy ​

Probleme traite ​

L'application doit continuer a fonctionner sur des environnements TV legacy, notamment le build npm run build:tizen6 destine aux televiseurs Tizen 6. La migration de Svelte 4 vers Svelte 5 doit donc etre evaluee sous l'angle de la compatibilite navigateur, pas seulement sous l'angle de la syntaxe Svelte.

Constat officiel ​

Svelte 4 ne publie pas de matrice officielle indiquant une version minimale de Chrome comparable a celle de Svelte 5.

Les elements officiels importants pour Svelte 4 sont les suivants :

  • Le compilateur Svelte 4 conserve l'option legacy: true.
  • Cette option genere du code compatible avec IE9/IE10 pour certains cas runtime, par exemple les usages reposant sur element.dataset.
  • Le guide de migration Svelte 4 mentionne quelques APIs runtime pouvant poser probleme sur de tres vieux navigateurs, notamment classList.toggle(name, boolean) et le constructeur CustomEvent.
  • Ces APIs peuvent necessiter des polyfills sur des cibles tres anciennes.

Svelte 5 publie une contrainte plus explicite : son support navigateur officiel commence a Chrome/Edge 87. La documentation Svelte 5 indique aussi que le runtime s'appuie sur des APIs plus modernes comme Proxy et ResizeObserver, et que l'ancienne option compiler legacy n'existe plus dans le meme sens.

Impact pour Tizen 6 ​

Le test de typologie appareil du projet utilise un user-agent Tizen 6 representatif :

text
Mozilla/5.0 (SMART-TV; LINUX; Tizen 6.0) AppleWebKit/537.36 (KHTML, like Gecko) 76.0.3809.146/6.0 TV Safari/537.36

Ce runtime correspond a un moteur Chromium 76, donc :

  • confortable pour Svelte 4 dans la plupart des cas, sous reserve des polyfills et du build target ;
  • inferieur au minimum officiel Svelte 5, qui est Chrome/Edge 87 ;
  • potentiellement expose a des erreurs runtime apres migration Svelte 5, meme si le build compile.

Build concerne ​

Le script actuel est :

sh
npm run build:tizen6

Il execute d'abord :

sh
npm run build

puis post-traite le dossier build/ avec tvkit :

sh
npx tvkit build ./build --out ./build-tvkit --force --browser "Tizen 6, WebOS 6"

Cette chaine signifie que le build SvelteKit standard est produit avant intervention de tvkit. La compatibilite finale depend donc de trois niveaux :

  • ce que Svelte/SvelteKit emet dans le build initial ;
  • ce que Vite/esbuild transpile selon la configuration courante ;
  • ce que tvkit sait transformer ou polyfiller apres coup.

tvkit doit etre considere comme un post-processeur utile, mais pas comme une garantie de compatibilite avec toutes les exigences runtime de Svelte 5.

Decision technique recommandee ​

Tant que Tizen 6 reste une cible de production, la migration Svelte 5 doit etre classee comme un changement a risque moyen a eleve pour le build build:tizen6.

La recommandation est de :

  • conserver Svelte 4 pour les builds TV legacy tant que la migration Svelte 5 n'a pas ete validee sur cible reelle ;
  • eviter de migrer massivement les composants en runes tant que le runtime Tizen 6 n'est pas valide ;
  • tester une migration Svelte 5 sur branche dediee, en gardant d'abord les composants en syntaxe legacy Svelte 4 ;
  • ne pas considerer un build local reussi comme une preuve suffisante de compatibilite Tizen 6.

Checklist de validation Svelte 5 pour Tizen 6 ​

Avant d'accepter Svelte 5 pour build:tizen6, valider au minimum :

  • npm run build:tizen6 reussit sans erreur ;
  • npm run preview:tizen6 sert correctement le contenu genere ;
  • l'application demarre sur une TV Tizen 6 reelle ou un emulateur equivalent ;
  • aucune erreur runtime bloquante n'apparait dans la console distante ;
  • la navigation telecommande fonctionne ;
  • les carrousels, pages de contenu et overlays principaux s'affichent correctement ;
  • la lecture video et HLS fonctionne ;
  • le bridge TV continue de recevoir et emettre les evenements attendus ;
  • les layouts CSS ne presentent pas de regression visible, notamment sur les styles scopes et les selecteurs complexes ;
  • les polyfills necessaires sont explicitement identifies et documentes.

Reference rapide ​

SujetSvelte 4Svelte 5
Version Chrome minimale officielleNon publiee sous forme de matriceChrome/Edge 87+
Option compiler legacyDisponibleSupprimee dans son ancien sens
Tizen 6 / Chromium 76Cible raisonnable avec build adapteSous le support officiel
Niveau de risque pour build:tizen6MaitrisableMoyen a eleve sans validation device

Liens internes ​