Chuyển đổi (Convert) Web App hiện có sang Zalo Mini App đang trở thành giải pháp chiến lược cho doanh nghiệp muốn mở rộng kênh tiếp cận khách hàng nhanh chóng và hiệu quả. Thay vì đầu tư phát triển ứng dụng mới từ đầu, doanh nghiệp có thể tận dụng hạ tầng sẵn có của Zalo với hơn 75 triệu người dùng tại Việt Nam. Trong bài viết này, CNV CDP sẽ hướng dẫn chi tiết quy trình chuyển đổi Web App thành Zalo Mini App, giúp doanh nghiệp bắt đầu hành trình số hóa nhanh và hiệu quả hơn.

1. Lợi ích khi chuyển Web App sang Zalo Mini App
Việc chuyển đổi Web App thành Zalo Mini App giúp doanh nghiệp tận dụng tối đa nền tảng công nghệ sẵn có, tiết kiệm thời gian và chi phí phát triển. Đồng thời, việc tích hợp lên Zalo mở ra cơ hội tiếp cận hàng triệu người dùng Việt Nam một cách tự nhiên và hiệu quả hơn. Đây là bước đi chiến lược giúp doanh nghiệp mở rộng tệp khách hàng và nâng cao trải nghiệm người dùng trên nền tảng số.
- Tiếp cận tệp khách hàng khổng lồ: Zalo là ứng dụng quốc dân với hơn 70 triệu người dùng thường xuyên. Mini App giúp doanh nghiệp đặt dịch vụ của mình ngay trong môi trường quen thuộc, giảm đáng kể ma sát trong hành trình người dùng (User Journey).
- Tiết kiệm chi phí & tận dụng tài nguyên: Thay vì xây dựng ứng dụng Native (iOS/Android) hoặc Mini App mới từ đầu, bạn tái sử dụng được gần như toàn bộ logic kinh doanh (Business Logic) và giao diện (UI/UX) đã có của Web App. Điều này giúp tiết kiệm tới 90% thời gian và chi phí phát triển.
- Tích hợp chức năng đặc trưng của Zalo: Dễ dàng kết nối với các API mạnh mẽ của Zalo như thanh toán ZaloPay, chia sẻ qua Chat, định danh người dùng (Open ID), và gửi thông báo qua Zalo ZNS.

2. Chuẩn bị cho việc chuyển đổi Web App thành Zalo Mini App
Trước khi tiến hành chuyển đổi Web App sang Zalo Mini App, doanh nghiệp cần chuẩn bị kỹ lưỡng về hạ tầng, dữ liệu và quy trình vận hành. Việc đảm bảo các yếu tố nền tảng này giúp quá trình chuyển đổi diễn ra suôn sẻ, hạn chế rủi ro kỹ thuật. Đây là bước tiền đề quan trọng để tối ưu hiệu suất và trải nghiệm người dùng sau khi triển khai.
- Web App có sẵn: Ứng dụng web phải sử dụng HTML5, CSS3, JavaScript và có thiết kế responsive (tương thích di động). Đảm bảo ứng dụng hoạt động ổn định trên trình duyệt di động (Chrome, Safari).
- Môi trường phát triển:Cài đặt Node.js (phiên bản 14 trở lên) và Cài đặt công cụ Zalo Mini App CLI
- Tài khoản Zalo Developer: Đăng ký tại Zalo Developer Console để tạo Mini App mới (cần cung cấp tên, logo, ảnh bìa).
- Công cụ hỗ trợ: Zalo Mini App SDK (Tích hợp để gọi các API của Zalo), Simulator (Kiểm tra ứng dụng trên máy tính), Module bundler: (Vite hoặc Webpack để build ứng dụng).
- Kiến thức cơ bản: Hiểu về cấu hình manifest.json, API Zalo, và cách quản lý assets.

Xem thêm: Cách khởi tạo Mini app Zalo tích hợp Zalo Pay nhằm nâng cao trải nghiệm của người dùng cực hiệu quả.
3. Thiết lập phía Client khi triển khai Web App thành Zalo Mini App
Các điều chỉnh kỹ thuật này được thực hiện để đảm bảo mã nguồn của Web App hoạt động ổn định và tương thích hoàn toàn với môi trường runtime của Zalo Mini App, giúp quá trình chuyển đổi Web App thành Zalo Mini App diễn ra liền mạch và tối ưu hiệu suất ứng dụng.
3.1. Khởi tạo Zalo Mini App trên project Web App có sẵn với zmp-cli
Sử dụng zmp-cli để “wrap” (đóng gói) project Web App hiện tại của bạn thành cấu trúc của Mini App.
- Mở Terminal/CMD, di chuyển đến thư mục gốc của Web App.
- Chạy lệnh khởi tạo: zmp init

- Khi được yêu cầu, chọn “Using ZMP to deploy only” để sử dụng mã nguồn Web App hiện có.
- Sau khi khởi tạo thành công, zmp-cli sẽ tạo thêm hai file cấu hình quan trọng tại root folder: .env và app-config.json. File app-config.json là nơi bạn tùy chỉnh giao diện và khai báo tài nguyên.
- Cập nhật thông tin ứng dụng (tên, phiên bản, quyền truy cập) trong manifest.json.

3.2. Cập nhật root element selector id = “app”
Môi trường chạy Zalo Mini App sẽ sử dụng một file index.html mặc định do Zalo cung cấp, trong đó root element được quy định có id=”app”.
Nếu Web App của bạn đang sử dụng ID khác (ví dụ: “root”, “container”) ứng dụng sẽ không thể khởi động. Bạn phải chỉnh sửa lại điểm khởi tạo ứng dụng (Entry Point) (ví dụ: index.tsx hoặc main.js) để đảm bảo ứng dụng được mount vào element có ID là “app”.
Ví dụ với React 18:

Xem thêm: Cách đổi số điện thoại Zalo đơn giản không làm mất tin nhắn cũ
3.3. Cấu hình module bundler (Vite, Webpack) phù hợp cho Zalo Mini App
Khi Web App được build và deploy lên CDN của Zalo, đường dẫn đến các tài sản tĩnh (static assets) như ảnh, CSS, JS module cần được xử lý chính xác để tránh lỗi 404. Các tệp tĩnh (static files) và module sau khi build sẽ được tải lên CDN của Zalo, nên cần cấu hình lại Public Path để tải đúng đường dẫn:
- Đối với Vite: Đơn giản nhất là thiết lập base: “./” path trong file cấu hình vite.config.js:

- Đối với Webpack: Cần sử dụng biến toàn cục __webpack_public_path__ để thiết lập đường dẫn tài sản tương ứng với phiên bản Mini App đang chạy (window.APP_VERSION):

3.4. Xử lý lỗi dynamic import trên iOS với Vite
Đối với các dự án sử dụng Vite và tính năng Dynamic Import (tải module động), bạn có thể gặp lỗi không tải được trang trên trình duyệt iOS. Nếu gặp lỗi không tải được trang khi sử dụng dynamic import trên thiết bị iOS (khi đóng gói bằng Vite), bạn có thể tắt tùy chọn polyfillModulePreload:

3.5. Cấu hình Router đúng base path cho Mini App
Đối với các dự án sử dụng Vite và tính năng Dynamic Import (tải module động), bạn có thể gặp lỗi không tải được trang trên trình duyệt iOS. Đối với các dự án tự xử lý routing, bạn cần điều chỉnh Base URL để tránh lỗi không tải được trang chủ hoặc lỗi điều hướng cần điều chỉnh Base URL thành: /zapps/[ZALO_MINI_APP_ID]
Ví dụ với React Router:

Ví dụ với Angular:

Xem thêm: Hướng dẫn cách tạo mã QR Mini Apps trên Zalo nhanh chóng
3.6. Xác thực người dùng và bảo mật API khi gọi từ Mini App
Mini App chạy trên môi trường riêng của Zalo, không phải trình duyệt truyền thống. Do đó, các API lưu trữ mặc định của trình duyệt KHÔNG ĐƯỢC HỖ TRỢ:
- Các API trình duyệt bị vô hiệu hóa: LocalStorage, SessionStorage, và Cookie đều không được hỗ trợ trong môi trường Mini App.
- Cách xác thực đúng: Sử dụng API của Zalo để lấy Access Token của người dùng. -> Tạo ra JWT (JSON Web Token) riêng cho hệ thống của bạn. -> Truyền thông tin xác thực qua Header (Authorization: Bearer {Your JWT here}) trong mỗi Request API tới Server của bạn, thay vì sử dụng Cookie.
Khuyến nghị: Sử dụng JWT (JSON Web Token) hoặc Access Token lấy từ Zalo API.
Ví dụ gọi API với Header:

3.7. Khai báo các assets cần thiết trong app-config.json
Như đã đề cập, Mini App dùng index.html của Zalo. Do đó, bạn phải khai báo thủ công các file CSS và JavaScript đã được build ra trong file app-config.json để chúng được tải khi khởi tạo ứng dụng.
- Kiểm tra tệp index.html được build ra từ Web App của bạn để tìm các tệp CSS/JS quan trọng.
- Khai báo đường dẫn tương đối (từ thư mục build) vào các trường sau:
| Trường trong app-config.json | Mục đích |
| listCSS | Chứa đường dẫn đến các file CSS cần tải. |
| listSyncJS | Chứa đường dẫn đến các file JavaScript cần tải đồng bộ. |
| listAsyncJS | Chứa đường dẫn đến các file JavaScript có thể tải bất đồng bộ. |
Ví dụ sau khi build hoàn tất, build folder (ở trong trường hợp này là dist) có cấu trúc như sau:

File index.html có nội dung như sau:

Quan sát file index.html sau khi build phía trên, và cần khai báo đường dẫn tới 2 file này vào các trường tương ứng trong app-config.json như sau:

4. Thiết lập phía Server khi triển khai Mini App
Để các yêu cầu API (Ajax) từ Mini App có thể giao tiếp với Server của bạn mà không gặp lỗi bảo mật, bạn cần cấu hình Header CORS (Cross-Origin Resource Sharing).
Mini App chạy trên domain của Zalo (https://h5.zdn.vn), khiến trình duyệt chặn các yêu cầu đến Server (domain khác) của bạn. Vì vậy, Server của bạn phải trả thêm Header Access-Control-Allow-Origin với giá trị là domain của Zalo Mini App:
Ví dụ (Node.js/Express với package cors):

5. Quá trình deploy và thử nghiệm Mini App trên Zalo
Sau khi hoàn tất các bước chuẩn bị và điều chỉnh cấu hình Client và Server:
- Build Web App: Tiến hành build Web App như bình thường (ví dụ: npm run build).
- Deploy Mini App: Sử dụng lệnh zmp deploy và trỏ đến thư mục đã build (ví dụ: dist hoặc build)
- Chọn tùy chọn “Deploy your existing project” và điền đúng tên thư mục chứa bản build (ví dụ: dist hoặc build).
- Thử nghiệm: Sau khi deploy thành công, hệ thống sẽ trả về một Mã QR Code. Mở ứng dụng Zalo, dùng tính năng quét QR để trải nghiệm và kiểm tra Mini App trên thiết bị điện thoại của bạn
- Phát hành: Kiểm tra kỹ lưỡng và nộp hồ sơ duyệt lên Zalo Mini App Developer Center để phát hành chính thức.

Xem thêm: Cách tạo mã QR Mini Apps trên Zalo đơn giản và nhanh chóng
6. Các lỗi thường gặp và cách khắc phục khi chuyển đổi
Để xây dựng tính toàn diện và chuyên sâu (Topical Authority), doanh nghiệp cần nắm rõ các vấn đề kỹ thuật có thể phát sinh. Dưới đây là bảng tổng hợp những lỗi phổ biến mà các Developer thường gặp trong quá trình chuyển đổi Web App sang Zalo Mini App, giúp bạn chủ động phòng tránh và xử lý kịp thời.
| Lỗi thường gặp | Nguyên nhân | Cách khắc phục |
| Ứng dụng không hiển thị/Trang trắng | Sai root element selector hoặc thiếu listCSS/listSyncJS trong app-config.json. | Kiểm tra và đổi root element selector thành id=”app”. Khai báo đầy đủ assets trong app-config.json. |
| Không tải được static files/modules | Sai cấu hình public path trong module bundler. | Cấu hình lại base: “./” (Vite) hoặc dùng __webpack_public_path__ (Webpack). |
| Lỗi khi chuyển trang/routing | Sai base path của Router. | Điều chỉnh base path của router thành /zapps/[APP_ID]. |
| Gọi API thất bại (CORS) | Server chưa cho phép domain của Zalo gọi API. | Thiết lập Header Access-Control-Allow-Origin là https://h5.zdn.vn trên Server. |
| Mất trạng thái đăng nhập | Đang sử dụng LocalStorage, SessionStorage hoặc Cookie. | Chuyển sang sử dụng Header (JWT hoặc Access Token) để truyền thông tin xác thực. |
| Lỗi dynamic import trên iOS | Cấu hình polyfillModulePreload mặc định của Vite. | Tắt polyfillModulePreload: false trong vite.config.js. |
Chuyển đổi Web App thành Zalo Mini App không chỉ là một giải pháp kỹ thuật mà còn là chiến lược tăng trưởng bền vững cho doanh nghiệp trong kỷ nguyên số. Với các thông tin trên CNV CDP hi vọng, với khả năng tái sử dụng gần như toàn bộ hạ tầng hiện có, doanh nghiệp có thể tiết kiệm tới 90% thời gian và chi phí. Nếu có thắc mắc hãy liên hệ ngay với CNV – Nền tảng tăng trưởng bền vững và khai thác toàn diện sức mạnh dữ liệu qua số 1900 636 400 để được tư vấn miễn phí.
————————————-
Để biết thêm thông tin về dịch vụ, liên hệ ngay với chúng tôi:
CNV CDP – Nền tảng tăng trưởng bền vững và khai thác toàn diện sức mạnh dữ liệu
🌎 Facebook: https://www.facebook.com/cnvcdp
📌 Trụ sở: Tầng 3 – 42/2 Nguyễn Văn Trỗi, phường 15, quận Phú Nhuận, Thành phố Hồ Chí Minh.
📌 Văn phòng Hà Nội: Tòa nhà Gem, Số 48 Nguyễn Chánh, Phường Trung Hòa, Quận Cầu Giấy, TP. Hà Nội
☎️ Hotline: 0856.999.959/ 0911.116.587/ 1900.636.400









































