# @rbxts/roact

> TypeScript support for Roact

Latest version **3.0.1** (published 2024-09-12) · 0 weekly downloads

## Install

```sh
npm install @rbxts/roact
pnpm add @rbxts/roact
yarn add @rbxts/roact
bun add @rbxts/roact
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.1 |
| Published | 2024-09-12 |
| First published | 2019-06-01 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 114.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | osyris |
| Keywords | roblox, typescript, roact |

## Links

- npm: https://www.npmjs.com/package/@rbxts/roact
- npm.io page: https://npm.io/package/@rbxts/roact

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 3.0.1 (latest) — 2024-09-12
- 1.3.0-ts.12 (refactor) — 2021-03-07
- 3.0.0 — 2024-09-11
- 1.4.4-ts.0 — 2022-09-10
- 1.4.2-ts.3 — 2022-07-09
- 1.4.2-ts.2 — 2022-05-27
- 1.4.2-ts.0 — 2022-04-01
- 1.4.0-ts.2 — 2021-08-10
- 1.4.0-ts.1 — 2021-07-27
- 1.4.0-ts.0 — 2021-07-11
- 1.3.0-ts.15 — 2021-07-09
- 1.3.0-ts.14 — 2021-04-03
- 1.3.0-ts.13 — 2021-04-02
- 1.3.0-ts.11 — 2021-03-07
- 1.3.0-ts.10 — 2021-01-16
- … 34 more at https://npm.io/package/@rbxts/roact/versions

## README

<div align="center"><img src="https://australis.dev/roact-tsx.png?v=3"/></div>
<h1 align="center">@rbxts/roact</h1>
<div align="center">
	<a href="https://roblox.github.io/roact">
		<img src="https://img.shields.io/badge/docs-lua-purple.svg" alt="Documentation"></img>
	</a>
	<a href="https://github.com/roblox-ts/roblox-ts">
		<img src="https://img.shields.io/badge/github-roblox_typescript-red.svg" alt="roblox-ts"></img>
	</a>
	<a href="https://roblox-ts.github.io/docs/roact/">
		<img src="https://img.shields.io/badge/docs-typescript-blue.svg" alt="Documentation"></img>
	</a>
	<a href="https://www.npmjs.com/package/@rbxts/roact">
		<img src="https://badge.fury.io/js/%40rbxts%2Froact.svg"></img>
	</a>
</div>

<div align="center">
	A typescript port of <a href='https://github.com/Roblox/roact'>Roact</a>, a declarative UI library inspired by <a href="https://reactjs.org">React</a>.
</div>

<div>&nbsp;</div>

## Installation
You can install it via `npm i @rbxts/roact`.

## Usage
For a detailed guide and examples, check out [the official Roact documentation](https://roblox.github.io/roact). The Wiki on this repository will have guides on how to adapt to using typescript instead of Lua.

## Required tsconfig.json settings
You will need the settings from [roblox-ts](https://github.com/roblox-ts/roblox-ts), as well as:
```json
{
	"compilerOptions": {
		"jsx": "react",
		"jsxFactory": "Roact.jsx",
		"jsxFragmentFactory": "Roact.Fragment",
	},
}
```

### Regular TypeScript
```typescript
import Roact from '@rbxts/roact';

const LocalPlayer = game.GetService("Players").LocalPlayer as Player;
const PlayerGui = LocalPlayer.FindFirstChildOfClass("PlayerGui");

const tree = Roact.createElement("ScreenGui", {}, {
  Label: Roact.createElement("TextLabel", {
    Text: "Hello, World!",
    Size: new UDim2(1, 0, 1, 0)
  }),
});

Roact.mount(tree, PlayerGui, "HelloWorld");
```


### JSX Typescript (.tsx files)
```tsx
import Roact from '@rbxts/roact';

const LocalPlayer = game.GetService("Players").LocalPlayer as Player;
const PlayerGui = LocalPlayer.FindFirstChildOfClass("PlayerGui");

const tree = <screengui>
  <textlabel Key="Label" Text="Hello, World!" Size={new UDim2(1, 0, 1, 0)}/>
</screengui>;

Roact.mount(tree, PlayerGui, "HelloWorld");
```

## License
The original Roact library's License can be found here: [Roact License](https://github.com/Roblox/roact/blob/520f8e685ab174654c8b3a99c3f243cadadc1c7d/LICENSE.txt)

---
_Source: https://npm.io/package/@rbxts/roact · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
