AAChartModel/AAChartKit-Swift
42.5
Weak · 1 October 2026
42.3k
lines of production code
Swift
primary language
2
measurements over time
What this system is
AAInfographics is a Swift library that renders interactive charts in iOS and macOS applications by wrapping the Highcharts JavaScript engine within a WKWebView. It provides a comprehensive Swift API for configuring diverse chart types, styling, and animations, while automatically managing the loading of necessary JavaScript plugins. The system supports modern Swift integration patterns, including Swift Package Manager and SwiftUI, and includes a demo application to showcase its extensive visualization capabilities.
How it got here
2017 — Swift port cleanup and demo rebranding
13 changes.
This period focused on cleaning up the legacy iOS scaffolding and Xcode project files from the AAChartKit-Swift port while simplifying the core serialization logic. Simultaneously, the demo application was rebranded to AAInfographicsDemo, updated to support macOS Catalyst and SwiftUI, and integrated with the new Swift Package Manager release.
2018–2022 — Highcharts v12 upgrade and demo expansion
11 changes.
The project upgraded its embedded Highcharts engine to v12.6.0, introducing support for new chart types like funnel, boxplot, and gauge, alongside enhanced configuration models and color utility tools. Significant effort was also directed toward expanding the demo application with comprehensive examples for advanced interactions, custom events, and integration with Apple's native Swift Charts framework.
2024–2026 — Demo app restructuring and SwiftUI integration
12 changes.
The demo application underwent a comprehensive reorganization, introducing dedicated view controllers and modular data providers to categorize chart samples by configuration type and style. Significant effort was directed toward native SwiftUI support, including new wrappers, interactive controls, and a shared sectioned list component. The core library also saw architectural improvements through a dynamic plugin loading system and the removal of default animation settings.
Features
Add SwiftUI demo for BasicChartVC
The demo app now includes a SwiftUI implementation of the BasicChartVC, allowing users to interact with chart configurations (such as stacking, axis reversal, and marker visibility) using native SwiftUI controls. This change introduces a new \AAChartModelViewRepresentable\ wrapper to bridge the UIKit-based \AAChartView\ into SwiftUI, along with supporting UI components like \SegmentedControlRow\ and \ToggleControl\ to replicate the original interactive demo experience.
AAInfographicsDemo/Demo/AAChartModel/SwiftUI · high confidence
Demo app adds support for individual rounded corners on column and bar charts
The demo application now includes a new plugin and UI components that allow column and bar series to display individual rounded corners on each data point. This is achieved by integrating a custom JavaScript plugin (AARounded-Corners.js) that modifies the Highcharts rendering, a new Swift series element (AARoundedCornersSeriesElement) exposing per-corner radius properties, and a dedicated view controller (AARoundedCornersChartVC) that loads the plugin and demonstrates the feature with stacked column and bar charts.
AAInfographicsDemo/Demo/AAPlugins · high confidence
Demo app refactored with SwiftUI list and Swift Charts integration
The demo application's navigation and chart display capabilities have been significantly updated. The main list view now uses a new AABaseListVC that integrates a custom AASectionedListViewController built with SwiftUI, replacing the previous UIKit-based list implementation. Additionally, a new AppleSwiftChartVC and AppleSwiftChartBuilder have been added to demonstrate how to render AAInfographics chart models using Apple's native Swift Charts framework, providing a grid view of various chart types (area, column, bar, etc.) with stacking support.
AAInfographicsDemo/Demo/AdditionalContent2 · high confidence
Demo app restructured with SwiftUI support and expanded chart samples
The demo application has been reorganized to include native SwiftUI integration alongside the existing UIKit views. A new SwiftUI-based sample browser (OfficialChartSampleVC) allows users to preview a wide grid of chart configurations, while BasicChartVC now utilizes UIStackView for its controls and offers a parallel SwiftUI wrapper (BasicChartSwiftUIVC). The demo catalog has been significantly expanded with dedicated view controllers for custom-styled area, area-spline, bar, bubble, column, line, pie, scatter, and spline charts, as well as new mixed and special chart examples like packed bubble and column pyramid types.
AAInfographicsDemo/Demo/AAChartModel/ViewController · high confidence
Demo app restructured with SwiftUI support and plugin architecture
The demo application has been reorganized to include a new SwiftUI-based chart view (BasicChartView) alongside the existing UIKit components, and the chart rendering logic now utilizes a plugin loader system (AAChartViewPluginLoader) for extensibility. The project structure has been updated to support these changes, including the addition of various chart option composers and custom style providers.
AAInfographicsDemo.xcodeproj · high confidence
Expanded chart configuration options and new model types
The AAOptionsModel library has been significantly expanded to support a wider range of Highcharts features. New model classes have been added for specific chart types and UI elements, including AABoxplot, AABubbleLegend, AARangesElement, and AAButtonTheme (with its associated states). Axis configuration has been enhanced with the introduction of AAAxisTitle (replacing the generic AATitle for axes) and the AAAxis base class, which now supports properties like alternateGridColor, minor ticks, and tickmark placement. The AAChart model now includes dedicated support for panning, zooming, scrollable plot areas, and reset zoom buttons. Additionally, animation capabilities are now exposed via the new AAAnimation class, and various series models like AAColumn and AAScatter have been updated with new styling and layout properties.
AAInfographics/AAOptionsModel · high confidence
Expanded demo chart samples and new animation capabilities
The AAOptions demo area now includes a significantly larger set of chart configuration examples, adding dedicated view controllers for Area, Bubble, Column, Line, Pie, Polar, Scatter, and Multi-Y-Axis charts, alongside specialized composers for Bubble and Bubble Legend styles. New sample types include punch-card bubble charts, disabled-grouping columns, fancy splines, and complex custom area charts. Additionally, the demo introduces EmojiParticleAnimationVC and LissajousCurveViewController, enabling users to visualize data using emoji particles and mathematical curves, while existing samples like DrawChartWithAAOptionsVC have been updated to include more advanced configurations such as logarithmic axes and custom tooltip styles.
AAInfographicsDemo/Demo/AAOptions · high confidence
Expanded demo library for advanced chart configurations and interactions
The demo application now includes a comprehensive set of new and updated view controllers and composers in the AAOptionsWithJS section, providing users with practical examples for complex charting scenarios. Key additions include AAMixedChartComposer for creating mixed column-range and boxplot charts with pattern fills, and JSFunctionForAAAxisComposer2 for customizing X-axis label widths and rendering labels as images. The JSFunctionForAAChartEventsComposer2 introduces advanced interaction patterns such as disabling hover tooltips, adding click events to X-axis labels, and configuring default point selection. Furthermore, JSFunctionForAALegendVC demonstrates custom legend click behaviors, while JSFunctionForAADataLabelsComposer shows how to customize pie chart connector shapes. These updates collectively expand the library of configurable chart styles and interactive behaviors available to developers.
AAInfographicsDemo/Demo/AAOptionsWithJS · high confidence
New AATool library for color utilities and gradient helpers
The AATool module introduces a suite of helper classes and extensions to simplify chart styling. AAColor provides named color constants and convenience functions (AARgba, AARgb) for generating color strings. AAGradientColor and its extensions (AALinearGradient, AARadialGradient) offer a fluent API to define linear and radial gradients, including a set of pre-configured default themes (e.g., oceanBlue, sanguine). Additionally, AAExtension adds utility methods such as aa\_toAAOptions for converting chart models and string sanitization helpers for JS/HTML/CSS output.
AAInfographics/AATool · high confidence
New chart composer samples for the demo app
The demo application now includes a comprehensive set of new Swift files in the AAChartModel/Composer directory, providing ready-to-use configuration examples for various chart types. These new composers cover basic area, column, bar, line, spline, pie, bubble, and scatter charts, along with specialized custom styles such as gradient fills, step lines, polar charts, and scrollable plot areas. This addition allows users to easily explore and integrate diverse chart visualizations into their own projects.
AAInfographicsDemo/Demo/AAChartModel/Composer · high confidence
New chart gallery list with improved cell design
The demo app now includes a new Chart Gallery List view (ChartListTableViewVC) that displays a scrollable list of chart examples. This list uses a new custom table view cell (ChartExampleCell) featuring enhanced visual styling with rounded corners and shadows, replacing the previous xib-based cell implementation. The gallery aggregates chart samples from multiple providers and disables animations by default for smoother scrolling performance.
AAInfographicsDemo/Demo/AdditionalContent1/ChartGalleryList · high confidence
New dedicated gallery for custom-style chart samples
The demo app now includes a new 'ChartModelSampleListVC' screen that organizes chart examples by style. This list provides direct access to specialized samples, including special type charts, mixed charts, and various chart types (pie, column, bar, line, spline, area, scatter, bubble) rendered with custom styling, allowing users to easily preview these specific visual configurations.
AAInfographicsDemo/Demo/AAGallery/ViewController · high confidence
New demo folder with advanced chart examples using custom JavaScript
Added the AAOptionsWithJS2 demo folder containing several new chart examples that leverage custom JavaScript execution. These include a live clock gauge, synchronized multi-chart interaction, sparkline tables, circular radar charts with base64 image labels, and charts with custom font faces. The folder also introduces a new AACustomData helper class to support passing custom data structures into the chart configuration.
AAInfographicsDemo/Demo/AAOptionsWithJS2 · high confidence
New demo samples for advanced chart interactions and layout
The demo app now includes several new view controllers in the AdditionalContent1 section to showcase advanced chart features. These include a list view for browsing different chart types, a screen rotation handler that adapts chart size with animation, and specific samples for handling custom events such as touch end, tooltip visibility, tooltip clicks, and chart zooming. Additionally, a new view controller demonstrates advanced updating features like stacking, border radius, axis reversal, inversion, and polar modes.
AAInfographicsDemo/Demo/AdditionalContent1 · high confidence
New demo samples for custom chart event callbacks
The demo application now includes new sample view controllers in the BackUpContent folder that demonstrate how to handle custom JavaScript events from the chart. Specifically, CustomMouseOutEventCallback shows how to capture mouse-out events for both series and individual points, CustomSelectionEventCallback demonstrates handling chart selection events, and CustomXAxisLabelsClickEventCallback illustrates binding click events to custom image-based X-axis labels.
AAInfographicsDemo/Demo/BackUpContent · high confidence
New official chart demo samples for area, bar, and pie charts
The demo application now includes a comprehensive set of official sample charts for area, bar/column, and pie chart types. Users can explore various configurations through new view controllers and composer classes, including basic, stacked, percent-stacked, and inverted area charts; basic, stacked, population pyramid, and nested bar/column charts; and basic, legend-enabled, gradient-colored, and monochrome pie charts.
AAInfographicsDemo/Demo/OfficialSamples · high confidence
New sectioned list component for demo UI
The demo application now includes a new \AASectionedList\ SwiftUI component within the SharedUI module. This view supports grouped content with section headers, optional index titles, accent colors, and a section index sidebar for navigation. It allows for pinned headers and custom row accessories, providing a structured way to display hierarchical data in the demo interface.
AAInfographicsDemo/SharedUI · high confidence
Upgrade to Highcharts v12.6.0 with new chart types and features
The embedded JavaScript charting engine has been upgraded to Highcharts v12.6.0, bringing support for new series types including funnel, pyramid, boxplot, errorbar, gauge, and bubble charts with draggable nodes. The HTML view now supports axis labels and data labels formatter functions, series event callbacks (such as legendItemClick), and lazy loading for additional modules like AAHighcharts-More.js and AAFunnel.js to optimize performance.
AAInfographics/AAJSFiles.bundle · high confidence
Removals
Removal of legacy Xcode project file
The \AAChartKit-Swift.xcodeproj/project.pbxproj\ file has been deleted from the repository. This removes the legacy Xcode project configuration that previously defined the main application target, unit tests, and UI tests, indicating a shift away from this specific project structure or a migration to a different build system.
AAChartKit-Swift/AAChartKit-Swift.xcodeproj · high confidence
Removed legacy iOS application scaffolding files
The default iOS application entry points and test scaffolding—specifically \AppDelegate.swift\, \ViewController.swift\, and the UI test file \AAChartKit\_SwiftUITests.swift\—have been deleted from the project. This removes the standard Xcode template code that previously handled application lifecycle events and initial view controller setup, indicating a shift away from a standard iOS app structure or a cleanup of unused boilerplate in this Swift port.
AAChartKit-Swift/AAChartKit-Swift · high confidence
Behavioural changes
4 commits (0 fixes) modifying AAChartKit-Swift/AAChartKit-Swift.xcodeproj/project.xcworkspace
A change to existing behaviour in AAChartKit-Swift/AAChartKit-Swift.xcodeproj/project.xcworkspace — 4 commits, 1 file.
AAChartKit-Swift/AAChartKit-Swift.xcodeproj/project.xcworkspace · medium confidence · unverified
Chart animation defaults removed from AAChartModel
The AAChartModel class in the AAChartOptions module no longer includes default animation settings. Previously, charts may have rendered with implicit animation configurations; now, animation behavior is determined solely by explicit configuration, meaning charts will render instantly unless an animation type and duration are specifically defined in the model.
AAInfographics/AAChartCreator/AAChartOptions · high confidence
Chart view logic refactored into modular plugin loading and API extensions
The AAChartView component has been restructured to improve maintainability and separation of concerns. The core view logic is now split into dedicated files: AAChartView.swift contains the main WKWebView wrapper and delegate handling, while AAChartView+API.swift exposes the public methods for drawing and updating charts. A new plugin system has been introduced via AAChartViewPluginLoader.swift and AAChartViewPluginProvider.swift, which automatically detects required Highcharts plugins (such as funnel or highcharts-more) based on the chart type and series configuration, loading them dynamically before rendering. This change ensures that only necessary JavaScript assets are loaded, reducing overhead and simplifying the chart initialization process for users.
AAInfographics/AAChartCreator/AAChartView · high confidence
Demo app UI updated with navigation controller and renamed view controller
The demo application's main interface now wraps the chart model list view in a navigation controller, providing a standard navigation bar for the app. The view controller previously named 'ViewController' has been renamed to 'AAChartModelListVC' to better reflect its purpose of listing chart models. Additionally, a new launch screen storyboard was added to display the app title and copyright information, replacing the previous default launch screen.
AAInfographicsDemo/Base.lproj · high confidence
Demo app rebranded to AAInfographicsDemo with macOS Catalyst sidebar support
The demo application has been renamed from AAChartKit-Swift to AAInfographicsDemo, including the creation of a new entitlements file for sandboxing and network access. The app now targets iOS 14.0 and macOS 14.0, introducing a dedicated sidebar navigation layout for Mac Catalyst users while retaining the tab bar for iOS. Additionally, the demo now supports all interface orientations, including portrait upside-down, and features a customized tab bar appearance with updated colors and shadows.
AAInfographicsDemo · high confidence
Demo app reorganized into dedicated chart-list view controllers
The demo application's chart-browsing interface has been restructured into four distinct list view controllers—AAChartModelListVC, AAOptionsListVC, AAOptionsWithJSListVC, and AdvancedFeaturesListVC (along with OfficialSamplesListVC)—each presenting a categorized table of chart samples. This change groups charts by their configuration approach (AAChartModel vs. AAOptions vs. JS functions) and feature type (advanced/official), providing a clearer navigation structure for users exploring the library's capabilities.
AAInfographicsDemo/Demo/AAChartListVC · high confidence
Demo gallery chart samples are reorganized into modular providers
The demo application's chart gallery data source has been refactored from a single monolithic provider into four distinct, modular providers: \ChartSampleProvider\, \CustomChartOptionsProvider\, \CustomStyleChartModelProvider\, and \OfficalSamplesChartProvider\. This change restructures how sample charts are assembled and exposed to the gallery UI, grouping them by type (e.g., official samples, custom styles, mixed types) rather than listing them all in one file. For users of the demo app, the visual experience remains the same, but the underlying data structure is now more maintainable and organized.
AAInfographicsDemo/Demo/AAGallery/Provider · high confidence
Demo project renamed to AAInfographicsDemo
The demo project has been renamed from AAChartKit-Swift to AAInfographicsDemo. This change updates the workspace configuration to reference the new project name, ensuring the demo environment correctly loads the renamed project structure.
AAInfographicsDemo.xcodeproj/project.xcworkspace · high confidence
Fixes bundle resource resolution for SPM integration
The AAInfographics framework now correctly locates bundled resources when consumed via Swift Package Manager. Two loader implementations were added: PackageBundlePathLoader uses Bundle.module to resolve assets within the package context, while ProjectBundlePathLoader uses the standard bundle lookup for project-based usage. This ensures that charts and other assets load reliably regardless of how the framework is integrated.
AAInfographics · high confidence
Removal of custom Launch Screen storyboard
The custom \LaunchScreen.storyboard\ file has been deleted from the project. This means the application will no longer display a custom launch screen during startup and will instead fall back to the default system launch behavior or any other launch screen configuration defined elsewhere in the app settings.
AAChartKit-Swift/AAChartKit-Swift/Base.lproj · high confidence
Renamed test target to AAInfographicsDemoTests
The test target has been renamed from AAChartKit-SwiftTests to AAInfographicsDemoTests, and the associated Swift test file and Info.plist have been updated to reflect this new name. This change aligns the test bundle with the current project naming convention.
AAInfographicsDemoTests · high confidence
Shared Xcode scheme for AAInfographics added
A new shared Xcode scheme (AAInfographics.xcscheme) has been added to the project's shared data. This ensures that build, test, launch, profile, analyze, and archive actions are consistently configured for all team members and CI systems, removing the need for local, uncommitted scheme configurations.
AAInfographicsDemo.xcodeproj/xcshareddata · high confidence
Simplified serialization logic in AASerializable
The AASerializable protocol and its implementation in AAObject have been refactored to simplify the conversion of chart models to dictionaries and JSON. The new toDic() method uses Swift's Mirror API to automatically traverse both the current class and its superclass properties, eliminating the need for manual property mapping. Additionally, support for computed properties was added via the AASerializableWithComputedProperties protocol, allowing models to include dynamic values in their serialized output.
AAInfographics/AAChartCreator · high confidence
Xcode project renamed to AAInfographicsDemo with updated scheme configuration
The Xcode project has been renamed from AAChartKit-Swift to AAInfographicsDemo. This change updates the build and test schemes to reference the new project and target names (AAInfographicsDemo.app, AAInfographicsDemoTests.xctest, etc.), updates the user data paths to reflect the new developer account (AnAn), and bumps the LastUpgradeVersion to 0830.
AAInfographicsDemo.xcodeproj/xcuserdata · high confidence
Test coverage
Add UI test suite for the AAInfographics demo app
A new UI test target (AAInfographicsDemoUITests) has been added to the project, containing the initial test class and configuration files. This allows users to run automated interface tests against the demo application to verify UI stability.
AAInfographicsDemoUITests · high confidence
Dependencies
Initial release of AAInfographics 10.0.0 with Swift Package Manager support
The AAInfographics library is now available as version 10.0.0, introducing official support for Swift Package Manager via a new Package.swift manifest alongside the existing CocoaPods podspec. The package targets iOS 10.0 and macOS 10.13, bundles the required JavaScript resources (AAJSFiles.bundle) for chart rendering, and excludes specific internal loader files to ensure compatibility with both distribution methods.
(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 54 → 42 (-11.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 94 → 94 (-0.0)
- Architecture 82 → 92 (+10.4)
- Maturity 39 → 39 (+0.0)
- Readiness 41 → 29 (-12.5)
- Security 100 → 100 (+0.0)
- Accessibility 42 (new)
Resolved (7)
- Documentation: no usage examples (README.md)
- Duplicated block (10–11 lines × 2) (AAInfographicsDemo/Demo/OfficialSamples/Composer/PieChartOptionsComposer.swift)
- Duplicated block (11 lines × 4) (AAInfographicsDemo/Demo/OfficialSamples/Composer/PieChartOptionsComposer.swift)
- Duplicated block (12 lines × 4) (AAInfographicsDemo/Demo/OfficialSamples/Composer/PieChartOptionsComposer.swift)
- Duplicated block (1–9 lines × 4) (AAInfographicsDemo/Demo/AAChartModel/ViewController/BasicChartVC.swift)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (AAInfographicsDemo/Demo/AAChartModel/ViewController/BasicChartVC.swift)
- Members sharing a duplicated core (5 members, 50+ identical tokens) (AAInfographicsDemo/Demo/OfficialSamples/Composer/PieChartOptionsComposer.swift)
New (12)
- Ambiguous overload for whiskerLength: Two methods exist with the same name but different parameter types (String vs Float). While technically distinct signatures, this creates confusion for API users regarding which type is expected for a length property, especially when the property itself is Any?.
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Duplicated block (10–13 lines × 3) (AAInfographicsDemo/Demo/AAOptionsWithJS/JSFunctionForAADataLabelsComposer.swift)
- Duplicated block (12–20 lines × 5) (AAInfographicsDemo/Demo/AAOptionsWithJS/JSFunctionForAADataLabelsComposer.swift)
- Duplicated block (13–14 lines × 2) (AAInfographicsDemo/Demo/AAOptionsWithJS2/JSFunctionBeforeAndAfterRenderingComposer6.swift)
- Duplicated block (1–9 lines × 6) (AAInfographicsDemo/Demo/AAChartModel/SwiftUI/BasicChartView.swift)
- Duplicated block (9–13 lines × 5) (AAInfographicsDemo/Demo/AAOptionsWithJS/JSFunctionForAADataLabelsComposer.swift)
- Inconsistent parameter structure for margin: One overload takes a single array [Any?]?, while the other takes four named arguments. This forces users to choose between an array syntax and a named argument syntax for the same concept, which is inconsistent with the rest of the API (e.g., spacing uses named arguments for the 4-value case).
- Members sharing a duplicated core (5 members, 50+ identical tokens) (AAInfographicsDemo/Demo/AAChartModel/SwiftUI/BasicChartView.swift)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (AAInfographicsDemo/Demo/AAOptionsWithJS/JSFunctionForAADataLabelsComposer.swift)
- Type mismatch in setter parameter: The property height is declared as Any?, but the fluent setter method height(_:) accepts AAChartType?. This is likely a copy-paste error where AAChartType (a chart type enum/string) was used instead of a numeric type or Any for the dimension setter.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
AAChartModel/AAChartKit-Swift 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit fc891fc1f370a0c364a3ce81db0b7fdd011915ce — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.