onevcat/APNGKit
70.5
Strong · 1 October 2026
3.5k
lines of production code
Swift
primary language
2
measurements over time
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.