Loại bỏ React Native

Hoàng Vĩnh

Do một loạt các vấn đề kỹ thuật và tổ chức, chúng tôi sẽ loại bỏ React Native và đặt tất cả nỗ lực vào việc tạo ra ứng dụng native trở nên tuyệt vời hơn.

Mặc dù nhiều nhóm dựa vào React Native và đã lên kế hoạch sử dụng nó trong tương lai gần, nhưng cuối cùng chúng tôi không thể đáp ứng các mục tiêu ban đầu của chúng tôi. Ngoài ra, có một số thách thức về kỹ thuật và tổ chức mà chúng tôi không thể vượt qua để có thể tiếp tục đầu tư vào React Native.

Kết quả là, hướng về tương lai, chúng tôi sẽ loại bỏ React Native tại Airbnb và tái đầu tư tất cả những nỗ lực của chúng tôi trở lại native.

Thất bại trong việc đạt mục tiêu

Phát triển nhanh hơn

Khi React Native làm việc như dự định, các kỹ sư có thể di chuyển với tốc độ vô song. Tuy nhiên, rất nhiều vấn đề kỹ thuật và tổ chức mà chúng tôi phác thảo trong loạt bài này đã làm tăng thêm sự thất vọng và sự chậm trễ bất ngờ đối với nhiều dự án.

Duy trì khung chất lượng

Gần đây, khi React Native trưởng thành và tích lũy được nhiều kiến thức chuyên môn hơn, chúng tôi đã có thể thực hiện một số điều mà trước đó không chắc là có thể. Chúng tôi đã tạo các chuyển đổi phần tử chia sẻ, thị sai và có thể cải thiện đáng kể hiệu suất của một số màn hình thường sử dụng để giảm khung hình. Tuy nhiên, một số thách thức kỹ thuật như khởi tạo và render không đồng bộ đã đáp ứng các mục tiêu nhất định mang tính thử thách. Việc thiếu các nguồn lực trong và ngoài khiến điều này càng trở nên khó khăn hơn.

Viết mã một lần thay vì hai lần

Mặc dù mã trong các tính năng React Native hầu như được chia sẻ hoàn toàn trên các nền tảng nhưng chỉ một phần nhỏ ứng dụng của chúng tôi là React Native. Ngoài ra, một lượng lớn cơ sở hạ tầng cầu nối được yêu cầu để cho phép các kỹ sư sản phẩm hoạt động hiệu quả. Kết quả là, chúng tôi sẽ hỗ trợ mã trên ba nền tảng thay vì hai. Chúng tôi nhận thấy tiềm năng chia sẻ mã giữa thiết bị di động và web và có thể chia sẻ một vài gói npm ngoại trừ điều đó ra thì nó chưa bao giờ được cụ thể hóa đúng cách.

Cải thiện trải nghiệm nhà phát triển

Trải nghiệm của nhà phát triển với React Native như một túi hỗn hợp. Một mặt, chẳng hạn như thời gian xây dựng, mọi thứ đã tốt hơn đáng kể. Tuy nhiên, , mặt khác, mọi thứ trở nên tồi tệ hơn nhiều. Các chi tiết được liệt kê trong phần 2 của loạt bài này.

Kể hoạch hủy bỏ

Do không thể đạt được các mục tiêu cụ thể của mình, chúng tôi đã quyết định rằng React Native không phù hợp với chúng tôi nữa. Chúng tôi hiện đang trong quá trình làm việc với các nhóm để tạo ra một kế hoạch chuyển tiếp lành mạnh. Chúng tôi đã tạm dừng tất cả các tính năng mới của React Native và có kế hoạch chuyển đổi phần lớn màn hình được quản lý cao nhất thành native vào cuối năm nay. Điều này được hỗ trợ bởi một số tái thiết kế trong lịch trình. Nhóm cơ sở hạ tầng gốc của chúng tôi sẽ hỗ trợ React Native cho đến năm 2018. Vào năm 2019, chúng tôi sẽ bắt đầu giảm hỗ trợ và giảm một số chi phí của React Native như khởi tạo thời gian chạy khi khởi chạy.

Tại Airbnb, chúng tôi tin vào mã nguồn mở. Chúng tôi tích cực sử dụng và đóng góp cho nhiều dự án nguồn mở trên toàn thế giới và cũng như mở nguồn cho một số công việc React Native. Vì đã rời khỏi React Native, chúng tôi đã không thể duy trì repos Native React cũng như những gì mà cộng đồng xứng đáng. Để làm những gì tốt nhất cho đoàn thể, chúng tôi sẽ di chuyển một số nguồn mở React Native của chúng tôi sang react-native-community mà trước đó đã được bắt đầu với react-native-maps và sẽ làm với native-navigation và lottie-react-native.

Không phải mọi chuyện đều xấu

Mặc dù chúng tôi không thể đạt được mục tiêu của mình với React Native, nhưng các kỹ sư sử dụng React Native nói chung có trải nghiệm tích cực. Trong số các kỹ sư này:

  • 60% sẽ mô tả trải nghiệm của họ thật tuyệt vời.
  • 20% là khá tích cực.
  • 15% khá tiêu cực.
  • 5% cực kỳ tiêu tực.

63% các kỹ sư đã chọn React Native một lần khi được chọn và 74% sẽ xem xét React Native cho một dự án mới. Cần lưu ý rằng có thiên vị lựa chọn trong các kết quả này khi chỉ khảo sát những người đã chọn sử dụng React Native.

Các kỹ sư này đã viết 80.000 dòng mã trên 220 màn hình cũng như 40.000 dòng cơ sở hạ tầng với javascript. Để tham khảo, chúng tôi có khoảng 10x số lượng mã và 4x số màn hình trên mỗi nền tảng gốc.

React Native đang trưởng thành

Loạt bài đăng này phản ánh trải nghiệm của chúng tôi với React Native hiện tại. Tuy nhiên, Facebook và cộng đồng rộng của React Native đang phát triển React Native cho các ứng dụng lai trên quy mô lớn. React Native đang tiến triển nhanh hơn bao giờ hết. Đã có hơn 2500 commit trong năm qua và Facebook vừa thông báo rằng họ đang giải quyết một số thách thức kỹ thuật mà chúng tôi phải đối mặt trực tiếp. Ngay cả khi chúng tôi sẽ không còn đầu tư vào React Native nữa, chúng tôi rất vui được tiếp tục theo dõi những phát triển này vì chiến thắng kỹ thuật trong React nghĩa là cũng thắng cho mọi người trên khắp thế giới sử dụng sản phẩm của chúng tôi.

Những điểm cần ghi nhớ

Chúng tôi đã tích hợp React Native vào các ứng dụng lớn hiện có và tiếp tục phát triển với tốc độ rất nhanh. Nhiều khó khăn gặp phải là do cách tiếp cận mô hình lai mà chúng tôi đã thực hiện. Tuy nhiên, quy mô của chúng tôi cho phép tiếp tục và giải quyết một số vấn đề khó khăn mà các công ty nhỏ hơn có thể không có thời gian để giải quyết. Khiến React Native làm việc liền mạch với native là có thể nhưng sẽ đầy thử thách. Mỗi công ty sử dụng React Native sẽ có trải nghiệm gồm chức năng đặc biệt của thành phần nhóm, ứng dụng hiện có, yêu cầu sản phẩm và độ trưởng thành của React Native.

Khi xong xuôi, như đã làm với nhiều tính năng, tốc độ lặp lại, chất lượng, và kinh nghiệm phát triển phù hợp hoặc thậm vượt qua tất cả các mục tiêu và kỳ vọng của chúng tôi. Đôi khi, cảm giác như chúng tôi đang ở bờ vực của việc thay đổi diện mạo cho phát triển di động. Mặc dù những trải nghiệm này rất đáng khích lệ, khi cân bằng những điểm tích cực và các điểm tiêu cực với nhu cầu và nguồn lực hiện tại của tổ chức Kỹ thuật, chúng tôi quyết định rằng điều đó không phù hợp với chúng tôi nữa.

Việc quyết định có sử dụng nền tảng mới hay không là quyết định chính và phụ thuộc hoàn toàn vào các yếu tố duy nhất cho nhóm của bạn. Kinh nghiệm của chúng tôi và lý do để chuyển đổi có thể không áp dụng cho nhóm của bạn. Thực tế, nhiều công ty vẫn còn tiếp tục sử dụng nó cho đến ngày hôm nay và vẫn có thể là lựa chọn tốt nhất cho nhiều người khác.

Mặc dù chúng tôi chưa bao giờ ngừng đầu tư vào native, việc loại trừ React Native đã giải phóng nhiều tài nguyên hơn giúp native tốt hơn bao giờ hết. Hãy tiếp tục theo dõi phần tiếp theo của loạt bài này để tìm hiểu những điều mới lạ về native mà chúng tôi đã trải nghiệm.

Tác giả: Gabriel Peal | Nguồn: medium.com