Notes
Personal notes on knowledge, experiences, and curated writings.
Cart State Hell: Tại sao giỏ hàng của bạn bị lệch giữa tab, device và server
Giỏ hàng tưởng đơn giản nhưng lại là một trong những module phức tạp nhất trong ecommerce frontend. Bài viết này đi sâu vào các vấn đề thực tế: guest vs auth cart, optimistic update, race condition và multi-tab sync.
Checkout Flow & Form UX — Tại sao user bỏ giỏ hàng ở bước cuối
70% người dùng bỏ giỏ hàng ở bước checkout. Phần lớn không phải vì giá, mà vì UX form tệ. Bài này phân tích từng điểm đau trong checkout flow và cách xử lý đúng.
Product Listing Performance — Khi catalog 10,000 SKU làm chết trang
Render 10,000 sản phẩm cùng lúc là công thức để giết browser. Bài này phân tích virtualization, infinite scroll, URL-driven filter và cách tránh layout shift khi filter thay đổi.
Real-time Price & Stock — Xử lý dữ liệu thay đổi liên tục trên UI
Flash sale, giá thay đổi theo giờ, tồn kho cập nhật mỗi giây — UI của bạn xử lý dữ liệu real-time thế nào? Bài này so sánh Polling, WebSocket, SSE và cách tránh trải nghiệm tệ khi dữ liệu bị stale.
Product Image Optimization — Tại sao ảnh sản phẩm giết LCP của bạn
Ảnh sản phẩm chiếm 60-80% bandwidth của trang ecommerce. Một lỗi lazy load sai chỗ có thể phá hỏng LCP. Bài này đi qua các kỹ thuật tối ưu ảnh từ priority loading, LQIP, CDN transform đến gallery zoom on-demand.
Search & Filter UX — Tại sao search ecommerce khó hơn bạn nghĩ
Search là feature được dùng nhiều nhất trên ecommerce nhưng cũng dễ bị làm sai nhất. Debounce, URL state, faceted filter, empty state và typo tolerance — đây là những gì một search UX tốt cần có.
Auth Edge Cases trong Checkout — Những lỗi junior hay bỏ sót
Session hết hạn giữa lúc user điền form thanh toán, OAuth callback loop, giỏ hàng bị mất sau khi đăng nhập — những edge case này hiếm nhưng khi xảy ra sẽ gây mất đơn hàng và mất khách.
i18n trong Ecommerce — Không chỉ là dịch text
Internationalization trong ecommerce sâu hơn nhiều so với thay đổi ngôn ngữ. Currency format, date locale, RTL layout, dynamic product content, và SEO per locale — mỗi thứ đều có gotcha riêng.
Mobile Checkout UX — Tại sao conversion rate trên mobile thấp hơn desktop
Người dùng mobile chiếm 60-70% traffic nhưng conversion rate chỉ bằng một nửa desktop. Lý do không phải vì màn hình nhỏ — mà vì những vấn đề UX kỹ thuật mà dev thường không test kỹ trên thiết bị thật.
Error Handling & Recovery — Khi payment fail, API timeout, network drop
Payment fail, API timeout, mất mạng giữa checkout — đây là những tình huống tệ nhất trong ecommerce. Xử lý sai có thể dẫn đến double charge hoặc mất đơn hàng. Bài này đi qua từng kịch bản và cách giải quyết đúng.