Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 2.2 KB

File metadata and controls

57 lines (42 loc) · 2.2 KB

StructuredLayout Roadmap

This roadmap describes areas to explore before 1.0. It is directional rather than a delivery promise; real-world UIKit and SnapKit feedback determines priority.

Guiding Constraints

  • Preserve progressive adoption in existing UIKit/SnapKit projects.
  • Keep the core Package dependency-free.
  • Do not create layout-only container UIViews.
  • Continue emitting native Auto Layout constraints.
  • Keep behavior understandable under Instruments and Xcode's constraint debugger.

0.1 — Foundation

  • Row / Column
  • HStack / VStack aliases
  • ZStack / Spacer
  • Padding and dimension modifiers
  • Expansion and equal-size distribution
  • Safe Area and custom layout targets
  • LayoutHandle lifecycle
  • Conditional and collection Result Builder support
  • SnapKit code-size and performance comparisons

0.2 — Updates and Animation

  • Document a recommended layout-state transition pattern.
  • Explore constraint handles for targeted constant and priority updates.
  • Add examples for UIView constraint animations.
  • Define reinstall and replacement behavior for responsive layouts.
  • Preserve business UIViews while replacing layout constraints.

StructuredLayout does not plan to reproduce SwiftUI's full render/diff runtime. Updates should remain explicit and UIKit-native.

0.3 — Grid and Wrapping

  • Evaluate a Grid API for fixed and proportional columns.
  • Explore flow/wrapping layouts for tags and chips.
  • Define overflow and intrinsic-size behavior.
  • Benchmark large grids against UICollectionView and UIStackView alternatives.

Cell Reuse Guidance

  • Publish UITableViewCell and UICollectionViewCell examples.
  • Install the layout once in init/setupUI, never on every configure call.
  • Document content updates that do not reinstall constraints.
  • Add reuse stress tests and scrolling measurements.
  • Cover self-sizing cells and estimated dimensions.

Feedback Wanted

Please open a GitHub issue with:

  • the UIKit screen structure you are trying to express;
  • the equivalent SnapKit code;
  • the missing API or unexpected constraint behavior;
  • whether the layout is static, animated, responsive, or cell-based.