---
id: getting-started/installation
title: Installation
---

Install the adapter for your stack. The React adapter re-exports all of core, so a React app needs just two packages.

## React

```bash
pnpm add @secundus-studio/stift-react@0.4.0 @secundus-studio/stift-vite-plugin@0.4.0
```

`@secundus-studio/stift-react@0.4.0` re-exports `@secundus-studio/stift-core@0.4.0` — `createStift`, the `Stift` type, `RegisteredLocale`, `PersisterAdapter`, hooks, providers, all of it. Import everything from `@secundus-studio/stift-react@0.4.0`.

## Vanilla TypeScript

```bash
pnpm add @secundus-studio/stift-core@0.4.0 @secundus-studio/stift-vite-plugin@0.4.0
```

Headless runtime with no React and no DOM — works in Node, browsers, and workers, anywhere TypeScript runs.

## Offline storage (recommended)

```bash
pnpm add @secundus-studio/stift-persisters@0.4.0
```

One package, three backends plus a best-effort chain (OPFS → IndexedDB → Cache Storage → memory: first supported wins, never throws). Without a persister, packs are memory-only and re-fetched each boot. See [Offline & Persistence](../runtime/offline-persistence.md).

## Devtools (dev only)

```bash
pnpm add @secundus-studio/stift-tanstack-devtool-plugin@0.4.0
```

Panel inside the TanStack Devtools shell with live translation editing. The whole surface is gated by `import.meta.env.DEV`, so production builds drop it. See [Devtools](../tooling/devtools.md).

[//]: # 'Compatibility'

Works with React 18+ (the adapter is `useSyncExternalStore`-backed) and any Vite app for the build plugin. OPFS persistence requires a secure context (localhost is fine; production needs HTTPS) — otherwise the chain falls back to IndexedDB automatically.

> Wanna see the finished wiring before you install? The canonical reference app is `examples/tanstack-spa` in the repo: config, instance, boot, and devtools all wired.

[//]: # 'Compatibility'

## Next

Continue with the [Quickstart](../react/quickstart.md) to wire the plugin, write your config, and render your first key.
