# Customization

The build needs no configuration: the entry is `src/index.tsx` (or `.ts`/`.jsx`/`.js`), the output is `dist/app.js`. This page covers overriding the build; for the CLI's runtime knobs see [environment variables](/serverless-apps/reference/configuration/).

## Custom Vite configuration

To customize the build, add a regular `vite.config.ts` to the app - the CLI picks it up.

:::caution
Your `vite.config.ts` **replaces** the zero-config defaults (the React, Lingui, and Tailwind CSS plugins) rather than extending them - include the plugins your app needs in your own config.
:::

The platform-required settings are still enforced on top and always win: the output stays a single `dist/app.js` (an IIFE bundle with CSS injected by JS), because `<bundle-url>/app.js` is the contract the Crowdin host loads.

## Custom Lingui configuration

Advanced i18n setups can add their own `lingui.config.ts`, which replaces the zero-config defaults. Keep the PO format and the `locales/{locale}` catalog layout so the CLI can compile the catalogs - see [translations](/serverless-apps/building-app/i18n/).