SwiftKickMobile/SwiftMessages
56.0
Adequate · 27 September 2026
4.9k
lines of production code
Swift
primary language
4
measurements over time
What this system is
Features
Add default message view XIBs for Card, Centered, Message, Status Line, and Tab layouts
The library now ships with five new Interface Builder (.xib) resource files—CardView, CenteredView, MessageView, StatusLine, and TabView—each defining the default visual structure for that message layout. These XIBs establish the standard appearance and layout for the corresponding message types, ensuring consistent rendering and accessibility support out of the box.
SwiftMessages/Resources · high confidence
Add demo app launch screen and main interface storyboards
The demo application now includes a dedicated launch screen (LaunchScreen.storyboard) displaying a splash banner and copyright notice, alongside a new Main.storyboard that defines the app's primary navigation structure. This new interface features a tab bar controller and a root table view presenting several demo options, including an 'Explore' section for configuration options, a 'View Controllers' section for modal presentations, and a 'Counted' section for managing message visibility counts.
Demo/Demo/Base.lproj · high confidence
Added CocoaPods configuration for the iMessage extension demo
The iMessageDemo project now includes a complete CocoaPods setup, including a Podfile that defines targets for both the main app and the iMessage extension, a local podspec for SwiftMessages version 10.0.1, and all necessary build configuration files and scripts to support building the SwiftMessages framework within the extension.
iMessageDemo · high confidence
Adds accessibility and haptic feedback support for messages
Message views can now provide haptic feedback when presented, and the framework introduces protocols to improve VoiceOver behavior. The \AccessibleMessage\ protocol allows message views to define their accessibility message and elements, while the \HapticMessage\ protocol enables specifying a default haptic feedback type. \MessageView\ implements these protocols, ensuring that screen readers receive appropriate context and that users receive subtle haptic cues upon message presentation.
SwiftMessages · high confidence
New demo app showcasing message presentation and customization
The Demo app has been rebuilt with new view controllers and utilities to demonstrate message presentation options. The ExploreViewController allows users to configure and preview various message styles, including different layouts (card, tab, status line), themes, icon styles, and presentation contexts. The CountedViewController demonstrates how to track and display message counts. The TacoDialogView provides an interactive example of a custom message view with a slider and action buttons. The ViewControllersViewController introduces new segues for top, bottom, and centered message presentations. These changes provide a comprehensive guide on how to use the library's features.
Demo/Demo · high confidence
Newly added Xcode project and workspace configuration for the Demo app
The diff introduces the complete Xcode project file (project.pbxproj), workspace data, and scheme files for the Demo application. This establishes the build configuration, file references, and target dependencies required to build and run the Demo app within the SwiftMessages project.
Demo/Demo.xcodeproj · high confidence
SwiftUI demo app adds message presentation with buttons and multiple styles
The SwiftUIDemo application now includes a new demo view that showcases message presentation in SwiftUI. Users can trigger standard, card, and tab-style messages via buttons, and a separate demo demonstrates a message view that includes an embedded button for dismissal. The implementation introduces new Swift files (DemoMessage, DemoMessageView, DemoMessageWithButtonView, DemoView) and associated assets to support these interactive message examples.
SwiftUIDemo · high confidence
Behavioural changes
11 commits (0 fixes) modifying Design
A change to existing behaviour in Design — 11 commits, 5 files.
Design · medium confidence · unverified
Demo app configured with SwiftMessages pods
The Demo application now includes a Podfile that links the 'SwiftMessages/App' and 'SwiftMessages/SegueExtras' subspecs from the local '../' directory, enabling the demo to utilize these specific SwiftMessages components for UI demonstrations.
Demo · high confidence
Removed developer-specific Xcode scheme configuration
The file SwiftMessages.xcodeproj/xcuserdata/wtmoose.xcuserdatad/xcschemes/xcschememanagement.plist has been deleted. This file contained local Xcode user data, specifically scheme ordering and buildable item references, which are typically ignored in version control. Its removal ensures that personal IDE settings do not pollute the shared project configuration.
SwiftMessages.xcodeproj/xcuserdata · high confidence
Updated Xcode project file to modern standards
The SwiftMessages Xcode project configuration was updated to object version 54, which is required for compatibility with recent versions of Xcode and the Swift toolchain. This change ensures the project file format is up to date, preventing potential build issues or warnings when opening or building the project in modern development environments.
SwiftMessages.xcodeproj · high confidence
Updated Xcode scheme to target framework instead of app
The Xcode project scheme has been updated to launch and test the SwiftMessages.framework rather than the SwiftMessages.app. This change ensures that the scheme correctly targets the library product for both running and testing, aligning the development workflow with the library's build configuration.
SwiftMessages.xcodeproj/xcshareddata · high confidence
Fixes
Updated workspace configuration for 32-bit warnings
The SwiftMessages workspace now includes an explicit configuration to acknowledge 32-bit architecture warnings, ensuring consistent build behavior across different Xcode versions and preventing spurious build warnings related to 32-bit support.
SwiftMessages.xcodeproj/project.xcworkspace · medium confidence
Test coverage
Removal of empty SwiftMessagesUITests test class; Updated SwiftMessagesTests for Swift 3.0 compatibility.
Dependencies
Add Swift Package Manager support and CocoaPods subspecs
SwiftMessages now supports installation via Swift Package Manager (SPM) and CocoaPods. The SPM configuration targets iOS 13.0 and defines a dynamic library product. For CocoaPods, the library is split into 'App' and 'AppExtension' subspecs, with the extension subspec defining a compile-time flag to disable unavailable APIs in app extensions. The iMessage demo project has been updated with a Podfile to test both the main library and the extension subspec.
(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 45 → 56 (+11.4)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 95 (-4.9)
- Architecture 97 (new)
- Maturity 49 → 50 (+1.1)
- Readiness 17 → 37 (+20.9)
- Security 100 → 95 (-5.0)
Resolved (6)
- Dimension evaluation failed
- No automated tests
- No exposed public API
- No tests found
- Test reliability not included
- The overview mentions SwiftUI support requires Xcode 26 and version 10.0.2 but does not state the minimum Swift version or macOS/iOS target requirements needed to use it. (README.md)
New (32)
- Assertions commented out: testExample (SwiftMessagesTests/SwiftMessagesTests.swift)
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Documentation: no architecture or design documentation
- Duplicated block (26 lines × 2) (SwiftUIDemo/SwiftUIDemo/DemoMessageView.swift)
- Duplicated block (5 lines × 2) (SwiftMessages/BaseView.swift)
- Duplicated block (7 lines × 2) (SwiftMessages/BaseView.swift)
- Duplicated block (9 lines × 3) (SwiftMessages/MessageView.swift)
- Further orphaned files (smaller)
- Hotspot: SwiftMessages/Presenter.swift (SwiftMessages/Presenter.swift)
- Inconsistent hiding semantics and naming. hide(id:) and hideCounted(id:) appear to do similar things (hiding a specific message) but with different naming conventions that obscure the difference. hideAll() is distinct but hide(id:) vs hideCounted(id:) suggests a lack of clear intent regarding whether the operation affects the count or just the view. Furthermore, hide(animated:) takes a boolean, while others imply animation or specific state changes without explicit animation parameters, creating an inconsistent API surface for the core 'dismiss' action.
- Inconsistent nib loading API across types. MessageView has instance methods for loading nibs with different parameter combinations (with/without bundle), while SwiftMessages has static/class methods with similar variations. The signatures are not aligned: MessageView uses layout as a parameter, while SwiftMessages uses named. This creates confusion about which method to use for nib loading depending on the context (view vs manager).
- Low cohesion: BaseView (LCOM4 5) (SwiftMessages/BaseView.swift)
- Low cohesion: ExploreViewController (LCOM4 4) (Demo/Demo/ExploreViewController.swift)
- MessageView.configureTheme (cognitive 17) (SwiftMessages/MessageView.swift)
- MessageView.configureTheme (cyclomatic 21) (SwiftMessages/MessageView.swift)
- MethodTooLong: Config.windowLevel (SwiftMessages/SwiftMessages.swift)
- No assertions: testPerformanceExample (SwiftMessagesTests/SwiftMessagesTests.swift)
- Orphaned knowledge (SwiftMessages/SwiftMessages.swift)
- PhysicsPanHandler.pan (cognitive 24) (SwiftMessages/PhysicsPanHandler.swift)
- …and 12 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
SwiftKickMobile/SwiftMessages 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 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c0ff6c65bfc00e6a707957cb7069988c5cde2a30 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.