4 points par GN⁺ 2026-03-16 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • TikTok a publié en open source la couche d’infrastructure qu’il a construite pour exploiter le moteur Lynx à l’échelle de la production dans ses applications. Elle intègre l’ensemble, du scaffolding d’app à la compilation, aux bridges natifs et à la navigation
  • De la même manière que React Native a besoin d’Expo, il s’agit d’un framework d’infrastructure de production permettant d’exploiter réellement des applications au-dessus du moteur Lynx
  • Avec une seule commande CLI, il crée instantanément un projet d’application Lynx complet avec shell natif Android/iOS, puis enchaîne compilation → installation → exécution en une seule fois
  • Avec Sparkling Method, qui génère automatiquement du code Kotlin/Swift à partir de simples déclarations TypeScript, il permet d’implémenter un bridge JS↔natif type-safe
  • Un système de navigation unifiée via un schéma d’URL au format hybrid:// gère dans un cadre unique le routage entre pages Lynx et écrans natifs

Positionnement de Sparkling : sa relation avec Lynx

  • Lynx est un moteur de rendu d’interface cross-platform publié par TikTok : on écrit le code dans un style proche de React, puis le framework dessine les écrans Android/iOS avec un rendu natif
  • Comme Lynx n’est en lui-même qu’un « moteur de rendu », l’exploitation réelle d’une application nécessite en plus une pipeline de build, la communication natif↔JS, la navigation entre pages, l’accès au stockage et aux médias, etc.
  • Sparkling joue précisément ce rôle de couche d’infrastructure et sert de framework d’application au-dessus du moteur Lynx
  • De même qu’il est difficile de créer une application avec React Native seul et qu’Expo devient nécessaire, Lynx seul rend difficile l’exploitation d’applications à grande échelle, et Sparkling vient combler cet écart
  • Le projet est actuellement en bêta publique, avec une extension progressive des API et une amélioration continue de la documentation

CLI de scaffolding et de build d’application

  • npm create sparkling-app@latest my-app crée en une seule ligne un projet complet incluant des shells natifs Android/iOS
  • npx sparkling build compile les bundles Lynx, tandis que npx sparkling run:android / run:ios enchaînent build → installation → exécution en une seule commande
  • npx sparkling dev lance un serveur de développement avec hot reload (port par défaut 5969, correspondant à LYNX sur un clavier téléphonique)
  • npx sparkling doctor effectue un diagnostic automatique de l’environnement de développement : Node.js, JDK, Android SDK, Xcode, CocoaPods, etc.
  • npx sparkling autolink enregistre automatiquement les dépendances Gradle/Podfile des modules Sparkling Method et génère le code du registre natif
  • npx sparkling copy-assets copie les bundles compilés dans les répertoires de ressources Android/iOS

Sparkling Method — bridge JS↔natif type-safe

  • Il suffit d’écrire les déclarations de fonctions dans un fichier TypeScript .d.ts pour que la CLI (sparkling-method-cli codegen) génère automatiquement le code natif Kotlin/Swift ainsi que l’implémentation TS
  • En héritant des classes abstraites générées, il suffit ensuite d’implémenter la logique métier native pour qu’elle soit directement appelable depuis JS
  • Des Methods intégrées fournissent Navigation (routeur), Storage (stockage clé-valeur), Media (caméra/album/fichiers)
  • Le nom des packages suit le format sparkling-<module> et les méthodes la convention \<module\>.\<action\> (ex. : router.open)
  • Une fois publié sur npm, l’intégration côté consommateur est terminée avec npm install + npx sparkling autolink

Navigation unifiée basée sur un schéma

  • Un schéma d’URL unifié au format hybrid://lynxview_page?bundle=main.lynx.bundle&title=Home permet de router de la même manière les pages Lynx et les écrans natifs
  • La structure multi-page, dans laquelle chaque page possède son propre point d’entrée de bundle, convient aux applications de grande taille
  • La fonction navigate() peut transmettre au schéma URL des paramètres personnalisés en plus des clés prédéfinies

Intégration progressive dans une application existante (Brownfield)

  • Sparkling peut être introduit progressivement non seulement dans une nouvelle application, mais aussi en embarquant un conteneur Sparkling dans une app Android/iOS existante
  • Android : après ajout de l’artefact Maven (com.tiktok.sparkling:sparkling:2.0.0), initialiser avec HybridKit.init() puis ouvrir le conteneur via Sparkling.build(context).navigate()
  • iOS : après ajout de CocoaPods (pod 'Sparkling', '2.0.0'), pousser un contrôleur avec SPKRouter.create(withURL:) ou embarquer une vue avec SPKContainerView
  • Copier les fichiers .lynx.bundle compilés dans les assets de l’application native, puis indiquer le bundle concerné avec le paramètre bundle=

Structure du projet

  • packages/sparkling-sdk : SDK Sparkling principal
  • packages/sparkling-method : SDK Sparkling Method (bridge JS↔natif)
  • packages/methods : package de methods Sparkling intégrées (Navigation, Storage, Media)
  • packages/sparkling-app-cli : CLI de build et d’exécution des applications Sparkling
  • packages/create-sparkling-app : CLI de scaffolding d’application
  • packages/sparkling-method-cli : outillage de codegen pour Sparkling Method
  • packages/sparkling-types : centralisation des définitions de type GlobalProps dans un package unique
  • packages/playground : application Playground pour le développement local

Stack technique et environnement

  • Environnement Node.js ^22 || ^24, pnpm v10.26.0
  • Android : JDK 11 ou plus, SDK android-34 requis
  • iOS : Xcode 16+, Ruby ≥2.7 <3.4, CocoaPods requis
  • Composition multi-langage avec TypeScript, Swift, Kotlin, JavaScript, etc.
  • Licence Apache 2.0

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.