# PlayCanvas React > `@playcanvas/react` builds PlayCanvas Engine scenes declaratively from React components and hooks, with the full engine underneath. Its component and hook pages below are its API reference. Use this index for React projects, where the scene is JSX. The engine features the components wrap, such as materials, lighting, physics, Gaussian splats and XR, work the same way underneath, and the [Engine](https://developer.playcanvas.com/user-manual/engine/llms.txt) index covers them. ## Rules - **Install it with the engine it wraps**: `npm install @playcanvas/react playcanvas`, or start a project with `npm create playcanvas@latest my-app -- -f react`. - **Import from three entry points**: `Application`, `Entity` and `Gltf` from `@playcanvas/react`; components such as `Camera`, `Light`, `Render`, `Script`, `Rigidbody` and `Collision` from `@playcanvas/react/components`; hooks such as `useModel`, `useSplat`, `useTexture`, `useEnvAtlas`, `useMaterial` and `useApp` from `@playcanvas/react/hooks`. - **A scene is an `` of `` elements, and components attach to the entity that contains them**: ``. `position`, `rotation` and `scale` are arrays, with rotations as Euler angles in degrees. - **Load assets with the hooks, and render them once they are ready**: `const { asset, loading, error } = useModel('model.glb');`, then `` when `asset` is set. `useSplat`, `useTexture`, `useEnvAtlas` and `useFont` work the same way. - **Add behavior with engine `Script` classes**: `