Status
Platform support
Compare implemented and verified NatUI behavior on macOS and Windows.
NatUI is still in Alpha. Support claims distinguish implementation, compilation, and real-window verification.
| Capability | macOS | Windows |
|---|---|---|
| Native toolkit | SwiftUI | WinUI 3 |
| Base demo workflow | Real-window verified | Real-window verified |
| Kitchen-sink app-shell workflow | Real-window verified | Compile-checked |
| Node process mode | Verified | Verified |
| Embedded mode | JavaScriptCore verified | Not implemented |
| Host build in CI | Yes | Yes |
| GUI suites in CI | No | No |
Windows differences
- Toolbar search items render in the left region. Rebuilding the toolbar drops current search text and focus.
DatePickeruses a date-only control. AdateTimevalue displays its date portion and emitsYYYY-MM-DD; atimevalue cannot be represented and leaves the native value unchanged.- Rows nested in list sections are not individually selectable, and list row badges are not rendered.
- Toggle and picker styles, plus text-field secure mode, are fixed when the control is created.
- Sheet uses an in-tree overlay. Alerts, popovers, and menus use popup layers.
- Split view ignores minimum and maximum sidebar widths. It has no native visibility affordance, so visibility is changed only through the React
valueprop and Windows does not emitonChange. - Alert supports one cancel button and two other buttons. Extra buttons are dropped, and destructive styling is not shown.
- Table sort indicators are text arrows rather than native column-header indicators.
- Mixed element children inside
Textare dropped, while button and toggle mixed labels are supported. SpacerinsideZStackcollapses.- Image padding and background are not painted.
- Only the prominent button variant has distinct styling.
- Container foreground color does not cascade, and rounded panel backgrounds do not clip children.
macOS details
- Table uses a list-based fallback on macOS 14.0 through 14.3.
- Tab icons and badges are currently not rendered in the native tab label.
- The host supports embedded JavaScriptCore execution.
These are current implementation details, not promises of permanent divergence.