BREAKING
- Dropped support for end-of-life FontAwesome versions (below v6), Node versions (below 20.x) and React versions (below 18.x)
- Dropped support for browser versions that don't support the ES2020 standard, namely JavaScript built-in: globalThis
Changes
- Rewrote the entire library from plain JavaScript to TypeScript
- Replaced
rollup
withtsup
for providing both ESM and CJS exports from one TypeScript source - Removed
prop-types
in favour of colocated typings for React component props - Added better type definitions to each prop including examples of usage
- Upgraded
eslint
from v6 to v9, rewrote config as Flat Config, modernised ESLint config, plugins and rules - Refactored all unit tests from the deprecated
react-test-renderer
to the industry standard@testing-library/react
- Upgraded all other development dependencies to latest versions as of release date
- Optimised
FontAwesomeIcon
by reducing per-render function calls and memory allocations - Optimised
classList
function by removing runtime semver checks and array operations - Optimised
converter
with a full rewrite for significant performance increases (~70%) - Moved inline class strings from
getClassListFromProps
to pre-computed maps
Bug Fixes
- Fixed accessibility ID generation (
titleId, maskId
) for SSR ensuring a consistent ID across server and client renders (#93, #550, #573) - Fixed TypeScript errors when styling duotone icons with CSS variables (#509)
- Fixed
aria-hidden
so it isfalse
if there is a non-emptyaria-label
attribute (#126) - Resolved large number of
npm audit
issues by removing and updating dependencies
New Contributors
- @charles4221 made their first contribution in #581
Full Changelog: 0.2.6...3.0.0