# Nx Plugin for React

The Nx Plugin for React contains generators for managing React applications and libraries within an Nx workspace. It provides:

- Integration with libraries such as Jest, Cypress, and Storybook.
- Scaffolding for state management with Redux Toolkit libraries.
- Scaffolding for creating buildable libraries that can be published to npm.
- Utilities for automatic workspace refactoring.

## Adding the React plugin

Adding the React plugin to a workspace can be done with the following:

```shell script
#yarn
yarn add -D @nrwl/react
```

```shell script
#npm
npm install -D @nrwl/react
```

> Note: You can create a new workspace that has React set up by doing `npx create-nx-workspace@latest --preset=react`

The file structure for a React application looks like:

```treeview
myorg/
├── apps/
│   ├── myapp/
│   │   ├── src/
│   │   │   ├── app/
│   │   │   ├── assets/
│   │   │   ├── environments/
│   │   │   ├── favicon.ico
│   │   │   ├── index.html
│   │   │   ├── main.tsx
│   │   │   ├── polyfills.ts
│   │   │   └── styles.css
│   │   ├── browserslist
│   │   ├── jest.config.js
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.json
│   │   └── tsconfig.spec.json
│   └── myapp-e2e/
│       ├── src/
│       │   ├── fixtures/
│       │   │   └── example.json
│       │   ├── integration/
│       │   │   └── app.spec.ts
│       │   ├── plugins/
│       │   │   └── index.ts
│       │   └── support/
│       │       ├── app.po.ts
│       │       ├── commands.ts
│       │       └── index.ts
│       ├── cypress.json
│       ├── tsconfig.e2e.json
│       └── tsconfig.json
├── libs/
├── tools/
├── README.md
├── workspace.json
├── nx.json
├── package.json
└── tsconfig.json
```

## See Also

- [Using Cypress](/{{framework}}/cypress/overview)
- [Using Jest](/{{framework}}/jest/overview)
- [Using Storybook](/{{framework}}/storybook/overview)

## Executors / Builders

React applications are built using the executors from the `@nrwl/web` plugin.

- [build](/{{framework}}/web/build) - Builds a web components application
- [dev-server](/{{framework}}/web/package) - Builds and serves a web application
- [package](/{{framework}}/web/package) - Bundles artifacts for a buildable library that can be distributed as an NPM package.

## Generators

- [application](/{{framework}}/react/application) - Create an React application
- [component](/{{framework}}/react/component) - Create an React library
- [library](/{{framework}}/react/library) - Create an React library
- [redux](/{{framework}}/react/redux) - Generate a Redux slice for a project
- [storybook-configuration](/{{framework}}/react/storybook-configuration) - Set up Storybook for a react library
