// the find
twostraws/Vortex
High-performance particle effects for SwiftUI.
Vortex is a SwiftUI particle system. You pass a VortexView one of the built-in presets, such as rain, fireworks, or snow, or a VortexSystem you configured yourself, then tag the ordinary SwiftUI views you want drawn as particles. It is for Apple-platform developers who want ambient or burst effects without writing per-frame drawing code.
Particle sources are plain SwiftUI views, so a blurred Circle with a plusLighter blend mode or an Image can be the particle with no conversion step. The README documents the tags each preset expects, and Fireworks is a working three-stage example of secondary systems, the library's most advanced feature. VortexViewReader and VortexProxy expose burst() and attractTo(), so effects can respond to a tap or gesture instead of only running on a timer. The README is also candid about limits, such as watchOS supporting only Z-axis rotation, rather than implying the same feature set everywhere.
Tags are plain strings with no compile-time link to the views. A mismatch between the names in VortexSystem(tags:) and the tag modifiers is only found at runtime, and the README does not say what happens when a tag has no match. VortexSystem behaves as a reference type: VortexView shares the instance unless you call makeUniqueCopy(). The README presents this as a feature, but two views built from one shared system will share particle state, and the bug only shows up when that happens. "High-performance" is asserted but not measured. There are no frame-time numbers, particle-count ceilings, or benchmarks, and the sandbox is the only demo, so anyone putting this in a scrolling list or on watchOS needs to profile it. The badges claim iOS 15, macOS 12, tvOS 15, and watchOS 8, but the sandbox needs iOS 17, macOS 14, and visionOS 1, and the README does not say what has been run on the older minimums.