---
title: "Installation"
description: "Install Radiant and JSX for the standard setup, or Signals for standalone reactive use."
group: Getting Started
order: 2
---
import { CodeTabs } from '@/components/code-tabs';
# Installation
Radiant is the core package. Signals ships with it as the reactive layer. JSX is the companion package for TSX rendering.
For the standard Radiant setup, install `@ecopages/radiant` and `@ecopages/jsx`. `@ecopages/signals` is installed automatically with `@ecopages/radiant`.
That is the simplest setup today:
- `@ecopages/radiant` provides the custom-element and controller runtime
- `@ecopages/jsx` backs `render()` and the TSX authoring flow
- `@ecopages/signals` backs host reactivity, `@signal`, and resource helpers
You do not need to import JSX or Signals APIs directly in every Radiant component. A component can use `render()` without importing `@ecopages/jsx` symbols itself, and `@state` does not require importing `@ecopages/signals` in application code.
`@ecopages/radiant` currently declares `@ecopages/jsx` as a peer dependency. It also depends on `@ecopages/signals` directly for host member state. `@ecopages/jsx` declares `@ecopages/signals` as a peer dependency for signal-backed derived bindings such as `mapSubscribable(...)`.
Installing `@ecopages/radiant` brings `@ecopages/signals` transitively, which satisfies `@ecopages/jsx`'s peer dependency. The packages still ship as separate npm artifacts; your app bundler must resolve them to a **single** module instance within the application graph. Inlining `@ecopages/signals` into more than one app vendor chunk (or installing conflicting versions) breaks shared reactivity — for example, `@state` updates may not reach `createResource` when each chunk owns its own signals runtime.
## TypeScript Setup For JSX
```json
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "@ecopages/jsx"
}
}
```
Or enable it per file:
```tsx
/** @jsxImportSource @ecopages/jsx */
```
## Signals Standalone
If you only want the reactive core, install `@ecopages/signals` by itself:
## Which Packages To Install
- Install `@ecopages/radiant` and `@ecopages/jsx` for the standard Radiant setup. `@ecopages/signals` comes in with `@ecopages/radiant`.
- `@ecopages/jsx` is required for TSX authoring, `render()`, hydration helpers, and SSR rendering.
- `@ecopages/signals` backs `@signal`, host-owned async resources, and standalone reactive code. Install it explicitly only when you want the reactive layer outside Radiant, or when using `@ecopages/jsx` without radiant.