[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-es-por-que-electron-pesa-tauri-react-native-alternativas":3},{"id":4,"title":5,"author":6,"body":7,"cover":406,"description":407,"draft":408,"extension":409,"locale":410,"meta":411,"navigation":412,"path":413,"publishedAt":414,"seo":415,"seoTitle":416,"slug":417,"stem":418,"tags":419,"__hash__":423},"blog\u002Fes\u002Fblog\u002Fpor-que-electron-pesa-tauri-react-native-alternativas.md","Por qué Electron pesa: Tauri, React Native y las alternativas","Manuel Tardivo",{"type":8,"value":9,"toc":373},"minimark",[10,14,19,22,25,28,41,45,48,51,55,58,63,90,94,115,119,141,152,156,159,163,166,180,184,187,190,193,197,200,204,213,217,220,224,227,231,234,238,241,245,248,252,255,259,262,266,298,302,326,330,333,340,344,347,351,354,357,360,363,367,370],[11,12,13],"p",{},"Todo empieza con una molestia de todos los días: Chrome, Arc y los demás navegadores basados en Chromium se me comen la RAM y la CPU, hasta el punto de ralentizar los procesos con los que trabajo de verdad. Safari es mucho más ligero, pero para desarrollar no basta, porque le faltan herramientas de DevTools que hoy son imprescindibles.",[15,16,18],"h2",{"id":17},"de-dónde-nace-la-idea","De dónde nace la idea",[11,20,21],{},"La primera idea era un navegador nativo para macOS, ligero como Safari pero compatible al 100% con Chromium.",[11,23,24],{},"Luego escarbé, y resultó que el peso no está en la interfaz sino en el motor, Blink y V8. Google lo optimiza un montón, pero para la velocidad y la seguridad, no para la RAM.",[11,26,27],{},"Y ahí la cosa se hizo más grande. También las apps de escritorio que usamos todos los días, Slack, Notion, la propia app de Claude, están hechas con Electron, y cada una lleva dentro un Chromium entero. De ahí salen tres preguntas:",[29,30,31,35,38],"ul",{},[32,33,34],"li",{},"por qué Electron pesa tanto;",[32,36,37],{},"por qué Tauri y React Native van mejor;",[32,39,40],{},"qué se podría construir para cambiar las cosas.",[15,42,44],{"id":43},"electron-es-un-runtime-no-un-compilador","Electron es un runtime, no un compilador",[11,46,47],{},"Electron no lo puedes «compilar mejor». Cada app lleva dentro un Chromium entero más Node.js, y el código de la app sigue siendo JavaScript, HTML y CSS: para funcionar necesita un motor web.",[11,49,50],{},"Ningún compilador puede quitar Chromium si el código espera Chromium. El peso no está en cómo está hecha la app, está en el motor que le metes dentro.",[15,52,54],{"id":53},"tauri-y-react-native-parecen-lo-mismo-pero-no-lo-son","Tauri y React Native: parecen lo mismo, pero no lo son",[11,56,57],{},"Son dos caminos distintos: Tauri usa el motor web que ya está en el sistema, React Native directamente no usa un motor web.",[59,60,62],"h3",{"id":61},"electron","Electron",[29,64,65,72,78,84],{},[32,66,67,71],{},[68,69,70],"strong",{},"Motor:"," Chromium + Node.js dentro de la app.",[32,73,74,77],{},[68,75,76],{},"Código:"," web.",[32,79,80,83],{},[68,81,82],{},"Peso:"," pesado, unos 200 MB por app.",[32,85,86,89],{},[68,87,88],{},"El precio que pagas:"," cada app carga su propio Chromium.",[59,91,93],{"id":92},"tauri","Tauri",[29,95,96,101,105,110],{},[32,97,98,100],{},[68,99,70],{}," WebView del sistema (WKWebView en Mac), backend en Rust.",[32,102,103,77],{},[68,104,76],{},[32,106,107,109],{},[68,108,82],{}," ligero, 5-10 MB por app.",[32,111,112,114],{},[68,113,88],{}," el renderizado cambia de un sistema a otro, y en Mac heredas las rarezas de Safari.",[59,116,118],{"id":117},"react-native","React Native",[29,120,121,126,131,136],{},[32,122,123,125],{},[68,124,70],{}," ningún navegador, componentes nativos AppKit\u002FUIKit y JavaScript sobre Hermes.",[32,127,128,130],{},[68,129,76],{}," hay que reescribirlo con los componentes de React Native.",[32,132,133,135],{},[68,134,82],{}," ligero.",[32,137,138,140],{},[68,139,88],{}," ni DOM ni CSS de verdad, la interfaz web no se reutiliza.",[11,142,143,144,151],{},"En Mac WebKit ya está en el sistema y ya está en memoria, y por eso Tauri arranca tan ligero. Y no es cosa de aficionados: Microsoft usa React Native en Mac para partes de Office, con ",[145,146,150],"a",{"href":147,"rel":148},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Freact-native-macos",[149],"nofollow","react-native-macos",".",[15,153,155],{"id":154},"qué-se-podría-hacer-de-verdad","Qué se podría hacer de verdad",[11,157,158],{},"El compilador mágico no existe, pero dos ideas concretas sí, y la primera es la más prometedora.",[59,160,162],{"id":161},"_1-un-traductor-de-electron-a-la-webview-del-sistema","1. Un traductor de Electron a la webview del sistema",[11,164,165],{},"Coge una app de Electron y en lugar de Chromium le pone WKWebView.",[29,167,168,171,174,177],{},[32,169,170],{},"Mapea las API de Electron (ventanas, IPC, menús, tray) sobre las nativas, y Node sobre un backend ligero.",[32,172,173],{},"El frontend muchas veces ya funciona en Safari: muchas apps de Electron tienen una versión web que ahí va bien.",[32,175,176],{},"Las partes difíciles son las API de Node y los módulos nativos.",[32,178,179],{},"Una herramienta de conversión automática ya publicada no la he encontrado: solo hay un intento anunciado en una issue de VS Code (lo tienes más abajo).",[59,181,183],{"id":182},"_2-un-chromium-compartido","2. Un Chromium compartido",[11,185,186],{},"Hoy cinco apps de Electron cargan cinco Chromium distintos. Con un runtime común, como la JRE para Java, el peso se repartiría.",[11,188,189],{},"Se ha hablado de ello varias veces, pero nunca se ha hecho, porque cada app quiere su versión exacta de Chromium.",[11,191,192],{},"Entre las dos gana el traductor: tiene un problema claro, un público que lo sufre (los desarrolladores que odian Electron, o sea, un montón de gente) y pide menos trabajo que un navegador.",[15,194,196],{"id":195},"quién-lo-ha-intentado-ya","Quién lo ha intentado ya",[11,198,199],{},"Frameworks ligeros ya hay muchos, pero todos son para apps nuevas. Un traductor automático de Electron publicado, a día de hoy, no consta.",[59,201,203],{"id":202},"electrobun","Electrobun",[11,205,206,207,212],{},"WebView del sistema, main process en TypeScript sobre Bun, puente nativo en Zig. Versión 1.0 en febrero de 2026, más de 11.000 estrellas en GitHub. Es un framework para apps nuevas: una app de React sencilla pesa unos 64 MB frente a unos 271 MB con Electron (",[145,208,211],{"href":209,"rel":210},"https:\u002F\u002Fbetterstack.com\u002Fcommunity\u002Fguides\u002Fscaling-nodejs\u002Felectrobun-desktop-apps-typescript\u002F",[149],"fuente",").",[59,214,216],{"id":215},"zero-native","Zero-Native",[11,218,219],{},"Shell mínima en Zig sobre WKWebView, CEF opcional. En fase inicial. Framework para apps nuevas, binarios de pocos MB.",[59,221,223],{"id":222},"deno-desktop","deno desktop",[11,225,226],{},"Runtime de Deno con CEF incluido o WebView del sistema. Disponible, y tiene en sus planes un runtime CEF compartido entre apps.",[59,228,230],{"id":229},"traductor-electron-tauri","Traductor Electron → Tauri",[11,232,233],{},"Conversión en fase de build, sin configuración. Solo anunciado en una issue de VS Code, ninguna versión publicada. Es nuestra idea 1: el hueco sigue vacío.",[59,235,237],{"id":236},"webview2-windows","WebView2 (Windows)",[11,239,240],{},"Chromium del sistema, con runtime compartido opcional. Disponible en Windows: el runtime compartido ya existe, pero no en Mac.",[59,242,244],{"id":243},"runtime-de-electron-compartido","Runtime de Electron compartido",[11,246,247],{},"Un solo Electron para todas las apps. Descartado por el creador de Electron: quien elige Electron recorta los costes de desarrollo, no los de quien usa la app, y Chrome Apps y Adobe AIR salieron mal.",[15,249,251],{"id":250},"cómo-lo-construiría","Cómo lo construiría",[11,253,254],{},"Vale, ¿pero y si mañana por la mañana tuviera que hacerlo de verdad? Esto es un estudio sobre el papel, no un proyecto en marcha: sirve para ver dónde están los muros antes de darte contra ellos.",[59,256,258],{"id":257},"el-principio","El principio",[11,260,261],{},"No reescribir nada que ya exista. El motor está (WKWebView), la carcasa ligera está (Electrobun o Tauri), un runtime de JavaScript ligero que habla casi todo Node está (Bun). El traductor es el pegamento entre la app de Electron y estas piezas.",[59,263,265],{"id":264},"las-cuatro-piezas","Las cuatro piezas",[267,268,269,275,286,292],"ol",{},[32,270,271,274],{},[68,272,273],{},"El radiólogo."," Abre el paquete de la app (el archivo asar), lista cada API de Electron que se usa, cada módulo de Node y cada módulo nativo compilado, y te dice antes de empezar qué se traduce solo, qué hay que arreglar a mano y qué no se puede traducir.",[32,276,277,280,281,285],{},[68,278,279],{},"El Electron de mentira."," Una librería que responde a ",[282,283,284],"code",{},"require('electron')"," con la forma de siempre (BrowserWindow, ipcMain, Menu, Tray, dialog, shell, app), pero por debajo llama a las API nativas del Mac a través de la carcasa ligera. La app se cree que habla con Electron, y en cambio habla con el sistema.",[32,287,288,291],{},[68,289,290],{},"El main process sobre Bun."," El código Node de la app corre sobre Bun, que cubre gran parte de las API de Node. Los módulos nativos que Bun no digiere acaban en un pequeño proceso Node aparte, encendido solo cuando hacen falta.",[32,293,294,297],{},[68,295,296],{},"El puente en la página."," Preload y contextBridge se convierten en scripts inyectados en WKWebView (WKUserScript), el IPC pasa por WKScriptMessageHandler y los protocolos personalizados por WKURLSchemeHandler. Para el frontend no cambia nada.",[59,299,301],{"id":300},"dónde-te-das-contra-el-muro","Dónde te das contra el muro",[29,303,304,314,320],{},[32,305,306,309,310,313],{},[68,307,308],{},"Las API web que solo existen en Chromium:"," WebUSB, WebHID, WebSerial, la captura de pantalla de desktopCapturer, la etiqueta ",[282,311,312],{},"\u003Cwebview>",". Aquí hace falta una salida honesta: la ventana que las necesita se abre con un Chromium (CEF) solo para ella, y el resto de la app sigue ligero.",[32,315,316,319],{},[68,317,318],{},"Un blanco que se mueve:"," Electron saca una versión nueva cada ocho semanas, así que el Electron de mentira tiene que correr detrás. Se empieza por las API que usan de verdad las apps más populares, no por todas.",[32,321,322,325],{},[68,323,324],{},"Las rarezas de Safari:"," para pillarlas hace falta una comparación automática de capturas, la misma app en Chromium y en WebKit, antes de decir que la traducción ha salido bien.",[59,327,329],{"id":328},"cómo-lo-probaría","Cómo lo probaría",[11,331,332],{},"Una sola plataforma, el Mac, y una sola app open source de verdad para traducir. Se mide antes y después: RAM al arrancar, RAM tras una hora de uso, peso del paquete. Si los números no caen en picado, se tira todo sin remordimientos.",[11,334,335,336,339],{},"Si caen, el paso siguiente es un único comando que coge la app y te devuelve el ",[282,337,338],{},".app"," traducido, y solo después se abre a otras apps y a otros sistemas.",[59,341,343],{"id":342},"el-problema-de-verdad-no-es-técnico","El problema de verdad no es técnico",[11,345,346],{},"Quien elige Electron recorta los costes de desarrollo, no los de quien usa la app, lo hemos visto en la tabla de arriba. Entonces, ¿quién paga el traductor? ¿El desarrollador, que tiene que quererlo, o quien usa la app y la querría ligera? Mientras no respondas a esta pregunta tienes un experimento chulo, no un producto.",[15,348,350],{"id":349},"hacemos-cada-vez-más-optimizamos-cada-vez-menos","Hacemos cada vez más, optimizamos cada vez menos",[11,352,353],{},"En 1995 Niklaus Wirth, el del Pascal, escribió que el software se vuelve lento más deprisa de lo que el hardware se vuelve rápido. Treinta años después tengo un Mac que hace cosas impensables, y para tener abiertos cinco chats y dos navegadores va con la lengua fuera.",[11,355,356],{},"Para mí el motivo es sencillo: una función nueva se ve, 150 MB de RAM menos no. Nadie se sube al escenario para decir que su app ahora pesa menos. Bueno, uno sí lo hizo: Apple en 2008 presentó Snow Leopard con una diapositiva que decía cero funciones nuevas, solo más rápido y más ligero, y la gente todavía se acuerda.",[11,358,359],{},"Con la IA escribiendo código sin parar es todavía peor, porque añadir cuesta casi cero, mientras que optimizar quiere decir entender lo que ya hay, y entender cuesta tiempo.",[11,361,362],{},"Yo lo veo así: me sale mucho más rápido idear algo nuevo partiendo de algo que ya existe y funciona. El traductor es exactamente eso, no el enésimo framework de la lista, sino una forma de hacer ligero lo que ya usamos todos cada día.",[15,364,366],{"id":365},"y-entonces","¿Y entonces?",[11,368,369],{},"El traductor sigue siendo la idea más prometedora, pero para tener sentido tiene que dar más que una migración a mano a Electrobun, que ya habla TypeScript. Si no, quien odia Electron acaba antes reescribiéndose la shell él solo.",[11,371,372],{},"Y mientras tanto Arc sigue ahí abierto, comiéndose la RAM como si nada.",{"title":374,"searchDepth":375,"depth":375,"links":376},"",2,[377,378,379,385,389,397,404,405],{"id":17,"depth":375,"text":18},{"id":43,"depth":375,"text":44},{"id":53,"depth":375,"text":54,"children":380},[381,383,384],{"id":61,"depth":382,"text":62},3,{"id":92,"depth":382,"text":93},{"id":117,"depth":382,"text":118},{"id":154,"depth":375,"text":155,"children":386},[387,388],{"id":161,"depth":382,"text":162},{"id":182,"depth":382,"text":183},{"id":195,"depth":375,"text":196,"children":390},[391,392,393,394,395,396],{"id":202,"depth":382,"text":203},{"id":215,"depth":382,"text":216},{"id":222,"depth":382,"text":223},{"id":229,"depth":382,"text":230},{"id":236,"depth":382,"text":237},{"id":243,"depth":382,"text":244},{"id":250,"depth":375,"text":251,"children":398},[399,400,401,402,403],{"id":257,"depth":382,"text":258},{"id":264,"depth":382,"text":265},{"id":300,"depth":382,"text":301},{"id":328,"depth":382,"text":329},{"id":342,"depth":382,"text":343},{"id":349,"depth":375,"text":350},{"id":365,"depth":375,"text":366},"\u002Fblog\u002Fperche-electron-pesa-tauri-react-native-alternative-cover.webp","Chrome se me come la RAM, y Slack y Notion también. Por qué Electron pesa tanto, qué hacen mejor Tauri y React Native, y la idea que nadie ha lanzado todavía.",false,"md","es",{},true,"\u002Fes\u002Fblog\u002Fpor-que-electron-pesa-tauri-react-native-alternativas","2026-10-17",{"title":5,"description":407},"Por qué Electron pesa: Tauri, React Native y alternativas","por-que-electron-pesa-tauri-react-native-alternativas","es\u002Fblog\u002Fpor-que-electron-pesa-tauri-react-native-alternativas",[61,92,420,421,422],"react native","apps de escritorio","rendimiento","M-cHLElDZaTfidWl58KwKdlE4CXWtuv05cq0sVkUvCg"]