Dos proyectos y su pegamento
Un proyecto de Tauri son dos proyectos independientes unidos por cuatro claves de configuración. Entender esa independencia es lo que permite trabajar en el frontend sin arrancar la app y probar el core sin abrir una ventana.
Quién sabe qué del otro
El conocimiento va en una sola dirección: el core sabe dónde está el frontend, y el frontend no sabe nada del core. Esa asimetría es deliberada y conviene defenderla.
Las cuatro claves
Todo el pegamento son estas cuatro, dentro de la sección build de la configuración:
Fíjate en la columna de cuándo se lee cada una: dos son de desarrollo y dos de compilación, y nunca se usan las cuatro a la vez. Esa separación es exactamente el nivel 10, donde vive la familia de bugs que solo aparecen en producción.
La disciplina que hay que adoptar hoy
Si el frontend no sabe que existe Tauri, tiene que poder ejecutarse sin él. Y eso no pasa solo: pasa si lo defiendes desde la primera semana con una regla y una comprobación.
La regla. Ninguna parte de la interfaz llama a invoke directamente. Todas las llamadas al puente pasan por un módulo propio que decide qué hacer cuando el puente no existe.
// src/lib/puente.js — el único fichero del frontend que sabe de Tauriconst enTauri = '__TAURI_INTERNALS__' in window;export async function cargarProyecto(id) { if (!enTauri) return datosDeEjemplo(id); // en el navegador, algo razonable const { invoke } = await import('@tauri-apps/api/core'); return invoke('cargar_proyecto', { id });}Dos cosas de ese fragmento merecen atención. La primera, que la importación es dinámica: así el paquete de Tauri ni siquiera se descarga en el navegador. La segunda, que el modo degradado devuelve algo utilizable en vez de reventar, que es lo que permite construir la interfaz entera sin arrancar la aplicación.
La comprobación. Abre tu servidor de desarrollo en un navegador normal, de vez en cuando. Si la interfaz se cae, la disciplina se ha roto en algún sitio y cuanto antes se arregle, más barato.
Y en el otro sentido: el core también se prueba solo
La independencia funciona igual del lado de Rust. src-tauri es un paquete normal, así que se puede compilar y probar sin arrancar la aplicación:
cd src-tauricargo build # compila el core, sin abrir ninguna ventanacargo test # ejecuta las pruebas, sin interfazcargo clippy --all-targetsQue eso funcione no es casualidad: es consecuencia de que la aplicación viva en una librería y no en el binario, que es el tema del nivel 6.4. Y es la base de la fase XV entera.