Chrome, Firefox, Edge trên iPhone đều chạy engine WebKit của Apple, không phải engine riêng. Vì sao — và cách kiểm tra nhân phát hiện điều đó.
Mở "Chrome" trên iPhone, thực ra bạn không hề chạy engine Blink của Chrome — bạn đang chạy WebKit của Apple khoác lên lớp giao diện của Chrome. "Firefox", "Edge" và gần như mọi ứng dụng trình duyệt khác trên iOS cũng vậy. Quy tắc App Store của Apple từ lâu đã yêu cầu như thế, và đó là lý do biểu tượng trình duyệt trên màn hình chính hầu như không nói lên được điều gì về cách trang web bên dưới thực sự được kết xuất. Dưới đây là lý do đằng sau chuyện đó, ý nghĩa thực tế của nó, và cách bạn tự kiểm chứng.
Tóm tắt nhanh
- Trên iOS, quy tắc App Store của Apple từ trước đến nay đã yêu cầu mọi ứng dụng trình duyệt — kể cả Chrome, Firefox và Edge — phải kết xuất bằng engine WebKit của Apple thay vì engine Blink hay Gecko riêng của trình duyệt đó.
- Các ứng dụng đó vẫn gửi một chuỗi user-agent ghi "CriOS" (Chrome) hay "FxiOS" (Firefox), nhưng việc kết xuất bên dưới là WebKit — cùng engine với Safari.
- Kể từ iOS 17.4 (2024), Đạo luật Thị trường Kỹ thuật số (DMA) của EU buộc Apple phải cho phép các engine thay thế tại đó, nên quy tắc chỉ-dùng-WebKit đang bắt đầu rạn nứt — nhưng chỉ ở EU, và chỉ diễn ra dần dần.
- Đây chính xác là lý do vì sao kiểm tra nhân trình duyệt của BrowserInsight báo cáo "WebKit" cho một trình duyệt iPhone tự nhận là Chrome trong user-agent của nó — một ví dụ cụ thể, có thể kiểm chứng, về khoảng cách giữa tên gọi của một trình duyệt và engine thật của nó.
- Vì việc kết xuất đồng nhất trên mọi trình duyệt iOS, phần lớn khác biệt về quyền riêng tư và tương thích giữa các trình duyệt trên iPhone đến từ các tính năng ở cấp ứng dụng, chứ không phải từ engine nền tảng.
Quy tắc: một engine duy nhất cho mọi trình duyệt iOS
Hướng dẫn Đánh giá App Store của Apple từ lâu đã yêu cầu mọi ứng dụng duyệt web trên iOS phải dùng engine WebKit của chính Apple (thông qua thành phần hệ thống WKWebView) thay vì mang theo engine kết xuất riêng của mình. Chính quy tắc duy nhất này là lý do "Chrome cho iOS", "Firefox cho iOS" và "Edge cho iOS" đều kết xuất trang bằng cùng phần mã nền tảng với Safari, dù các phiên bản desktop và Android tương ứng của chúng chạy những engine hoàn toàn khác nhau — Blink cho Chrome và Edge, Gecko cho Firefox.
Các ứng dụng này không hẳn là nói dối về danh tính của mình. Chrome cho iOS thực sự là một ứng dụng do Google xây dựng, với giao diện, đồng bộ hóa và tiện ích mở rộng của Google phủ lên trên — chỉ là nó không chạy engine Blink của chính Google để vẽ trang. Xem Giải thích engine trình duyệt để biết Blink, Gecko và WebKit khác nhau ra sao và vì sao sự phân biệt đó lại quan trọng.
Vì sao Apple yêu cầu điều này
Lý do Apple đưa ra là bảo mật và tính nhất quán: một engine kết xuất duy nhất, do Apple duy trì, nghĩa là mọi trình duyệt iOS đều thừa hưởng cơ chế sandbox, các nỗ lực an toàn bộ nhớ và nhịp độ vá lỗi của WebKit, thay vì mỗi nhà cung cấp phải tự phát hành và vá engine JavaScript riêng trên nền tảng của Apple. Những người chỉ trích cho rằng chính sách này cũng đóng vai trò như một hào bảo vệ cạnh tranh — nó ngăn các đặc tính hiệu năng riêng của Blink hay Gecko và các tính năng nền tảng web của chúng chạm tới người dùng iOS, bất kể họ chọn ứng dụng nào, đồng thời biến chính những giới hạn của engine Safari thành cái trần trên thực tế cho toàn bộ nền tảng.
Dù lý do là gì, tác động thực tế suốt hơn một thập kỷ qua vẫn là triệt để: đổi sang một ứng dụng trình duyệt khác trên iPhone chỉ đổi thanh công cụ và tài khoản đồng bộ, chứ không đổi engine kết xuất bên dưới. Đây cũng là một trong những lý do vân tay trình duyệt trên di động khác biệt nhiều so với desktop — xem Vân tay trình duyệt di động để biết quy tắc một-engine-duy-nhất của iOS đã triệt tiêu một tín hiệu ra sao, trong khi các tín hiệu đặc thù của điện thoại như thông số màn hình và cảm biến lại bù vào khoảng trống đó.
Khe hở tại EU: iOS 17.4 và Đạo luật Thị trường Kỹ thuật số
Điều đó đã thay đổi, một phần, vào năm 2024. Đạo luật Thị trường Kỹ thuật số (DMA) của EU đã chỉ định Apple là "gatekeeper" (người gác cổng) và buộc hãng phải mở iOS cho các engine trình duyệt thay thế đối với người dùng tại Liên minh châu Âu, bắt đầu từ iOS 17.4. Apple đã giới thiệu một framework mới có tên BrowserEngineKit để, chỉ riêng tại EU, một nhà cung cấp trình duyệt về nguyên tắc có thể mang theo engine riêng của mình thay vì bị định tuyến qua WebKit.
Trên thực tế, sự chuyển dịch này diễn ra chậm. Đội ngũ chính sách toàn cầu và cạnh tranh của Mozilla đã viết vào tháng 7/2025 rằng, hơn một năm sau khi các nghĩa vụ của DMA có hiệu lực, mọi trình duyệt iOS vẫn buộc phải được xây dựng trên engine WebKit của Apple — trong khi cũng chính giai đoạn đó, lượng người dùng iOS hoạt động hằng ngày của Mozilla tại EU tăng gấp đôi. Đặt cạnh nhau, hai dữ kiện này gói gọn toàn bộ câu chuyện: DMA đã thay đổi được việc người dùng EU chọn trình duyệt nào, nhưng chưa thay đổi được thứ đang kết xuất bên trong trình duyệt đó. So với việc thêm một màn hình lựa chọn, phát hành rồi duy trì lâu dài một engine thứ hai trên nền tảng mới là cam kết kỹ thuật lớn hơn nhiều, và các nhà cung cấp vẫn đang từng bước thực hiện. Vì vậy, tính đến thời điểm hiện tại, chỉ-dùng-WebKit vẫn là thực tế phổ biến ở hầu như mọi nơi trên iOS, kể cả tại EU đối với phần lớn trình duyệt, và hoàn toàn đúng như vậy bên ngoài EU. Hãy xem "các engine thay thế trên iOS" là một ngoại lệ mang tính khu vực, đang mở ra dần dần, chứ không phải điều đã thay thế hoàn toàn quy tắc cũ.
Cách kiểm tra trình duyệt iPhone của bạn thực sự dùng engine nào
Chuỗi user-agent không phải là nơi để tìm câu trả lời — đó chỉ là một nhãn văn bản do ứng dụng tự đặt: mọi trình duyệt đều khai báo trung thực nó là ứng dụng nào (CriOS/ cho Chrome, FxiOS/ cho Firefox, EdgiOS/ cho Edge), nhưng lại không hé lộ điều gì đúng về engine kết xuất. Muốn xác định engine thật, phải dò các hành vi và API vốn khác nhau giữa Blink, Gecko và WebKit — những khác biệt nhỏ trong mức hỗ trợ tính năng, cách xử lý CSS và các dấu vết mà engine JavaScript để lộ, tất cả đều khó giả mạo hơn một chuỗi văn bản rất nhiều.
Đó chính xác là những gì kiểm tra nhân trình duyệt của BrowserInsight thực hiện. Chạy nó trong "Chrome" trên iPhone và nó sẽ báo cáo WebKit, không phải Blink — vì đó mới là thứ thực sự đang vẽ trang, bất kể biểu tượng ứng dụng nói gì. Chạy cùng bài kiểm tra đó trong Chrome trên desktop và nó sẽ báo cáo đúng là Blink. Sự khác biệt giữa hai kết quả đó không phải lỗi của công cụ; đó chính là mục đích của nó — một minh chứng sống động, có thể kiểm chứng, rằng tên gọi của một trình duyệt và engine kết xuất của nó có thể là hai thứ hoàn toàn khác nhau.
Câu hỏi thường gặp
Chrome trên iPhone có thực sự chỉ là Safari không?
Không hẳn — đó là ứng dụng của Google, với giao diện, đồng bộ tài khoản và tiện ích mở rộng của Google, nhưng nó kết xuất trang bằng engine WebKit của Apple thay vì engine Blink riêng của Chrome. Vậy nên nó không phải Safari, nhưng nó chia sẻ cùng nhân kết xuất với Safari.
Điều này có nghĩa là mọi trình duyệt iOS hoạt động và hành xử giống hệt nhau không?
Gần như đúng vậy, ở tầng kết xuất — vì tất cả đều dùng WebKit, nên bố cục trang, hỗ trợ CSS và việc thực thi JavaScript cốt lõi về cơ bản là giống nhau. Khác biệt giữa các trình duyệt iOS đến từ các tính năng ở cấp ứng dụng: đồng bộ hóa, tiện ích mở rộng, thiết lập chống theo dõi và giao diện, chứ không phải từ engine.
Quy tắc chỉ-dùng-WebKit của Apple đã thực sự thay đổi chưa?
Chỉ thay đổi một phần, và chỉ tại Liên minh châu Âu. Kể từ iOS 17.4, theo Đạo luật Thị trường Kỹ thuật số, một nhà cung cấp về nguyên tắc có thể đưa engine không phải WebKit tới người dùng tại EU thông qua framework BrowserEngineKit của Apple, nhưng tính đến thời điểm bài viết này, quá trình chuyển đổi diễn ra chậm và phần lớn trình duyệt — cả trong lẫn ngoài EU — vẫn chạy trên WebKit.
Vì sao công cụ kiểm tra nhân của BrowserInsight báo "WebKit" dù tôi đang dùng Chrome?
Vì công cụ kiểm tra phát hiện engine kết xuất thực sự đang xử lý trang, chứ không phải cái tên trong chuỗi user-agent. Trên iOS, engine đó là WebKit đối với mọi ứng dụng trình duyệt, kể cả Chrome — chính xác là khoảng cách mà bài viết này giải thích.
Kết luận
Biểu tượng trình duyệt bạn chạm vào trên iPhone cho bạn biết bạn đang dùng ứng dụng và giao diện nào — nó không cho bạn biết engine nào đang kết xuất trang. Trong hơn một thập kỷ, engine đó luôn là WebKit, không có ngoại lệ, và Đạo luật Thị trường Kỹ thuật số của EU mới chỉ bắt đầu làm rạn nứt quy tắc đó, một cách chậm rãi và mang tính khu vực. Nếu bạn muốn tự mình nhìn thấy khoảng cách này, hãy chạy kiểm tra nhân trình duyệt của BrowserInsight trên iPhone bằng bất kỳ trình duyệt nào bạn thường dùng, rồi so sánh với cùng bài kiểm tra đó trên một trình duyệt desktop — sự khác biệt đó là bằng chứng rõ ràng nhất rằng tên gọi của một trình duyệt và engine của nó không phải là một.


