Skip to content

PaperConfetti 0.1.0

Choose a tag to compare

@twhitt14 twhitt14 released this 26 Oct 07:20

PaperConfetti's first release brings lifelike paper celebrations to SwiftUI and UIKit with a simple method-based API.

Highlights

  • Call confetti.pop() to celebrate and confetti.cancel() to stop. No event counter required.
  • Thirteen festive silhouettes: four stars, four streamers, a hollow ring, and four paper cuts. Three classic shapes are also available.
  • Matching shapes share a randomized descent speed within each burst. Individual pieces spin and tumble independently.
  • Customize colors, shapes, particle counts, dimensions, flight distance, spread, motion, seeds, and independently delayed cannons.
  • Core Animation playback with bounded texture caching, explicit cleanup, Reduce Motion support, scene cancellation, and touch-transparent overlays.
  • Interactive example app, DocC guides, tests, and repeatable simulator captures.
  • No runtime dependencies, networking, analytics, or stored identifiers. MIT licensed, with the original ConfettiSwiftUI attribution included.

Installation

.package(url: "https://github.com/twhitt14/PaperConfetti.git", from: "0.1.0")

Add .product(name: "PaperConfetti", package: "paperconfetti") to your target dependencies, then import PaperConfetti.

The repository is currently private, so GitHub access is required. Rendering supports iOS/iPadOS 16+; the package uses Swift tools 5.9+. macOS 13+ exposes the physics model, without an AppKit renderer.

Validation

Both hosted toolchains, Xcode 16.4 and 26.6, pass 8 macOS physics tests, 14 iOS package tests, 2 example interaction tests, Release builds, and DocC generation. Interaction tests exercise taps, toggles, scrolling, navigation, cancellation, and the Reduce Motion preview.

Physical-device FPS/energy profiling and a minimum-iOS runtime run remain follow-up work. Simulator results are not a device-performance guarantee; the 2,000-particle safety limit is not a recommended particle count.

Release verification: main CI and 0.1.0 tag CI both passed. A fresh consumer resolved exact version 0.1.0, built and imported the product, exercised its physics model, and verified the bundled attribution.