- TikTok publicó como código abierto la capa de infraestructura que construyó para operar el motor Lynx a escala de producción dentro de su app. Integra desde el scaffolding de apps hasta compilación, puente nativo y navegación
- Así como React Native necesita Expo, este es un framework de infraestructura de producción para ejecutar apps reales sobre el motor Lynx
- Con un solo comando de CLI, genera al instante un proyecto completo de app Lynx con shells nativos de Android/iOS y ejecuta compilación → instalación → ejecución de una vez
- Con Sparkling Method, que genera automáticamente código Kotlin/Swift a partir de solo declaraciones TypeScript, implementa un puente JS↔nativo con seguridad de tipos
- Con una navegación unificada por esquema URL en formato
hybrid://, maneja en un solo sistema el enrutamiento entre páginas Lynx y pantallas nativas
La posición de Sparkling: su relación con Lynx
- Lynx es el motor de renderizado de UI multiplataforma publicado por TikTok; un framework que, al escribir código de forma similar a React, dibuja pantallas de Android/iOS mediante renderizado nativo
- Como Lynx en sí es un "motor de renderizado", para operar una app real se necesita además infraestructura como pipeline de compilación, comunicación nativo↔JS, navegación entre páginas y acceso a almacenamiento/medios
- Sparkling cumple el rol de esta capa de infraestructura y es el framework de apps que se ejecuta sobre el motor Lynx
- Así como con React Native solo es difícil construir una app y se necesita Expo, con Lynx solo también es difícil operar apps a gran escala, y Sparkling llena ese vacío
- Actualmente está en fase de beta pública, mientras continúan ampliando la API y mejorando la documentación
CLI de scaffolding y compilación de apps
- Con una sola línea,
npm create sparkling-app@latest my-app, se crea un proyecto completo con shells nativos de Android/iOS
- Con
npx sparkling build se compila el bundle de Lynx, y con npx sparkling run:android/run:ios se realiza compilación → instalación → ejecución de una vez
- Con
npx sparkling dev se inicia un servidor de desarrollo con hot reload (puerto predeterminado 5969, el número que resulta de escribir LYNX en el teclado del teléfono)
- Con
npx sparkling doctor se hace un diagnóstico automático del entorno de desarrollo: Node.js, JDK, Android SDK, Xcode, CocoaPods, etc.
- Con
npx sparkling autolink se realiza el registro automático de dependencias de módulos Sparkling Method en Gradle/Podfile y se genera código de registro nativo
- Con
npx sparkling copy-assets se copian los bundles compilados a los directorios de recursos de Android/iOS
Sparkling Method — puente JS↔nativo con seguridad de tipos
- Si solo se escriben declaraciones de funciones en un archivo TypeScript
.d.ts, la CLI (sparkling-method-cli codegen) genera automáticamente el código nativo en Kotlin/Swift y la implementación TS
- Al heredar la clase abstracta generada e implementar solo la lógica de negocio nativa, queda disponible para invocarse directamente desde JS
- Incluye Methods integrados para Navigation (router), Storage (almacenamiento clave-valor) y Media (cámara/álbum/archivos)
- La convención es nombre de paquete con formato
sparkling-<module> y nombre de método '<module>.<action>' (ej.: router.open)
- Tras publicarlo en npm, la integración del lado consumidor queda completa solo con
npm install + npx sparkling autolink
Navegación unificada basada en esquemas
- Con un esquema URL unificado del tipo
hybrid://lynxview_page?bundle=main.lynx.bundle&title=Home, se enrutan por igual páginas Lynx y pantallas nativas
- Su estructura multipágina, en la que cada página tiene un punto de entrada de bundle independiente, está diseñada para apps a gran escala
- En la función
navigate(), además de claves predefinidas, también pueden pasarse parámetros personalizados dentro de la URL del esquema
Integración gradual en apps existentes (Brownfield)
- No solo sirve para apps nuevas; también permite una adopción gradual al embebeer un contenedor Sparkling en apps Android/iOS existentes
- Android: tras agregar el artefacto Maven (
com.tiktok.sparkling:sparkling:2.0.0), se inicializa con HybridKit.init() → se abre el contenedor con Sparkling.build(context).navigate()
- iOS: tras agregar CocoaPods (
pod 'Sparkling', '2.0.0'), se puede hacer push del controlador con SPKRouter.create(withURL:) o embebeer una vista con SPKContainerView
- El archivo compilado
.lynx.bundle se copia a los assets de la app nativa, y el bundle correspondiente se especifica con el parámetro bundle=
Estructura del proyecto
packages/sparkling-sdk: SDK central de Sparkling
packages/sparkling-method: SDK de Sparkling Method (puente JS↔nativo)
packages/methods: paquete de methods integrados de Sparkling (Navigation, Storage, Media)
packages/sparkling-app-cli: CLI de compilación y ejecución de apps Sparkling
packages/create-sparkling-app: CLI de scaffolding de apps
packages/sparkling-method-cli: herramienta de codegen de Sparkling Method
packages/sparkling-types: unifica las definiciones de tipo de GlobalProps en un solo paquete
packages/playground: app Playground para desarrollo local
Stack técnico y entorno
- Entorno con Node.js ^22 || ^24 y pnpm v10.26.0
- Android: requiere JDK 11 o superior y SDK android-34
- iOS: requiere Xcode 16+, Ruby ≥2.7 <3.4 y CocoaPods
- Configuración multilenguaje con TypeScript, Swift, Kotlin, JavaScript y más
- Licencia Apache 2.0
1 comentarios
Lynx - herramienta de desarrollo de apps nativas basada en tecnologías web - GeekNews
Lynx - 웹 기술 기반 네이티브 앱 개발 도구
No aparece en los artículos recomendados para ver juntos.