- TikTok, kendi uygulamalarında Lynx motorunu üretim ölçeğinde çalıştırmak için kurduğu altyapı katmanını açık kaynak olarak yayımladı. Uygulama iskeletinden build sürecine, native bridge'den navigasyona kadar entegre şekilde sunuyor
- React Native için Expo neyse, Lynx motoru üzerinde gerçek uygulamaları çalıştırmak için gereken üretim altyapısı framework'ü de bu
- Tek bir CLI komutuyla Android/iOS native shell içeren tam bir Lynx uygulama projesi anında oluşturuluyor ve build → kurulum → çalıştırma tek seferde yapılıyor
- Yalnızca TypeScript tanımları yazılarak Kotlin/Swift kodu otomatik üreten Sparkling Method ile tip güvenli JS↔native bridge uygulanıyor
hybrid:// biçimindeki birleşik URL şeması navigasyonu ile Lynx sayfaları ve native ekranlar arasındaki yönlendirme tek bir sistemde ele alınıyor
Sparkling'in konumu: Lynx ile ilişkisi
- Lynx, TikTok'un yayımladığı çapraz platform UI rendering motoru; React'e benzer şekilde kod yazıldığında Android/iOS ekranlarını native rendering ile çizen bir framework
- Lynx'in kendisi bir "rendering motoru" olduğu için, gerçek uygulama işletiminde build pipeline, native↔JS iletişimi, sayfa navigasyonu, storage/media erişimi gibi ek altyapılar gerekiyor
- Sparkling bu altyapı katmanı rolünü üstleniyor ve Lynx motorunun üzerinde çalışan uygulama framework'ü olarak konumlanıyor
- Yalnızca React Native ile uygulama geliştirmenin zor olup Expo'ya ihtiyaç duyulması gibi, yalnızca Lynx ile de büyük ölçekli uygulama işletmek zor; Sparkling bu boşluğu dolduruyor
- Şu anda public beta aşamasında ve API kapsamı ile dokümantasyon iyileştirilmeye devam ediyor
Uygulama iskeleti ve build CLI
npm create sparkling-app@latest my-app ile Android/iOS native shell içeren tam bir proje oluşturma
npx sparkling build ile Lynx bundle build'i, npx sparkling run:android/run:ios ile build → kurulum → çalıştırma tek adımda
npx sparkling dev ile hot reload geliştirme sunucusu çalıştırma (varsayılan port 5969, telefon tuş takımında LYNX'e karşılık gelen sayı)
npx sparkling doctor ile Node.js, JDK, Android SDK, Xcode, CocoaPods gibi geliştirme ortamını otomatik teşhis etme
npx sparkling autolink ile Sparkling Method modülleri için Gradle/Podfile bağımlılıklarının otomatik kaydı ve native registry kodu üretimi
npx sparkling copy-assets ile derlenmiş bundle'ı Android/iOS resource dizinlerine kopyalama
Sparkling Method — tip güvenli JS↔native bridge
- TypeScript
.d.ts dosyasına yalnızca fonksiyon tanımları yazıldığında, CLI (sparkling-method-cli codegen) Kotlin/Swift native kodunu ve TS implementasyonunu otomatik üretir
- Üretilen soyut sınıflar kalıtılarak yalnızca native iş mantığı uygulanır ve ardından JS tarafından doğrudan çağrılabilir
- Yerleşik Method'lar olarak Navigation (router), Storage (anahtar-değer deposu), Media (kamera/albüm/dosya) sunulur
- Paket adı
sparkling-<module> biçiminde, method adı ise <module>.<action> (ör. router.open) kuralını izler
- npm üzerinden yayımlandıktan sonra tüketici tarafta yalnızca
npm install + npx sparkling autolink ile entegrasyon tamamlanır
Şema tabanlı birleşik navigasyon
hybrid://lynxview_page?bundle=main.lynx.bundle&title=Home biçimindeki birleşik URL şeması ile Lynx sayfaları ve native ekranlar aynı şekilde yönlendirilir
- Her sayfanın bağımsız bir bundle entry point'ine sahip olduğu çok sayfalı yapı, büyük ölçekli uygulamalar için uygun bir tasarım sunar
navigate() fonksiyonunda önceden tanımlı anahtarların yanı sıra özel parametreler de şema URL'si üzerinden iletilebilir
Mevcut uygulamalara kademeli entegrasyon (Brownfield)
- Yalnızca yeni uygulamalarda değil, mevcut Android/iOS uygulamalarına Sparkling container embed edilerek de kademeli geçiş yapılabilir
- Android: Maven artifact'i (
com.tiktok.sparkling:sparkling:2.0.0) eklendikten sonra, HybridKit.init() ile başlatma → Sparkling.build(context).navigate() ile container açma
- iOS: CocoaPods (
pod 'Sparkling', '2.0.0') eklendikten sonra, SPKRouter.create(withURL:) ile controller push etme veya SPKContainerView ile view embed etme
- Build edilmiş
.lynx.bundle dosyası native uygulama asset'lerine kopyalanır ve bundle= parametresiyle ilgili bundle belirtilir
Proje yapısı
packages/sparkling-sdk: çekirdek Sparkling SDK
packages/sparkling-method: Sparkling Method SDK (JS↔native bridge)
packages/methods: yerleşik Sparkling method paketleri (Navigation, Storage, Media)
packages/sparkling-app-cli: Sparkling uygulamaları için build ve çalıştırma CLI
packages/create-sparkling-app: uygulama iskeleti oluşturma CLI'ı
packages/sparkling-method-cli: Sparkling Method codegen araçları
packages/sparkling-types: GlobalProps tip tanımlarını tek pakette birleştirir
packages/playground: yerel geliştirme için Playground uygulaması
Teknoloji yığını ve ortam
- Node.js ^22 || ^24, pnpm v10.26.0 ortamı
- Android: JDK 11 ve üzeri, android-34 SDK gerekli
- iOS: Xcode 16+, Ruby ≥2.7 <3.4, CocoaPods gerekli
- TypeScript, Swift, Kotlin, JavaScript gibi çok dilli yapı
- Apache 2.0 lisansı
1 yorum
Lynx - web teknolojileri tabanlı native uygulama geliştirme aracı - GeekNews
Lynx - 웹 기술 기반 네이티브 앱 개발 도구
Birlikte okunabilecek iyi yazılar arasında görünmüyor.