Skip to content

Port to Jetpack Compose and adopt Material 3 Expressive#294

Merged
chenxiaolong merged 1 commit into
masterfrom
compose
Jun 1, 2026
Merged

Port to Jetpack Compose and adopt Material 3 Expressive#294
chenxiaolong merged 1 commit into
masterfrom
compose

Conversation

@chenxiaolong
Copy link
Copy Markdown
Owner

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

@chenxiaolong chenxiaolong self-assigned this Jun 1, 2026
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>
@chenxiaolong chenxiaolong merged commit e46afbe into master Jun 1, 2026
1 check passed
@chenxiaolong chenxiaolong deleted the compose branch June 1, 2026 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant