Semaphor
Data Apps

Publishing

Prepare a Data App for publishing and embedding through Semaphor.

Publishing makes a Data App available through Semaphor so your team or customers can open it from the Semaphor-hosted experience.

This page focuses on what a Data App should satisfy before publishing. The exact publishing command or UI can depend on your workspace setup.

Before Publishing

Run through this checklist:

  • Every visual has loading, empty, and error states.
  • Every query uses governed semantic builders unless SQL is explicitly required.
  • Tables use bounded limits or server-side pagination.
  • Inputs fetch option lists server-side.
  • Relationship-aware filters and projections return expected diagnostics.
  • The app does not include project secrets or dashboard secrets in client code.
  • The app builds without TypeScript errors.
  • The app has been tested with the same token scope that users will have.

Runtime Token

Published Data Apps can receive a runtime token from Semaphor. Local apps can pass a token directly to SemaphorDataAppProvider.

<SemaphorDataAppProvider token={token}>
  <App />
</SemaphorDataAppProvider>

Inside Semaphor's hosted runtime, the provider can read the injected runtime token when available.

Embedding

Data Apps should follow the same customer expectation as dashboards: a published app should be embeddable through Semaphor's governed hosting and token model.

Keep these principles:

  • Users should not need a different security model for Data Apps than dashboards.
  • The hosted app should use governed Semaphor execution for all data queries.
  • Embedded users should not see development-only observability unless explicitly enabled for authoring.

Development Observability

During development, it is useful to know which query drives each visual. A good Data App should make this inspectable without showing internal details to embedded end users.

Recommended development-only details:

  • view id and title;
  • query kind;
  • source and fields;
  • input bindings;
  • pagination and row limits;
  • relationship diagnostics;
  • generated SQL when Semaphor returns it and the user is allowed to inspect it.

Do not expose secrets or raw tokens in development panels.

On this page