raamcosta/compose-destinations
60.2
Adequate · 28 September 2026
16.2k
lines of production code
Kotlin
primary language
2
measurements over time
What this system is
This system is a Kotlin library for type-safe navigation in Jetpack Compose applications, utilizing KSP code generation to automatically create navigation graphs from annotated composables. It supports complex navigation patterns including nested graphs, deep links, and various destination styles such as dialogs and bottom sheets. The library extends its capabilities to Wear OS devices and includes sample applications demonstrating integration with dependency injection and state management.
How it got here
2021 — Compose Destinations library launch
6 changes.
The project introduced the Compose Destinations library for type-safe Jetpack Compose navigation, featuring a new KSP processor and dedicated code generation module. This release was supported by a significant build infrastructure overhaul, migrating from legacy buildSrc to Gradle Version Catalogs and upgrading to Gradle 8.14.3 and KSP 2.
2022–2024 — Wear OS and bottom-sheet support
6 changes.
This period focused on expanding the library's platform coverage and navigation patterns by introducing dedicated Wear OS support and bottom-sheet destination styles. The work included creating new modules for Wear OS navigation and samples, while also restructuring the playground app to demonstrate advanced features like deep linking and nested graphs.
Features
Added FeatureZ playground module with navigation screens
A new FeatureZ module has been added to the playground, providing a demonstration of Compose Destinations navigation. It includes a home screen that navigates to an internal second screen, as well as a public side screen that accepts arguments, illustrating how to configure and use navigation destinations within an external module graph.
playground/featurez · high confidence
Initial KSP processor implementation for Compose Destinations
This change introduces the core Kotlin Symbol Processing (KSP) module for the Compose Destinations library. It adds the \ProcessorProvider\ and \Processor\ classes that serve as the entry point for the KSP plugin, along with supporting infrastructure such as \ConfigParser\ for reading build options, \KspLogger\ for debug output, and \KspCodeOutputStreamMaker\ for generating code files. The diff also includes the \KspToCodeGenDestinationsMapper\ and \KspToCodeGenNavGraphsMapper\ which translate annotated composables and navigation graphs into code generation parameters, and utility classes like \DestinationMappingUtils\ and \DefaultParameterValueReader\ to handle annotation arguments and default values.
compose-destinations-ksp · high confidence
Initial Wear OS navigation support
This change introduces a new \compose-destinations-wear\ module that enables navigation on Wear OS devices. It provides a \WearNavHostEngine\ and a \rememberWearNavHostEngine\ composable that integrates with \SwipeDismissableNavHost\ to support swipe-to-dismiss gestures. The implementation handles destination composition and graph navigation while explicitly throwing an error if Dialog-style destinations are used, as they are not supported on Wear OS.
compose-destinations-wear · high confidence
Initial Wear OS sample application
Adds a new \sample-wear\ module providing a complete Wear OS sample application. This includes the app entry point, a custom dependency injection container, and a full task-management UI built with Wear Compose (ScalingLazyColumn, SplitToggleChip, Dialogs) and Compose Destinations for navigation. The sample demonstrates Wear-specific features such as a standalone manifest configuration, a custom ViewModel factory, and remote input for text entry.
sample-wear · high confidence
Initial release of Compose Destinations navigation library
This entry introduces the Compose Destinations library, a new tool for type-safe navigation in Jetpack Compose. It provides a \DestinationsNavHost\ composable and a \@Destination\ annotation to automatically generate navigation graphs and destination specs from annotated composables. The library supports complex navigation features including nested graphs, deep links, activity destinations, and runtime animation overrides via a \ManualComposableCallsBuilder\. It also includes built-in support for dialog and bottom sheet styles, dependency injection via \DependenciesContainerBuilder\, and seamless integration with Android's SavedStateHandle for navigation arguments.
compose-destinations · high confidence
Introduce bottom-sheet navigation style support
This change adds a new \DestinationStyleBottomSheet\ style to the Compose Destinations library, allowing destinations to be presented as bottom sheets. It introduces the \bottomSheetComposable\ extension functions for both the library's generated navigation graph builder and manual \NavGraphBuilder\ usage, which integrate with Android's \BottomSheetNavigator\ and \ModalBottomSheetLayout\. The implementation includes specific scope classes (\BottomSheetDestinationScope\) to provide navigation context within the bottom sheet content, enabling developers to easily create slide-up navigation patterns.
compose-destinations-bottom-sheet · high confidence
Introduction of dedicated codegen module with KSP 2 and multi-module support
The navigation library now includes a new \compose-destinations-codegen\ module that extracts the core code generation logic into a KSP-independent component, enabling better modularity and preparation for KSP 2. This change introduces explicit support for multi-module projects via module name prefixes in generated routes and registry IDs, adds configuration options for generating Mermaid navigation graphs, and implements new destination styles including Dialog and Bottom Sheet. The code generator now handles complex navigation arguments such as Kotlin value classes, custom type serializers, and nullable arrays, while also improving package name sanitization to handle Java keywords like 'is' and 'in'.
compose-destinations-codegen · high confidence
New sample app demonstrating Compose Destinations navigation and state management
The sample application has been rewritten to showcase the Compose Destinations library. It features a complete task-management workflow with login/logout authentication, a task list, task details, and step management. The app implements a custom dependency injection container and ViewModel factory to integrate with Compose Destinations' navigation graph, handling navigation arguments via SavedStateHandle. It demonstrates various destination styles including standard screens, dialogs, and bottom sheets, along with a bottom navigation bar that manages back stack states.
sample · high confidence
Playground app restructured with new navigation, UI, and deep-linking capabilities
The playground application has been restructured to demonstrate advanced navigation features. It now includes a full app shell with a Scaffold, TopBar, BottomBar, and Drawer, wired to a Compose Destinations navigation graph. Key additions include support for deep links (both manifest-defined and runtime-generated via notifications), nested navigation graphs with external module destinations, and various destination styles such as dialogs and bottom sheets. The app also showcases ViewModel integration via a custom factory, shared element transitions, and result handling between destinations.
playground · high confidence
Behavioural changes
Removal of legacy buildSrc version management
The \buildSrc\ module has been removed, eliminating the centralized version management for Kotlin, Compose, and AndroidX dependencies that previously hardcoded versions such as Kotlin 1.5.21 and Compose 1.0.1. This change indicates a shift away from the \buildSrc\-based dependency configuration strategy, likely moving version control to a more modern Gradle convention (such as \libs.versions.toml\ or direct plugin management), thereby simplifying the build structure and removing obsolete version constraints.
buildSrc · high confidence
Dependencies
Gradle wrapper upgraded to version 8.14.3
The Gradle wrapper has been updated to use Gradle 8.14.3 (previously 7.0.2). This ensures that builds are executed with the newer Gradle distribution, which may bring performance improvements, new features, and compatibility updates to the build process.
gradle · high confidence
Migrate to Gradle Version Catalog and KSP 2
The project build system has been refactored to use the Gradle Version Catalog (defined in \gradle/libs.versions.toml\) for centralized dependency management, replacing the previous \buildSrc\ and hardcoded version constants. This migration includes updating core dependencies to modern versions, such as Kotlin 2.2.20, AGP 8.13.0, and Compose 1.9.3. Additionally, the project now explicitly enables KSP 2 via \ksp.useKSP2=true\ in \gradle.properties\ and configures the KSP plugin version dynamically using the catalog, ensuring compatibility with the updated Kotlin and KSP toolchains across all modules including the new \compose-destinations-wear\ and \compose-destinations-bottom-sheet\ libraries.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 60 → 60 (-0.2)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.0)
- Architecture 100 → 98 (-2.3)
- Maturity 60 → 60 (-0.2)
- Readiness 46 → 46 (+0.0)
- Security 70 → 70 (+0.0)
- Performance 100 (new)
New (3)
- Most significant orphaned file (compose-destinations-codegen/src/main/java/com/ramcosta/composedestinations/codegen/validators/InitialValidator.kt)
- Off the main sequence: :compose-destinations-codegen
- Projects may be oversized for their cohesion
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
raamcosta/compose-destinations was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c0741f827b8d1272f6d75f135bd0a9cbf680235d — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.