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.
Use this section when an AI agent generates code against this package.
- Use only
2.xcomposable APIs. - Do not use legacy
1.xtypes or mutating chains. - Build charts with
ViewModifiercomposition. - Keep data source semantics explicit:
chartData([Double])= categorical slotschartData([(Double, Double)])= numeric/continuous domain
| 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(...) |
LineChartView,BarChartView,PieChartView,MultiLineChartView.data(...),.rangeX(...),.rangeY(...).setAxisXLabels(...),.setNumberOfHorizontalLines(...).showChartMarks(...)(old form)
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).
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()
}
}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)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)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)
}@ObservedObject private var stream = ChartStreamingDataSource(
initialValues: [18, 23, 20, 27, 29, 24],
windowSize: 6,
autoScroll: true
)
LineChart()
.chartData(stream)
.chartYRange(stream.suggestedYRange)LineChart()
.chartData(largeSeries)
.chartPerformance(.automatic(threshold: 600,
maxPoints: 180,
simplifyLineStyle: true))This is a major breaking release.
- Full migration guide: MIGRATION.md
- Quick examples: example.md
- Wiki index: docs/wiki/README.md
- Getting started: docs/wiki/01-getting-started.md
- Modifiers: docs/wiki/02-composable-modifiers.md
- Interaction: docs/wiki/03-interaction-and-selection.md
- Streaming: docs/wiki/04-dynamic-and-streaming-data.md
- Performance: docs/wiki/05-performance-and-large-datasets.md
- Axis alignment: docs/wiki/06-unified-axis-and-label-alignment.md
- Migration summary: docs/wiki/07-migration-from-1x.md
The showcase app demonstrates all major features:
Examples/SwiftUIChartsShowcase
- Changelog: CHANGELOG.md
- Includes Apple privacy manifest:
Sources/SwiftUICharts/PrivacyInfo.xcprivacy


