Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

 Thinking beyond platforms with KMP

Avatar for Bedanta Bikash Borah Bedanta Bikash Borah
December 07, 2024
10

 Thinking beyond platforms with KMP

Avatar for Bedanta Bikash Borah

Bedanta Bikash Borah

December 07, 2024
Tweet

Transcript

  1. iOS Android 100% Native Business logic + User Interface Viper

    Arch 100% Native Business logic + User Interface Clean + MVP 2X effort 100% code duplication
  2. State machines St a rter St a te Lo a

    ding Succes F a ilure E ff ects Events Render
  3. Parallel Execution D a t a Models Upd a te

    E ff ect H a ndlers Event Sources Glue code Renderer To be done f irst
  4. —> Parallel Execution D a t a Models Upd a

    te E ff ect H a ndlers Event Sources Glue code Renderer P a r a llel
  5. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m
  6. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m
  7. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m
  8. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform
  9. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC
  10. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  11. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  12. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 FA FA- a ndroid FA-ios a rm64 FA-iosX64 FA-iossim..
  13. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  14. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  15. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  16. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  17. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  18. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 XcFr a mework
  19. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Fe a tureA
  20. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Fe a tureA
  21. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Fe a tureA Fe a tureB
  22. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Fe a tureA Fe a tureB
  23. Fe a tureA Fe a tureB @interface FeatureBGoMobius : ...

    @interface FeatureAGoMobius : ... Objc He a der Objc He a der GoMobius GoMobius
  24. Fe a tureA Fe a tureB @interface FeatureBGoMobius : ...

    @interface FeatureAGoMobius : ... Objc He a der Objc He a der __attribute__((swift_name("GoMobius"))) __attribute__((swift_name("GoMobius"))) GoMobius GoMobius
  25. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Fe a tureA Fe a tureB
  26. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1
  27. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Umbrell a
  28. iOS App Submodule Submodule Submodule Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a FA- V 0.0.1 Umbrell a export(project(:featureA))
  29. iOS App Submodule Submodule Submodule Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a FA- V 0.0.1 Umbrell a export(project(:featureA)) export(project(:featureB))
  30. iOS App Submodule Submodule Submodule Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a FA- V 0.0.1 Umbrell a export(project(:featureA)) export(project(:featureB)) export(project(:gomobius))
  31. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Umbrell a
  32. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Umbrell a
  33. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Umbrell a
  34. iOS App Submodule Submodule Submodule Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a FA- V 0.0.1 Umbrell a export( export( export( project(:featureA) project(:featureB) project(:gomobius) ) ) )
  35. iOS App Submodule Submodule Submodule Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a Umbrell a FA- V 0.0.1 FA FA-ios a rm64 FA-iosX64 FA-iossim.. FA- a ndroid export( export( export( project(:featureA) project(:featureB) project(:gomobius) ) ) )
  36. iOS Ap Submod Submod Submod Gojek Artif a ctory GoMobius

    Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB a Umbrell a FA- V 0.0.1 FA FA-ios a rm64 FA-iosX64 FA-iossim.. FA- a ndroid export( export( export( ) ) ) “com.gojek.partner:FA:0.0.1” “com.gojek.partner:FB:0.0.2” “com.gojek.partner:goMobius:0.0.2”
  37. GoP a rtner Android App iOS App Submodule Submodule Submodule

    Gojek Artif a ctory GoMobius Clickstre a m GoP a rtnerMultipl a tform Fe a tureA Fe a tureB Fe a tureC FA- V 0.0.1 Umbrell a
  38. protected val ratingSummeryModel : StateFlow<CustomerRatingSummeryModel> Kotlin @property (readonly) FmwKotlinUnit *(^(^ratingsSummaryModelNative)(FmwKotlinUnit

    *(^)(FmwCustomerRatingSummeryModel *, FmwKotlinUnit *), FmwKotlinUnit *(^) (NSError * _Nullable, FmwKotlinUnit *)))(void) __attribute__((swift_name(“ratingsSummaryModelNative"))); Objective C
  39. Swift private func listenForModelUpdate() { createPublisher(for: ratingsSummaryModelNative) .receive(on: DispatchQueue.main) .sink(receiveCompletion:

    { _ in }, receiveValue: { [weak self] value in guard let renderer = self else { return } value.renderState(renderer: renderer) } ).store(in: &cancelStore) } KMP-NativeCoroutines
  40. Other issues with iOS Suspend functions and Flows in swift

    Enums and Sealed Classes SKIE Crash Logs on iOS Enums and Sealed Classes, Default Arguments, Global Functions Cr a shKiOS KMM Bridge Kermit Xcode-kotlin