SwipeMenuViewController 5.0.0 is a major modernization release: it moves to Swift 6.2 / Xcode 26 with main-actor isolation, raises the minimum deployment target to iOS 16, ships exclusively through Swift Package Manager, adds a unit test suite and DocC documentation, and fixes a batch of long-standing correctness bugs.
Breaking
- Distribution is Swift Package Manager only. CocoaPods and Carthage support has been removed (the podspec and the framework Xcode project were deleted).
- The minimum deployment target was raised from iOS 11 to iOS 16.
- Requires the Swift 6.2 toolchain (Xcode 26+); the package now builds in Swift 6 language mode with main-actor default isolation.
- The public delegate and data source protocols are now
@MainActor-isolated and useAnyObjectinstead ofclass. SwipeMenuViewOptionsand its nested types are nowSendable.- Removed the deprecated
SwipeMenuViewOptions.TabView.AdditionView.marginproperty; usepaddinginstead. ContentScrollViewDataSourcenow requiresAnyObjectandContentScrollView.dataSourceis now aweakreference (fixes a retain cycle that leakedSwipeMenuView).
Added
- DocC documentation catalog with Getting Started and Customizing Appearance articles, plus documentation comments across the public API.
- A unit test suite (Swift Testing) that runs on the iOS simulator in CI.
Changed
- Sources were reorganized into the standard Swift package layout (
Sources/SwipeMenuViewController). - The example app was rebuilt as a standalone Xcode project (
Example/Example.xcodeproj) that consumes the library as a local package dependency. - CI now builds the Swift package and the example app and runs the tests on the latest Xcode.
Fixed
- Fixed a crash and broken tab text-color interpolation when tab colors are defined in a non-RGB color space (for example
.white/.black). - Fixed duplicate Auto Layout constraints being added on every layout pass in
SwipeMenuViewController. - Fixed a potential crash in the default data source when
numberOfPages(in:)returns more pages than there are child view controllers. - Fixed tab underline/text-color artifacts when swiping past the first or last tab.
- Fixed
SwipeMenuView.jump(to:animated:)leavingcurrentIndexand the delegate change callbacks out of sync with the content when jumping across more than one page, and made it ignore out-of-range indices (a negative index previously crashed). - Fixed
ContentScrollViewrequesting nonexistent pages from its data source when built with an out-of-range initial index (for examplereloadData(default:)past the last page). - Fixed the views rebuilding themselves when removed from their superview (emitting spurious delegate setup callbacks) and duplicating their tab and content subviews when a
SwipeMenuViewwas removed and re-added to a view hierarchy. - Fixed the tab bar applying safe-area insets even when
isSafeAreaEnabledisfalse, so a safe-area change (rotation, notch) no longer shifts a tab bar that opted out of safe-area layout.
Full Changelog: 4.1.0...5.0.0