Skip to content
Back to skills

Front End Performance

ASecurity

Front-end performance optimization including Core Web Vitals, render performance, asset optimization, and perceived speed. Use when: diagnosing slow page loads, optimizing Largest Contentful Paint (LCP), reducing Cumulative Layout Shift (CLS), improving Interaction to Next Paint (INP), bundle size analysis, lazy loading, caching strategies.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aijavascriptgojavaapibackendperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add willvelida/biotrackr --skill front-end-performance --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Front End Performance?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Front End Performance
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/willvelida-front-end-performance/badge)](https://www.skillsdirectory.com/skills/willvelida-front-end-performance)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: front-end-performance
description: "Front-end performance optimization including Core Web Vitals, render performance, asset optimization, and perceived speed. Use when: diagnosing slow page loads, optimizing Largest Contentful Paint (LCP), reducing Cumulative Layout Shift (CLS), improving Interaction to Next Paint (INP), bundle size analysis, lazy loading, caching strategies."
---

# Front-End Performance

## When to Use

- Diagnosing or improving page load times
- Optimizing Core Web Vitals (LCP, CLS, INP)
- Reducing bundle size or eliminating render-blocking resources
- Implementing lazy loading for images, components, or routes
- Improving perceived performance with loading states and skeleton screens
- Configuring caching, compression, or CDN delivery
- Profiling runtime render performance

## Core Web Vitals

| Metric | Good | Needs Improvement | Poor |
|--------|------|-------------------|------|
| **LCP** (Largest Contentful Paint) | ≤ 2.5s | ≤ 4.0s | > 4.0s |
| **INP** (Interaction to Next Paint) | ≤ 200ms | ≤ 500ms | > 500ms |
| **CLS** (Cumulative Layout Shift) | ≤ 0.1 | ≤ 0.25 | > 0.25 |

## LCP Optimization

LCP measures when the largest visible element renders. Common culprits:

- **Slow server response**: Optimize backend, use CDN, cache HTML
- **Render-blocking resources**: Defer non-critical CSS/JS, inline critical CSS
- **Slow resource load**: Preload hero images, use modern formats (WebP, AVIF)
- **Client-side rendering delay**: Server-render critical content, reduce JS execution

### Quick Wins

- Add `fetchpriority="high"` to the LCP image
- Preload LCP resources: `<link rel="preload" as="image" href="...">`
- Avoid lazy-loading above-the-fold images
- Inline critical CSS for the initial viewport

## CLS Optimization

CLS measures unexpected layout shifts. Common causes:

- **Images without dimensions**: Always set `width` and `height` or use `aspect-ratio`
- **Dynamic content injection**: Reserve space for ads, embeds, and async content
- **Web fonts**: Use `font-display: swap` with size-adjusted fallbacks
- **Animations**: Use `transform` animations, not layout-triggering properties

### Quick Wins

- Set explicit dimensions on all `<img>` and `<video>` elements
- Use CSS `aspect-ratio` for responsive containers
- Avoid inserting content above existing content after load
- Preload critical fonts

## INP Optimization

INP measures responsiveness to user interactions:

- **Break up long tasks**: Yield to the main thread with `scheduler.yield()` or `requestIdleCallback`
- **Reduce JavaScript execution**: Minimize and tree-shake bundles
- **Debounce expensive handlers**: Avoid running heavy logic on every keystroke or scroll
- **Use CSS for visual feedback**: Pseudo-classes (`:active`, `:hover`) respond instantly

## Asset Optimization

### Images

- Use modern formats: WebP (lossy/lossless), AVIF (best compression)
- Serve responsive sizes with `srcset` and `sizes`
- Lazy-load below-the-fold images: `loading="lazy"`
- Use CSS for decorative graphics when possible

### CSS

- Remove unused CSS (PurgeCSS or tree-shaking)
- Minimize CSS file size with minification
- Avoid `@import` in CSS files (causes sequential loading)
- Use CSS containment (`contain: layout style paint`) for isolated components

### JavaScript

- Tree-shake unused code
- Code-split by route or feature
- Defer non-critical scripts: `<script defer>` or dynamic `import()`
- Measure and budget bundle size

## Caching Strategy

| Resource Type | Cache Duration | Strategy |
|---------------|---------------|----------|
| Static assets (CSS, JS, images) | 1 year | Immutable with content hash in filename |
| HTML pages | Short or no-cache | Revalidate every request |
| API responses | Varies | `Cache-Control` with `stale-while-revalidate` |
| Fonts | 1 year | Immutable, self-host for reliability |

## Perceived Performance

- Show skeleton screens instead of spinners for content-heavy pages
- Use optimistic UI updates for user actions
- Prefetch likely next pages on hover or viewport proximity
- Provide instant visual feedback on interaction (button press states)

## Blazor-Specific Performance

- Use `@key` directive on repeated elements to optimize diffing
- Avoid unnecessary re-renders — use `ShouldRender()` override when appropriate
- Use `StateHasChanged()` only when necessary
- Virtualize long lists with `<Virtualize>` component
- Minimize component tree depth
- Use streaming rendering for server-side Blazor when data loading is slow

## Procedure

1. Measure current performance (Lighthouse, WebPageTest, browser DevTools)
2. Identify the bottleneck: is it LCP, CLS, INP, or total load time?
3. Apply targeted optimizations from the relevant section above
4. Re-measure to confirm improvement
5. Set performance budgets and monitor ongoing

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.