# Platform support

> Compare implemented and verified NatUI behavior on macOS and Windows.

Canonical: https://natui.dev/docs/status/platform-support

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 [#windows-differences]

* Toolbar search items render in the left region. Rebuilding the toolbar drops current search text and focus.
* `DatePicker` uses a date-only control. A `dateTime` value displays its date portion and emits `YYYY-MM-DD`; a `time` value 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 `value` prop and Windows does not emit `onChange`.
* 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 `Text` are dropped, while button and toggle mixed labels are supported.
* `Spacer` inside `ZStack` collapses.
* 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 [#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.