Vì Sao Widget Zoho Creator Chạy Tốt Trên Desktop Nhưng Lại Lỗi Trên Mobile

Tác giả
Nam Pham
Những lỗi khi build Widget trong Zoho Creator (đặc biệt là trên mobile)
Desktop chạy ngon… nhưng mở app lên thì toang
Ban đầu mình nghĩ làm widget trong Zoho Creator khá đơn giản.
Và đúng là trên desktop:
- API gọi bình thường
- UI render ổn
- Data load ok
Nhưng khi mở mobile app…
Mọi thứ bắt đầu lỗi theo những cách rất khó hiểu.
Đây là những thứ mình đã gặp.
1. Gọi nhiều API cùng lúc → mobile bị freeze
Trên desktop:
- gọi nhiều API song song ok
- Promise.all chạy mượt
Trên mobile:
app có thể bị đứng luôn
Ban đầu mình nghĩ:
- mạng chậm
- API lỗi
Nhưng không phải — mà do cách mobile xử lý concurrent requests.
Cách mình fix:
- Không gọi API song song
- Gọi tuần tự
- Hoặc gom API lại thành 1 endpoint
Từ:
Promise.all([api1(), api2(), api3()])
Thành:
await api1()await api2()await api3()
Không đẹp, nhưng chạy ổn.
2. Image không hiển thị
Cái này gây khó hiểu nhất.
Desktop:
- load image từ URL → ok
Mobile:
không hiện gì luôn
Nguyên nhân:
- không phải image nào cũng load được
- đặc biệt là image private
Cách xử lý:
- dùng image public
- hoặc đi qua middleware (proxy image)
Tức là:
- hoặc public file
- hoặc viết API để trả image về
3. Dính CORS (rất dễ quên)
Khi gọi API ngoài:
dễ bị block bởi CORS
Trong Zoho Creator:
- cần cấu hình domain
- trong connect-src
Và mình đã quên… nhiều lần.
Kết quả:
- Postman chạy ok
- backend ok
- widget fail
Fix:
- thêm đúng domain
- check lại config giữa dev/prod
4. Desktop không giống mobile
Sai lầm lớn nhất của mình:
nghĩ rằng desktop chạy thì mobile cũng chạy
Nhưng thực tế:
- mobile bị giới hạn hơn
- behavior khác
- dễ lỗi hơn
Nên giờ:
- test mobile sớm
- không đợi làm xong mới test
Một vài hướng mình đang thử
Sau khi dính mấy lỗi này, mình đổi cách build:
- Đẩy logic về backend
- Gộp nhiều API thành 1
- UI đơn giản hơn
- thêm loading state
Ngoài ra mình cũng thử:
- middleware bằng edge function
- cache response
- giảm số request
Kết
Widget trong Zoho Creator khá mạnh — nhưng có nhiều “bẫy”.
Đặc biệt trên mobile:
- gọi API song song dễ lỗi
- image không đơn giản
- CORS cần config kỹ
Vấn đề không phải là code dở
Mà là chưa hiểu môi trường nó chạy.
Và mấy cái này… mình học được bằng cách bị lỗi 😅