# FrameLayoutKit Swift and Platform Version Support Requirements

> Discover FrameLayoutKit Swift and platform version support. Learn FrameLayoutKit supports iOS 9 tvOS 9 with Swift 5 compiled, requiring iOS 11 runtime.

- Repository: [Nam Kennic/framelayoutkit](https://github.com/kennic/framelayoutkit)
- Tags: api-reference
- Published: 2026-03-05

---

**FrameLayoutKit supports iOS 9.0+, tvOS 9.0+, and requires Swift 5.0 or later to compile, though the library requires iOS 11.0+ at runtime for full functionality.**

FrameLayoutKit is a Swift-based layout library hosted at `kennic/framelayoutkit` that simplifies iOS and tvOS interface construction using declarative stack-based layouts. Understanding the FrameLayoutKit Swift and platform version requirements ensures your project meets the necessary deployment targets and toolchain specifications for successful integration.

## Minimum Platform Deployment Targets

According to the [`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift) manifest at line 8, FrameLayoutKit declares minimum deployment targets of **iOS 9.0** and **tvOS 9.0**. These declarations allow the Swift Package Manager to resolve dependencies for projects targeting these legacy versions.

However, the [`README.md`](https://github.com/kennic/framelayoutkit/blob/main/README.md) documentation at lines 89-90 states that the library requires **iOS 11.0+** at runtime. This distinction means that while the package will install on projects with iOS 9 or 10 deployment targets, the actual layout functionality requires iOS 11.0 or later to execute properly. You should configure your Xcode project with a minimum deployment target of iOS 11.0 to avoid runtime issues.

## Swift Language Version Requirements

The [`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift) file at line 20 specifies **Swift 5** as the required language version using the `.v5` identifier in the `swiftLanguageVersions` array. This constraint means FrameLayoutKit requires **Swift 5.0 or later** to compile successfully.

The library leverages modern Swift 5 features including:

- **Operator overloading** for the `+` operator used to add subviews to layout containers
- **Trailing closure syntax** and `@resultBuilder`-like patterns in the DSL-style API
- **Method chaining** via `self`-returning configuration methods on `VStackLayout`, `HStackLayout`, and `ZStackLayout` classes

These language features are unavailable in Swift 4.x or earlier, making Swift 5 a hard requirement.

## Source Files Defining Compatibility

The following key source files establish and enforce the version constraints:

- **[`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift)**: Declares the platform minimums (iOS 9, tvOS 9) and Swift version (`.v5`)
- **[`FrameLayoutKit/Classes/FrameLayout.swift`](https://github.com/kennic/framelayoutkit/blob/main/FrameLayoutKit/Classes/FrameLayout.swift)**: Contains the core `FrameLayout` class that manages single-view constraints using iOS 11+ layout anchors
- **[`FrameLayoutKit/Classes/StackFrameLayout.swift`](https://github.com/kennic/framelayoutkit/blob/main/FrameLayoutKit/Classes/StackFrameLayout.swift)**: Implements `VStackLayout`, `HStackLayout`, and `ZStackLayout`, which rely on Auto Layout features introduced in iOS 11

## Practical Implementation Examples

The following code examples demonstrate FrameLayoutKit usage on supported platforms and Swift versions.

### Vertical Stack Layout (iOS 11+, Swift 5)

```swift
import FrameLayoutKit
import UIKit

class SampleViewController: UIViewController {
    private let titleLabel = UILabel()
    private let subtitleLabel = UILabel()
    private let actionButton = UIButton(type: .system)

    private lazy var vStack: VStackLayout = {
        let stack = VStackLayout()
        stack.spacing = 12
        stack.padding(top: 20, left: 20, bottom: 20, right: 20)

        // Add sub‑views using the `+` operator
        stack + titleLabel
        stack + subtitleLabel
        stack + actionButton

        // Configure sub‑views
        titleLabel.text = "Welcome"
        subtitleLabel.text = "Frame Layout Kit Demo"
        actionButton.setTitle("Tap Me", for: .normal)

        return stack
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBackground
        view.addSubview(vStack)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        // Layout the stack to fill the whole view
        vStack.frame = view.bounds
    }
}

```

### Chainable API Configuration (iOS 9+, Swift 5)

```swift
let hStack = HStackLayout()
    .spacing(8)
    .distribution(.center)
    .padding(top: 10, left: 10, bottom: 10, right: 10)
    .debug(true)          // visual debug overlay

hStack + UIImageView(image: UIImage(named: "icon"))
hStack + UILabel().also { $0.text = "Hello" }   // `also` is a helper to configure inline

```

### DSL-Style Layout Syntax

```swift
let dslStack = VStackView {
    UILabel().also { $0.text = "Header" }
    SpaceItem(16)
    HStackView {
        UIImageView(image: UIImage(named: "avatar"))
        FlexibleSpace()
        UIButton(type: .system).also { $0.setTitle("Edit", for: .normal) }
    }
}

```

These snippets compile on any iOS 9+ or tvOS 9+ target using Xcode 12 or later with Swift 5.

## Summary

- FrameLayoutKit requires **Swift 5.0 or later** as defined in [`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift) line 20
- **iOS 9.0+ and tvOS 9.0+** are declared as minimum deployment targets in the package manifest at line 8
- Runtime functionality requires **iOS 11.0 or later** according to README.md lines 89-90
- The library uses modern Swift features including operator overloading and chainable APIs available only in Swift 5+
- Core layout classes including `VStackLayout`, `HStackLayout`, and `ZStackLayout` are implemented in [`StackFrameLayout.swift`](https://github.com/kennic/framelayoutkit/blob/main/StackFrameLayout.swift)

## Frequently Asked Questions

### Does FrameLayoutKit support iOS versions earlier than 11.0?

While the [`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift) manifest declares iOS 9.0 as the minimum deployment target, the README documentation explicitly states that iOS 11.0+ is required at runtime. You should target iOS 11.0 or later in your project to ensure full layout functionality.

### What version of Xcode is required to build FrameLayoutKit?

You need **Xcode 12 or later** to compile FrameLayoutKit because it requires the Swift 5.0 toolchain. Xcode 12 introduced the Swift 5 compiler that supports the library's syntax features including the `also` helper and result builder-style DSL patterns.

### Is FrameLayoutKit compatible with tvOS applications?

Yes, FrameLayoutKit supports **tvOS 9.0+** according to the [`Package.swift`](https://github.com/kennic/framelayoutkit/blob/main/Package.swift) manifest, making it suitable for Apple TV interface development. The same Swift 5 requirements apply to tvOS targets as iOS targets, and the layout classes work identically on both platforms.

### Can I use FrameLayoutKit in a SwiftUI project?

FrameLayoutKit is a **UIKit-based** layout library designed for `UIView` hierarchies. While you can integrate UIKit views into SwiftUI using `UIViewRepresentable`, FrameLayoutKit does not provide native SwiftUI views or modifiers, and requires iOS 11.0+ UIKit features to function.