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.
- π¨ 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
- Download the latest release from Releases
- Open Figma Desktop
- Go to Plugins β Development β Import plugin from manifest
- Select the
manifest.jsonfile - The plugin appears in your plugins menu
-
Generate Initial Library
- Run the plugin: Plugins β Google Material Symbols
- Select icon style (Rounded/Sharp/Outlined)
- Choose font weights to include
- Click Start Import
-
Update Existing Library
- Run plugin on existing library file
- Plugin detects and updates changed icons
- New icons added automatically
- Deprecated icons preserved
- Installation Guide
- Usage Guide
- Development Setup
- Updating Icons
- Architecture Overview
- Scripts Reference
- Node.js 18+
- pnpm 8+
- Figma Desktop
# 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 devpnpm 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 deltagoogle-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
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 pluginAutomated:
- GitHub Actions checks for updates weekly
- Creates PR automatically when updates found
- Includes delta of changes
See Updating Icons Documentation for details.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests if applicable
- Ensure tests pass:
pnpm test - Commit using conventional commits:
git commit -m "feat: add amazing feature" - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
We use Conventional Commits:
feat:New featuresfix:Bug fixesdocs:Documentation changeschore:Maintenance taskstest:Test changesrefactor:Code refactoring
| 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) |
- Reduce batch size in configuration
- Generate fewer weight variants
- Split generation across multiple sessions
- 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
- Plugin auto-retries with exponential backoff
- Re-run plugin later if limits exceeded
- Consider GitHub token for higher limits
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Material Design team for the Material Symbols
- Material Design Icons Repository
- Figma Plugin API
- π Report a Bug
- π‘ Request a Feature
- π¬ Discussions
Made with β€οΈ for the design community