# Askr Documentation

> Build browser, server, static, and full-stack TypeScript applications with the current published Askr packages.

Source: [https://askrjs.com/docs](https://askrjs.com/docs)

Status: stable. Packages: @askrjs/askr.

**Published packages are authoritative.** Examples may lag behind a published contract. When guidance differs, verify the exports and TypeScript declarations in your installed package, then file an issue.

## Example

```tsx
import { state } from '@askrjs/askr';
import { createSPA } from '@askrjs/askr/boot';
import { createRouteRegistry, route } from '@askrjs/askr/router';

function HomePage() {
  const [count, setCount] = state(0);
  return <button onClick={() => setCount((value) => value + 1)}>Count: {count()}</button>;
}

export const pageRegistry = createRouteRegistry(() => route('/', HomePage));

await createSPA({ root: '#app', registry: pageRegistry });
```

## Choose a path

If you're starting a new project, head to Getting Started and follow the installation and quick-start pages in order — they walk through installing @askrjs/askr and wiring up createSPA or createIsland. If you already have an app running and want to look something up, use the search bar or jump straight to the section that matches what you're doing: Fundamentals for state and reactivity, Routing for the router package, Data for resource() and query helpers, or Components for the UI library. The API Reference section is generated directly from each package's shipped .d.ts files, so it's the fastest place to check an exact export or type signature.

## Published package set

Askr ships as a set of independently versioned packages under the @askrjs scope rather than one monolith — @askrjs/askr is the core runtime (state, derive, boot, router, resources, SSR/SSG), and adjacent packages like @askrjs/ui, @askrjs/auth, @askrjs/charts, @askrjs/server, @askrjs/schema, @askrjs/fetch, @askrjs/i18n, and @askrjs/cli cover UI components, authentication, charting, server integration, validation, HTTP, localization, and tooling respectively. Install only the packages your application uses and keep the set aligned through the lockfile.

## Application modes

@askrjs/askr supports more than one way to run an app: createSPA from @askrjs/askr/boot boots a client-rendered single-page app using routes registered through @askrjs/askr/router, while createIsland mounts a single component into an existing page for partial hydration. The same runtime also exposes ssr and ssg subpaths, so the same components can render on the server for request-time HTML or be pre-rendered into static output ahead of time. Which mode you pick changes where routing and data-fetching code runs, but the core primitives — state(), derive(), resource() — behave the same regardless of the mode you choose.

## Documentation sections

- [Getting Started](https://askrjs.com/docs/getting-started/index.md)
- [Fundamentals](https://askrjs.com/docs/core-concepts/index.md)
- [Routing &amp; Data](https://askrjs.com/docs/routing/index.md)
- [Rendering](https://askrjs.com/docs/rendering/index.md)
- [Server &amp; APIs](https://askrjs.com/docs/server/index.md)
- [UI &amp; Components](https://askrjs.com/docs/components/index.md)
- [Tooling](https://askrjs.com/docs/tooling/index.md)
- [Guides](https://askrjs.com/docs/guides/index.md)
- [Reference](https://askrjs.com/docs/reference/index.md)

## Upgrade guidance

### Start from the installed package set

_Before changing dependencies_

This documentation is checked against the package set installed by its lockfile. Compare the relevant API pages with your application before changing dependencies.

### Review and validate the proposed set

_For every update_

Run askr outdated first, use askr update for range-safe changes, and reserve askr upgrade for deliberately accepting breaking 0.x movement. Install, test, and build before committing the result.


## Documentation navigation

[Next](https://askrjs.com/docs/getting-started/index.md)
