Skip to main content

Assets

Static assets

Static files (images, fonts, icons, robots.txt, web manifest, etc.) live in the public/ directory. Anything placed here is served directly at the root URL with no processing by webpack.

public/
├── icon/ # App icons
├── index.html # HTML entry point template
├── robots.txt # Robots directives
└── manifest.webmanifest

Webpack asset handling

Asset processing is configured in webpack/webpack.config.assets.js. This config handles:

  • Image optimization and file-loader rules for .png, .jpg, .gif, .svg
  • Font file handling (.woff, .woff2, .ttf, .eot)
  • Inline SVG support

The base webpack configuration (webpack.config.base.js) imports this assets config so it applies to both development and production builds.

Importing assets in components

Import image and SVG assets directly into your component files. Webpack resolves and bundles them automatically:

import logo from '~/assets/images/logo.svg';
import heroImage from '~/assets/images/hero.png';

const Header = () => (
<header>
<img src={logo} alt="Logo" />
</header>
);

For SVGs you want to use inline (so they can be styled with CSS), import them as React components using the SVG loader:

import { ReactComponent as ArrowIcon } from '~/assets/icons/arrow.svg';

const Button = () => (
<button>
Click me <ArrowIcon aria-hidden="true" />
</button>
);