🕸️ Deep Dive · Advanced

Flutter web Wasm: deferred loading để first paint nhẹ hơn

Wasm mở khóa đồ họa gần native trên web — kèm kỷ luật đóng gói mới. Flutter 3.47 thêm deferred loading experimental cho build Wasm để tách app lớn thành module lazy.

Sơ đồ: Wasm Deferred Loading

Lệnh build

flutter build web --release --wasm
flutter build web --release --wasm --enable-wasm-deferred-loading

Điều kiện tiên quyết

  • Rời dart:html sang package:web và JS interop hiện đại.
  • Update package còn giả định interop chỉ dart2js.

Chiến lược tách module

  1. Giữ login/shell ở module chính.
  2. Defer màn nặng (admin, editor, map).
  3. Đo time to interactive, không chỉ dung lượng tải.

Cạm bẫy

  • Library deferred không được bắt buộc ở frame đầu.
  • UI nặng canvas/Skottie vẫn cần ngân sách asset chặt.
  • Không phải tổ hợp browser/flag nào cũng giống nhau — test Chrome, Safari, Firefox.
#Flutter#Web#Wasm#Performance