Skip to content

👵 Guide Spécifique Legacy 34 (Chrome 34) ​

Ce document détaille les contraintes et les solutions mises en œuvre pour supporter les navigateurs datant de 2014, spécifiquement Chrome 34 (souvent rencontré sur d'anciens boîtiers Android ou Smart TVs).


🚫 Contraintes Techniques (Chrome 34) ​

Chrome 34 ne supporte nativement aucune des syntaxes ES6+ modernes. Sans une transpilation rigoureuse, l'application échoue avec des erreurs de type :

  • Uncaught SyntaxError: Unexpected token . (Optional chaining ?.)
  • Uncaught SyntaxError: Unexpected token ? (Nullish coalescing ??)
  • Erreurs sur les modules ES6, classes, fonctions fléchées, etc.

🚀 Utilisation du Build ​

Pour générer cette version spécifique :

bash
npm run build:legacy34

Cette commande génère l'application dans le dossier legacy-build/ avec une transpilation complète vers ES5 (via esbuild/Vite).


🧪 Stratégie de Polyfilling ​

Pour éviter d'alourdir le build moderne, les polyfills lourds sont chargés de manière conditionnelle.

1. Détection dans le Code ​

Nous utilisons la constante __IS_LEGACY_34__ injectée par Vite :

javascript
if (typeof __IS_LEGACY_34__ !== 'undefined' && __IS_LEGACY_34__) {
	// Comportement spécifique ou chargement de polyfills additionnels
}

2. Polyfills Chargés ​

Le build legacy34 inclut automatiquement via les imports de vite.config.ts :

  • regenerator-runtime/runtime (pour async/await)
  • core-js/stable/promise
  • core-js/stable/symbol
  • core-js/stable/array
  • core-js/stable/object

3. Chargement Dynamique ​

Dans src/routes/+layout.ts, nous pouvons importer dynamiquement des polyfills si nécessaire pour ne pas impacter le chargement initial sur les machines performantes.


🛠️ Dépannage et Tests ​

Validation Locale ​

  1. Builder : npm run build:legacy34
  2. Tester : npm run preview:legacy34
  3. Vérifier les erreurs de syntaxe dans la console des outils de développement d'un ancien Chrome.

Erreurs Courantes ​

  • Uncaught ReferenceError: Promise is not defined : Vérifiez que les polyfills core-js sont bien inclus dans le bundle final.
  • APIs DOM manquantes : Chrome 34 ne supporte pas IntersectionObserver ou ResizeObserver. Si vous utilisez ces APIs, prévoyez un fallback ou un polyfill externe.

Retour à l'index des Builds | Retour à l'accueil