Tauri
Para empaquetar tu web como aplicación nativa de escritorio o móvil con binarios pequeños y seguros.
Framework para crear apps de escritorio y móvil con frontend web y backend en Rust.
Notas y contexto
Qué es
Tauri es un framework de código abierto para construir aplicaciones de escritorio y móviles a partir de un frontend web. La interfaz se escribe con cualquier stack web (JavaScript/TypeScript y el framework que prefieras) mientras que la lógica de la aplicación se desarrolla en Rust. A diferencia de empaquetar un navegador completo, Tauri usa el motor de renderizado web nativo del sistema operativo, lo que produce binarios muy pequeños. Está mantenido por el equipo de Tauri dentro de The Commons Conservancy y se distribuye con licencia dual Apache-2.0 / MIT.
Para qué sirve
- Convertir una aplicación web existente en una app nativa para Windows, macOS y Linux sin cambiar tu stack de frontend.
- Compilar para Android e iOS desde el mismo código base a partir de la versión 2.
- Distribuir binarios pequeños (pueden rondar los cientos de KB) gracias a usar el WebView del sistema en lugar de incluir Chromium.
- Acceder a capacidades del sistema (ficheros, notificaciones, ventanas) escribiendo lógica en Rust y, en móvil, integrando con Swift y Kotlin.
- Crear comandos invocables desde el frontend hacia el backend de Rust mediante el sistema de invoke.
Cuándo usarlo
- Cuando ya tienes un frontend web y quieres distribuirlo como aplicación nativa multiplataforma con el menor tamaño y consumo posible.
- Cuando el tamaño del binario, el rendimiento o la seguridad son requisitos importantes.
- Si necesitas escritorio y móvil desde un único código base.
- La alternativa principal es Electron, que empaqueta Chromium y Node.js: ofrece WebView consistente entre plataformas a costa de binarios mucho más grandes. Tauri prioriza ligereza y seguridad; Electron, consistencia del runtime.
Ejemplo
Crear un proyecto nuevo con la CLI (compatible con npm, pnpm, yarn, bun, deno y Cargo):
# Crear un proyecto Tauri con la plantilla interactiva
npm create tauri-app@latest
# Entrar al proyecto e instalar dependencias
cd mi-app
npm install
# Lanzar en modo desarrollo
npm run tauri dev
# Compilar el binario de producción
npm run tauri build
Definir un comando en Rust y llamarlo desde el frontend:
// src-tauri/src/lib.rs
#[tauri::command]
fn saludar(nombre: &str) -> String {
format!("Hola, {}!", nombre)
}
// En el frontend
import { invoke } from '@tauri-apps/api/core';
const mensaje = await invoke('saludar', { nombre: 'Eduardo' });
console.log(mensaje); // "Hola, Eduardo!"
Puntos clave
- Backend en Rust con frontend web agnóstico: funciona con React, Vue, Svelte, Solid o HTML plano.
- Binarios muy pequeños al reutilizar el WebView nativo del sistema operativo.
- Multiplataforma real: escritorio (Windows, macOS, Linux) y móvil (Android, iOS) desde un código base con Tauri 2.
- Seguridad como prioridad de diseño, con un sistema de permisos y capacidades para limitar el acceso del frontend.
- Proyecto activo y muy popular, con licencia dual Apache-2.0 / MIT.
Ten en cuenta
- Como cada plataforma usa su propio WebView, pueden aparecer diferencias de renderizado y compatibilidad entre sistemas, algo que Electron evita al incluir siempre el mismo Chromium.
- Sacarle todo el partido (comandos, plugins, integración con el sistema) requiere conocimientos de Rust.
- El entorno de compilación necesita la toolchain de Rust y dependencias nativas por plataforma; el desarrollo móvil añade requisitos adicionales (SDK de Android, Xcode para iOS).
- Si tu prioridad es un runtime idéntico en todos los sistemas y no te importa el tamaño del binario, Electron puede encajar mejor.