SwiftUI Backports
When SwiftUI API is newer than the deployment target, check the bundled backport index before hand-rolling compatibility code or raising the target.
Workflow
Confirm the availability need.
- Use this for compiler availability errors, planned use of modern SwiftUI APIs, or user requests to support older OS versions.
- Find deployment target in
Package.swift,.xcodeproj/project.pbxproj,.xcconfig, or target settings.
Check whether
SwiftUIBackportsis available.- Search for
SwiftUIBackports,SwiftBackports, or existing.backportusage. - If absent, suggest adding
https://github.com/shaps80/SwiftUIBackportsonly when it fits the project. Do not add it unless asked.
- Search for
Search the index.
- Use
rg -i "<api-name>|<related-term>" references/Backports.jsonlfirst. - Read only matching JSONL records when possible; the first line is metadata, remaining lines are backport records.
- Match by
namefirst, then bykindandnamespace. - If the project has an installed
SwiftUIBackportscheckout, you may confirm against its source when uncertain.
- Use
Decide native vs backport.
- If target platform is marked
unavailable, do not suggest that backport. - If deployment target is lower than the entry's
deprecatedversion, use or suggest the backport. - If deployment target is at or above
deprecated, prefer native SwiftUI.
- If target platform is marked
Use the discovered API.
- View modifiers:
.backport.foo(...) - Types/views: usually
Backport.Foo; useBackport<Any>.Fooif the compiler needs the fully qualified namespace. - Environment values: use the indexed environment key, such as
@Environment(\.backportRequestReview).
- View modifiers:
If no index match exists, say no backport was found and choose another compatibility path.
Do not implement new SwiftUIBackports APIs from this skill. This is for consuming the library.
Example
sheetContent
.backport.presentationDetents([.medium, .large])
Backport.LabeledContent("", value: 0)
@Environment(\.backportRequestReview) private var requestReview