SwiftVLC 1.0.0
SwiftVLC 1.0 is the first stable release of the library. It provides a direct Swift 6.3 interface to libVLC 4 for SwiftUI applications on iOS, macOS, tvOS, visionOS, and Mac Catalyst.
Starting with this release, the public API follows semantic versioning. The private macOS Picture in Picture SPI remains outside that contract and is still intended only for non-App-Store distribution.
What ships in 1.0
- An
@Observable,@MainActorplayer designed to drive SwiftUI directly. VideoViewfor drawable lifecycle management and native iOS Picture in Picture support.- Typed
VLCErrorfailures, async media parsing and thumbnails, and independentAsyncStreamsubscriptions with explicit buffering controls. - Audio and subtitle track selection, equalizer controls, playlists, media and renderer discovery, recording, chapters, A-B loops, video adjustments, overlays, and 360-degree viewpoint control.
- A prebuilt libVLC 4 XCFramework delivered through Swift Package Manager for every supported Apple platform.
- Complete DocC coverage for the public API and a test suite that exercises the real libVLC binary.
Fixed since v0.10.1
- Remote MP4 streams with AAC roll metadata now keep the requested seek target instead of reading again from the beginning. The regression test verifies both the HTTP range request and the playback landing time. #56
- Closing the opt-in native macOS Picture in Picture window restores the drawable before the floating window is torn down, then rebuilds the video output so inline video returns with audio and playback state intact.
- Failed UPnP initialization no longer enters an unmatched teardown path that can hang in
ThreadPoolShutdown. #60 MediaDiscoverer.mediaListnow adopts libVLC's returned reference instead of retaining it twice, removing a leak on every access. #35- Equalizer band updates skip unchanged values, avoiding redundant native calls and observation updates. #41
- Debug lifetime probes now verify that media parse and thumbnail callback boxes are released on every terminal path. #47
Showcase and release tooling
- Every Showcase app now accepts one app-wide test stream URL for the current session. The value is redacted in the UI and supports HTTP, HTTPS, HLS, RTSP, UDP, and other VLC-compatible schemes.
- XCFramework duplicate-symbol repair now fails on archive errors, verifies Mach-O alignment, and runs again after release stripping.
- Release validation covers all eight platform slices and the native patches required by the rebuilt binary.
Requirements
- Swift 6.3 and Xcode 26.4 or later
- iOS 18 or later
- macOS 15 or later
- tvOS 18 or later
- visionOS 2 or later
- Mac Catalyst 18 or later
Installation
.package(url: "https://github.com/harflabs/SwiftVLC.git", from: "1.0.0")Applications already using v0.10.1 do not need source changes for this release. Update the package requirement to 1.0.0 to receive the rebuilt XCFramework and the fixes above.
Thank you to everyone who reported real playback failures, tested on physical devices, and helped turn the rough edges into reproducible cases. Those reports directly shaped this release.
Binary artifact
libvlc.xcframework.zip- 368 MB, stripped
- SHA-256:
23509b945aafb97634d2e66af24a377d7bd50b672aba8f5dec1d6f9ef8614045
Full changes: v0.10.1...v1.0.0