Installation
Add Noir to a project, check that its native libraries load, and resolve the
optional noir_signals companion.
You need Dart 3.10 or later on macOS 13+, Linux with glibc 2.17+, or Windows. Android, iOS, and web are not supported. See Platform support before you choose a target.
Add Noir
From your project directory:
dart pub add noirThen check that the bundled native libraries resolve on this machine:
dart run noir:health_checkThe command verifies native-asset resolution and a headless render lifecycle. It does not open a real terminal, read raw input, or prove escape rendering.
Applications import one library:
import 'package:noir/noir.dart';Continue with Your first app. For the lower-level surfaces and the generated symbol reference, see API.
Add the noir_signals companion
The companion adds SignalWidget, reusable lifecycle hooks, and the Signals
integration. Noir never depends on it, and a Noir-only application resolves
neither the companion nor signals_core.
From your project directory:
dart pub add noir noir_signalsThat declares both hosted packages:
dependencies:
noir: ^0.0.2
noir_signals: ^0.0.1-alpha.0Files that use hooks import both libraries:
import 'package:noir/noir.dart';
import 'package:noir_signals/noir_signals.dart';To evaluate unreleased changes to both packages, clone the public Noir repository beside your application, pin an exact commit or tag, and resolve both from that revision:
dependencies:
noir: ^0.0.2
noir_signals:
path: ../noir/packages/noir_signals
dependency_overrides:
noir:
path: ../noir/packages/noirThe override routes the companion’s own noir dependency to the same
checkout, so one revision supplies both packages.
Try an unreleased Noir API without the companion
LayoutBuilder, State.deferDispose, and mouse pointer shapes are included in
Noir 0.0.1. To evaluate changes beyond the published package, point your
application at a repository checkout:
dependencies:
noir:
path: ../noir/packages/noirDo not copy generated bindings, bundled native artifacts, or framework-owned internals into an application to reach a newer feature. Either stay on the published surface, or pin and evaluate one repository revision as a unit.
When something does not resolve
| Symptom | What to check |
|---|---|
dart pub get cannot find noir_signals | It is a prerelease. Declare ^0.0.1-alpha.0, or run dart pub add. |
dart pub get reports a version conflict on noir | The companion needs Noir 0.0.2. Use that version or the checkout override shown above. |
| The app builds, then fails while loading the native library | Check the OS floor above. A macOS 12 machine can build and still fail to load Noir’s macOS 13 libraries. |
dart run noir:health_check fails | Report the output with your OS and architecture. Do not rebuild or replace the bundled artifacts. |
The terminal draws nothing after runTuiApp | Run from a real terminal, not a captured pipe, and confirm the process stays in the foreground. |
The pinned OpenTUI source and the bundled native libraries are framework-owned. An application should not rebuild, replace, or patch them as part of a normal installation.