El equipo de Expo ha presentado Exact, un entorno de ejecución de aplicaciones multiplataforma que permite que una única descripción de interfaz se ejecute de forma nativa en la web, macOS, iOS y Linux. A diferencia de muchos frameworks existentes que dependen de webviews o puentes de JavaScript, Exact utiliza un lenguaje declarativo personalizado llamado Contract para compilar un 'plan' que es ejecutado por un corredor en Rust y un kernel de diseño. Esta arquitectura está diseñada para eliminar la fricción del desarrollo multiplataforma, priorizando al mismo tiempo el rendimiento y los flujos de trabajo impulsados por IA.

El artículo describe cómo Exact permite que una única descripción de interfaz se ejecute de forma nativa en varias plataformas, incluido iOS.
El lenguaje Contract y el modelo de ejecución
En el núcleo de Exact se encuentra Contract, un pequeño lenguaje declarativo utilizado para describir la interfaz de la aplicación. El compilador de Contract procesa esta entrada a través de cuatro pasos —sintaxis, tipos, análisis y reducción— para producir un 'plan' que contiene tablas y código de bytes.
Este plan sirve como la fuente de verdad para todos los hosts. En la web, el plan se convierte en un módulo ES que dirige el DOM real. En las plataformas nativas, un corredor en Rust ejecuta el plan, mientras que un kernel de diseño (Taffy) calcula cada caja utilizando reglas CSS. Cada plataforma luego dibuja el resultado utilizando sus propias herramientas nativas, como AppKit para macOS o UIKit para iOS.

El artículo explica que Exact utiliza un corredor en Rust y un kernel de diseño para accionar herramientas específicas de la plataforma como AppKit para macOS.
“Exact asume que gran parte del código será escrito por agentes de IA”.
— GitHub - expo/exact
Diseño nativo para agentes y rendimiento
Exact está construido bajo la premisa de que gran parte del código será escrito por agentes de IA. Para facilitar esto, el framework proporciona diez operaciones específicas —como árbol, captura de pantalla, toque y reloj— que permiten a un agente operar la aplicación y demostrar que funciona sin un humano en el ciclo. La operación 'reloj' es particularmente notable, ya que permite al agente avanzar el tiempo o esperar a un estado de 'asentamiento', eliminando fallos de sincronización en las pruebas automatizadas.
La velocidad es una restricción de ingeniería primaria para el proyecto. El equipo realiza un seguimiento de los presupuestos para los inicios en frío y los reinicios de desarrollo, con el objetivo de alcanzar un objetivo p50 de 100ms. Para lograr esto, la ruta de arranque no compila nada; TypeScript se compila a código de bytes Hermes en el momento de la construcción y se carga solo después de que se renderice el primer píxel. Además, los componentes pesados como el editor de Markdown o el renderizado por GPU son artefactos separados que se cargan solo bajo demanda.
Gráfico elaborado por HN Digest a partir de cifras reportadas por github.com; los valores se muestran tal como aparecen en la fuente.
Ciclo de desarrollo y limitaciones
El flujo de trabajo de desarrollo favorece la web como el ciclo de iteración principal. Los desarrolladores pueden trabajar en la versión web de la aplicación, donde el navegador maneja el diseño y el CSS, mientras que los hosts nativos quedan 'en segundo plano'. El framework garantiza la paridad visual verificando el diseño nativo frente a lo que Chrome dibuja, declarando cualquier desviación inevitable.

El artículo señala que los desarrolladores pueden trabajar en la versión web de la aplicación como el ciclo de iteración principal.
Debido a que Exact se encuentra actualmente en una fase previa a la versión 1.0, carece de estabilidad de API, compatibilidad con versiones anteriores o una guía de migración. El proyecto se encuentra en un estado de cambio diario rápido, lo que significa que la implementación actual es un objetivo móvil para los desarrolladores que buscan adoptarlo para aplicaciones listas para producción.
Qué dicen los lectores de Hacker News
- Nota técnica: Un comentarista señaló que, aunque el proyecto es ambicioso, la capacidad del framework para permitir que los agentes controlen la sincronización de la interfaz de usuario es un obstáculo técnico clave para garantizar una interactividad correcta. comentario ↗
- Escéptico: Otro usuario expresó optimismo sobre la reducción del exceso de software, pero planteó preocupaciones de que el éxito del framework podría depender en gran medida de las capacidades específicas de los modelos de IA utilizados para escribir el código. comentario ↗
Resumen de opiniones del hilo de Hacker News; no son hechos verificados. Leer el debate completo ↗