- TikTok đã mã nguồn mở lớp hạ tầng được xây dựng để vận hành engine Lynx ở quy mô production trong ứng dụng của mình. Cung cấp tích hợp từ scaffolding ứng dụng, build, native bridge đến điều hướng
- Giống như React Native cần Expo, đây là framework hạ tầng production để thực sự vận hành ứng dụng trên engine Lynx
- Chỉ với một lệnh CLI duy nhất, có thể lập tức tạo ra một dự án ứng dụng Lynx hoàn chỉnh kèm native shell Android/iOS, đồng thời thực hiện build → cài đặt → chạy trong một lần
- Với Sparkling Method, chỉ cần viết khai báo TypeScript là có thể tự động sinh mã Kotlin/Swift để triển khai bridge JS↔native an toàn về kiểu
- Với điều hướng URL scheme hợp nhất theo dạng
hybrid://, việc routing giữa trang Lynx và màn hình native được xử lý trong một hệ thống duy nhất
Vị trí của Sparkling: mối quan hệ với Lynx
- Lynx là engine render UI đa nền tảng do TikTok công bố; nếu viết mã theo cách tương tự React thì đây là framework vẽ màn hình Android/iOS bằng rendering native
- Bản thân Lynx là một "engine rendering", nên để vận hành ứng dụng thực tế vẫn cần thêm hạ tầng như pipeline build, giao tiếp native↔JS, điều hướng trang, truy cập storage/media
- Sparkling đảm nhiệm vai trò của lớp hạ tầng này, tức framework ứng dụng chạy trên engine Lynx
- Cũng như chỉ với React Native thì khó làm ứng dụng hoàn chỉnh và cần Expo, chỉ với Lynx cũng khó vận hành ứng dụng quy mô lớn, và Sparkling lấp đầy khoảng trống đó
- Hiện đang ở giai đoạn public beta, API đang tiếp tục được mở rộng và tài liệu được cải thiện
CLI scaffolding và build ứng dụng
- Chỉ với một dòng
npm create sparkling-app@latest my-app là có thể tạo một dự án hoàn chỉnh kèm native shell Android/iOS
- Dùng
npx sparkling build để build bundle Lynx, và npx sparkling run:android/run:ios để build → cài đặt → chạy trong một lần
- Dùng
npx sparkling dev để chạy hot reload development server (cổng mặc định 5969, là dãy số khi gõ LYNX trên bàn phím điện thoại)
- Dùng
npx sparkling doctor để tự động chẩn đoán môi trường phát triển như Node.js, JDK, Android SDK, Xcode, CocoaPods
- Dùng
npx sparkling autolink để tự động đăng ký dependency Gradle/Podfile của module Sparkling Method và sinh mã native registry
- Dùng
npx sparkling copy-assets để sao chép bundle đã biên dịch vào thư mục tài nguyên Android/iOS
Sparkling Method — bridge JS↔native an toàn về kiểu
- Chỉ cần viết khai báo hàm trong file TypeScript
.d.ts, CLI (sparkling-method-cli codegen) sẽ tự động sinh mã native Kotlin/Swift và phần triển khai TS
- Chỉ cần kế thừa abstract class đã được tạo và triển khai phần business logic native, là có thể gọi trực tiếp từ JS
- Cung cấp sẵn các Method built-in như Navigation (router), Storage (kho key-value), Media (camera/album/file)
- Tên package theo dạng
sparkling-<module>, tên method theo quy ước <module>.<action> (ví dụ: router.open)
- Sau khi phát hành lên npm, phía dùng chỉ cần
npm install + npx sparkling autolink là hoàn tất tích hợp
Điều hướng hợp nhất dựa trên scheme
- Với URL scheme hợp nhất dạng
hybrid://lynxview_page?bundle=main.lynx.bundle&title=Home, có thể route trang Lynx và màn hình native theo cùng một cơ chế
- Thiết kế cấu trúc đa trang nơi mỗi trang có bundle entrypoint độc lập, phù hợp cho ứng dụng quy mô lớn
- Trong hàm
navigate(), ngoài các khóa được định nghĩa sẵn còn có thể truyền tham số tùy chỉnh vào URL scheme
Tích hợp dần vào ứng dụng hiện có (Brownfield)
- Không chỉ cho ứng dụng mới, Sparkling còn có thể nhúng container vào ứng dụng Android/iOS hiện có để áp dụng dần từng bước
- Android: sau khi thêm Maven artifact (
com.tiktok.sparkling:sparkling:2.0.0), khởi tạo bằng HybridKit.init() rồi dùng Sparkling.build(context).navigate() để mở container
- iOS: sau khi thêm CocoaPods (
pod 'Sparkling', '2.0.0'), dùng SPKRouter.create(withURL:) để push controller hoặc SPKContainerView để nhúng view
- Sao chép file
.lynx.bundle đã build vào asset của ứng dụng native, rồi chỉ định bundle tương ứng bằng tham số bundle=
Cấu trúc dự án
packages/sparkling-sdk: Sparkling SDK cốt lõi
packages/sparkling-method: Sparkling Method SDK (bridge JS↔native)
packages/methods: package Sparkling methods built-in (Navigation, Storage, Media)
packages/sparkling-app-cli: CLI build và chạy ứng dụng Sparkling
packages/create-sparkling-app: CLI scaffolding ứng dụng
packages/sparkling-method-cli: công cụ codegen cho Sparkling Method
packages/sparkling-types: gom định nghĩa kiểu GlobalProps vào một package duy nhất
packages/playground: ứng dụng Playground cho phát triển cục bộ
Tech stack và môi trường
- Môi trường Node.js ^22 || ^24, pnpm v10.26.0
- Android: yêu cầu JDK 11 trở lên, SDK android-34
- iOS: cần Xcode 16+, Ruby ≥2.7 <3.4, CocoaPods
- Cấu hình đa ngôn ngữ gồm TypeScript, Swift, Kotlin, JavaScript
- Giấy phép Apache 2.0
1 bình luận
Lynx - công cụ phát triển ứng dụng native dựa trên công nghệ web - GeekNews
Lynx - 웹 기술 기반 네이티브 앱 개발 도구
Không thấy xuất hiện trong mục các bài viết nên xem cùng.