Skip to content

SwiftUI parity coverage contract

Status values are intentionally conservative: an exported surface starts as implemented-unverified, and a fixture is not passing until native behavior, geometry, appearance, and applicable interaction evidence are recorded.

Inventory snapshot

This is the P0 inventory from the current source tree. The Lua constructor list is the public visual surface; native bridge symbols are implementation support, not additional user-facing controls. Data-only services are excluded.

Family Lua API XML AppKit UIKit SwiftUI mapping Initial status
Window Window, Panel Window yes Window/hosting WindowGroup, sheet/window implemented-unverified
Layout VStack, HStack, ZStack, HSplit, VSplit, ScrollView, Spacer, Group, ForEach VStack, HStack, ZStack, HSplit, Spacer yes no HSplit export; ZStack yes stacks, ZStack, grouping, ForEach implemented-unverified
Scrolling ScrollView ScrollView yes yes ScrollView implemented-unverified
Text Text, Title Label, Text, Title yes Label, Text, Title Text implemented-unverified
Text input TextField, SearchField, TextEditor TextField, SearchField, TextEditor yes TextField, SearchField, TextEditor TextField, SecureField, TextEditor, searchable implemented-unverified
Images Image, SystemImage, ImageViewer Image, SystemImage yes yes Image, Label with symbols implemented-unverified
Buttons Button, Link, Menu, Commands Button, Link, Menu yes yes Button styles, roles, symbols; Link, Menu implemented-unverified
Selection Toggle, Slider, Stepper, Picker all four plus Option yes Toggle, Slider, Stepper, Picker styles controls and Picker implemented-unverified
System pickers DatePicker, ColorPicker both tags yes yes DatePicker, ColorPicker implemented-unverified
Feedback Separator, Divider, ProgressView, PageControl, ContentUnavailable Divider, ProgressView, ContentUnavailable no PageControl; yes other listed primitives ProgressView, PageControl, ContentUnavailable Divider, ProgressView, PageControl implemented-unverified
Collections List, OutlineView List, Column yes List (table-shaped) List, Table, OutlineGroup implemented-unverified
Navigation TabView, NavigationStack, NavigationLink TabView, Tab TabView TabView, NavigationStack, NavigationLink TabView, NavigationStack, NavigationSplitView implemented-unverified
Presentation present, dismiss, focus helpers none yes partial hosting sheets, popovers, alerts, panels implemented-unverified
Toolbar ToolbarItem, toolbar config Toolbar, ToolbarItem yes not equivalent ToolbarItem and placements implemented-unverified
Shapes/drawing PathView, Curve, LinearGradient, MeshGradient, TimelineView, Chart LinearGradient, MeshGradient, MeshPoint, TimelineView, Chart yes mesh rasterizer shared MeshGradient, TimelineView(.animation), Canvas implemented-unverified

XML vocabulary

The schema currently defines these tags: VStack, HStack, ZStack, HSplit, Spacer, PageControl, Divider, ScrollView, Label, Title, TextEditor, TextField, Button, Toggle, Slider, Stepper, Option, Picker, SystemImage, Image, LinearGradient, MeshGradient, MeshPoint, TimelineView, Column, List, ToolbarItem, Toolbar, Window, Chart, TabView, Tab, Section, GroupBox, Form, LabeledContent, ControlGroup, DisclosureGroup, and the recursive OutlineGroup Lua composition. Text and Switch are aliases, not separate controls. Record tags such as Column and Option are configuration nodes and are not counted as visual controls.

The table-shaped XML List is tracked separately from SwiftUI List and Table; it must not be marked equivalent without evidence.

Required fixture batches

The full fixture catalogue is represented by the batch IDs in tests/parity/manifest.json. P0 seeds only the three P1 smoke fixtures. The remaining A1–E families are explicitly incomplete until expanded and captured.

Gate Batches P0 state
Core parity A1–A5, B1–B5, C1, D1–D2, E unassessed / incomplete
Common SwiftUI coverage C2, D3 and missing members of A–D unassessed / incomplete
Extension backlog advanced scope in the plan explicitly out of scope