3 first-party framework integrations

Framework integrations

Use Octane with the framework that already runs your app. Each integration takes care of the framework-specific setup.

Find the right integration

Choose the package for the framework that runs your app. It covers more than compilation, including routes, server rendering, hydration, and content. If you only need compiler support, see Build tools. For React library ports, see Bindings.

Islands renderer

Astro

Render Octane components as Astro islands with server rendering, client directives, and mixed-framework source ownership.

@octanejs/astro
Content framework bridge

Docusaurus

Adopt Docusaurus content, routes, MDX, and plugin data with an Octane-native renderer and theme layer.

@octanejs/docusaurus
Full-stack framework

TanStack Start

Build file-routed Octane applications with server functions, streaming SSR, hydration, and Vite development and production builds.

@octanejs/tanstack-start

Astro islands

Use @octanejs/astro when most of the page belongs to Astro and you want to add Octane islands. The integration compiles every .tsrx file and any .tsx files you assign to Octane. It renders those components on the server and connects them to Astro’s client:* directives.

pnpm add octane @octanejs/astro
js
// astro.config.mjs
import { defineConfig } from 'astro/config';
import octane from '@octanejs/astro';

export default defineConfig({
	integrations: [octane()],
});
text
---
import { Counter } from '../components/Counter.tsrx';
---

<Counter client:load start={0} />

Astro still decides when each island hydrates. You can use Octane’s deferred hydration for work inside an island. The @octanejs/astro package guide covers client-only islands, mixed JSX frameworks, ownership filters, and the available options.

Docusaurus content sites

Use @octanejs/docusaurus to keep Docusaurus’s configuration, plugins, routes, generated data, and MDX while rendering the site with Octane. The package includes an Octane router, static rendering, hydration helpers, and a starter documentation theme.

pnpm add octane @octanejs/docusaurus @docusaurus/core@3.10.1
ts
// vite.config.ts
import { defineConfig } from 'vite';
import { octane } from 'octane/compiler/vite';
import { docusaurus } from '@octanejs/docusaurus/vite';

export default defineConfig({
	plugins: [...docusaurus(), octane()],
});

This package is a technical preview. React themes and swizzles need changes, and the full start and build workflow isn’t ready yet. Check the @octanejs/docusaurus package guide for the pinned Docusaurus version, theme setup, and current scope.

TanStack Start applications

Use @octanejs/tanstack-start for a full-stack Octane app built on TanStack Start. It includes file-based routing, route splitting, server functions, streaming SSR, hydration, and the Vite setup for development and production. This website uses it.

pnpm add octane @octanejs/tanstack-start @octanejs/tanstack-router
pnpm add -D vite
ts
// vite.config.ts
import { defineConfig } from 'vite';
import { tanstackStart } from '@octanejs/tanstack-start/plugin/vite';

export default defineConfig({
	plugins: [tanstackStart()],
});

Import server and app APIs from the Start package. Import route APIs from the router binding:

ts
import { createServerFn } from '@octanejs/tanstack-start';
import { createFileRoute } from '@octanejs/tanstack-router';

See the @octanejs/tanstack-start package guide for the client, server, RPC, hydration, and Vite entry points. TanStack Start is the framework. Query, Form, Store, Table, Virtual, Router, and the other TanStack packages are libraries; you’ll find their Octane ports in the TanStack bindings directory.