Skip to Content
Installation

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 noir

Then check that the bundled native libraries resolve on this machine:

dart run noir:health_check

The 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_signals

That declares both hosted packages:

dependencies: noir: ^0.0.2 noir_signals: ^0.0.1-alpha.0

Files 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/noir

The 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/noir

Do 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

SymptomWhat to check
dart pub get cannot find noir_signalsIt is a prerelease. Declare ^0.0.1-alpha.0, or run dart pub add.
dart pub get reports a version conflict on noirThe companion needs Noir 0.0.2. Use that version or the checkout override shown above.
The app builds, then fails while loading the native libraryCheck 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 failsReport the output with your OS and architecture. Do not rebuild or replace the bundled artifacts.
The terminal draws nothing after runTuiAppRun 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.

Last updated on