Tài liệu này dành cho Dev.
Mục tiêu: biết chính xác cần chạy lệnh gì, lúc nào, và tại sao.
Tại sao có Hot Update?
Mỗi khi dev hoàn thành một task và QA cần test, flow cũ bắt buộc phải trải qua: build native app → đợi 15–30 phút → phân phối file → QA cài lại. Nếu có bug fix, vòng lặp đó bắt đầu lại từ đầu.
Hot Update giải quyết vấn đề này bằng cách tách biệt hai tầng của app:
- Native shell (iOS/Android binary) — ít thay đổi, chỉ cần build khi có native change thực sự
- JavaScript bundle — phần business logic, UI, flow — chiếm 95% công việc hàng ngày
Khi chỉ có JS thay đổi, dev có thể đẩy bundle mới lên Cloudflare trong 1–2 phút. QA nhập tên task vào app staging đang có sẵn trên tay → app tự tải code mới về và reload — không cần cài lại, không cần chờ build, không cần làm gì thêm.
Một bản staging native build dùng được cho tất cả các task. QA switch qua lại giữa các task ngay trên app, test song song nhiều feature cùng lúc. Dev fix bug xong deploy lại — QA tự động nhận code mới.
Yêu cầu trước khi bắt đầu
- [ ] File
.env.hotupdaterđã có trong thư mục gốc của project (không commit file này lên git) - [ ] Đang ở đúng branch chứa code của task cần deploy
Các lệnh cần biết
# Deploy JS của task lên channel riêng (để QA test)
yarn run hot:task:ios <TASK_ID> # ví dụ: yarn run hot:task:ios V567APP-199
yarn run hot:task:android <TASK_ID> # ví dụ: yarn run hot:task:android V567APP-199
# Deploy lên channel staging chính (sau khi PR merge vào develop)
yarn run hot:stg # deploy cả iOS + Android
# Mở dashboard quản lý bundle
yarn run hot:console
Quy trình theo từng tình huống
1. Hoàn thành task → Chuyển cho QA test
Không cần build native app. Làm theo 3 bước sau:
Bước 1: Đảm bảo đang ở đúng branch của task và code đã sẵn sàng.
Bước 2: Chạy lệnh deploy:
yarn hot:task:ios V567APP-199
yarn hot:task:android V567APP-199
Quá trình này mất khoảng 1–2 phút.
Bước 3: Thông báo QA:
"Task V567APP-199 đã deploy lên channel, không có native change. QA vào app staging → mở 🔥 → nhập
V567APP-199→ Switch."Lưu ý: Nếu sau đó fix thêm bug và cần QA test lại, chỉ cần chạy lại đúng lệnh deploy ở Bước 2. Bundle cũ sẽ bị ghi đè. QA không cần làm gì thêm — app tự tải code mới nhất về.
2. PR đã merge vào develop → Cập nhật channel staging chính
Sau khi PR được approve và merge vào nhánh staging chính (develop):
Bước 1: Pull code mới nhất về máy.
Bước 2: Deploy lên channel stg:
yarn hot:stg
Quan trọng: Chỉ chạy lệnh này khi code trên nhánh
developđã ổn định.
3. Xem dashboard / Rollback
yarn hot:console
Mở giao diện web cho phép:
- Xem bundle đang active trên từng channel
- Disable hoặc rollback về bundle cũ bằng vài click
Khi nào KHÔNG dùng hot update, mà cần một bản build mới
⚠️ Nếu task có bất kỳ thay đổi nào dưới đây, không dùng hot update — phải build native app như bình thường:
- Thêm hoặc xoá native module / thư viện có native code
- Thay đổi
Podfile,build.gradle,AndroidManifest.xml - Thay đổi cấu hình Xcode build settings
- Thêm permission mới (camera, location, v.v.)
Trong những trường hợp này, thông báo rõ cho QA: "Task này có native change, cần bản build mới — không switch channel được."
Lưu ý quan trọng
.env.hotupdater |
Chứa Cloudflare credentials — tuyệt đối không commit lên git |
| Version targeting | Bundle chỉ apply cho app version 4.0.0 (default của staging, mỗi dự án có thể là một version khác không cố định là 4.0.0) |
| DevChannelSwitcher | UI 🔥 chỉ hiện trên bản staging (DEVELOPMENT_MODE=true), không bao giờ xuất hiện trên production |
| Dev mode | Channel switcher không hoạt động khi đang chạy qua Metro (yarn start) — chỉ hoạt động trên release build
|
Top comments (0)