Contributing to Reicon ๐Ÿ’œ

September 15, 2026 ยท View on GitHub

Reicon โ€” Free Open-Source Icon Library

Contributing to Reicon ๐Ÿ’œ

Welcome! Thank you for helping to make Reicon better. This guide provides a direct, concise reference for setting up the project, understanding the codebase structure, using key scripts, and submitting contributions.


๐Ÿš€ Quick Start

  1. Fork and Clone the repository:
    git clone https://github.com/<your-username>/reicon.git
    cd reicon
    
  2. Install dependencies:
    npm install
    
  3. Start the local development server:
    npm run dev
    
    The site will be available at http://localhost:3000.

๐Ÿ“ Repository Structure

Reicon is organized as a monorepo. Here is a breakdown of what each folder contains:

Directory / FileDescription
data/icon-data.jsonSingle source of truth. Every icon's raw SVG markup (Outline & Filled weights) and metadata live here.
packages/Framework packages rebuilt automatically from data/icon-data.json.
โ”œโ”€ reicon/Vanilla JS & CDN core library.
โ”œโ”€ reicon-react/React wrapper components.
โ”œโ”€ reicon-angular/Angular 20+ standalone wrapper components.
โ”œโ”€ reicon-vue/Vue 3 wrapper components.
โ”œโ”€ reicon-svelte/Svelte wrapper components.
โ”œโ”€ reicon-figma/Figma plugin build environment.
โ””โ”€ reicon-vscode/VS Code Extension helper.
scripts/Build and tooling utilities (Sitemap, SEO auditing, OG image generation).
src/Reicon documentation website source (Vite + React).
public/Website static assets, favicons, robots.txt, and llms.txt.
docs/Additional guides and design system references.
cdn/Generated CDN bundles (git-ignored, compiled from JS build).

Warning

Never manually edit files inside the packages/ or cdn/ output directories. They are automatically regenerated from data/icon-data.json.


๐Ÿ› ๏ธ Key Scripts & Usage

Run these scripts from the repository root:

Package Generation & Builds

  • Build all downstream packages and CDN assets:
    npm run build:packages
    
  • Build individual packages:
    • React: npm run build:react
    • Angular 20+: npm run build:angular
    • Vue 3: npm run build:vue
    • Svelte: npm run build:svelte
    • Vanilla JS: npm run build:js
    • CDN Web Component: npm run build:cdn (followed by npm run build:cdn:min)
    • Figma Plugin: npm run build:figma
    • VS Code Extension: npm run build:vscode

Website Development & Auditing

  • Start Vite dev server:
    npm run dev
    
  • Production site build (Site compilation + SEO meta prerendering):
    npm run build
    
  • Preview the production build:
    npm run preview
    
  • Audit website SEO:
    npm run seo:check
    
  • Lint codebase / Type-check:
    npm run lint
    

๐ŸŽจ Contributing New Icons

Reicon maintains strict design guidelines for consistency:

  1. Format: SVGs must be built on a 24x24 px viewbox.
  2. Stroke: Stroke width and corner radiuses must match existing icons.
  3. Colors: Avoid hardcoded hex codes. Use currentColor so users can change icon colors dynamically.
  4. Weights: Provide both Outline and Filled weights where applicable.
  5. Optimization: Optimize SVGs (e.g. using svgo) to strip editor metadata and minimize path codes.

Step-by-Step Icon Integration:

  1. Open data/icon-data.json.
  2. Insert your new icon inside the appropriate category using lowercase kebab-case:
    "my-new-icon": {
      "description": ["tags", "for", "search"],
      "weights": {
        "Outline": { "code": "<path ... />" },
        "Filled": { "code": "<path ... />" }
      }
    }
    
  3. Compile all packages:
    npm run build:packages
    
  4. Run npm run dev to preview your changes on the local site.

๐Ÿ’ป Submitting Code Changes

  1. Create a branch:
    git checkout -b feature/your-feature-name
    # OR
    git checkout -b fix/bug-description
    
  2. Make your changes and verify type safety:
    npm run lint
    npm run build
    
  3. Commit using Conventional Commits:
    feat: add my-new-icon
    fix: adjust alignment of close icon
    docs: improve installation instructions
    
  4. Push and open a Pull Request against the main branch.