Port to Jetpack Compose and adopt Material 3 Expressive#294
Merged
Conversation
Google recently announced that they will be focusing their efforts on Compose and all of the old View-based libraries are now in maintenance mode [0][1]. This commit is mostly a direct 1:1 port of the old UI to Compose. The main difference in UX is that the interactive configuration dialog for rclone remotes is now a regular activity. Compose does not support pinning dialogs to the bottom of the screen, so RSAF's old option for that has been removed. A regular activity with Back/Next buttons at the bottom prevents them from jumping around with each question. Other than that, this is mostly just UI changes to adopt Material 3 Expressive design. A couple of the old libraries are still kept around: * material-components-android is still used for android:colorBackground in the View theme so that the splash screen and the area surrounding the Activity when using predictive back gestures has the same color as the app's background. * preferences is still used just for the PreferenceManager class. The framework version of the class is deprecated. The various screens in the app are still built around activities instead of switching over to the new navigation3 library. This is an intentional choice because navigation3 currently has no good mechanism for passing around results in a locally scoped way (like Activity's setResult()) and its predictive back animations don't look nearly as good as what Android has builtin for activities. Accessibility-wise, the experience should be equivalent to before. I've tested using nearly all of the app's UI elements when navigating using only the Talkback screen reader. The main downside is that Compose makes the APK noticeably larger. Not much can be done about that since we already enable all of R8's optimizations. [0] https://developer.android.com/develop/ui/compose/first [1] https://m3.material.io/blog/material-is-compose-first Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
chenxiaolong
added a commit
that referenced
this pull request
Jun 1, 2026
Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Google recently announced that they will be focusing their efforts on Compose and all of the old
View-based libraries are now in maintenance mode [0][1].This commit is mostly a direct 1:1 port of the old UI to Compose. The main difference in UX is that the interactive configuration dialog for rclone remotes is now a regular activity. Compose does not support pinning dialogs to the bottom of the screen, so RSAF's old option for that has been removed. A regular activity with Back/Next buttons at the bottom prevents them from jumping around with each question.
Other than that, this is mostly just UI changes to adopt Material 3 Expressive design. A couple of the old libraries are still kept around:
material-components-android is still used for
android:colorBackgroundin theViewtheme so that the splash screen and the area surrounding theActivitywhen using predictive back gestures has the same color as the app's background.preferences is still used just for the
PreferenceManagerclass. The framework version of the class is deprecated.The various screens in the app are still built around activities instead of switching over to the new navigation3 library. This is an intentional choice because navigation3 currently has no good mechanism for passing around results in a locally scoped way (like Activity's
setResult()) and its predictive back animations don't look nearly as good as what Android has builtin for activities.Accessibility-wise, the experience should be equivalent to before. I've tested using nearly all of the app's UI elements when navigating using only the Talkback screen reader.
The main downside is that Compose makes the APK noticeably larger. Not much can be done about that since we already enable all of R8's optimizations.
[0] https://developer.android.com/develop/ui/compose/first
[1] https://m3.material.io/blog/material-is-compose-first