-
Notifications
You must be signed in to change notification settings - Fork 0
Closed Jul 31, 2026
Due by August 30, 2026
•Closed UI migration plan from Android View System to Jetpack compose
Detailed Jetpack Compose Migration Plan
This document outlines the granular steps for migrating the ViewToolkit-based project to Jetpack Compose.
The goal was to modernize the RHO Studio UI by eliminating all legacy XML layouts, Fragments, and View-based navigation.
1. Architecture Strategy: MVVM Preservation
- View Layer: Replaced 100% with Jetpack Compose.
- ViewModel Layer: Preserved as the "Single Source of Truth."
- State Management: Bridged
LiveDatato Compose usingobserveAsState()and introducedMutableStatein ViewModels for direct UI reactivity. - Logic Migration: Moved UI-specific logic (like 300ms input debouncing) from Fragments to ViewModels to ensure unit-testability.
2. Implementation Phases
Phase 1: Preparation and Environment Setup
Verify and Align Dependencie:
Although build.gradle.kts already has Compose enabled, we need to ensure all required libraries for the specific migration steps are present.
- Checklist:
-
compose = trueinbuildFeatures -
androidx.compose.bom -
androidx.activity.compose -
androidx.lifecycle.viewmodel.compose(Verify availability) -
androidx.compose.runtime.livedata(Needed for existing LiveData in ViewModels)
-
Phase 2: Atomic Component Migration (Auth & Home)
- Inputs: Create
LoginEmailFieldandLoginPasswordFieldwith customOutlinedTextFieldDefaultscolors. - Actions: Create
LoginButtonwith reactive loading states. - Lists: Replace
RecyclerViewandServiceAdapterwithLazyVerticalGridinServiceList.kt. - Globals: Make
PageHeaderandPageFooteras reusable Composables.
Phase 3: Screen & Activity Consolidation
- Screen Assembly: Built
LoginScreenandHomeScreento unify the components. - Main Entry Point: Migrated
MainActivitytoComponentActivity. - Compose Navigation: Implemented a
NavHostinMainActivityto handle routing based onSessionManagerstate, replacingnav_graph.xml.
Phase 4: XML Layouts clean up
- XML Deletion: Deleted all files in
res/layout/andres/navigation/. - Fragment Deletion: Removed the entire Fragment hierarchy and
BaseFragment.kt. - Build Clean-Up: Disabled
viewBindinganddataBindinginbuild.gradle.kts.
4. Security & Visual Enhancements
- Credential Safety: Implemented
resetForm()inLoginViewModelusing Compose state to ensure form clearing upon logout. - Visual Identity: Synchronized the brand gradient background (RhoRed -> SilverGray -> Black) across all primary screens.
- Custom Borders: Applied specific Rho.studio colors.
5. Verification Plan
- Build Integrity: Project must build successfully with zero XML dependencies.
- Functional Check: Navigation between Login and Home must be triggered automatically by
SessionManagerstate changes. - UI Check: Verify 300ms debounce on inputs and 100% color accuracy on brand elements.
100% complete
List view
0 of 0 selected 0 issues of 0 selected
There are no open issues in this milestone
Add issues to milestones to help organize your work for a particular release or project. Find and add issues with no milestones in this repo.