AppPear
ChartView
Swift

ChartView made in SwiftUI

Last updated Jul 7, 2026
5.6k
Stars
640
Forks
97
Issues
0
Stars/day
Attention Score
96
Language breakdown
Swift 100.0%
โ–ธ Files click to expand
README

SwiftUICharts

SwiftUICharts is a composable, SwiftUI-native chart library for iOS 13+.

2.0.0 is a major release focused on immutable configuration, environment-driven composition, and modifier-based APIs.

AI Agent Quick Context

Use this section when an AI agent generates code against this package.

API contract

  • Use only 2.x composable APIs.
  • Do not use legacy 1.x types or mutating chains.
  • Build charts with ViewModifier composition.
  • Keep data source semantics explicit:
- chartData([Double]) = categorical slots - chartData([(Double, Double)]) = numeric/continuous domain

Use these APIs

| Task | API | | --- | --- | | Set data | chartData(...) | | Set ranges | chartXRange(...), chartYRange(...) | | Style chart | chartStyle(...) | | Grid config | chartGridLines, chartGridStroke, chartGridBaseline | | Axis labels/ticks | chartXAxisLabels, chartYAxisLabels, chartXAxisAutoTicks, chartYAxisAutoTicks | | Line tuning | chartLineWidth, chartLineStyle, chartLineMarks, chartLineAnimation | | Shared interaction | chartInteractionValue(...) | | Callback interaction | chartSelectionHandler { event in ... } | | Streaming data | ChartStreamingDataSource + chartData(stream) | | Large datasets | chartPerformance(...) |

Avoid these legacy APIs

  • LineChartView, BarChartView, PieChartView, MultiLineChartView
  • .data(...), .rangeX(...), .rangeY(...)
  • .setAxisXLabels(...), .setNumberOfHorizontalLines(...)
  • .showChartMarks(...) (old form)

Installation

Add with Swift Package Manager:

https://github.com/AppPear/ChartView

For this release, use tag 2.0.0 (or from: "2.0.0" up to next major).

30-Second Quick Start

import SwiftUI
import SwiftUICharts

struct DemoView: View { var body: some View { AxisLabels { ChartGrid { LineChart() .chartData([12, 34, 23, 18, 36, 22, 26]) .chartYRange(10...40) .chartLineMarks(true, color: ColorGradient(.blue, .purple)) .chartStyle( ChartStyle( backgroundColor: .white, foregroundColor: ColorGradient(.blue, .purple) ) ) } .chartGridLines(horizontal: 5, vertical: 6) } .chartXAxisLabels(["M", "T", "W", "T", "F", "S", "S"]) .chartAxisColor(.secondary) .chartAxisFont(.caption) .frame(height: 220) .padding() } }

Feature Recipes

1) Mixed bar + line

AxisLabels {
    ChartGrid {
        BarChart()
            .chartData([2, 4, 1, 3, 5])
            .chartStyle(ChartStyle(backgroundColor: .white,
                                   foregroundColor: ColorGradient(.orange, .red)))

LineChart() .chartData([2, 4, 1, 3, 5]) .chartLineMarks(true) .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.blue, .purple))) } .chartGridLines(horizontal: 5, vertical: 5) } .chartXAxisLabels([(0, "A"), (1, "B"), (2, "C"), (3, "D"), (4, "E")], range: 0...4)

2) Shared interaction state

let selected = ChartValue()

VStack(alignment: .leading) { ChartLabel("Weekly Sales", type: .title) ChartLabel("Drag bars", type: .legend, format: "%.1f")

BarChart().chartData([14, 22, 18, 31, 26, 19, 24]) } .chartInteractionValue(selected)

3) Callback-based interaction

BarChart()
    .chartData([8, 11, 13, 9, 12])
    .chartSelectionHandler { event in
        guard event.isActive,
              let value = event.value,
              let index = event.index else { return }
        print("selected", index, value)
    }

4) Dynamic streaming data

@ObservedObject private var stream = ChartStreamingDataSource(
    initialValues: [18, 23, 20, 27, 29, 24],
    windowSize: 6,
    autoScroll: true
)

LineChart() .chartData(stream) .chartYRange(stream.suggestedYRange)

5) Performance mode for large datasets

LineChart()
    .chartData(largeSeries)
    .chartPerformance(.automatic(threshold: 600,
                                 maxPoints: 180,
                                 simplifyLineStyle: true))

Migration

This is a major breaking release.

Documentation Map

Example App

The showcase app demonstrates all major features:

Examples/SwiftUIChartsShowcase

Release Notes

  • Changelog: CHANGELOG.md
  • Includes Apple privacy manifest: Sources/SwiftUICharts/PrivacyInfo.xcprivacy

ยฉ 2026 GitRepoTrend ยท AppPear/ChartView ยท Updated daily from GitHub