# REMÉDIATION APPLIQUÉE - BARE METAL vs INCUS **Date:** 2026-01-15 **Objectif:** Corriger l'erreur React.Children et les erreurs 503 intermittentes --- ## ✅ CORRECTIONS APPLIQUÉES ### 1. Stabilisation Réseau Container Web (Correction 503 Intermittent) **Fichier modifié:** `config/incus/deploy-service-native.sh` **Améliorations:** - Script `setup-network.sh` amélioré avec retries (5 tentatives) - Vérification de connectivité après configuration - Service systemd `veza-network-setup.service` avec: - Dépendances réseau correctes (`After=network-online.target`) - Restart automatique en cas d'échec - Exécution avant Apache pour garantir l'IP **Code ajouté:** ```bash # Script avec retries et vérification MAX_RETRIES=5 configure_network() { # ... configuration avec retries # Vérification ping vers gateway } ``` --- ### 2. Désactivation Service Worker (Correction React.Children - P0) **Fichiers modifiés:** - `apps/web/src/services/pwa.ts` - `apps/web/public/sw.js` **Modifications:** #### pwa.ts - Service Worker complètement désactivé dans `registerServiceWorker()` - Retour immédiat pour éviter toute enregistrement - Commentaire explicatif sur la raison (cache conflicts) #### sw.js - Event `install`: Supprime tous les caches existants immédiatement - Event `activate`: Supprime TOUS les caches (pas seulement les anciens) - Prend le contrôle immédiatement avec `clients.claim()` **Code:** ```typescript // pwa.ts private async registerServiceWorker(): Promise { // CRITICAL FIX: Disable Service Worker completely logger.info('[PWA] Service Worker disabled to prevent cache conflicts'); return; } ``` --- ### 3. Optimisation Build Vite (Ordre des Chunks) **Fichier modifié:** `apps/web/vite.config.ts` **Améliorations:** - Plugin `fix-react-loading-order` amélioré - Ajout de `modulepreload` pour `vendor-react-core` dans le HTML - Garantit que React est chargé avant Zustand **Code:** ```typescript { name: 'fix-react-loading-order', transformIndexHtml(html) { // Ajouter modulepreload pour vendor-react-core const reactChunkMatch = html.match(/src="([^"]*vendor-react-core[^"]*\.js)"/); if (reactChunkMatch) { html = html.replace( /