Phát hành bản cập nhật iOS: phát hành theo giai đoạn
Bởi Mehdi Azizi
Đăng ngày , 10 phút
Phát hành bản cập nhật iOS: tạo phiên bản mới, build mới, viết nội dung What's New, rồi phát hành thủ công, tự động hoặc theo giai đoạn trong 7 ngày.
Để phát hành bản cập nhật iOS, bạn tạo một phiên bản mới trong App Store Connect với số phiên bản cao hơn. Bạn gắn một build mới vào đó, viết nội dung “What's New”, rồi gửi cho App Review. Mỗi phiên bản mới đều phải qua lại vòng duyệt của Apple, kể cả khi chỉ là một bản sửa lỗi nhỏ. Trước khi gửi, bạn chọn cách phiên bản sẽ ra mắt sau khi được duyệt: thủ công, ngay lập tức, không sớm hơn một ngày cụ thể, hoặc phát hành theo giai đoạn trong 7 ngày.
Phát hành theo giai đoạn chỉ ảnh hưởng đến cập nhật tự động: 1% số người dùng này vào ngày đầu, toàn bộ vào ngày thứ bảy. Bạn có thể tạm dừng tổng cộng tối đa 30 ngày, hoặc kết thúc ngay một lần. Hướng dẫn này dựa theo các trang trợ giúp của Apple, được đọc lại vào ngày 3/11/2026.
Mình phát hành các bản cập nhật cho app iOS của mình bằng Expo và EAS, trong đó có Solys, TradaZen và Nolera. Các ví dụ bên dưới đến từ chính những lần phát hành đó.
Phát hành bản cập nhật iOS: các bước theo thứ tự
Trang trợ giúp App Store Connect về phiên bản mới đưa ra quy trình sau:
- Trong Apps, chọn app của bạn, rồi bấm nút + bên cạnh nền tảng.
- Nhập số phiên bản cao hơn bản trước, rồi bấm Create.
- Đọc lại metadata: metadata của phiên bản đang chạy được sao chép tự động.
- Gửi một build mới, với số build tăng lên.
- Test build này trong TestFlight, thêm nó vào phiên bản, rồi gửi cho App Review.
Có hai điều kiện trước khi bắt đầu. Phiên bản đang chạy phải ở trạng thái Ready for Distribution. Và bạn cần một trong các vai trò: Account Holder, Admin, App Manager hoặc Marketing.
Không có cách quay lại. Apple ghi rõ trên cùng trang đó: nếu một phiên bản có vấn đề, bạn không thể quay về bản trước. Bạn phải tạo và gửi một phiên bản mới.
Số phiên bản và số build
Phiên bản là con số khách hàng thấy trên trang app của bạn. Build dùng để định danh mỗi lần gửi. Cặp phiên bản và build phải là duy nhất: các quy tắc và lỗi liên quan nằm trong bài phiên bản và số build.
Quy ước của mình, không phải quy tắc của Apple: số cuối tăng khi sửa lỗi, từ 1.4.0 lên 1.4.1. Số ở giữa tăng khi có tính năng mới, từ 1.4.1 lên 1.5.0. Còn số build thì chỉ tăng, từ phiên bản này sang phiên bản khác. Với Expo, phiên bản nằm trong app.json và EAS có thể tự tăng build mỗi lần build production. Cách thiết lập có trong bài phát hành app Expo với EAS.
Nội dung “What's New”: Apple yêu cầu gì
Trang thông tin phiên bản mô tả trường What's New in This Version:
- Tối đa 4.000 ký tự.
- Không có ở phiên bản đầu tiên, bắt buộc ở mọi phiên bản sau.
- Có thể dịch sang từng ngôn ngữ trên trang app của bạn.
Quy tắc 2.3.12 trong App Review Guidelines thêm một yêu cầu: mô tả rõ các tính năng mới và thay đổi của sản phẩm. Với bản chỉ sửa lỗi, bảo mật hoặc hiệu năng, một câu chung chung là đủ. Thay đổi quan trọng thì phải được liệt kê. Vì vậy “Sửa lỗi và cải thiện” là không đủ cho một phiên bản thay đổi gói thuê bao hay màn hình chính của bạn.
Apple cũng khuyên, trên trang về đánh giá, nên nhắc trong ghi chú phát hành những lỗi đã sửa mà khách hàng từng mô tả trong đánh giá.
Dưới đây là ba mẫu để bạn điều chỉnh, mỗi mẫu cho một loại phiên bản.
Cho một bản sửa lỗi:
Sửa lỗi và tăng độ ổn định.
- [Tính năng]: đã sửa [điều không hoạt động].
- [Màn hình] tải nhanh hơn.
Cảm ơn những ai đã báo lỗi.
Cho một tính năng mới:
Mới: [tính năng, trong năm từ].
[Điều bạn có thể làm bây giờ, trong một câu.]
Tìm ở đâu: [tab] > [nút].
Cũng trong phiên bản này:
- [Cải thiện dễ thấy].
- Sửa lỗi.
Cho một luồng sử dụng thay đổi:
[Màn hình hoặc luồng] thay đổi.
- Điều thay đổi với bạn: [tác động cụ thể].
- Điều bạn giữ nguyên: [dữ liệu, cài đặt, giao dịch mua].
Có câu hỏi? [Cài đặt] > [Trợ giúp].
Dòng cuối của mẫu sửa lỗi chỉ dùng khi thật sự có người đã báo lỗi đó. Đừng bao giờ viết một điểm mới không có trong build: quy tắc 2.3 yêu cầu metadata phải đúng với app.
Phát hành thủ công, tự động hoặc theo ngày
Trang trợ giúp về tùy chọn phát hành đưa ra ba lựa chọn:
| Tùy chọn | Sau khi Apple duyệt |
|---|---|
| Thủ công | Trạng thái Pending Developer Release, bạn phát hành khi muốn |
| Tự động | Phiên bản ra mắt ngay khi được duyệt |
| Tự động, không sớm hơn ngày... | Phiên bản chờ đến ngày đã chọn, rồi tự ra mắt |
Khi phát hành thủ công, bạn mở phiên bản đang ở trạng thái Pending Developer Release, bấm Release This Version, rồi xác nhận. Apple lưu ý có thể mất đến 24 giờ để phiên bản xuất hiện trên App Store. Một thông báo trên trang phiên bản có nút Cancel This Release để hủy. Nếu phiên bản chờ quá 30 ngày, Apple sẽ gửi email nhắc bạn.
Phát hành thủ công giúp bạn chọn thời điểm, ví dụ để ra mắt đúng ngày công bố. Solys 2.0.0, có phiên bản mới của gói thuê bao năm, được gửi duyệt vào cuối tháng 9/2026 với chế độ phát hành thủ công.
Với phiên bản thường lệ, mình để phát hành tự động. Nolera 1.0.2, được duyệt ngày 12/10/2026, đã xuất hiện trên App Store chưa đầy một phút sau email của Apple, theo API tìm kiếm công khai của iTunes. Đây chỉ là một lần quan sát: hãy tính dư thời gian.
Phát hành theo giai đoạn trong 7 ngày
Trang trợ giúp của Apple về phát hành theo giai đoạn đưa ra lịch chính xác:
| Ngày | Tỷ lệ người dùng |
|---|---|
| 1 | 1% |
| 2 | 2% |
| 3 | 5% |
| 4 | 10% |
| 5 | 20% |
| 6 | 50% |
| 7 | 100% |
Bản cập nhật được gửi đến một nhóm ngẫu nhiên trong số người dùng đã bật cập nhật tự động, trên các thiết bị tương thích. Họ không được báo là mình nằm trong nhóm đó.
Phát hành theo giai đoạn chỉ làm chậm cập nhật tự động. Apple nói rõ bất kỳ ai cũng có thể tải phiên bản mới từ App Store, vào bất kỳ lúc nào. Một người cài app của bạn, hoặc bấm “Update” trên trang app, có thể nhận nó ngay từ ngày đầu. Đây không phải là bài test trên 1% người dùng: đó là cái phanh cho những người còn lại.
Để bật, mở phiên bản, kéo xuống phần Phased Release for Automatic Updates, tích chọn “Release update over a 7-day period using phased release”, rồi lưu. Bạn cần vai trò Account Holder, Admin hoặc App Manager. Tùy chọn này vẫn khả dụng cho đến trạng thái Pending Developer Release: bạn vẫn có thể bật nó sau khi Apple duyệt, miễn là phiên bản còn chờ bạn phát hành thủ công.
Khi phiên bản được duyệt, trạng thái Ready for Distribution của nó có thêm nhãn “Phased Release”. Khi hết 7 ngày, các Admin và App Manager của app sẽ nhận thông báo.
Tạm dừng, tiếp tục và phát hành cho tất cả
- Tạm dừng: tổng cộng tối đa 30 ngày, chia thành bao nhiêu lần tùy bạn. Một lần dừng 10 ngày thì còn 20 ngày cho các lần sau.
- Tiếp tục: quá trình phát hành chạy tiếp từ ngày bạn đã dừng.
- Phát hành cho tất cả: nút Release to All Users, ở góc trên bên phải của phiên bản, gửi bản cập nhật đến mọi thiết bị bật cập nhật tự động.
- Gỡ khỏi bán: việc này dừng hẳn quá trình phát hành, kể cả khi tư cách thành viên chương trình nhà phát triển của bạn hết hạn. Nếu app được bán lại, phiên bản sẽ có sẵn cho tất cả mọi người cùng lúc.
Sau khi phát hành cho tất cả, không còn gì để điều chỉnh nữa, theo bảng các thuộc tính có thể chỉnh sửa.
Nolera 1.0.2 đã ra mắt mà không dùng phát hành theo giai đoạn. Đây là cách mình sẽ dùng nó trong tuần:
| Điều bạn thấy | Điều bạn làm | Điều xảy ra |
|---|---|---|
| Crash hoặc đánh giá đáng lo | Tạm dừng | Cập nhật tự động dừng lại |
| Bản sửa lỗi đã sẵn sàng | Phiên bản mới | Nó qua duyệt lại, với đợt phát hành riêng |
| Không có gì bất thường sau 3 hoặc 4 ngày | Release to All Users | Mọi người đều nhận được |
| Bạn đang chờ phản hồi của Apple | Tạm dừng, tổng 30 ngày | Tiếp tục từ ngày bạn đã dừng |
Trong lúc tạm dừng, lượt tải thủ công vẫn tiếp tục. Hãy bật phát hành theo giai đoạn cho mọi phiên bản động đến thanh toán hoặc lần mở app đầu tiên: đó là nơi một lỗi gây thiệt hại nhiều nhất, và bạn sẽ không thể quay lại.
Khi bản sửa lỗi gấp: duyệt nhanh
Apple cho phép yêu cầu duyệt nhanh. Nó chỉ dành cho trường hợp thật sự khẩn cấp: một lỗi nghiêm trọng cần sửa, hoặc một lần phát hành gắn với sự kiện.
- Gửi phiên bản của bạn trước. Mô tả lỗi trong trường Notes dành cho người duyệt.
- Điền biểu mẫu yêu cầu duyệt nhanh, rồi chọn app và nền tảng.
- Apple đẩy nhanh việc duyệt tùy khả năng của họ. Không có gì được đảm bảo.
Với một sự kiện, hãy ghi trong phần ghi chú ngày diễn ra và mối liên hệ của bạn với sự kiện đó. Thời gian thông thường có trong bài thời gian duyệt App Store.
Cái gì phải duyệt lại, cái gì không
| Thay đổi | Điều cần làm |
|---|---|
| Code native, quyền truy cập, phiên bản SDK | Build mới, phiên bản mới, duyệt đầy đủ |
| Ảnh chụp màn hình, mô tả, từ khóa, What's New | Một phiên bản mới, được duyệt cùng với nó |
| Văn bản quảng cáo | Không cần gì: thay đổi mà không cần gửi lại |
| Tạm dừng, tiếp tục, phát hành cho tất cả | Không cần gì: đây là cài đặt phát hành |
| Ảnh đầu trang app iOS 27 | Riêng trong Asset Library, hoặc cùng một phiên bản |
| Sửa lỗi JavaScript, với Expo | Có thể dùng cập nhật từ xa |
Văn bản quảng cáo thay đổi được mà không cần gửi lại, theo trang thông tin phiên bản. Với Expo, cập nhật từ xa thay đổi JavaScript, văn bản và hình ảnh mà không qua App Store. Tài liệu của Expo đặt ra hai giới hạn: code native, quyền truy cập và phiên bản SDK đòi hỏi binary mới, và các bản cập nhật phải tuân thủ quy tắc của App Store.
Trường hợp của mình: bản sửa lỗi từ xa mà người duyệt chưa bao giờ thấy
Tháng 9/2026, một build của Nolera đang chờ duyệt. Mình đã sửa một lỗi ở màn hình quét, và phát hành bản sửa này dưới dạng cập nhật từ xa trong lúc chờ. Build vẫn bị từ chối, vì chính lỗi đã được sửa đó.
Lời giải thích nằm trong tài liệu của expo-updates: mặc định, app tải bản cập nhật khi khởi động và áp dụng nó ở lần khởi động tiếp theo. Người duyệt cài app, mở một lần, và test code nằm sẵn trong build. Quy tắc này cũng đúng với người dùng mới của bạn: phiên sử dụng đầu tiên của họ chạy trên code của build.
Từ đó, mọi thay đổi ở màn hình chào, paywall hoặc tính năng chính đều đi vào một build mới. Cập nhật từ xa chỉ dành cho những người đã có app.
Đặt lại điểm đánh giá với một phiên bản
Mỗi phiên bản mới có tùy chọn Reset rating when this version is released. Theo trang trợ giúp của Apple về việc đặt lại, nó áp dụng cho mọi quốc gia, giữ lại các đánh giá viết, và không thể hủy sau khi phát hành. Apple khuyên dùng hạn chế, vì một trang app có ít lượt đánh giá có thể khiến người dùng ngần ngại.
Checklist trước khi gửi bản cập nhật
- Số phiên bản cao hơn, số build đã tăng.
- Build đã được test trong TestFlight, trên một iPhone nhỏ và trên iPad nếu app của bạn chạy trên đó.
- What's New đã được viết bằng từng ngôn ngữ, và các thay đổi quan trọng đã được liệt kê.
- Ảnh chụp màn hình thể hiện giao diện hiện tại nếu giao diện đã thay đổi.
- Ghi chú cho người duyệt nói rõ cái gì đã thay đổi và tìm ở đâu.
- Đã chọn tùy chọn phát hành: thủ công nếu bạn cần đúng một ngày cụ thể.
- Đã bật phát hành theo giai đoạn nếu phiên bản động đến thanh toán hoặc lần mở app đầu tiên.
- Bạn biết một bản sửa lỗi có thể gửi từ xa hay sẽ cần build mới.
Vượt qua vòng duyệt ở mỗi bản cập nhật
Mỗi bản cập nhật đều phải qua lại App Review, và một lần bị từ chối sẽ chặn bản sửa lỗi của bạn. Review Kit gom checklist trước khi gửi của mình, các lần bị từ chối mình đã khắc phục, và hai skill Claude Code đọc lại dự án và trang app của bạn, rồi chuẩn bị câu trả lời nếu Apple từ chối. Toàn bộ quy trình có trên trang phát hành ứng dụng lên App Store.
Nếu bạn đang chuẩn bị lần phát hành đầu tiên, hãy làm bài chẩn đoán miễn phí: nó sắp xếp lại các bước theo thứ tự và gửi bạn checklist chống bị Apple từ chối của mình.
Câu hỏi thường gặp
Phát hành theo giai đoạn trên App Store kéo dài bao lâu?
Bảy ngày: 1% người dùng bật cập nhật tự động vào ngày đầu, sau đó 2, 5, 10, 20 và 50%, và 100% vào ngày thứ bảy. Bạn có thể tạm dừng tổng cộng tối đa 30 ngày, hoặc kết thúc bất cứ lúc nào bằng Release to All Users.
Bản cập nhật app iOS có phải qua lại vòng duyệt của Apple không?
Có. Mỗi phiên bản mới, cùng build và metadata của nó, đều qua App Review. Còn văn bản quảng cáo và cài đặt phát hành thì thay đổi được mà không cần gửi lại.
Có thể quay về phiên bản cũ của app trên App Store không?
Không. Bạn phải tạo một phiên bản mới có bản sửa lỗi và gửi đi duyệt. Đó là lý do phát hành theo giai đoạn và tính năng tạm dừng của nó rất hữu ích.
Người dùng mới có nhận bản cập nhật trong lúc phát hành theo giai đoạn không?
Có, nếu họ tải app từ App Store. Phát hành theo giai đoạn chỉ điều chỉnh cập nhật tự động: bất kỳ ai cũng có thể tải phiên bản mới vào bất kỳ lúc nào.
Có thể bật phát hành theo giai đoạn sau khi Apple duyệt không?
Có, miễn là phiên bản đang ở trạng thái Pending Developer Release, tức là phát hành thủ công và chưa được phát hành. Khi phiên bản đã ra mắt thì đã quá muộn cho phiên bản đó.
Nên viết gì trong ghi chú phát hành của một bản cập nhật?
Các tính năng mới và thay đổi quan trọng, liệt kê rõ ràng: đó là quy tắc 2.3.12. Với bản chỉ sửa lỗi, bảo mật hoặc hiệu năng, một câu chung chung là đủ. Trường này nhận tối đa 4.000 ký tự và có thể dịch sang từng ngôn ngữ.

