写点什么

Shopify 将应用迁移到 React Native,跨平台代码达到 86%,旧代码减少 180 万行

  • 2024-11-15
    北京
  • 本文字数:1082 字

    阅读完需:约 4 分钟

大小:485.20K时长:02:45
Shopify将应用迁移到React Native,跨平台代码达到86%,旧代码减少180万行

我们刚刚完成了将 Shopify 移动应用迁移到 React Native 的工作。这是我们最大的一个应用,开发至今已经超过十年的时间。以下是迁移过程。

 

我们增加了 68.3 万行新代码,同时删除了 250 万行旧代码,净减少 180 万行。我们将 586 个页面迁移到 React Native,并移除了 232 个过时的页面。

 

现在我们在 iOS 和 Android 平台之间共享的代码达到了 86%,而之前只有 5%。现在,在不同平台之间保持功能一致性不再是问题。

 

性能优化是我们关注的一个重要方面。我们将屏幕加载时间缩短了 59%,应用启动速度提升了 44%,网页视图速度也加快了 63%。

 


https://twitter.com/i/status/1695098627683721341

 

我们减少了每个应用版本约 50 万次的崩溃,显著提升了应用的稳定性,实现了超过 99.9%的无崩溃用户会话。

 

我们的用户也注意到了这些改进。我们的 28 天平均应用商店评分在 iOS 上从 4.4 提高到了 4.8,在 Android 上从 4.1 提高到了 4.4。

 

苹果和谷歌也注意到了这些改进。在迁移过程中,我们的应用被特别推荐了 5 次。

 


https://x.com/mustafa01ali/status/1801721357111279991/video/1

 

我们致力于开源贡献,希望回馈社区。我们开发并开源了 Flashlist,它现已成为使用 React Native 构建高性能清单功能的标准方式。

 


https://twitter.com/i/status/1542542577953644544

 

我们与 @wcandillon 合作,促成了 React Native Skia 的诞生。这一创新将 Skia 图形库引入 React Native,使得实现高质量的 2D 图形绘制和动画成为可能。

 


我们为 @swmansion 在 Reanimated 项目上的工作提供赞助,这个项目让 React Native 能够提供高质量的动画效果。

 


https://twitter.com/i/status/1630590156255240193

 

我们开发并开源了 Tophat,用于实现构建的应用一键安装。

 


https://twitter.com/i/status/1825920486666084360

 

我们从迁移中学到的东西:

 

  1. 原生代码和原生开发至关重要。任何东西都无法替代通过构建高质量移动应用所积累的经验和独到的品味。

  2. 将 100%使用 React Native 作为目标是不明智的。在任何情况下,只要原生是最适合实现功能的地方(小部件、Siri、手表应用等),或者在有高性能要求的地方,都应该使用原生。

  3. 获得良好的性能需要不断的努力,并且应该从一开始就将其作为一个优先事项。全面测量性能指标,并毫不留情地对每一层进行优化。引入自动化监控来捕捉性能回退。

 

总的来说,React Native 为 Shopify 带来了生产力的飞跃,同时使我们能够在适当的情况下继续使用原生技术的优势。我们对 React Native 的未来发展充满期待,并将继续与 Meta 和社区合作,让它变得更好。

 

【声明:本文由 InfoQ 翻译,未经许可禁止转载。】

 

原文链接:https://threadreaderapp.com/thread/1853619638141071573.html

2024-11-15 08:009331

评论 1 条评论

发布
用户头像
近日(2018年06月20日),Airbnb(爱彼迎) 技术团队在 Medium 上宣布,放弃使用 React Native,将回归到使用基于原生技术的自有框架开发 App。

https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a
2024-11-15 11:43 · 北京
回复
没有更多了
发现更多内容

MySQL 安装配置

芯动大师

MySQL shell脚本 三周年连更

23年最新Java岗常见面试题及答案(1000道),90% 的公司都会问到

Java你猿哥

Java MySQL zookeeper JVM java面试

知乎文章被百度收录有何意义?如何让知乎文章被百度收录?

石头IT视角

一文讲明白路由器的基本概念、工作原理、主要部件以及应用场景

wljslmz

路由器 三周年连更

Django笔记二十六之数据库函数之数学公式函数

Hunter熊

Python 数据库 django 公式函数

利用 Amazon API Gateway 和 Amazon Lambda 处理 Cloudfront 的内容请求

亚马逊云科技 (Amazon Web Services)

Kubernetes CNI之Flannel网络模型分析

王玉川

Kubernetes 云原生 flannel VXLAN cni

使用Spring Boot接入ChatGPT

Java你猿哥

Java spring Spring Boot ssm ChatGPT

ES数据没了?谁动了我的数据?

极限实验室

elasticsearch 数据误删 数据丢失

BitKeep逆势崛起:千万用户的信任,终点还未到来

鳄鱼视界

Go语言中如何通过接口来实现单一职责原则

Jack

如何优化Golang中重复的错误处理

乌龟哥哥

三周年连更

【RabbitMQ】| 带你 (超详细) 从0到1使用SpringBoot操作RabbitMQ

Java你猿哥

Java spring Spring Boot ssm RabbitMQ

Java补充之MySQL入门必备知识

timerring

Java

创意世界在 Photoshop 上运行~

真大的脸盆

Mac ps Mac 软件 Photoshop 2022下载

PoseiSwap:合规、隐私与支持更广泛的资产

BlockChain先知

失业浪潮之下,不如一蓑烟雨任平生 | 社区征文

宇宙之一粟

深入探秘OpenTelemetry Agent奇特的muzzle机制

骑牛上青山

Java Java Agent OpenTelemetry

一篇文章教你在业务开发中高效玩转TDD(测试驱动开发)

Java你猿哥

Java ssm TDD

Github标星90K!不愧是阿里大牛珍藏的LeetCode题解全彩小册

Java你猿哥

面试 算法 LeetCode ssm 算法题

2023最新后端中大厂面经&在面试过程中如何反问?

Java你猿哥

Java ssm java面试 面试官 Java面经

涅槃重生,BitKeep如何闯出千万用户新起点

股市老人

2023-05-12:存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号, 给你一个数组 graph 表示这个图, 其中,graph[i] 是一个列表,由所有与节点 i

福大大架构师每日一题

Go 算法 rust

文心一言 VS chatgpt (16)-- 算法导论4.1 1~2题

福大大架构师每日一题

ChatGPT 文心一言

C++编译器和链接器的完全指南

小万哥

c++ 程序员 面试 后端 开发

从 ChatGPT 大热看未来的云计算的发展趋势 | 社区征文

宇宙之一粟

ChatGPT 三周年征文

比起失业我更害怕自己“一无是处”|社区征文

轻口味

个人成长 移动端 三周年征文

奇葩的 Git 签名错误

HoneyMoose

系列课程:从零开始接触人工智能大模型(介绍)

茶桁

必知必会的JavaScript前端面试题篇(二),不看后悔!

沉浸式趣谈

Shopify将应用迁移到React Native,跨平台代码达到86%,旧代码减少180万行_架构/框架_Mustafa Ali_InfoQ精选文章