- UI thông báo Toast không còn được GitHub khuyến nghị do các vấn đề về khả năng tiếp cận
- Cấu trúc thông báo tạm thời tự động biến mất có nguy cơ vi phạm các tiêu chí về khả năng tiếp cận thị giác và chức năng (WCAG)
- GitHub đề xuất các phương thức phản hồi bền vững và dễ tiếp cận hơn như banner và dialog làm giải pháp thay thế
- Toast cũng tồn tại nhiều vấn đề về tính khả dụng như màn hình lớn, đa nhiệm, hiện tượng người dùng bỏ qua banner
- Để đảm bảo khả năng tiếp cận và trải nghiệm người dùng nhất quán, GitHub ngừng sử dụng Toast trên toàn bộ hệ thống thiết kế Primer
Tổng quan về Toasts
- Toast là cửa sổ thông báo hình chữ nhật nhỏ xuất hiện tạm thời ở góc dưới màn hình, được kích hoạt bởi hành động của người dùng hoặc hệ thống
- Với cơ chế tự động biến mất sau một khoảng thời gian nhất định, Toast tiềm ẩn các vấn đề về khả năng tiếp cận và tính khả dụng
- Vì những lý do này, GitHub khuyến nghị các phương thức giao tiếp ổn định và dễ tiếp cận hơn
Giải pháp thay thế Toast
- Cần chọn UI phù hợp theo mục đích sử dụng
- Với thông báo thành công đơn giản, có thể xác nhận ngay trên chính màn hình kết quả mà không cần phản hồi riêng
- Với tác vụ phức tạp, truyền đạt trạng thái thành công bằng banner hoặc hiển thị nội dung theo từng bước
- Với tác vụ thất bại, cung cấp thông tin lỗi thông qua banner hoặc dialog
- Trong trường hợp gửi biểu mẫu, biểu mẫu đơn giản không cần xác nhận riêng; biểu mẫu phức tạp nên dùng trang xác nhận trung gian hoặc banner
- Với kiểm tra dữ liệu nhập, sử dụng các thành phần xác thực biểu mẫu hiện có của Primer
- Với tác vụ kéo dài, thông báo trạng thái hoàn tất qua banner hoặc kênh khác như email hay thông báo đẩy
- Khi xảy ra mất đồng bộ phiên, dùng dialog hoặc banner để thông báo cần làm mới trang
Các lưu ý về khả năng tiếp cận (Accessibility Considerations)
- UI Toast có thể vi phạm nhiều tiêu chí thành công của WCAG
- 2.2.1 Timing Adjustable (A) : phải được duy trì cho đến khi người dùng tự đóng
- 1.3.2 Meaningful Sequence (A) : sự không khớp giữa thứ tự DOM và thứ tự hiển thị trực quan có thể gây nhầm lẫn khi dùng công nghệ hỗ trợ
- 2.1.1 Keyboard (A) : phải có khả năng điều khiển các tương tác trong toast bằng bàn phím
- 4.1.3 Status Messages (AA) : phải thông báo sự hiện diện của nó cho công nghệ hỗ trợ theo cách không gây cản trở
- Ngoài ra còn có các tiêu chí có khả năng bị vi phạm
- 1.4.4 Resize text (AA) : khi thay đổi cỡ chữ có nguy cơ che khuất màn hình hoặc gây tràn nội dung
- 1.4.10 Reflow (AA) : cần đảm bảo khả năng truy cập bằng bàn phím khi cuộn ngang
- 2.4.3 Focus Order (A) : có thể gây rối thứ tự focus
- 3.2.4 Consistent Identification (AA) : cần duy trì tính nhất quán trong mã
Các lưu ý về tính khả dụng (Usability Considerations)
- Trên màn hình lớn, toast có thể nằm ngoài tầm nhìn nên không được nhận ra
- Khi tự động biến mất, nếu người dùng đang làm việc khác thì có nguy cơ bỏ lỡ thông điệp
- Hiện tượng che khuất UI: toast có thể đè lên các thành phần quan trọng như nút ở dưới cùng
- Người dùng phóng to màn hình có thể không nhìn thấy toast nằm ngoài vùng phóng to
- Vấn đề trí nhớ làm việc: thông tin không thể được kiểm tra lại do tự động biến mất
- Hiện tượng bỏ qua banner: khi bị lạm dụng quá mức, người dùng có xu hướng phớt lờ
- Vị trí không đồng nhất: khoảng cách vật lý giữa UI được kích hoạt và toast có thể gây nhầm lẫn về mối liên hệ
- Hành vi đóng sai: phím Esc có thể vô tình đóng cả các UI khác
Tài liệu tham khảo bổ sung
1 bình luận
Ý kiến trên Hacker News
toast()quá dễ nên có xu hướng bị lạm dụng, nhưng họ đề xuất chuyển sang cấu trúc nhưuseAlerts()sẽ tốt hơn nhiều