Skip to content
CAI
Software that uses CAICheck a score

onevcat/APNGKit

70.5

Strong · 1 October 2026

3.5k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

APNGKit is a Swift library for decoding and rendering animated PNG images across iOS, macOS, tvOS, and visionOS platforms. It features a renderer-based architecture that separates decoding from rendering, offering memory optimization controls and configurable caching policies to manage performance. The system includes comprehensive unit tests for core components and provides demo applications to validate decoding behavior and showcase rendering capabilities.

How it got here

2015 — Modernization and SPM migration

5 changes.

The project transitioned from a legacy Xcode framework structure to a modern Swift Package Manager setup, removing old project files and test scaffolding. This period also involved releasing version 2.4.0, which introduced memory optimizations, rendering fixes, and explicit support for visionOS.

2019–2022 — Architecture rewrite and demo expansion

13 changes.

The project underwent a significant architectural refactoring to a renderer-based design with memory controls, accompanied by the addition of a comprehensive test suite. This period also saw the creation of extensive iOS and macOS demo applications to showcase the library's capabilities and facilitate spec testing.

Features

Add APNGKit demo application

Introduces a new iOS demo application for APNGKit, providing a user interface to explore the library's capabilities. The app includes a main menu with navigation to sample images, a dedicated spec testing scene for validating APNG decoding behavior, and a multiple image view scene demonstrating animated image rendering in collection views.

Demo/Demo · high confidence

Add demo scene for APNG spec testing

A new SpecTestingScene has been added to the demo application, providing a user interface to validate APNGKit's decoding capabilities. The scene loads test cases from a local JSON file and displays them in a table view, where each cell renders an animated APNG image using APNGImageView. Tapping a row navigates to a detail view that shows the image and any decoding errors, allowing users to verify correct playback and error handling for various APNG test cases.

Demo/Demo/SpecTestingScene · high confidence

Add fastlane automation for testing, release, and changelog management

This change introduces fastlane configuration files (Fastfile, Pluginfile, and README) to automate the project's CI/CD workflows. The new setup includes lanes to run tests across macOS, iOS, and tvOS platforms with result bundles enabled, a release lane that handles version bumping, changelog generation, git tagging, and publishing to GitHub and CocoaPods, and a lint lane for validating the library. It also integrates the fastlane-plugin-changelog to manage version-specific changelog entries.

fastlane · high confidence

Add macOS demo application with spec testing and multiple image scenes

The project now includes a macOS demo application alongside the existing iOS targets. This new app features a split-view interface for browsing sample images, dedicated scenes for spec testing (including a detail explanation view and a store for test cases), and support for displaying multiple images simultaneously. It bundles a comprehensive set of APNG and PNG sample assets for demonstration purposes.

Demo/Demo.xcodeproj · high confidence

Add multiple image demo scene with tap-to-reset and dynamic addition

A new demo scene has been added to showcase multiple APNG images in a collection view. Users can view a grid of animated images, tap any image to reset its animation state, and use the 'Add Image' button to dynamically insert new random APNG images into the collection.

Demo/Demo/MultipleImageScene · high confidence

Added Demo workspace configuration

The Demo project now includes a dedicated Xcode workspace configuration. This adds the necessary workspace data file to group the project and an IDE workspace checks plist to suppress the 32-bit warning, enabling the demo to be opened and built directly within the Xcode IDE.

Demo/Demo.xcodeproj/project.xcworkspace · high confidence

Added Xcode schemes for macOS and iOS demo targets

The demo project now includes dedicated Xcode schemes for both the main iOS app (Demo.app) and a new macOS app (Demo-macOS.app). These schemes configure build, launch, test, profile, and archive actions, enabling developers to run and test the demo application on both platforms directly from Xcode.

Demo/Demo.xcodeproj/xcshareddata · high confidence

New APNG sample image demo scene

The demo app now includes a dedicated SampleImageScene that allows users to browse and inspect a curated list of APNG files (such as 'elephant\_apng', 'tRNS\_alpha', and 'minimal'). This scene provides a detailed view where users can play the animation, toggle intrinsic sizing, change the background color, and reset the animation. It also features a frame-by-frame inspector that displays technical details like offset, duration, and blend/dispose operations, with visual overlays that correctly account for canvas downsampling.

Demo/Demo/SampleImageScene · high confidence

New macOS demo application for APNGKit

A new macOS sample app has been added to demonstrate APNGKit capabilities. The application features a sidebar navigation with three distinct views: a Samples page for browsing and inspecting individual APNG images, a Spec Tests page for validating decoding against standard test cases, and a Multiple Images page that displays a collection of animated images in a scrollable grid.

Demo/Demo-macOS · high confidence

Removals

Removal of legacy APNGKit framework headers and Info.plist

The legacy APNGKit framework umbrella header (APNGKit.h) and its Info.plist configuration file have been removed from the project. This cleanup eliminates the old Objective-C framework structure and associated metadata, likely as part of a migration to a modern build system or module structure.

APNGKit · high confidence

Removed legacy test scaffolding and configuration files

The placeholder test class \APNGKitTests.swift\ and the \Info.plist\ configuration file within the \APNGKitTests\ target have been deleted. This removes the default, empty test structure and associated metadata that were previously included in the test bundle.

APNGKitTests · high confidence

Architecture

Removal of legacy Xcode project file

The \APNGKit.xcodeproj/project.pbxproj\ file has been deleted, indicating the removal of the traditional Xcode project structure for this library. This change suggests a migration away from the \.xcodeproj\ format, likely towards alternative build systems such as Swift Package Manager or a different project configuration, as evidenced by the complete removal of the build file definitions for the APNGKit framework and its test targets.

APNGKit.xcodeproj · high confidence

Behavioural changes

APNGKit 2.4.0 release with memory optimization and rendering fixes

This release introduces a new \maxRenderSize\ parameter for \APNGImage\ initializers, allowing developers to downsample the compositing canvas and cached frames to reduce memory usage for oversized APNGs without changing the image's logical size. It also fixes rendering artifacts by integralizing the render-space rectangle to prevent fractional coordinate issues and corrects the Demo app's frame overlay to maintain alignment during downsampling. Additionally, the project updates its CI environment to use Ruby 3.3.6 and the \macos-26\ runner.

(repo-wide) · high confidence

APNGKit rewritten with renderer-based architecture and memory controls

The APNGKit library has been refactored to use a renderer-based implementation that separates decoding from rendering, introducing a \maxRenderSize\ option to downsample images and bound memory usage. The new architecture supports pre-rendering all frames for smoother playback, configurable caching policies to trade memory for CPU, and robust error handling with fallbacks to static images when decoding fails.

Source/APNGKit · high confidence

Added Xcode scheme and workspace configuration for Swift Package Manager

The project now includes an Xcode scheme (APNGKit.xcscheme) and a package workspace (contents.xcworkspacedata) within the .swiftpm directory. This configuration enables developers to build, test, run, profile, and archive the APNGKit library and its associated tests directly in Xcode, facilitating local development and debugging workflows for the Swift Package.

.swiftpm · high confidence

Test coverage

6 commits adding/updating tests in Tests/APNGKitTests/Resources/General; Added comprehensive test suite for APNGKit core components.

Dependencies

APNGKit 2.4.0 release with visionOS support and Swift Package Manager integration

This update introduces APNGKit version 2.4.0, adding explicit support for visionOS (deployment target 1.0) alongside existing iOS, macOS, and tvOS platforms. The framework now officially supports Swift Package Manager via a new Package.swift manifest and includes a privacy manifest resource bundle. It depends on the Delegate library (version 1.3.0) and specifies Swift versions 5.3 through 5.5.

(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 70 → 70 (+0.2)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 99 → 99 (+0.0)
  • Architecture 94 → 98 (+3.5)
  • Maturity 55 → 55 (+0.0)
  • Readiness 69 → 71 (+1.8)
  • Security 97 → 97 (+0.1)

Resolved (5)

  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Outdated: cocoapods
  • Outdated: fastlane

New (2)

  • Coverage not measured — Swift suite
  • High CVE: [GHSA redacted] (Gemfile.lock)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

onevcat/APNGKit 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 341383f61000e8d2e55d45db0f0756b239d0a2f1 — 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-e569280dd5e2.