Skip to content

2.0.0 — Compose modernization

Latest

Choose a tag to compare

@Gurupreet Gurupreet released this 15 Sep 22:32
565690c

First tagged release since 1.0.2 (September 2021). The app has been brought onto a current Jetpack Compose toolchain, gained seven new demo screens, and now has a CI pipeline that actually runs its tests.

Toolchain and platform

  • Kotlin 2.1.20 with the K2 compiler and the Compose Compiler Gradle plugin (#196)
  • compileSdk / targetSdk 35 (Android 15), AGP 8.7.3, Gradle 8.9 (#197)
  • Compose BOM 2024.12.01 — Compose 1.7.6, Material3 1.3.1 (#204)
  • Gradle version catalog replaces the hand-rolled buildSrc constants (#214)
  • Room annotation processing moved from KAPT to KSP (#195)
  • Navigation Compose 2.8.9 with type-safe @Serializable routes (#206)
  • ExoPlayer 2.x → AndroidX Media3 1.5.1 (#207)
  • Coil 3.1.0 (#208), AndroidX Lifecycle 2.8.7 (#205)
  • Foundational dependencies refreshed to SDK-35 baselines (#219), Material 1.14.0 (#228), Gson 2.14.0 (#231)

New demos and screens

  • Predictive Back gesture demo for Android 15+ (#220)
  • Shared Element / Shared Bounds transitions (#222)
  • Adaptive layouts for large screens — NavigationSuiteScaffold and ListDetailPaneScaffold (#211)
  • Contrast-aware Material 3 theme demo, reading the system contrast setting (#221)
  • Pull-to-Refresh using Material3 PullToRefreshBox (#209)
  • Swipe-to-Dismiss list with delete, archive and undo (#210)
  • Infinite looping carousel with auto-advance (#212, #177)

Also landed since 1.0.2: Meditation UI (#157), Compose Wear demo (#130), Betty demo (#120), Cascade menu template (#146), animated heart button (#154), timer animation (#153), clock and timer widgets (#116, #117), date and time pickers (#143), Material You across templates and the home tab (#132#139, #144), and a series of accessibility fixes for screen readers and content descriptions (#122, #124, #127, #128).

Testing

  • Roborazzi screenshot / golden testing, first suite in :components:tags (#223)
  • Compose UI tests for the tags, carousel and login modules (#213)
  • Unit tests and screenshot verification now run on every pull request — previously neither had ever executed in CI (#225)

CI and security

  • PR gate rebuilt: the build job was dying with OutOfMemoryError in lint and D8 before reaching any test task. Gradle memory raised, workers capped, lint split into its own job (#225)
  • CodeQL scanning and dependency review (#225), workflow hardening with least-privilege tokens and SHA-pinned actions (#216)
  • Dependabot for Gradle and GitHub Actions (#217, config corrected in #225)
  • GitHub Actions updated across all workflows (#229)

Fixes

  • The TMDB API key is no longer hardcoded in source. It is read from local.properties (tmdbApiKey) or the TMDB_API_KEY environment variable, and HTTP body logging is restricted to debug builds (#225)
  • Movie detail poster never expanded after the Coil 3 upgrade, because painter.state is now a StateFlow and the old is Success check could never match (#225)
  • Similar-movies section fired a network request on every recomposition (#225)
  • BiometricActivity in the pinlock template is no longer exported (#225)

Known limitations

  • Edge-to-edge is not yet adopted. The app targets SDK 35, where Android draws screens edge-to-edge regardless, but no enableEdgeToEdge() or inset handling is in place yet, so content can sit under the system bars on Android 15 devices.
  • Kotlin 2.4 (#230), kotlinx-serialization 1.11 (#227) and Compose BOM 2026.09 (#226) are open and blocked: Kotlin 2.4 turns the deprecated kotlinOptions {} DSL into a hard error, and the new Compose BOM needs a higher compileSdk than 35.

Getting the app

app-debug.apk below is debug-signed and installable directly. This repository has no release signing configuration, so no release-signed artifact is published.

Requires Android 7.1 (API 25) or newer. Building from source needs JDK 17 and Android Studio Ladybug or later. The MoviesApp demo needs your own TMDB API key in local.properties as tmdbApiKey=YOUR_KEY.

Full changelog: 1.0.2...2.0.0