Skip to content

joshjhall/google-symbols-figma-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

67 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Google Material Symbols Figma Plugin

CI License: MIT

A Figma plugin for generating and maintaining a complete Google Material Symbols library. Automatically syncs with Google's official Material Design Icons repository and generates SVG-based Figma components with comprehensive variant support.

✨ Features

  • 🎨 4000+ Icons: Complete Material Symbols library
  • 🎨 SVG Components: High-quality vector components with proper Figma structure
  • πŸŽ›οΈ 504 Variants per Icon: 7 styles Γ— 6 weights Γ— 2 fills Γ— 3 grades Γ— 4 optical sizes
  • πŸ“ Smart Organization: Automatic category-based page structure (alphabetical sets)
  • πŸ”„ Incremental Updates: Intelligent content hash comparison preserves customizations
  • ⚑ Performance Optimized: Batch processing with rate limiting for GitHub API
  • πŸ€– Auto-Updates: Weekly automated checks for new icons from Google
  • 🎯 Commit-Based Versioning: Pins to specific commit SHA for consistency

πŸš€ Quick Start

Installation

  1. Download the latest release from Releases
  2. Open Figma Desktop
  3. Go to Plugins β†’ Development β†’ Import plugin from manifest
  4. Select the manifest.json file
  5. The plugin appears in your plugins menu

Usage

  1. Generate Initial Library

    • Run the plugin: Plugins β†’ Google Material Symbols
    • Select icon style (Rounded/Sharp/Outlined)
    • Choose font weights to include
    • Click Start Import
  2. Update Existing Library

    • Run plugin on existing library file
    • Plugin detects and updates changed icons
    • New icons added automatically
    • Deprecated icons preserved

πŸ“– Documentation

πŸ› οΈ Development

Prerequisites

  • Node.js 18+
  • pnpm 8+
  • Figma Desktop

Setup

# Clone the repository
git clone https://github.com/joshjhall/google-symbols-figma-plugin.git
cd google-symbols-figma-plugin

# Install dependencies
pnpm install

# Build the plugin
pnpm build

# Watch mode for development
pnpm dev

Available Scripts

pnpm build          # Production build
pnpm dev            # Development watch mode
pnpm test           # Run tests
pnpm test:coverage  # Generate coverage report
pnpm lint           # Lint code
pnpm lint:fix       # Fix linting issues
pnpm format         # Format code
pnpm typecheck      # Type check
pnpm icons:update   # Update icon list from Google
pnpm icons:compare  # Generate comparison delta

πŸ—οΈ Architecture

google-symbols-figma-plugin/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ code.ts              # Main plugin code (Figma API)
β”‚   β”œβ”€β”€ ui.tsx               # Plugin UI (React)
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ icons/           # Icon fetching and management
β”‚   β”‚   β”œβ”€β”€ github/          # GitHub API integration
β”‚   β”‚   β”œβ”€β”€ pages/           # Page organization
β”‚   β”‚   β”œβ”€β”€ tokens/          # Token system
β”‚   β”‚   └── utils/           # Utilities
β”‚   └── handlers/            # Message handlers
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ update-icon-list.ts  # Fetch latest icons from Google
β”‚   β”œβ”€β”€ compare-and-generate.ts  # Generate update delta
β”‚   └── build-html.js        # UI build script
β”œβ”€β”€ dist/                    # Built plugin files
└── docs/                    # Documentation

πŸ”„ Icon Updates

The plugin automatically tracks changes from Google's Material Design Icons repository.

Manual Update:

pnpm icons:update    # Fetch latest icon list
pnpm icons:compare   # Generate comparison
pnpm build           # Rebuild plugin

Automated:

  • GitHub Actions checks for updates weekly
  • Creates PR automatically when updates found
  • Includes delta of changes

See Updating Icons Documentation for details.

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Add tests if applicable
  5. Ensure tests pass: pnpm test
  6. Commit using conventional commits: git commit -m "feat: add amazing feature"
  7. Push to your fork: git push origin feature/amazing-feature
  8. Open a Pull Request

Commit Convention

We use Conventional Commits:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation changes
  • chore: Maintenance tasks
  • test: Test changes
  • refactor: Code refactoring

πŸ“Š Performance

Metric Value
Total Icons 4000+
Variants per Icon 504 (7 styles Γ— 6 weights Γ— 2 fills Γ— 3 grades Γ— 4 sizes)
Generation Time (full) Varies by category and API rate limits
Update Time (with delta) Faster - only changed icons
Rate Limiting Exponential backoff (1m β†’ 2m β†’ 4m β†’ 8m β†’ 10m max)

πŸ› Troubleshooting

Plugin crashes during generation

  • Reduce batch size in configuration
  • Generate fewer weight variants
  • Split generation across multiple sessions

Icons don't render correctly

  • Check SVG content is being fetched from GitHub
  • Verify commit SHA in icon-list-metadata.json is valid
  • Ensure network connectivity to raw.githubusercontent.com

Rate limiting errors

  • Plugin auto-retries with exponential backoff
  • Re-run plugin later if limits exceeded
  • Consider GitHub token for higher limits

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support


Made with ❀️ for the design community

About

Simple plugin to import/maintain Google symbols in Figma components.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •