Answer:
I found the issue.
It wasn’t a cache or CDN problem. The mistake was on my side.
After building with Vite, I only uploaded the new manifest.json file to public_html/build/,
but Laravel actually reads it from project_root/public/build/manifest.json.
On my shared hosting (Rumahweb), the public_html folder is mapped to Laravel’s public directory,
so the correct manifest file must be inside project/public/build/manifest.json.
Once I uploaded the correct manifest.json to that location and cleared Laravel caches with:
php artisan optimize:clear
everything worked fine.