Askr
Getting Started

Overview

Use overview with the current published Askr packages.

  • @askrjs/askr0.0.59

How to use overview

Create a readable starter, run it unchanged, and make one small production build after the first route works.

  1. Choose startkit for the recommended product baseline; choose spa, ssr, ssg, or full-stack only when that delivery boundary is already known.
  2. Run the generated application and read its route registry, scripts, and route-tree test before editing them.
  3. Add one page, update the expected route set, then build and preview the real output.
npx @askrjs/cli@0.0.5 create startkit my-app
cd my-app
npm run dev
npm run build

What Askr owns

The runtime owns reactivity (`state()`, `derive()`, `selector()`), the JSX runtime, app startup (`createIsland`, `createSPA`, `hydrateSPA` from `@askrjs/askr/boot`), routing (`@askrjs/askr/router`), async resource loading with cancellation (`resource()` from `@askrjs/askr/resources`), and the server-side entrypoints for SSR and SSG. It also ships a scoped lifecycle model — `defineScope()` and `readScope()` — for values that need lexical ownership rather than component-local state.

What your application owns

Everything else: your components, your route handlers, your data fetching logic, and how you compose features into pages. Askr doesn't impose a store, a fetch client, or a styling system — `@askrjs/ui` and `@askrjs/themes` are optional packages you opt into for component primitives and theming, not part of the core runtime. Your app decides how state is grouped and where side effects live; the runtime just gives you the primitives to do it deterministically.

Published package baseline

The framework itself is `@askrjs/askr`, currently at 0.0.59, with subpath exports for `/boot`, `/router`, `/resources`, `/data`, `/ssr`, `/ssg`, `/components`, and a few others — each maps to its own `dist/*/index.d.ts`, so import from the subpath that owns the feature you're using rather than the root barrel. Scaffolding and static builds come from `@askrjs/cli`; component and theme packages (`@askrjs/ui`, `@askrjs/themes`) are separate, versioned independently.