---
title: "Adonia 1.0 API review"
image: "https://adonia.pages.dev/og.png"
version: "next"
---

> Documentation Index
> Fetch the complete documentation index at: https://adonia.pages.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Adonia 1.0 API review

**Review date:** 2026-07-27  
**Scope:** the seven publishable packages, descriptor protocol v1, `ComponentRegistry`, server and UI plugin contracts, explicit package subpaths, Ace hooks, and doctor checks.

## Decision

Protocol version remains the literal `1`. Phase 4 tenant, nesting, locale, plugin, and registry data is optional or carried in open `props` objects; no existing required envelope or descriptor key is renamed or removed. Clients continue to reject only a value other than `1`.

The signed source inventory is generated by `pnpm launch:check` from package export maps and source barrels. The protocol fixture set under `fixtures/protocol/` remains the executable wire inventory.

## Frozen ecosystem ABIs

- Wire roots: `AdoniaEnvelope`, `PanelEnvelope`, `ResourceDescriptor`, `DescriptorNode`, `TableDescriptor`, `ColumnDescriptor`, `ReactiveSpec`, `RecordsEnvelope`, `SerializedRow`, `ActionDescriptor`, and `protocolVersion: 1`.
- Required node keys: `type`, `key`, `props`; optional additive keys: `reactive`, `urls`, `children`.
- Required resource keys: `resource`, `mode`; mode-specific `schema`/`table`; additive `actions` and `lenses`.
- Registry values and types: `ComponentRegistry`, `createAdoniaRegistry`, `getDefaultRegistry`, `RegistryMapName`, `AdoniaUiPlugin`, `NamedAdoniaUiPlugin`, `UnknownComponentEvent`; `register`, `resolve`, `use`, and unknown-component subscription behavior.
- Server plugin values and types: `definePlugin`, `AdoniaPlugin`, `ADONIA_HOOK_EVENTS`, hook payload types, and `Panel.plugins()`.
- Hook event names: `resource:booted`, `descriptor:compiling`, `pipeline:building`, `record:saving`, `record:saved`, `record:deleting`, `record:deleted`, `action:executing`, `action:executed`, `action:failed`, `nav:building`, and `search:results`.
- Addressable pipeline stage names: `base`, `softDeleteScope`, `search`, `filters`, `sort`, and `eagerLoad`.

## Export review

Every `exports` key is intentional. `@adonia/core` exposes the root authoring/runtime API plus the documented testing, protocol types, provider, and middleware integration subpaths. `@adonia/ui` exposes its root authoring API, packaged pages, registry-only API, Tailwind preset, and stylesheet. `@adonia/devtools` intentionally has no root export: only `hooks`, `commands`, `configure`, and `doctor` are supported. Each adapter/reference plugin exposes only its documented root and, where applicable, `client` entry.

The broad root barrels in core and UI are intentional extension-author surfaces: custom fields, columns, filters, widgets, pages, transports, plugin hooks, and conformance utilities need them without internal-path imports. Heavy editor implementations remain absent from the UI value barrel and lazy-loaded.

`@adonia/core` has no runtime dependency on `@adonia/ui`. AdonisJS, React, Lucid, Vine, BullMQ, and framework integration packages remain peer dependencies at their package boundaries.

## Deprecation and alias sweep

No public `@deprecated` declaration or Phase-future compatibility export remains. `NotImplementedException` was removed from the core root barrel during review: no runtime path throws it, it represented unfinished-work vocabulary rather than an ecosystem contract, and consumers must use the concrete stable exception for the failed operation. The Router `makeUrl` member is a private structural compatibility input for AdonisJS Router and is not exported as an Adonia API.

`RuleBuilder.is`/`isNot`/`isTruthy`/`isFalsy` and `equals`/`notEquals`/`truthy`/`falsy` are intentional DSL vocabulary pairs accepted since 0.x, not deprecated aliases; both compile directly to the same frozen JsonLogic rules and remain supported. Container aliases are stable AdonisJS binding names, not source compatibility shims.

No 0.x public symbol needs a breaking rename for 1.0. The one accidental export removal has no mechanical replacement, so a codemod would be misleading; no codemod is required or shipped. The changeset and checklist record this decision.

Source: https://adonia.pages.dev/launch/api-review/index.mdx
