Everything a full-stack app needs, none of it required upfront.

Start with the runtime and a route registry. Pull in themed components, a server, and production tooling as the app actually grows into them.

Four stages from component to production

Each one builds on the last — adding a server later doesn't mean rewriting the routes and components you already have.

  1. 01Build

    Start with a component

    Core runtime, CLI scaffolding, and Vite Plus.

    @askrjs/askr · @askrjs/cli · @askrjs/vite
  2. 02Compose

    Shape the application

    State, routes, data, headless components, themes, schemas, and an optional server.

    @askrjs/ui · @askrjs/themes · @askrjs/schema · @askrjs/server
  3. 03Deliver

    Choose when HTML happens

    Single Page Application, Server Side Rendering with hydration, Static Site Generation, or full-stack delivery.

    SPA · SSR + hydration · SSG
  4. 04Operate

    Ship the production site

    Static files or Node output, with clear security, localization, probe, and telemetry seams.

    @askrjs/node · @askrjs/auth · @askrjs/i18n · @askrjs/otel

You don't have to decide the shape of the app up front

A static marketing site and a full-stack dashboard can share the same route registry and component code. What changes is which packages you add and which adapter renders the output — not how you write routes or components.

That means a project that starts as static HTML doesn't hit a wall the day it needs a server: you add @askrjs/server and a route policy, not a second framework.

View the example applications

17 packages with explicit peer boundaries

6 packages beyond the runtime have no Askr peer requirement. Packages that compose with the runtime declare it explicitly, and @askrjs/themes also declares its headless @askrjs/ui layer. The “requires” column is generated from each installed package’s published peer dependencies.

All of them are pre-1.0 (0.2.x) — the API surface is still moving, and askr upgrade exists because breaking changes are expected between minor versions, not just major ones.

Published Askr packages
PackageWhat it gives youRequires
@askrjs/askrComponents, state, routing, resources, and the SSR/SSG renderers.Nothing
@askrjs/cliScaffolding, generators, OpenAPI checks, and dependency updates.@askrjs/askr
@askrjs/viteThe build plugin for JSX, SSR, and static generation.@askrjs/askr
@askrjs/uiHeadless components: keyboard behavior, focus, and ARIA.@askrjs/askr
@askrjs/themesStyled components and design tokens on top of the headless layer.@askrjs/askr @askrjs/ui
@askrjs/lucideThe Lucide icon set as Askr components.@askrjs/askr
@askrjs/logosA curated set of brand logo components.@askrjs/askr
@askrjs/chartsTyped Canvas plots with SVG and data export.@askrjs/askr
@askrjs/monacoA Monaco editor wrapper for in-app code editing.@askrjs/askr
@askrjs/serverTransport-neutral HTTP built on Request and Response.@askrjs/askr
@askrjs/nodeThe Node adapter that runs the server in production.Nothing
@askrjs/schemaExecutable schemas that also project to OpenAPI.Nothing
@askrjs/authIdentity resolution and route access policies.Nothing
@askrjs/fetchTyped HTTP clients defined in code, or generated from an OpenAPI document via the CLI.Nothing
@askrjs/i18nTyped message keys that fail the build when a translation is missing.@askrjs/askr
@askrjs/otelRedaction-aware OpenTelemetry instrumentation.Nothing
@askrjs/testingRequest injection and HTTP testing helpers.Nothing

Start with the runtime. Add the rest when the app asks for it.