# Installation

**Excalidraw** is published to npm as a component you can directly embed in your projects.

Using `npm`:

```bash
npm install react react-dom @excalidraw/excalidraw
```

or `yarn`:

```bash
yarn add react react-dom @excalidraw/excalidraw
```

:::tip

**If you don't want to wait for the next stable release and try out the unreleased changes you can use `@excalidraw/excalidraw@next`.**

:::

### Static assets

Excalidraw depends on assets such as localization files (if you opt to use them), fonts, and others.

By default these assets are loaded from a public CDN [`https://unpkg.com/@excalidraw/excalidraw/dist/`](https://unpkg.com/@excalidraw/excalidraw/dist), so you don't need to do anything on your end.

However, if you want to host these files yourself, you can find them in your `node_modules/@excalidraw/excalidraw/dist` directory, in folders `excalidraw-assets` (for production) and `excalidraw-assets-dev` (for development).

Copy these folders to your static assets directory, and add a `window.EXCALIDRAW_ASSET_PATH` variable in your `index.html` or `index.js` entry file pointing to your public assets path (relative). For example, if you serve your assets from the root of your hostname, you would do:

```js
window.EXCALIDRAW_ASSET_PATH = "/";
```

### Dimensions of Excalidraw

Excalidraw takes _100%_ of `width` and `height` of the containing block so make sure the container in which you render Excalidraw has non zero dimensions.

### Demo

[Try here](https://codesandbox.io/s/excalidraw-ehlz3).
