Aller au contenu
Toutes les notes

Il y a deux mois j'ai partagé le benchmark où React Native se fait démolir sur Android

Jérémy Magrin

Développeur React Native Freelance Senior · Expo · iOS & Android

in
Beaucoup l'ont trouvé truqué Le reproche le moins défendable, c'est celui qu'on m'a fait sur iOS On m'a dit que Software Mansion avait plombé KMP en lui collant une UI partagée qui redessine tout en Skia Qu'avec du vrai SwiftUI natif, KMP aurait explosé React Native Sauf que le SwiftUI natif, ça veut dire réécrire toute ton interface une deuxième fois Une fois en Compose pour Android, une fois en SwiftUI pour iOS À ce moment là tu ne fais plus du cross-platform, tu fais deux apps C'est exactement pour ça que ce benchmark est honnête Il compare à armes égales, une seule codebase UI de chaque côté React Native écrit son interface une fois, KMP en shared UI aussi Le point que je concède Sur Android, KMP c'est du Kotlin compilé en bytecode, quasi du natif Forcément qu'il écrase sur le démarrage et la RAM, j'aurais dû le dire plus explicitement dans mon premier post Mais sur iOS le shared UI se retourne contre lui React Native pilote du vrai UIKit quand KMP redessine tout en Skia Et là c'est React Native qui tient sur 2 à 4 fois moins de mémoire Le meilleur retour sur ce post venait d'un dev natif iOS et Android Il a testé KMP côté iOS, s'est cogné l'usine à gaz de l'ABI Objective-C, et il conclut que pour du multiplateforme il partirait sur React Quand ceux qui font du natif au quotidien penchent RN, c'est que le débat a bougé Une seule codebase des deux côtés, personne ne gagne partout Le poids d'une app tu le télécharges une fois La vélocité d'une équipe tu la paies tous les jours Tu réécrirais ton UI deux fois pour gagner le benchmark, ou tu gardes une codebase et tu shippes ?

Lire sur LinkedIn

En un coup d'œil

Les chiffres du benchmark Software Mansion : la même application construite deux fois, mesurée sur six téléphones.
CritèreKotlin MultiplatformReact Native
Poids du téléchargement, Android2 Mo15,8 Mo
Premier écran affiché, Android2 à 4 fois plus rapideRéférence
Mémoire, AndroidMoitié moinsRéférence
Mémoire, iPhone 16230 Mo56 Mo
Démarrage, iPhone 16 et 17Au coude à coude20 à 28 ms d'écart
Rendu iOSRedessine tout en SkiaPilote du vrai UIKit
CPUInconclusifInconclusif
Score Flashlight97 à 9997 à 99

Questions fréquentes

Le benchmark est-il faussé parce que KMP rend en Skia sur iOS ?

Non. Utiliser du vrai SwiftUI natif voudrait dire réécrire toute l'interface une deuxième fois, une fois en Compose pour Android et une fois en SwiftUI pour iOS. À ce moment là ce n'est plus du cross-platform, ce sont deux applications. Le benchmark compare à armes égales, une seule codebase UI de chaque côté.

Pourquoi KMP écrase-t-il React Native sur Android ?

Sur Android, KMP c'est du Kotlin compilé en bytecode, donc quasiment du natif. L'avantage sur le démarrage et sur la mémoire en découle directement.

Pourquoi React Native reprend-il l'avantage sur iOS ?

Parce que le shared UI se retourne contre KMP : React Native pilote du vrai UIKit quand KMP redessine tout en Skia et garde ses surfaces allouées tout du long. React Native tient alors sur deux à quatre fois moins de mémoire.

Pour aller plus loin

Qui écrit

J'aide startups et scale-ups à concevoir, construire et faire évoluer leurs applications mobiles iOS et Android. Je travaille au quotidien avec React Native, que je pratique depuis sa sortie en 2015, ainsi qu'avec Expo, React.js et TypeScript. J'interviens du MVP à la mise en production sur l'App Store et Google Play, jusqu'à l'optimisation fine des performances et la structuration des équipes techniques.

Expert React Native freelanceDéveloppeur Expo freelanceAudit de performance React Native

Parlons-en

Un projet en tête ?

Réponse garantie en moins d'une heure, et trente minutes d'audit offertes en visio.

M'écrireMaltLinkedIn

Emailcontact@magrin.fr

Téléphone+33 6 73 12 19 30

LocalisationParis, France · full remote