Backports
My SwiftUIBackports library has been extremely successful and popular and I’m so glad developers have found a use for it in their projects, enriching the access to modern SwiftUI features all the way back to earlier OS versions.
Something that’s been a burden for me personally however is that I want to include pure Swift backport’s as well, but the library is focused on SwiftUI and so this has been difficult to choose what should and shouldn’t be included.
To tackle that problem, I’m introducing 3 new packages today that provide a more appropriate implementation.
SwiftBackports
This package includes the basic infrastructure for backporting API as well as several Swift language backport’s such as:
async URLSession
UniformTypeIdentifiers
Transferable
– coming soon
Another great feature of this library is that it has considerably more OS support across all platforms, for example its minimum iOS deployment is iOS 11 🤯
SwiftUIBackports
This is the same package you know (and hopefully love) however some backports will now be moved into the package above (on which this depends on), keeping only SwiftUI implementations in this library.
Since SwiftUI was introduced in iOS/tvOS 13, macOS 10.5 and watchOS 6 – this package has the same minimum deployment but it attempts to bring those OS versions up-to-date – where possible.
SwiftUIPlus
Lastly, I have several additional features and helpers that I use on a daily basis in SwiftUI to enrich the developer experience and provide missing implementations I hope will eventually support officially.
Those will go into this library, which depends on the previous two, making it easier to maintain versioning but also if eventually does provide official support, the feature included here will be deprecated with a note that you should switch to the unofficial backport instead – making it far easier to transition in many cases.
Dependencies
Additionally, I have several other independent packages that this package will depend on, to make discovery easier:
- MarkdownText
- A rich implementation that includes full support for styling individual block and inline elements
- Help
- A package for building interactive in-app help systems, that includes a rich set of styling and presentation APIs
Features
I’m still filling out this package but it will (very soon) include features that feel like official API:
- PageView
- A full SwiftUI implementation that auto sizes correctly and doesn’t behave like
TabView
- A full SwiftUI implementation that auto sizes correctly and doesn’t behave like
- PageIndicator
- Includes a styling API to make it easier to implement the system or custom implementations
- FittingScrollView
- An implementation that autosizes itself to fit its content
- much, much more…