Advanced: split-package build target

For nearly all consumers the canonical install is the single @honua/sdk-js package described in INSTALL.md. The repository also carries an opt-in build target that produces five focused npm packages from the same source tree, for downstream packagers and organizations that only want a subset of the surface.

Packages produced by the split build

Package Subpath equivalent What it contains
@honua/sdk @honua/sdk-js/honua + most stable subpaths Core client, shared contract, query planner, offline-region contract, and plan-bound MapLibre adapter
@honua/sdk-esri-compat @honua/sdk-js/esri-compat Esri ArcGIS JS compatibility layer (incl. the geometryEngine shim)
@honua/react @honua/sdk-js/react React provider, hooks, and map components (optional react / react-dom peers)
@honua/geometry @honua/sdk-js/geometry Curated turf/proj4 client-side geometry ops + reprojection
@honua/app-platform (evicted from @honua/sdk-js) Application-platform surfaces — app-shell/workspace/scene state, studio + generated-app builder contracts, operator controllers, native controls / web components, and hosted-product clients (control-plane, collaboration, share, operate, replica-sync). See decisions/scope-split-and-1.0.md.

Companion packages that carry a copy of the contract declare the exact @honua/sdk version as a required peer. Their local contract forwards capability-profile recognition to that peer, so an immutable profile created by the core SDK remains valid across React, app-platform, geometry, and Esri-compat boundaries without exposing the profile-registration authority.

The migration package is no longer a generated SDK split. It is built from the honua-migrate repository, while @honua/sdk-js/migration remains a temporary forwarder. See the transition policy.

Optional gRPC-Web runtime

REST and open-protocol consumers do not install the Buf/Connect runtime. A consumer that selects transport: "grpc-web" must install the optional peers alongside the split SDK:

npm install @honua/sdk @bufbuild/protobuf @connectrpc/connect @connectrpc/connect-web

npm run verify:split-packages installs the generated package into a fresh consumer, opts into those peers, and executes a unary QueryFeatures call through the packed SDK's real protobuf adapter and Connect gRPC-Web transport. The deterministic in-process protocol fixture verifies request serialization, authentication headers, response framing, and response decoding without an external service. It does not replace live Honua Server conformance testing.

How to build the split tarballs

# from the repo root
npm install
npm run build
npm run build:split-packages
# tarballs land in dist/packages/* — npm pack each as needed
npm run pack:split-packages

Why the split exists

When not to use it

If you are writing an application that consumes the Honua server directly, install @honua/sdk-js instead. The split packages are not the recommended consumer install — they exist for packaging workflows, not for end users.

The monolithic package root is a reviewed common workflow, not an alias for all split-package surfaces. Advanced imports use the focused subpaths in INSTALL.md; every transition-era root symbol has an exact replacement in the generated root import migration table.