Install Dependencies

npm (App Router)
npm install @fortawesome/free-solid-svg-icons @fortawesome/fontawesome-svg-core @fortawesome/react-fontawesome

Usage

How to use FontAwesome icons in Next.js components

'use client'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faHome, faUser, faGear } from '@fortawesome/free-solid-svg-icons'; export default function IconExample() { return ( <div> <FontAwesomeIcon icon={faHome} /> <FontAwesomeIcon icon={faUser} size="2x" /> <FontAwesomeIcon icon={faGear} spin /> </div> ); }

SSR Compatibility

FontAwesome supports server-side rendering in Next.js

// Ensure SSR compatibility with proper configuration // app/layout.tsx - Global CSS import import '@fortawesome/fontawesome-svg-core/styles.css'; import { config } from '@fortawesome/fontawesome-svg-core'; config.autoAddCss = false; export default function RootLayout({ children }) { return ( <html> <body>{children}</body> </html> ); }

Common Scenarios

Server Components

'use client'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faHouse, faUser, faBell, faGear } from '@fortawesome/free-solid-svg-icons'; import Link from 'next/link'; const navItems = [ { icon: faHouse, label: 'Home', href: '/' }, { icon: faUser, label: 'Profile', href: '/profile' }, { icon: faBell, label: 'Notifications', href: '/notifications' }, { icon: faGear, label: 'Settings', href: '/settings' }, ]; export default function Sidebar() { return ( <nav> {navItems.map(item => ( <Link key={item.href} href={item.href}> <FontAwesomeIcon icon={item.icon} fixedWidth className="me-2" /> {item.label} </Link> ))} </nav> ); }

Client Components

// Static icon usage in server components import { faHome, faUser } from '@fortawesome/free-solid-svg-icons'; // Server Component usage export default function Page() { return ( <div> <i className="fa-solid fa-house"></i> <i className="fa-solid fa-user text-xl"></i> </div> ); }
Share

Related