Tin ngành
Shopify từ bỏ React Native, quay lại phát triển ứng dụng bằng Swift và Kotlin
(giờ Việt Nam)
Tóm tắt AI
Shopify quyết định chuyển toàn bộ ứng dụng di động về nền tảng gốc (native). Động thái này cho thấy sự thay đổi trong chiến lược khi các tác nhân AI (AI agents) đã giúp giảm đáng kể chi phí và độ phức tạp khi viết code riêng biệt cho từng hệ điều hành.
Bản dịch AI

Chúng tôi đã quyết định đặt cược hoàn toàn vào React Native từ năm 2020, và canh bạc đó đã cực kỳ thành công. Chúng tôi tiết kiệm được rất nhiều thời gian nhờ việc chỉ cần xây dựng các tính năng một lần, tạo điều kiện cho các lập trình viên không có nền tảng di động có thể đóng góp vào ứng dụng của chúng tôi, và giải phóng bản thân khỏi việc phải liên tục chạy đua để đảm bảo tính tương đương giữa các tính năng.
Vào tháng 1 năm 2025, tôi đã viết rằng tương lai của React Native rất tươi sáng và Shopify dự định sẽ tiếp tục đầu tư vào nó. Điều đó hoàn toàn đúng dựa trên những gì chúng tôi biết vào thời điểm đó. React Native đã hoạt động tốt với chúng tôi và nó vẫn là một framework tuyệt vời. Nhưng kể từ đó, các mô hình lập trình đã cải thiện đáng kể, và đối với các ứng dụng cũng như đội ngũ của chúng tôi, việc xây dựng cùng một tính năng bằng Swift và Kotlin không còn tốn kém như trước nữa.
Chúng tôi không cố chấp giữ lấy một quyết định chỉ vì nó từng thành công trong quá khứ. Khi một giả định cốt lõi thay đổi, chúng tôi sẵn sàng nhìn nhận lại và tự hỏi liệu đó có còn là lựa chọn đúng đắn hay không. Các mô hình ngôn ngữ lớn (LLM) đã thay đổi một trong những giả định cốt lõi đằng sau quyết định năm 2020 của chúng tôi, vì vậy chúng tôi đã đánh giá lại toàn bộ hệ thống công nghệ di động của mình từ những nguyên lý cơ bản nhất.
Những gì chúng tôi tìm thấy đã dẫn dắt chúng tôi quay trở lại với native.
Tại sao lại chuyển ngược về native
Chúng tôi đã quyết định chuyển từ native sang React Native vào năm 2020 vì ba lý do:
React Native đã liên tục mang lại những lợi ích này. Chúng tôi nhận thấy mình dành một lượng lớn thời gian và nguồn lực để tối ưu hóa hiệu năng, cải thiện các mảng nền tảng quan trọng trong React Native, và theo kịp các bản cập nhật framework cũng như các thư viện phụ thuộc bên ngoài, nhưng đây là những sự đánh đổi chấp nhận được. Lợi ích của việc sử dụng React Native vượt xa những khoản đầu tư mà chúng tôi phải bỏ ra trong các lĩnh vực này.
Shopify đã sử dụng LLM để xây dựng phần mềm từ năm 2021 (một năm trước khi ChatGPT ra đời!). Ban đầu, chúng tôi dùng chúng để triển khai tính năng, điều tra và sửa lỗi, cũng như rà soát mã nguồn. Khi các mô hình ngày càng cải thiện, độ phức tạp của công việc mà chúng tôi tin tưởng giao cho chúng cũng tăng lên. Đến cuối năm 2025, chúng không còn chỉ giúp chúng tôi viết code nhanh hơn nữa. Chúng có khả năng khiến chúng tôi phải đặt câu hỏi liệu việc xây dựng phần mềm hai lần có còn đồng nghĩa với việc làm gấp đôi công việc hay không.
Chúng tôi quyết định đánh giá lại hệ thống công nghệ di động của mình và bắt đầu tạo các bản mẫu (prototyping) để xem liệu các lựa chọn công nghệ của mình còn phù hợp hay không. Chúng tôi đã xây dựng lại một số phần cốt lõi trong các ứng dụng lớn nhất của mình bằng Swift và Kotlin với sự hỗ trợ của LLM và rất ngạc nhiên về hiệu quả mà nó mang lại. Các tác nhân (Agents):
Native vẫn đồng nghĩa với việc xây dựng và duy trì phần mềm trên hai nền tảng, chi phí đó vẫn chưa biến mất. Điều thay đổi là các tác nhân (agents) hiện nay đã có thể thực hiện đủ các công việc triển khai, chuyển đổi, kiểm thử và rà soát, khiến cho chi phí này không còn là yếu tố quyết định như hồi năm 2020 nữa.
Các ứng dụng React Native có thể đạt tốc độ rất nhanh. Ứng dụng của chúng tôi cũng vậy. Chúng tôi thực hiện thay đổi này vì các tác nhân đã làm giảm đi những lợi thế của việc chia sẻ mã nguồn triển khai, trong khi những lợi thế của việc xây dựng riêng cho từng nền tảng vẫn còn đó. Native giúp chúng tôi tiếp cận gần hơn với các khả năng của nền tảng và các công cụ chính chủ, với ít lớp framework và thư viện phụ thuộc hơn giữa mã nguồn của chúng tôi và nền tảng.
Tương lai của các thư viện mã nguồn mở React Native của chúng tôi
Trước khi đi sâu vào cách chúng tôi thực hiện chuyển đổi, chúng tôi muốn đảm bảo rằng quá trình này diễn ra một cách sạch sẽ. Ngay từ đầu, chúng tôi đã muốn đóng góp ngược lại cho React Native để làm cho nó tốt hơn. Chúng tôi đã xuất bản các thư viện mã nguồn mở trở thành lựa chọn hàng đầu trong các danh mục tương ứng. Chúng tôi rất biết ơn sự đón nhận nồng nhiệt từ cộng đồng và cam kết đảm bảo đây là một quá trình chuyển đổi suôn sẻ, không có bất ngờ nào xảy ra.
React Native Skia
Shopify sẽ tiếp tục tài trợ cho dự án này đến hết năm 2026, và William Candillon sẽ tiếp tục làm việc với nó sau thời điểm đó. Anh ấy sẽ fork (tách) repo trong những tháng tới và bắt đầu xuất bản thư viện dưới một cái tên mới. Repo gốc sẽ được lưu trữ (archive) khi quá trình chuyển đổi này hoàn tất. Chúng tôi sẽ đăng tải các cập nhật trong suốt quá trình để mọi người có đủ thời gian di chuyển. Nếu ứng dụng của bạn dựa vào thư viện này, vui lòng cân nhắc tài trợ cho nó.
FlashList
Thư viện này đạt khoảng 2 triệu lượt tải xuống mỗi tuần và đã trở thành cách mặc định để hiển thị các danh sách hiệu năng cao trong React Native. Với tầm quan trọng của nó đối với hệ sinh thái, Shopify sẽ tiếp tục sửa các lỗi nghiêm trọng gây ảnh hưởng đến tính tương thích. Chúng tôi hiện đang thảo luận với một số công ty về việc tiếp quản lâu dài FlashList. Nếu bạn quan tâm, hãy liên hệ với tôi tại đây.
Restyle
Restyle có lượng người dùng nhỏ hơn so với các thư viện khác của chúng tôi, vì vậy chúng tôi sẽ lưu trữ (archive) repo này. Chúng tôi sẽ duy trì nó hoạt động đến hết năm 2026, sau đó sẽ ngừng hỗ trợ. Bất kỳ ai cũng có thể fork và tiếp tục phát triển nó, và chúng tôi sẽ hỗ trợ bàn giao nếu có đội ngũ nào muốn tiếp quản.
Cách chúng tôi thực hiện chuyển đổi
Shopify có một số ứng dụng lớn (Shopify, Shop, Point of Sale, Inbox). Hàng triệu người bán và người mua trên khắp thế giới dựa vào chúng mỗi ngày để kiếm sống và mua những sản phẩm họ muốn từ các thương hiệu họ yêu thích.
Chúng tôi đã tranh luận giữa việc chuyển đổi dần dần sang native (brownfield) so với việc xây dựng lại từ đầu (greenfield). Trong quá khứ, khi chuyển sang React Native, chúng tôi đã chọn cách tiếp cận brownfield cho một số ứng dụng lớn nhất, vì sẽ mất nhiều năm để viết lại và chúng tôi sẽ phải ngừng phát hành các tính năng mới trong khi quá trình viết lại đang diễn ra.
Tuy nhiên, lần này greenfield đã trở thành người chiến thắng rõ ràng vì những lý do sau:
Ứng dụng Shop, vốn thường xuyên đứng đầu danh sách trong danh mục mua sắm trên các kho ứng dụng, là ứng dụng đầu tiên được chuyển đổi. Với sự hỗ trợ của AI, đội ngũ đã có thể đi từ bản chứng minh khái niệm (proof of concept) đến một ứng dụng native được xây dựng hoàn chỉnh và xuất bản lên các kho ứng dụng chỉ trong 12 tuần. Chúng tôi đã viết chi tiết về quá trình chuyển đổi này tại đây.
Việc chuyển đổi ứng dụng Shopify (ứng dụng lớn nhất của chúng tôi với hơn 300 màn hình, widget màn hình chính & màn hình khóa, ứng dụng Apple Watch, các complication, Siri Shortcuts, v.v.) cũng đang được tiến hành và sẽ ra mắt vào cuối năm nay. Các ứng dụng còn lại của chúng tôi cũng sẽ sớm được chuyển đổi.
Ngăn chặn sự cẩu thả (slop)
Rất dễ nảy sinh ý định chỉ cần đưa LLM vào codebase React Native và cố gắng tạo ra các tính năng tương tự trên native trong một lần, nhưng cách đó không hiệu quả. Ngay cả khi bạn yêu cầu nó thu thập càng nhiều thông tin càng tốt ngay từ đầu, đóng băng chúng thành các đặc tả, tệp tác vụ, và sau đó triển khai, bạn vẫn sẽ nhận lại một lượng lớn mã nguồn không thể bảo trì và không thể phát hành được.
Để giải quyết vấn đề này, chúng tôi đã xây dựng một hệ thống có tên là Helix, áp dụng cách tiếp cận dần dần hơn. Nó không kỳ vọng kết quả đầu ra đầu tiên phải đúng ngay lập tức, mà xây dựng một vòng lặp nơi một nỗ lực chưa hoàn hảo sẽ không thể tiến xa cho đến khi nó trở thành một kết quả tốt.
Lập trình viên hướng Helix vào một màn hình. Helix đọc mã nguồn React Native và đề xuất một chuỗi các điểm kiểm tra (các lát cắt công việc nhỏ, có thứ tự) có thể được rà soát trong vài phút. Sau đó, từng điểm kiểm tra một, nó sẽ xây dựng: mỗi điểm phải chứng minh hành vi của mình bằng các bài kiểm tra, khớp với ứng dụng đang chạy trong quá trình rà soát trực quan, vượt qua hai người rà soát mã nguồn đối nghịch, và nhận được sự đồng ý của con người trước khi được commit và bắt đầu phần tiếp theo. Phản hồi từ mỗi lần rà soát đều được ghi nhớ, vì vậy vòng lặp trở nên tự chủ hơn khi quá trình chuyển đổi tiến triển.
Helix đang xây dựng lại một màn hình trong ứng dụng di động Shopify bằng Swift và Kotlin.
Cách tiếp cận này đang hoạt động cực kỳ hiệu quả và cho phép chúng tôi xây dựng lại các ứng dụng của mình trong thời gian ngắn hơn rất nhiều.
Kích hoạt các vòng lặp phản hồi nhanh
Việc kiểm soát các trình mô phỏng (simulators) bằng tác nhân (agentic control) đã trở thành một nút thắt cổ chai. Chúng tôi nhận thấy mình phải liên tục giám sát chúng vì chúng không thể xây dựng, kiểm thử và lặp lại một cách đáng tin cậy. Chúng tôi đã xây dựng các công cụ để cho phép các tác nhân tái tạo lỗi, sửa lỗi và xác minh bản sửa lỗi một cách tự chủ, nhưng nó chậm và dễ hỏng. Tính năng hot module reload của React Native giúp ích cho tình hình nhưng không giải quyết được vấn đề, do việc điều khiển trình mô phỏng quá chậm. Điều này chủ yếu là do sự phụ thuộc vào cây truy cập (accessibility tree) hoặc ảnh chụp màn hình để lấy trạng thái ứng dụng, thực hiện hành động và xác minh kết quả. Các tác nhân có thể thay đổi mã nguồn trong vài giây, nhưng mất vài phút để kiểm thử kết quả đầu ra. Điều này khiến việc lặp lại trở nên cực kỳ chậm chạp và thủ công. Mô hình có tốt đến đâu cũng vô nghĩa nếu nó không thể kiểm thử công việc của mình một cách nhanh chóng, điều đặc biệt khó khăn trên thiết bị di động.
Chúng tôi đang khắc phục điều này bằng cách thiết kế kiến trúc ứng dụng sao cho hoạt động được cho cả con người và tác nhân. Nguyên tắc cốt lõi ở đây là logic nghiệp vụ phải được tách biệt hoàn toàn khỏi giao diện người dùng (UI) và có thể chạy không cần giao diện (headless) trên máy tính. Sau đó, chúng tôi cung cấp nó cho các tác nhân thông qua một CLI cho phép chúng lặp lại công việc trong vài mili giây thay vì vài phút mà không cần liên quan đến trình mô phỏng.
Điều hướng ứng dụng và thực hiện các hành động bằng CLI
CLI cho phép các tác nhân kiểm tra trạng thái ứng dụng, điều hướng giữa các phần khác nhau và thực hiện các hành động mà không cần chạm vào giao diện người dùng. Điều này cho phép các vòng lặp phản hồi cực nhanh và cho phép các tác nhân làm việc tự chủ trong nhiều giờ liền.
Khi cần tương tác với trình mô phỏng, CLI có thể kết nối với chúng thông qua chế độ từ xa và điều khiển giao diện người dùng thông qua các lệnh mà không cần phải kiểm tra bố cục hoặc cây truy cập. Điều này mang lại hiệu năng cực nhanh và các bài kiểm tra E2E (End-to-End).
Đây là thời gian thực (không phải tua nhanh)
Điều gì tiếp theo

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.