Escrito por Denys Havryliak
Swift vs React Native: RAM, CPU y el coste de dos entornos de ejecución
React Native mantiene vivo un montículo de JavaScript junto a las vistas nativas, y Hermes no tiene JIT por diseño. Lo que eso cuesta en memoria y CPU, medido — incluidos los datos de Shopify.

En resumen
- React Native usa dos sistemas de memoria a la vez: su propio motor de JavaScript y las vistas nativas por debajo. En un estudio revisado por pares usó más memoria que ningún otro framework probado
- Un desplazamiento por una lista añadió 9,74 MB en Swift frente a 45,13 MB en React Native, alrededor de un 78% menos. Fue además el resultado menos predecible de la prueba, variando una cuarta parte de su propia media entre ejecuciones
- La memoria decide si tu aplicación sobrevive a una sesión. Los iPhone no ralentizan una aplicación pesada, la cierran, empezando por la más pesada. Tu cliente ve un carrito vacío, no un fallo
- La propia migración de Shopify es el dato público más honesto. Abrir la aplicación fue un 3% más rápido en iPhone — y algunas pantallas complejas se volvieron hasta un 20% más lentas, con las sesiones sin fallos por debajo de su objetivo durante semanas
- No es más lento en todo. En una prueba de animación continua usó menos procesador y menos batería que la versión nativa
- Los widgets serán Swift igualmente. Funcionan con un límite que, según la propia documentación de React Native, su uso de memoria probablemente no respete
- Tu equipo actual puede pesar más que todo esto. Si ya tienes desarrolladores de React, lanzar este trimestre puede ganar a ser cuatro veces más ligero el año que viene
Trabajamos tanto con Swift nativo como con React Native. Esta es la comparación que hacemos internamente antes de empezar un proyecto.
¿Cuánto menos eficiente es React Native que Swift nativo?
En memoria, de forma significativa — React Native mantiene vivo un montículo de JavaScript junto a los objetos nativos de UIKit o SwiftUI, así que pagas por dos gestores de memoria donde Swift paga por uno. En CPU depende por completo de la carga de trabajo: Hermes ejecuta bytecode en un intérprete sin JIT, lo que está bien para la lógica típica de una aplicación y mal para cálculo numérico sostenido. En producción, a la escala de Shopify, la diferencia apareció como cambios de un solo dígito en el tiempo de arranque y regresiones ocasionales del 20% en pantallas complejas.
Cada cifra de abajo lleva el dispositivo, la versión del framework y la herramienta de la que salió. Al final nombramos las cifras que carecen de eso. No las usamos.
¿Qué te cuesta en realidad esa cifra de memoria?
Un iPhone no ralentiza una aplicación cuando se queda sin memoria — la cierra, empezando por la más pesada. Tu cliente no ve un fallo. Cambia a otra aplicación durante veinte segundos, vuelve, y se encuentra un carrito vacío y una pantalla de inicio de sesión. Es el coste menos entendido de una aplicación más pesada, y nunca aparece en tus informes de fallos.
Lo hemos desarrollado por separado, junto con el límite de los widgets que impide construir algunas funciones: Por qué los iPhone cierran primero las aplicaciones pesadas.
Todas las cifras que pudimos verificar, en una tabla
Cuatro cosas que la gente pregunta — memoria, uso del procesador, tamaño de descarga y rapidez de apertura. Esto es lo que se ha medido realmente, y lo que no.
Lee la columna de la derecha antes de usar cualquier fila. Y lee las filas que dicen nadie ha publicado esto, porque hay más de las que admitirá cualquiera que te esté vendiendo un framework.
| Qué se midió | Swift nativo | React Native | Quién lo midió, y sobre qué |
|---|---|---|---|
| Memoria — la única pregunta con una respuesta real | |||
| Memoria extra que ocupó la aplicación al desplazar una lista larga | 9,74 MB | 45,13 MB | SynergyBoat, agosto de 2025. La misma aplicación construida de las dos formas, iPhone 16 Plus, tres ejecuciones de cada una |
| La misma cifra, junto a Swift | la referencia | 4,6× más | Calculado a partir de la fila anterior — Swift usó alrededor de un 78% menos de memoria |
| Cuánto varió el resultado entre ejecuciones | ± 0,18 | ± 10,94 | Misma prueba, y esta fila importa tanto como la anterior. React Native no solo usó más — fue muchísimo menos predecible, variando alrededor de una cuarta parte de su propia media. Léelo como “aproximadamente entre cuatro y cinco veces”, no como exactamente 4,6 |
| Memoria frente a una aplicación nativa, en Android | no hay Swift en Android | la más alta de todos los frameworks probados | Oliveira y colegas, 2023, el único estudio aquí revisado por pares. Android, y la aplicación nativa con la que se comparó estaba en Java. Una dirección, no una cifra de iPhone |
| Cifras antiguas de iPhone que aún se citan hoy | 48 MB | 135 MB | inVerita, junio de 2020, iPhone 6s — medido antes de que React Native cambiara tanto su motor de JavaScript como toda su arquitectura. Aparece para que lo reconozcas cuando te lo citen como actual |
| Uso del procesador — ninguna prueba en iPhone incluye Swift | |||
| iPhone, misma aplicación, de las dos formas | nadie ha publicado esto | nadie ha publicado esto | Buscamos a fondo y no encontramos ninguna |
| Frente a una aplicación nativa, en Android | no hay Swift en Android | la mayor sobrecarga de los frameworks probados — pero menor que la nativa en una aplicación con animación continua | El mismo estudio revisado por pares. Esa excepción es real y conviene conocerla: React Native no es más lento en todo |
| Tamaño de descarga — lo que tu cliente espera | |||
| Una aplicación mínima, tal como se descarga en iPhone | nadie ha publicado esto | nadie ha publicado esto | Ni Apple ni el equipo de React Native publican una cifra comparable de aplicación vacía para iPhone |
| Maquinaria que la aplicación carga solo para funcionar | ninguna — usa lo que ya está en el teléfono | un motor de JavaScript, unos 2,4 MB | Las mediciones de Callstack en iPhone. Esta es la diferencia estructural: tu aplicación incorpora un segundo entorno de ejecución y lo mantiene en memoria junto al nativo |
| Rapidez de apertura — no existe nada comparable | |||
| Arranque en frío en iPhone, misma aplicación | nadie ha publicado esto | nadie ha publicado esto | El único proyecto de código abierto que publica velocidad de apertura frente a una aplicación real en Swift no incluye ninguna versión en React Native |
Cada fila está referenciada en Fuentes, con el hardware, las versiones y las herramientas exactas. Las filas que dicen nadie ha publicado esto son el hallazgo, no un hueco que no supiéramos llenar.
Cifras que parecen comparaciones pero no lo son
Estas tres aparecen en casi todos los argumentos a favor de React Native. Cada una mide React Native contra una versión anterior de sí mismo. Ninguna implica a Swift. Si alguien te cita una como razón para saltarte lo nativo, ha respondido a otra pregunta.
| Lo que se dice | Lo que se comparó en realidad | El detalle que se omite |
|---|---|---|
| “Ahora arranca un 40% más rápido” | Dos motores de JavaScript, uno contra otro | Callstack, en iPhone, en React Native 0.64. La memoria bajó alrededor de un 18% — y la aplicación creció 2,4 MB |
| “La Nueva Arquitectura arregló el rendimiento” | React Native 0.76 contra 0.75 | Sus propias notas de versión, en Android: unos 3,8 MB menos, abriendo unos 15 milisegundos antes. No se publicó ninguna cifra de memoria |
| “Shopify demostró que está listo para producción” | Las propias aplicaciones de Shopify, antes y después de su actualización | Shopify, septiembre de 2025: ~10% más rápido al abrir en Android, ~3% en iPhone — junto con algunas pantallas hasta un 20% más lentas, más bloqueos en ambas plataformas, y sesiones sin fallos por debajo de su propio objetivo durante un par de semanas |
¿Deberías elegir Swift o React Native?
La eficiencia es un factor, y rara vez el decisivo. El compromiso honesto: Swift nativo gana la medición, y nativo cuesta más en cuanto necesitas Android también — porque no hay una segunda plataforma incluida en el precio.
| Si esta es tu situación | Construye esto | Por qué | Qué te cuesta |
|---|---|---|---|
| Solo iPhone, sin Android previsto | Swift nativo | Alrededor de una cuarta parte del crecimiento de memoria, todas las funciones de Apple desde el primer día, y ningún segundo entorno de ejecución en la descarga | Nada extra. Con una sola plataforma, nativo es además la opción más barata — un solo código y ninguna capa de framework entre tú y los errores |
| Ambas plataformas, y la eficiencia es el producto — audio en segundo plano, cámara, mapas, IA en el dispositivo, o clientes con teléfonos antiguos | Nativo en ambas | Aquí es donde la diferencia de memoria deja de ser una estadística y empieza a cerrar tu aplicación a mitad de sesión | La respuesta cara, siendo honestos. Dos bases de código: cada pantalla se construye dos veces. El diseño, el backend, el producto y las pruebas no se duplican, así que queda bastante por debajo de pagar el doble — pero la capa de aplicación sí se duplica de verdad |
| Ya tienes un equipo de React y TypeScript | React Native | El equipo que tienes vale más que una prueba de rendimiento. Lanzar este trimestre gana a ser cuatro veces más ligero el año que viene | El resultado más pesado y menos predecible de la única prueba en iPhone que incluye Swift. Merece revisarse si la aplicación se vuelve sensible al rendimiento |
| Ambas plataformas, aplicación normal de contenidos, reservas o tienda, y el presupuesto manda | React Native | Un solo equipo cubriendo ambas plataformas es un ahorro real, y en una aplicación que muestra listas y formularios puede que la diferencia no llegue nunca a tus clientes | Una aplicación bastante más pesada. Presupuesta probar en el teléfono más antiguo que admitas, no en el más nuevo — ahí es donde se nota |
| Los widgets o las Live Activities importan en el producto | Swift, elijas lo que elijas | La propia documentación de React Native dice que su uso de memoria es probablemente demasiado alto para caber en estos presupuestos | No es realmente una elección. Cuenta con Swift en el equipo desde el principio en lugar de descubrirlo tarde |
Fuentes
Cada cifra de arriba viene de una de estas. Cada entrada indica las condiciones que la hacen citable: dispositivo, versiones, herramienta, tamaño de muestra. Un número sin eso no es evidencia.
Las mediciones
- SynergyBoat — “Flutter vs React Native vs Native: 2025 Performance Benchmark” (31 de agosto de 2025)Las cifras de incremento de memoria. iPhone 16 Plus, N=3, crecimiento de RSS en un desplazamiento de 100 elementos. Publicado por un proveedor. Usamos solo su apartado de memoria; su comparación de tiempos de fotograma mide cantidades distintas contra un mismo presupuesto.
- Oliveira, Moraes, Castor y Fernandes — “Analyzing the Resource Usage Overhead of Mobile App Development Frameworks” (EASE 2023)Revisado por pares. Samsung Galaxy S20 FE, Android 12,
adb batterystats+meminfo, 45 ejecuciones por prueba descartando las 15 primeras. Flutter 3.0.3 (Skia), React Native 0.68.2 (Hermes desactivado), frente a Java nativo. Sin iOS, sin Swift. PDF de acceso abierto vía la Universidad de Utrecht; DOI 10.1145/3593434.3593487. - Shopify Engineering — “Migrating to React Native’s New Architecture” (5 de septiembre de 2025)Datos de producción de Shopify Mobile y Point of Sale. Informa tanto de sus regresiones como de sus mejoras, que es por lo que la usamos.
- React Native — “Toward Hermes being the default”Recoge las cifras de iOS de Callstack/Mattermost: arranque ~40% más rápido, memoria ~18% menor, aplicación +2,4 MiB, en React Native 0.64.
- Callstack — “Hermes performance on iOS”Las mediciones originales sobre Mattermost detrás de esas cifras.
Documentación de primera mano
- Apple — “iOS Memory Deep Dive”, sesión 416 de la WWDC18Define la huella de memoria de una aplicación como páginas sucias más comprimidas, contadas en páginas de 16 KB. Afirma que el límite depende del dispositivo y nunca publica una cifra.
- Apple — “Identifying high-memory use with jetsam event reports”El ejemplo que citamos: 92.802 páginas × 16.384 bytes = 1,52 GB en uso en una terminación por
per-process-limit. Eso es el uso en el momento de morir, no un techo publicado. - Foros de desarrolladores de Apple —
EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=30 MB)Informes de fallos de WidgetKit publicados por desarrolladores, no una especificación de Apple. La fuente del límite de ~30 MB para widgets. - Meta Engineering — “Hermes: An open source JavaScript engine optimized for mobile apps” (2019)Por qué Hermes no incluye JIT: el calentamiento perjudica el tiempo hasta poder interactuar, y un JIT cuesta tamaño de código y memoria.
- facebook/hermes, incidencia #1829 — consumo de memoria en Hermes V1Un mantenedor de Meta explicando que HV32 usa ~40% menos memoria pero necesita un mapeo de memoria no disponible en iOS, así que allí Hermes V1 distribuye HV64. Aplica desde React Native 0.84 (febrero de 2026).
- Notas de la versión React Native 0.70 (5 de septiembre de 2022)Hermes pasa a ser el motor por defecto.
- React Native — “The New Architecture is Here” (23 de octubre de 2024)Fabric, TurboModules y modo sin puente por defecto. También es la fuente del hecho de que el puente antiguo sigue en 0.76 por compatibilidad.
- Notas de la versión React Native 0.76Las únicas cifras oficiales: APK de Android ~3,8 MB más pequeño (20%), arranque mediano ~15 ms (~8%) más rápido. No se publicó ninguna cifra de memoria.
- React Native — documentación de extensiones de aplicaciónLa propia advertencia de React Native de que su uso de memoria “tiende a ser demasiado alto” para los presupuestos de extensión más ajustados. Nota: la página aún habla del widget Today de 16 MB, que Apple retiró en iOS 18.
Código abierto que puedes ejecutar tú
- Código fuente de la prueba de SynergyBoatLas cuatro implementaciones — Swift, Flutter, React Native, Kotlin — con la instrumentación. Clónalo y vuelve a ejecutarlo.
- Paquete de replicación de EASE 2023Todos los volcados de
adben bruto detrás del artículo. Reejecutable. - RNArchBench — React Native, arquitectura antigua frente a nuevaReact Native 0.81.5 con una referencia nativa en Kotlin y un flujo de análisis reproducible. Solo Android, y sus propios autores describen sus campos de CPU y RAM como descriptivos más que inferenciales.
- jacobras/flutter-vs-native-vs-kmpUna aplicación en cuatro tecnologías, incluida una referencia nativa en Swift/SwiftUI. Publica solo tamaño de aplicación y arranque — ni RAM ni CPU. Archivado en agosto de 2026.
Fuentes que revisamos y no usamos
- inVerita — “Deep Performance Comparison” (junio de 2020)El origen de las cifras “48 MB / 117 MB / 135 MB”. iPhone 6s y un iPad Mini 3 de 2014, antes de Hermes, Impeller y la Nueva Arquitectura. Enlazado para que la afirmación sea comprobable, no como recomendación.
- inVerita — “Examining Performance” (marzo de 2020)Las micropruebas de dígitos de pi detrás de “Flutter es un 15% más rápido que Swift”. Mide aritmética en un bucle, en un iPhone 6s.
Para ver cómo encaja Flutter, consulta la comparación a tres bandas o Swift vs Flutter. Si quieres esta decisión tomada sobre un producto concreto en lugar de en abstracto, habla con nosotros.
Artículos relacionados
- Por qué los iPhone cierran primero las aplicaciones pesadasDesarrollo
- Swift vs Flutter: RAM, CPU y lo que dicen realmente las medicionesDesarrollo
- Swift nativo vs Flutter vs React Native: RAM, CPU y eficiencia realDesarrollo
