web-files-image-handling
Image Handling Patterns
Quick Guide: Use
URL.createObjectURL()for image previews (most efficient). Resize/compress with Canvas API before upload. Always cleanup object URLs withURL.revokeObjectURL()to prevent memory leaks. Handle EXIF orientation for mobile photos only when processing for upload (modern browsers auto-rotate for display). Use step-down scaling for quality preservation on large reductions.
<critical_requirements>
CRITICAL: Before Using This Skill
All code must follow project conventions in CLAUDE.md (kebab-case, named exports, import ordering,
import type, named constants)
(You MUST cleanup object URLs with URL.revokeObjectURL() in useEffect cleanup or when replacing URLs)
(You MUST check browser context before applying EXIF orientation - modern browsers auto-rotate, manual handling causes double rotation)
(You MUST use step-down scaling when reducing images by more than 50% - single-pass resize loses quality)
(You MUST limit canvas dimensions to browser maximums (typically 4096px) - larger canvases crash browsers)
More from agents-inc/skills
web-animation-css-animations
CSS Animation patterns - transitions, keyframes, scroll-driven animations, @property, GPU-accelerated properties, accessibility with prefers-reduced-motion
24web-animation-view-transitions
View Transitions API patterns - same-document transitions, cross-document MPA transitions, shared element animations, pseudo-element styling, accessibility
21web-testing-playwright-e2e
Playwright E2E testing patterns - test structure, Page Object Model, locator strategies, assertions, network mocking, visual regression, parallel execution, fixtures, and configuration
21web-styling-cva
Class Variance Authority - type-safe component variant styling with cva(), compound variants, and VariantProps
20web-animation-framer-motion
Motion (formerly Framer Motion) animation patterns - motion components, variants, gestures, layout animations, scroll-linked animations, accessibility
20web-i18n-next-intl
Type-safe i18n for Next.js App Router
19