mcpField
W
web-performance

web-performance

github.com/alexanderstephenthompsonDevelopment48 installs
Repository

About web-performance

web-performance is a skill for applying performance practices to web applications built with Apollo, Redis, CloudFront, and S3. It covers caching, payload and bundle reduction, React rendering, and database query optimization.

Key features

  1. 01Apollo Client cache policies
  2. 02Redis cache and invalidation patterns
  3. 03CloudFront and S3 asset caching
  4. 04Route-based code splitting
  5. 05React rendering optimization
  6. 06Database query and index guidance

Use cases

  1. 01Set cache policies for changing and static data
  2. 02Reduce initial JavaScript bundle size
  3. 03Optimize image delivery through CloudFront and S3
  4. 04Investigate slow database queries and N+1 access

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/alexanderstephenthompson/claude-hub --skill web-performance

After installing, type/web-performancein Claude Code to confirm it loaded.

Bundled filesassets/caching-patterns.mdassets/optimization-patterns.md

Details

From the project README

Web Performance Skill

Version: 1.0 Stack: Apollo Client/Server + Redis + CloudFront + S3

Performance problems are invisible during development. Local servers are fast. Test data is small. You don't notice the 3MB bundle, the N+1 queries, or the full-table scan until real users on real connections with real data report that the page takes 8 seconds to load. By then, fixing it requires rearchitecting the caching layer, splitting the bundle, and rewriting queries — all at once, under pressure.

Performance patterns applied from the start are cheap. Performance fixes applied after launch are expensive. These rules are the cheap version.


Core Principles

  1. Measure First — Profile before optimizing. Don't guess.
  2. Cache at Every Layer — CDN → API → Database → In-Memory.
  3. Minimize Payload — Send only what's needed.
  4. Defer Non-Critical — Load critical path first, everything else later.
  5. Perceived Performance — Optimistic UI makes things feel faster.

Core Web Vitals Targets

MetricWhat It MeasuresTargetCritical
LCP (Largest Contentful Paint)Main content loaded< 2.5s< 4s
INP (Interaction to Next Paint)Input responsiveness< 200ms< 500ms
CLS (Cumulative Layout Shift)Visual stability< 0.1< 0.25

Apollo Client Caching

Configure InMemoryCache with type policies for pagination merging and computed fields. Use cache-and-network as default fetch policy (stale-while-revalidate). Use optimistic updates for mutations to make UI feel instant.

Fetch Policies
PolicyUse Case
cache-firstStatic data (categories, config)
cache-and-networkData that changes (products, user data)
network-onlyAlways fresh (order status, real-time)
cache-onlyOffline mode, known-cached data

See assets/caching-patterns.md for cache configuration, fetch policy examples, and optimistic update patterns.


Redis Caching

Cache-aside pattern: check cache → miss → fetch DB → store in cache. Invalidate on writes. Use tag-based invalidation for list queries.

TTL Guidelines
Data TypeTTLReason
Static config24h+Rarely changes
Product catalog1hChanges occasionally
User sessions30mSecurity balance
Cart data7dUser convenience
Search results5mBalance freshness/speed
Real-time dataNo cacheMust be live

See assets/caching-patterns.md for Redis cache service, cache-aside pattern, and invalidation examples.


CloudFront & S3 Optimization

Immutable assets (hashed filenames) get 365-day cache. API routes get no CDN caching. Images get resize-on-demand with WebP format, lazy loading, and 2x srcSet for retina.

See assets/caching-patterns.md for CDK configuration and image optimization component.


Bundle Optimization

Route-based code splitting with React.lazy. Dynamic imports for heavy libraries (load only when needed). Analyze with source-map-explorer.

Bundle Size Guidelines
CategoryTargetAction if Exceeded
Initial JS< 100KB gzippedCode split, tree shake
Vendor chunk< 150KB gzippedLazy load, find alternatives
Route chunk< 50KB gzippedSplit further
Total initial load< 200KB gzippedAudit dependencies

See assets/optimization-patterns.md for code splitting, dynamic import, and bundle analysis examples.


React Performance

Use useMemo for expensive computations, useCallback for stable callbacks passed to memoized children, and memo for list item components. Don't memoize simple values, always-changing values, or handlers on non-memoized children. Use virtualization for long lists (100+ items).

See assets/optimization-patterns.md for memoization, when-NOT-to-memoize, and virtualization examples.


Database Performance

Select only needed fields. Use include sparingly. Use raw queries for complex aggregations. Add compound indices on filtered/sorted columns.

See assets/optimization-patterns.md for Prisma query optimization and index strategy.


Anti-Patterns

Anti-PatternProblemFix
Fetching all fieldsOver-fetching, slowSelect only needed fields
No paginationMemory issues, slowCursor-based pagination
Cache everythingStale data, complexityCache strategically by TTL
Premature optimizationWasted effortMeasure first, optimize hotspots
Sync heavy operationsBlocks responseBackground jobs (Bull)
No CDN for static assetsSlow global deliveryCloudFront for static files
Unoptimized imagesHuge downloadsResize, compress, WebP
Blocking bundleSlow initial loadCode split, lazy load

Checklist

Frontend
  • Code split by route
  • Heavy libraries lazy loaded
  • Images lazy loaded
  • Images optimized (WebP, sized)
  • Bundle < 200KB initial
  • useMemo/useCallback where beneficial
  • Long lists virtualized
Apollo
  • Cache policies configured
  • Pagination merges correctly
  • Optimistic updates for mutations
  • Fetch policy matches data freshness needs
Redis
  • Hot data cached
  • TTLs appropriate for data type
  • Cache invalidation on updates
  • Connection pooling configured
Database
  • Indices on filtered/sorted columns
  • Select only needed fields
  • N+1 queries eliminated (DataLoader)
  • Expensive queries analyzed
CDN
  • Static assets on CloudFront
  • Immutable assets cached forever
  • Dynamic content not cached at edge
  • HTTPS enforced

When to Consider Alternatives

SituationConsider
Global real-time dataRedis Pub/Sub or WebSockets
Heavy computationBackground workers (Bull)
Large file uploadsDirect S3 presigned URLs
Search-heavyElasticsearch or Algolia
Edge computing needsCloudFront Functions or Lambda@Edge

References

  • assets/caching-patterns.md — Apollo cache config, Redis, CloudFront, image optimization
  • assets/optimization-patterns.md — Bundle splitting, React memoization, virtualization, DB optimization

Comments

Markdown supported