Compose Super Charts
Compose Super Charts is a Kotlin Multiplatform charting library built with Compose. It keeps chart APIs readable, puts styling into configuration objects, and shares chart components across Android, iOS, and desktop targets.
The library is being prepared for release. The sample app is the quickest way to explore the available charts, compare behavior across platforms, and find useful areas to contribute.
What's Included
| Chart | Supports |
|---|
| Line chart | Multiple series, solid/dashed lines, solid/hollow points, optional area fill, tappable legends, tooltips, scrolling, label rotation, value formatting |
| Area chart | Filled line chart behavior with the same data model and styling approach as line charts |
| Column chart | Standard, clustered, and stacked columns, top/bottom x-axis, tappable legends, value labels, scrolling, rotated labels, tooltips |
| Bar chart | Standard, clustered, and stacked horizontal bars, left/right y-axis, tappable legends, value labels, scrolling, tooltips |
| Pie chart | Pie and doughnut styles, center label/value, slice spacing, active slice offset, legends, labels, tooltips |
| Combined chart | Column and line values in one view for comparing two related measures |
| Range chart | Horizontal start/end ranges for timelines, schedules, and interval data |
| Pyramid chart | Pyramid and funnel layouts, segment labels, legends, tooltips |
| Gauge chart | Configurable arc range, value arc animation, needle, labels, tooltip support |
| Bubble chart |
Shared Features
Project Layout
compose-super-charts/
compose-super-charts/ Core chart library module
sample-app/ Shared Android/iOS sample app
sample-desktop/ Desktop sample launcher
iosApp/ Xcode project for the iOS sample
Library code is grouped by responsibility:
components/atoms/ Small reusable UI pieces
components/molecules/ Shared chart pieces such as legends, tooltips, slots, cards, and state views
components/organisms/ Complete chart composables
models/ Data and style configuration objects
utils/ Accessibility, formatting, modifiers, and export helpers
domain/ Chart math helpers
Running The Project
From the repository root:
./gradlew :compose-super-charts:compileDebugKotlinAndroid
./gradlew :sample-app:compileDebugKotlinAndroid
./gradlew :sample-app:compileKotlinDesktop
Run the desktop sample:
./gradlew :sample-desktop:run
Install the Android sample:
./gradlew :sample-app:installDebug
Open the iOS sample from iosApp/iosApp.xcodeproj after the Kotlin Multiplatform project has synced.
Installation
After the first Maven Central release is available, add:
dependencies {
implementation("io.github.kotalsumit:compose-super-charts:1.1.1")
}
Until the Maven Central publication is live, add the module locally:
include(":compose-super-charts")
Then depend on it from your Compose module:
dependencies {
implementation(project(":compose-super-charts"))
}
Publishing
The library is configured for Maven Central publishing through the Central Portal.
Before publishing, create and verify the io.github.kotalsumit namespace in Maven Central, then add these GitHub Actions secrets:
MAVEN_CENTRAL_USERNAME
MAVEN_CENTRAL_PASSWORD
SIGNING_PASSWORD
GPG_KEY_CONTENTS_BASE64
The release workflow runs when a GitHub release is published. It uploads artifacts to Maven Central, where the deployment can be reviewed and released.
Example
For product UIs that need their own tooltip or legend presentation, pass tooltipContent, legendItemRenderer, or legendMarkerRenderer in ChartStyleConfig. These hooks are optional; the built-in tooltip and legend remain the default.
Use ChartScaffold when the chart needs local header, footer, or overlay content without creating another app-side wrapper. Use AnalyticsChartCard when a product screen wants a reusable card with a title, summary value, action slot, and chart content.
Use tick providers only when the default evenly spaced ticks are not enough. Formatters control labels; providers control the actual values shown on the axis.
Contributing
Small, focused pull requests are easiest to review. Before opening one:
- Run the relevant compile commands.
- Test the changed chart in the sample app.
- Include screenshots or a short recording for visual changes.
- Mention Android, desktop, or iOS testing in the PR.
- Keep public API changes intentional and easy to spot.
When adding a chart, follow the existing shape:
Current Priorities
- Keep tooltip behavior consistent near chart edges.
- Keep sample screens useful for manual testing.
- Improve accessibility coverage as interactions become richer.
- Add tests around chart math and configuration edge cases.
- Prepare publishing and release packaging.
License
Apache License 2.0. See LICENSE.