Skip to content

Remove astro-icon integration #1886

Description

@davidsneighbour

Follow-up from Dependabot alert 424 / the extract-zip fix.

The site currently renders Bootstrap, Lucide, Simple Icons, and Font Awesome brand icons through astro-icon. The security fix removed the vulnerable extract-zip path by overriding @iconify/tools, but we should remove the astro-icon integration entirely instead of keeping that compatibility layer long-term.

Target state:

  • Remove astro-icon from astro.config.ts and package metadata.
  • Remove @iconify/tools and all @iconify-json/* packages.
  • Stop copying Bootstrap Icons into src/icons/; remove the generated Bootstrap icon workflow if it is no longer needed.
  • Use only Lucide and Simple Icons going forward.
  • Replace existing Font Awesome brand icons with Simple Icons equivalents.
  • Migrate Bootstrap-style bare icon names to Lucide equivalents where possible.
  • Keep a small explicit icon registry only where dynamic icon names from JSON/content still require indirection.
  • Update the icon documentation and agent instructions so new work uses Lucide for UI icons and Simple Icons for brands.

References:

Known affected areas:

  • astro.config.ts
  • src/components/shared/links/IconLink.astro
  • src/components/shared/elements/Button.astro
  • components importing astro-icon/components
  • src/content/social.json
  • tag frontmatter using simple-icons:*
  • src/utils/icon-names.ts
  • src/scripts/maintenance/create-icon-types.ts
  • src/packages/site/astro.jsonc
  • src/packages/site/icons.jsonc
  • documentation/theme/icons.md
  • .agents/instructions/src-components-astro.instructions.md

Acceptance criteria:

  • rg "astro-icon|@iconify|fa7-brands|bootstrap-icons" shows no runtime dependency on the old icon pipeline, except for historical documentation if deliberately retained.
  • npm ls extract-zip remains empty.
  • npm test passes.
  • npm run check passes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:mediumMedium priority.status:confirmedConfirmed and accepted as valid work, but not yet in active implementation.type:dependenciesDependencies and upstream updates.type:refactorInternal code restructuring without an intended behaviour change.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions