Mijick/Popups
54.9
Adequate · 1 October 2026
2.5k
lines of production code
Swift
primary language
2
measurements over time
What this system is
MijickPopups is a multi-platform Swift library that manages complex, stacked popup interfaces across iOS, macOS, tvOS, watchOS, and visionOS. It provides a fluent API for configuring global and local popup styles, handling gesture-based interactions like drag-to-dismiss, and supporting multiple distinct popup stacks for different contexts. The system includes comprehensive test coverage and modern concurrency support via Swift 6.
Features
New popup configuration and registration APIs
The framework introduces a new setup system allowing users to define global popup styles and register popup stacks. Users can now configure default behaviors for center and vertical popups—such as corner radius, background color, tap-to-dismiss, stacking, and drag gestures—using a fluent builder API. Additionally, the system supports multiple popup stacks via \PopupStackID\, enabling distinct popup contexts for different windows (e.g., on macOS or iPad), and provides two registration methods: a SwiftUI view modifier (\registerPopups\) and an iOS-specific \PopupSceneDelegate\ for integration with standard Apple sheets.
Sources/Public/Setup · high confidence
New public API for configuring and dismissing popups
This release introduces a comprehensive public API for managing popup behavior and appearance. Developers can now configure popups using a fluent builder pattern, setting properties such as corner radius, background and overlay colors, horizontal/vertical padding, and safe area handling. New configuration options include \tapOutsideToDismissPopup\ for touch-to-close behavior, \heightMode\ (auto, large, fullscreen) for sizing control, and \dragDetents\ with \enableDragGesture\ to allow users to drag popups to dismiss or resize them. Additionally, new static methods on \PopupStack\ and extensions on \View\ provide programmatic control to dismiss the last popup, all popups of a specific type or ID, or all popups entirely, supporting multiple popup stack identifiers.
Sources/Public/Popup · high confidence
New public API for presenting and configuring popups
A new public extension for the Popup type has been added, providing methods to present popups within a specific stack and configure their behavior. Users can now present a popup asynchronously using a registered popup stack ID, set a custom identifier to manage multiple popups of the same type, inject environment objects into the popup hierarchy, configure automatic dismissal after a specified duration, and control whether the keyboard is dismissed when the popup is removed.
Sources/Public/Present · high confidence
Removals
Removal of PopupView placeholder struct
The placeholder PopupView struct, which previously exposed a static 'Hello, World!' text property, has been removed from the codebase.
Sources/PopupView · high confidence
Behavioural changes
Introduce stacked popup architecture with configurable global and local settings
The internal popup system has been restructured to support multiple stacked popups with distinct layout modes (center, top, and bottom). This change introduces a \PopupStack\ container to manage the lifecycle and ordering of active popups, along with \GlobalConfig\ and \LocalConfig\ protocols that allow users to define default styling (such as padding, corner radius, and background colors) and gesture behaviors (like drag-to-dismiss and tap-outside-to-dismiss) for each stack type. The UI layer now renders these stacks using dedicated views (\PopupCenterStackView\, \PopupVerticalStackView\) that handle animations, safe area insets, and keyboard interactions, enabling more complex popup interactions than the previous single-popup model.
Sources/Internal · high confidence
Removal of Xcode workspace check file
The IDEWorkspaceChecks.plist file, which tracked Xcode workspace settings, has been removed from the .swiftpm directory. This change eliminates the local configuration file used to manage workspace state, simplifying the package structure.
.swiftpm · high confidence
Test coverage
Added unit tests for popup ID, stack management, and view models
Added comprehensive test coverage for the MijickPopups library, including new test files for PopupID (verifying ID creation and type comparison), PopupStack (testing stack registration, fetching, presenting, and dismissing popups), and the view models for center and vertical popup stacks (validating layout calculations like outer padding, corner radius, opacity, and height management).
Tests · high confidence
Dependencies
MijickPopups renamed and upgraded to Swift 6 with multi-platform support
The library has been renamed from PopupView to MijickPopups and updated to require Swift 6.0, enabling the use of modern Swift concurrency and strict concurrency checking features. The package now officially supports iOS 14.0, macOS 12.0, tvOS 15.0, watchOS 7.0, and visionOS 1.0, broadening its compatibility across Apple ecosystems. Additionally, a new test target (MijickPopupsTests) has been added to the package structure.
(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 55 → 55 (+0.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.0)
- Architecture 89 → 96 (+7.1)
- Maturity 31 → 31 (+0.0)
- Readiness 55 → 55 (+0.5)
- Security 100 → 100 (+0.0)
New (6)
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Naming inconsistency: 'Container' vs 'Center'. Both GlobalConfigContainer and LocalConfigCenter (and their Vertical counterparts) have identical structures. The suffix 'Container' vs 'Center' is arbitrary and confusing, especially since 'GlobalConfigCenter' also exists. It is unclear if 'Container' implies a wrapper while 'Center' implies a singleton manager.
- Potential duplication of intent. Public.Popup likely serves as a base or generic type, while TopPopup, CenterPopup, and BottomPopup are specific variants. If these variants only differ by position (which is likely implied by the name), this could be unified into a single Popup type with a 'position' or 'alignment' property, reducing API surface and complexity.
- Redundant types with identical or near-identical property sets. GlobalConfigContainer and GlobalConfigVertical expose the exact same properties (padding, cornerRadius, backgroundColor, etc.). GlobalConfig is empty but likely intended to be the base or alias. This creates confusion about which type to use for global configuration.
- Redundant types with identical or near-identical property sets. LocalConfigCenter and LocalConfigVertical expose the exact same properties. LocalConfig is empty. This mirrors the global config inconsistency.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Mijick/Popups 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 3aa55233eda7bbcbd98b52a6f63d5a7e1955189a — 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.