Performance Optimization

Icon Migration: Font → SVG

We migrated from a 297 KB Material Symbols font to inline SVG icons, eliminating blocking resources and achieving 92/100 mobile performance.

92/100
Mobile Score
-270 KB
Weight Saved
59 Icons
SVG Migrated

Performance Impact

BEFORE
Mobile Score
76/100
LCP
3.7s
Font Weight
297 KB
AFTER
Mobile Score
92/100
LCP
2.7s
SVG Weight
~27 KB

Key Improvements

+16 points
Mobile performance score
-1.0 second
Largest Contentful Paint
-270 KB (-91%)
Page weight reduction
No FOIT/FOUT
Instant icon rendering

All 59 Migrated Icons

Each icon renders as inline SVG (~400 bytes) instead of loading a 297 KB font file

Navigation & UI (Original Material Icons - 24x24)

search
Search functionality
menu
Mobile menu toggle
close
Close dialogs, dismiss alerts
expand_more
Dropdown indicators
arrow_forward
Next, proceed actions
arrow_outward
External links

Status & Feedback

check
Confirmation, success state
check_circle
Completed tasks, success badges
info
Information messages
error
Error states
warning
Warning messages
verified
Verified badges

Business & Commerce

business
Company information
attach_money
Pricing, revenue
credit_card
Payment methods
payments
Transaction icons
shopping_cart
E-commerce
balance
Legal, contracts

Communication

phone
Phone numbers, calls
phone_in_talk
Active calls
email
Email addresses
chat
Messaging features
notifications
Alerts, notifications

Calendar & Time

calendar_month
Date selection
event_available
Available appointments
schedule
Time-based features

Location & Travel

location_on
Addresses, maps
flight
Travel industry
local_shipping
Delivery, logistics
restaurant
Food services
home
Home services

Services & Industry

build
Tools, construction
electrical_services
Electricians
door_open
Locksmiths
vpn_key
Security, access
work
Professional services

Content & Media

description
Documents, articles
newspaper
News, publishing
photo_camera
Photography
visibility
View counts, previews

Social & Community

group
Teams, groups
groups
Multiple users
person
User profiles
favorite
Likes, favorites
star
Ratings, featured

Technology & Web

code
Development
language
Multi-language
public
Global, worldwide
bolt
Speed, performance
speed
Performance metrics

Actions & Utilities

download
Download files
upload
Upload files
edit
Edit content
delete
Delete items
share
Share content
print
Print functionality
bookmark
Saved items
link
URLs, linking
cancel
Cancel actions
refresh
Reload, refresh

Authentication

login
Sign in
logout
Sign out

Analytics & Growth

trending_up
Growth metrics
trending_down
Decline metrics
emoji_events
Achievements
shield
Security, trust

Telecom & Infrastructure

tower
Cell towers, telecom
settings
Configuration

Technical Documentation

Migration Process

  1. 1
    Expanded IconSVG Component

    Added 59 SVG icons with dual viewBox support (24x24 and 960x960)

  2. 2
    Automated Migration

    Replaced all <span class="material-symbols-outlined"> with <IconSVG name="..." />

  3. 3
    Smart Fallback System

    Icons without SVG paths automatically fall back to font rendering

  4. 4
    Font Removal

    Removed 297 KB Material Symbols font from BaseLayout.astro <head>

Usage Example

// Import the component
import IconSVG from '@/components/ui/IconSVG.astro';

// Basic usage
<IconSVG name="check_circle" />

// With size customization
<IconSVG name="trending_up" size={32} />

// With color and className
<IconSVG
  name="phone"
  size={24}
  color="currentColor"
  className="text-primary-600"
/>

Why Inline SVG?

Instant Rendering

No network request, no font loading delay

No FOIT/FOUT

Eliminates flash of invisible/unstyled text

Smaller Payload

~400 bytes per icon vs 297 KB font

Better Caching

HTML cached = icons cached automatically

Performance Optimization Complete

From 76/100 to 92/100 mobile performance by eliminating blocking resources

(719) 440-6801