Upgrade to Pro — share decks privately, control downloads, hide ads and more …

 Thinking beyond platforms with KMP

Bedanta Bikash Borah
December 07, 2024
6

 Thinking beyond platforms with KMP

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