The App Router flipped the default. Every component you write is a Server Component until something opts it out, and one 'use client' at the top of a file opts out everything below it. That makes a question worth asking before you add an icon library: does importing a single icon pull your page into a client tree?

For a lot of libraries the answer is yes. Nothing breaks when it happens, the page still renders, and you start shipping JavaScript for a static drawing.

GeoIcons icon components carry no 'use client' directive, so they render on the server and arrive as plain markup. Checking any library for this takes one search. Setting it up and confirming the result takes four steps.

// app/page.tsx (no 'use client' anywhere)

import { UnitedStates, France, Japan } from '@geoicons/react/countries';