Appearance
PlatformHub ViewProvider (Previously Navigation)
These pages will grow to provide a knowledge base for PlatformHub ViewProvider
PlatformHub provides the functionality needed to request views between the journey plugins. It should be used for obtaining views for cross-plugin navigation. ViewProvider should not be used for plugin internal view obtaining. All decoupling principles are applied to the ViewProvider capability meaning there is no shared type or shared code. PlatformHub operates on generic view entities (UIViewController / SwiftUI View on iOS or Fragment / Activity / @Composable on aOS) that you can obtain by PlatformHub ViewProvider Android / ViewQuery (iOS) messages.
In the future this mechanism will replace both Mobile Navigation Libraries: iOS and Android.
This document assumes that reader has a knowledge of PlatformHub and basic idea behind that framework, as many of the terms, objectives and solved problems are common also for the navigation feature.
What problems are we trying to solve?
Our goals:
- We are trying to make it easy for journeys to obtain views from other plugins.
- We want to make it possible without a strict code dependency (evading dependency hell), reducing compile time and easing the deployment process
- We want to enable use of declarative UI (
SwiftUIandJetpack Compose) - Do not change the way developers build internal module navigation
PlatformHub ViewProvider as a solution
- PlatformHub was extended to allow exchange of system-provided user interface objects and structures (
Activities,Fragments,@Composable,UIViewControllers, SwiftUIViews), not exposing actual types to avoid introducing dependency issues. - On iOS, ViewProvider provides bridging layer for
UIKitandSwiftUI, making it easy to build navigation between plugins built in different technologies.

Features
- Android features are described in Android specific documentation
- iOS features are described in iOS specific documentation
Decision log
All decisions made during the creation of PlatformHub ViewProvider:
| Summary | Description | Status | Link |
|---|---|---|---|
| Android Navigation Module | [2023-04-04] PlatformHub Core team requested to separate Navigation to the separate module to maintain separation of concerns. | Done | LINK |
| Android Navigation Module | [2024-05-16] PlatformHub Core team requested to rename Navigation capability to ViewProvider capability to better describe actual functionality. | Done | LINK |