Skip to content
DomainKit
Esc
navigateopen⌘Jpreview
On this page

React

Add DomainKit React flows for connection, provisioning, verification, and cleanup. The browser talks to your authenticated transport, never the provider.

DomainKit React turns the core lifecycle into composable UI recipes. Start with the complete Domain.Flow, adopt one focused flow at a time, or build entirely from models and parts. The integration levels guide compares those paths and the host responsibilities that remain at each level.

Install the React package with its peer dependencies and opt in to the default stylesheet:

npm install @domainkit/react domainkit effect@rc @effect/atom-react@rc react react-dom
import { Domain, DomainKit } from "@domainkit/react";
import "@domainkit/react/styles.css";

export function DomainSetup() {
  return (
    <DomainKit.Root transport={transport}>
      <Domain.Flow domain="example.com" records={records} />
    </DomainKit.Root>
  );
}

Domain.Flow coordinates connection, plan review, apply, verification, receipt-bound cleanup, and removal of the current domain grant. DomainKit.Root runs the host transport layer through Effect Atom. The package never receives provider credentials in the browser; every operation goes through your authenticated transport.

React 19 is required.

Surfaces

Surface Use it when
Domain.Flow You want the complete lifecycle in one component
Connection.Flow You only need provider connection and reuse
Provisioning.Flow Your product already owns the surrounding domain screen
Records.Table / Records.Card You want presentational DNS records without a transport
Hooks and semantic parts Your design system owns structure and interaction chrome

Server rendering is supported. Clipboard access, downloads, and navigation occur only from browser interactions.

Keep the host boundary explicit

The React package owns interaction recipes and client-side orchestration. Your application still owns authentication, authorization, durable attempts, secrets, provider credentials, and the server-side Transport implementation. See Integrate with your host application for the end-to-end boundary.

Was this page helpful?