How can your project get the best performance when using Font Awesome? That's a good, but complex question. Let's dive into it together.
Below are the details around different ways of using Font Awesome and where making some adjustments or implementation decisions can really help improve performance for your site or app.
We know that each site or app can be its own fa-snowflake. So, it's important that you test and decide which implementation of Font Awesome and the recommendations below work best for you.
Are you just using one or two styles? Or one style plus brands? You can cut down on the amount of icons you load by just adding those files to your project:
If you've used Font Awesome for a while and have an older version loading alongside Version 6, or are using it in an ecosystem where other versions of Font Awesome may be loading through a plugin or theme, we recommend that you remove those older versions when possible to get the best performance so you're not loading all the icons and assets twice.
When you use Font Awesome via the SVG with JavaScript method, the Font Awesome javascript looks in the page content for the <i> tags with the Font Awesome classes, and then swaps those elements out for SVGs that the browser then executes the SVG code to make the icon appear on the page. (Nerd Alert! We use batched mutations to make this as performant as possible.)
SVG with JavaScript is a good choice when:
When you use Font Awesome via the Web Fonts with CSS method, the browser gets the icons from the Font Awesome font families defined in the CSS, just like it would for any other custom font. It is the original method that Font Awesome was built on, way back in the day, and has stood the test of time.
Web fonts with CSS is a good choice when:
When you use Font Awesome as SVG Sprites, all the icons are laid out in a single sprite file and the CSS brings up the icon as a symbol on your site.
SVG Sprites are better for when:
Using bare SVG files is a very low level way to just add the raw SVG to your site, without any assitance with styling.
Bare SVGs are better for when: