Contributing
Add a missing icon, improve an existing glyph, or help refine the grid.
All changes land through pull requests on GitHub.
Before you open a PR
- Search first. Check the icon library and open issues for duplicates.
- Follow the grid. Icons use a unified grid. Larger marks use 2px strokes.
- Check brand guidelines. Link the guideline you followed for company/product logos.
- Include:
- A one-sentence description in the metadata frontmatter
- At least one tag (
frontend,cloud,database, etc.) - A link to the official brand website
- Both colored and monochrome SVG variants
Adding an icon
- Add the optimized SVG to
packages/core/export-files/icons/<slug>.svg - Add the monochrome version to
packages/core/export-files/font/<slug>.svg
Use kebab-case file names (visual-studio-code). For a glyph-only variant, add the -icon suffix (nextjs and nextjs-icon). The file name becomes the component name (nextjs-icon becomes NextjsIcon), the public SVG URL (https://devicons.io/devicons/icons/nextjs-icon.svg), and the font class (devicons-nextjs-icon).
- Commit:
feat: add next-js icon - Generate the docs page:
cd apps/website && pnpm run copy:mdx
- Fill in the description, tags, alternatives, and website link in the generated MDX file
- Commit:
docs: add next-js icon
Improving an existing icon
- Keep original icon names. They are public API.
- Match the visual weight of neighboring icons.
- Test both colored and monochrome variants.
Icon specs
- Canvas size:
600x600, maxing out by width or height - Clean up SVGs: remove unnecessary groups, metadata, and attributes
- Monochrome icons use
currentColorfor fill or stroke - Use SVGO with default config to optimize
Code of conduct
Be kind. Assume good intent.