Appearance
👵 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:legacy34Cette 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(pourasync/await)core-js/stable/promisecore-js/stable/symbolcore-js/stable/arraycore-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
- Builder :
npm run build:legacy34 - Tester :
npm run preview:legacy34 - 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 polyfillscore-jssont bien inclus dans le bundle final.- APIs DOM manquantes : Chrome 34 ne supporte pas
IntersectionObserverouResizeObserver. Si vous utilisez ces APIs, prévoyez un fallback ou un polyfill externe.