Navigasi mulus tanpa kedip tema, siklus hidup island yang benar, siap di balik reverse proxy, dan harness e2e. Semua temuan berasal dari membangun aplikasi koperasi desa (saham warga & pinjaman mikro) di atas Volt 0.4.0.
Siklus hidup island & form (#4)
Toastmenyinkronkan ulang props setiap render — island tetap hidup saat frame di-patch, sehingga toast dari navigasi berikutnya kini benar-benar tampil.SubmitButtonmelepas kunci setelah respons error dirender ([role=alert]/aria-invalid) atau saat form diedit; sebelumnya terkunci permanen setelah 401/422.- Satu implementasi
readFlash(app/ui/form.tsx); kuncistatus/warning/infoikut terbaca dariactions/shared.ts. ConfirmDialograta tengah (tidak mewarisitext-alignsel tabel).
Tema di sisi server & shell stabil (#5)
- Middleware
app/middleware/theme.tsmembaca cookievolt-theme(AsyncLocalStorage) →<html class="dark" data-theme>sejak HTML pertama;color-schemediturunkan lewat CSShtml.dark{};entry.tsmenyinkronkan cookie dari localStorage. Tidak ada lagi kedip tema saat pindah halaman (lihat remix-run/remix#11809). data-rmx-keypada shell/main/header: DOM & island dipertahankan lintas navigasi.- Indikator progres global di
resolveFrame(tunda 120 ms) dan penanda<html data-hydrated>setelahapp.ready()(dipasang ulang setelah patch). - Stylesheet Inter eksternal dihapus (memblokir render);
docs/FRAME_NAVIGATION.mddan bab "Hydration & e2e" di skillvolt-ux.
Deploy & pengujian (#7, menggantikan #6)
trustProxy(TRUST_PROXY, default aktif di produksi) — di balik Tailscale serve/Cloudflare Tunnel, CSRF tidak lagi menolak POST sebagaiinvalid-origin; dokumentasi HTTPS/cookie Secure/CSRF di README.test/e2e-helpers.ts:createE2EHarness,seedE2EUser,loginViaBrowser,waitForHydration; contoh spectest/actions/profile.test.e2e.ts.
Dependensi
volt-preline→github:laravolt/volt-preline#v0.2.0(cookie tema + helper SSR,Alert align, resep Combobox).
Full Changelog: v0.4.0...v0.5.0