Skip to content
CAI
Software that uses CAICheck a score

raamcosta/compose-destinations

60.2

Adequate · 28 September 2026

16.2k

lines of production code

Kotlin

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.