Skip to content

SVG Core

We provide more advanced packages that are suitable for more specialized situations. These packages are side-effect free and provide no automatic replacement of <i> tags to <svg> tags (although it can still be used through dom.watch()).

What’s SVG Core for?

The SVG core package is helpful and recommended in the following cases:

  • to subset a large number of icons into only the icons that you are using
  • as base libraries for larger integrations with tools like React, Angular, Vue, or Ember (in fact our own components use these packages)
  • as CommonJS/ES6 Modules bundling tool like Webpack, Rollup, or Parcel
  • as UMD-style loader library like RequireJS

These are ES6 module compatible for tools that support this, such as Rollup. Our icon content packages also support tree shaking which allows compatible tools to remove icons you are not using from your final build.

Comparing the Basic Packages and SVG Core

Our Basic packages (@fortawesome/fontawesome-free and @fortawesome/fontawesome-pro) are aimed at individuals who would like to quickly integrate Font Awesome into their projects but do not want to invest the time and effort to understand what’s going on under the hood. For this reason a lot of the behavior is automatic and works without any intervention.

In contrast, the fontawesome-svg-core package is for more specialized situations or for forming the underlying API to power other components or libraries. In fact, our own official components for Vue, React, Ember, and Angular all use the fontawesome-svg-core package under the hood.

Because of this the core package and the icon content packages avoid doing anything automatic or creating side-effects that make development with them difficult to control or reason.

One of the most common use cases where you would reach for the core package instead of using fontawesome-free or fontawesome-pro is to create a subset of icons to reduce your final bundled file size.

For this case you may still want the <i> tags to be replaced with <svg> tags. This is the default behavior when using the CDN or fontawesome-free and fontawesome-pro packages. This does not happen automatically when using the core package.

To accomplish this we will use the dom API.

import { library, dom } from '@fortawesome/fontawesome-svg-core'
import { faUserAstronaut } from '@fortawesome/free-solid-svg-icons'
// We are only using the user-astronaut icon
library.add(faUserAstronaut)
// Replace any existing <i> tags with <svg> and set up a MutationObserver to
// continue doing this as the DOM changes.
dom.watch()