From 447ca501c72ac1732b4205f1d4d3877aca3ec4a4 Mon Sep 17 00:00:00 2001 From: Dwindi Ramadhana Date: Tue, 30 Dec 2025 17:26:18 +0700 Subject: [PATCH] fix: Generate Vite manifest for customer SPA loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Customer SPA stuck on 'Loading...' message after installation Root Cause: Vite build wasn't generating manifest.json, causing WordPress asset loader to fall back to direct app.js loading without proper module configuration Solution: 1. Added manifest: true to both SPA vite configs 2. Updated Assets.php to look for manifest in correct location (.vite/manifest.json) 3. Rebuilt both SPAs with manifest generation Changes: - customer-spa/vite.config.ts: Added manifest: true - admin-spa/vite.config.ts: Added manifest: true - includes/Frontend/Assets.php: Updated manifest path from 'manifest.json' to '.vite/manifest.json' Build Output: - Customer SPA: dist/.vite/manifest.json generated - Admin SPA: dist/.vite/manifest.json generated - Production zip: 10M (includes manifest files) Result: ✅ Customer SPA now loads correctly via manifest ✅ Admin SPA continues to work ✅ Proper asset loading with CSS and JS from manifest ✅ Production package ready for deployment --- admin-spa/vite.config.ts | 1 + customer-spa/vite.config.ts | 1 + includes/Frontend/Assets.php | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/admin-spa/vite.config.ts b/admin-spa/vite.config.ts index a30996c..c767270 100644 --- a/admin-spa/vite.config.ts +++ b/admin-spa/vite.config.ts @@ -21,6 +21,7 @@ export default defineConfig({ build: { outDir: 'dist', emptyOutDir: true, + manifest: true, rollupOptions: { input: { app: 'src/main.tsx' }, output: { entryFileNames: 'app.js', assetFileNames: 'app.[ext]' } diff --git a/customer-spa/vite.config.ts b/customer-spa/vite.config.ts index fc5a404..c07981e 100644 --- a/customer-spa/vite.config.ts +++ b/customer-spa/vite.config.ts @@ -43,6 +43,7 @@ export default defineConfig({ build: { outDir: 'dist', emptyOutDir: true, + manifest: true, rollupOptions: { input: { app: 'src/main.tsx' }, output: { entryFileNames: 'app.js', assetFileNames: 'app.[ext]' } diff --git a/includes/Frontend/Assets.php b/includes/Frontend/Assets.php index ffbdd55..bec275c 100644 --- a/includes/Frontend/Assets.php +++ b/includes/Frontend/Assets.php @@ -75,8 +75,8 @@ class Assets { return; } - // Load manifest to get hashed filenames - $manifest_file = $dist_path . 'manifest.json'; + // Load manifest to get hashed filenames (Vite puts it in .vite/manifest.json) + $manifest_file = $dist_path . '.vite/manifest.json'; if (file_exists($manifest_file)) { $manifest = json_decode(file_get_contents($manifest_file), true);