/synclair/library is the section that only appears when a product has more than one
frontend — a web app and a React Native app sharing a backend, say. It’s a per-surface
drill-in that lets each frontend have its own catalog while living in one hub.
Most projects never see this. With zero or one frontend, the surface machinery
collapses to nothing — the hub is byte-for-byte the single-app version, no extra chrome.
This page is for the multi-frontend case.
What it is
A surface is one deployable frontend of the product — “the responsive web app,” “the React Native companion.” When a project declares more than one, the library gains a scoped explorer so you can browse each surface’s UI on its own.What’s in it
- Per-surface catalogs — a web
buttonand a nativebuttoncoexist without colliding (names are unique per surface + name, not globally). - A scoped explorer — a dense, filterable tree plus per-surface routes
(
/synclair/library/<surface>/<tier>/<name>), with the surface carried in the path. - Per-surface previews — each surface renders through its own platform adapter.
How it works
The list of surfaces is seed (lib/system/seed/surfaces.ts, empty by default); the
mechanism is Brain (lib/system/surfaces.ts). Some things are per-surface (catalogs,
preview adapters, environment stacks); others are shared across all of them (the
knowledge base, the system map, brand tokens).
Native previews are tiered. A React Native component that’s purely presentational can
live-render via react-native-web when the surface opts in; anything touching native
modules (camera, native maps) falls back to a screenshot or embed. That’s a per-project
intake decision, not a default.
How to act on it
Declare surfaces at intake
Declare surfaces at intake
Add an entry per frontend to
lib/system/seed/surfaces.ts. This is a setup-time
decision — declare them when the project genuinely has multiple frontends.Browse one surface
Browse one surface
Use the surface selector (defaults to “All”) to scope the explorer to a single
frontend, or navigate straight to
/synclair/library/<surface>/....Catalog a new surface's components
Catalog a new surface's components
Run the intake/cataloging flow per surface — the same
component-library and
existing-project-intake skills, scoped to that surface.Related: Component library
The single-surface catalog — the tiers, galleries, and doc pages every surface builds on.