--- title: Develop with StrataKit description: Learn how to set up StrataKit in your React project. sidebar: label: Developing --- import { Steps, Tabs, TabItem } from "@astrojs/starlight/components"; ## Quick start This guide is for **application** developers. If you're building a package on top of StrataKit, you can usually skip most of these steps, since the host application will already have StrataKit set up for you. Open the [minimal starter template on StackBlitz](https://stackblitz.com/github/iTwin/stratakit/tree/main/internal/minimal-template?file=src%2FApp.tsx) to see a working example and to understand the steps listed below. 1. **Install the StrataKit packages** ```console npm add @stratakit/mui @stratakit/icons ``` You will also need to install `@mui/material`. 2. **Configure your bundler** StrataKit icons should be served as external SVG files, so your bundler needs to be configured to not inline them. See [Bundler configuration](#bundler-configuration) below. 3. **Set up TypeScript types** StrataKit augments some MUI component types. Add `@stratakit/mui/types.d.ts` to the existing [`types`](https://www.typescriptlang.org/tsconfig/#types) field in your **tsconfig** file: ```json title="tsconfig.json" { "compilerOptions": { "types": ["@stratakit/mui/types.d.ts"] } } ``` If your **tsconfig** file does not already have a `types` field, you can alternatively add `@stratakit/mui/types.d.ts` using a [triple-slash directive](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html) in any declaration file. 4. **Set up the `Root` component** Wrap your app's entrypoint with the `` component from `@stratakit/mui`: ```tsx title="src/App.tsx" import { Root } from "@stratakit/mui"; export function App() { return {/* Your app goes here */}; } ``` That's it! You can now use any component from `@mui/material`, and it will automatically be styled with StrataKit's visual language. :::caution Don't use MUI's `ThemeProvider`, `StyledEngineProvider`, or `CssBaseline` directly. The `Root` component handles all of that for you. ::: 5. **Use icons** (optional) To use StrataKit icons, import the `.svg` files from `@stratakit/icons` and pass them to the `` component from `@stratakit/mui`: ```tsx import { Icon } from "@stratakit/mui"; import svgSettings from "@stratakit/icons/settings.svg"; ; ``` :::caution Do not use any icons from `@mui/icons-material` as they are not compatible with StrataKit. ::: ## Bundler configuration You will need to ensure that your bundler does not inline `.svg` files, so that StrataKit icons can be used as external HTTP resources. Configure [`build.assetsInlineLimit`](https://vite.dev/config/build-options.html#build-assetsinlinelimit). ```ts title="vite.config.ts" export default defineConfig({ build: { assetsInlineLimit: (filePath) => !filePath.endsWith(".svg"), }, }); ``` Configure [`output.dataUriLimit`](https://rsbuild.dev/config/output/data-uri-limit). ```ts title="rsbuild.config.ts" export default { output: { dataUriLimit: { svg: 0 }, }, }; ``` Enable the [`file` loader](https://esbuild.github.io/content-types/#external-file) for `.svg` files. ```ts esbuild.build({ loader: { ".svg": "file" }, }); ``` ## Self-hosting the fonts StrataKit uses [InterVariable](https://rsms.me/inter/) as its interface font. While a CDN fallback is provided automatically, we recommend self-hosting for better performance and reliability. To self-host `InterVariable`, download the [`InterVariable.woff2`](https://rsms.me/inter/font-files/InterVariable.woff2) and [`InterVariable-Italic.woff2`](https://rsms.me/inter/font-files/InterVariable-Italic.woff2) font files from the official website, and serve them alongside your other assets. Then include the following CSS in the `` of your document, replacing the placeholder paths with the correct path to where the fonts are located: ```html ``` Build tools such as [Vite](https://vite.dev/guide/assets.html#importing-asset-as-url) can handle `url()` references and automatically copy these files into your output directory with hashed file names. These files can then be safely served with [HTTP caching](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/#how_to_cache_static_resources_using_http_caching) without blocking upgrades to newer versions of the fonts. ## Agent skill Use the [`stratakit-usage`](https://github.com/iTwin/stratakit/blob/main/skills/stratakit-usage/README.md) agent skill to help AI coding agents follow the StrataKit conventions automatically - using the right components, icons, and tokens while avoiding incompatible libraries. ## Migrating from iTwinUI If you're using StrataKit alongside the current stable version of iTwinUI, you'll need to set up the [theme bridge](https://github.com/iTwin/iTwinUI/wiki/StrataKit-theme-bridge) to ensure both libraries work together seamlessly. To facilitate a visual transition, you may want to use StrataKit's "cobalt" [accent color](/components/root/#accent-color), which is designed for better compatibility with iTwinUI's color palette. ## Migrating from legacy StrataKit If you're using legacy StrataKit components (from before `@stratakit/mui` was introduced), see [Migrating from legacy StrataKit](/getting-started/migration-from-legacy-stratakit).