React · 2026-03-24

React에서 WebP와 AVIF로 이미지 최적화

React 프로젝트에서 WebP와 AVIF를 적용해 이미지 용량을 줄이고 로딩 속도를 개선하는 실무 적용 방법과 변환 도구, 배포 고려사항에 대한 개발 전략

작성일 : 2026-03-24 ㆍ 작성자 : 관리자
post
목차

소개

이미지는 웹 성능에서 큰 비중을 차지한다. 최신 포맷인 WebP와 AVIF는 기존 JPEG/PNG보다 용량이 작다. React 환경에 적용하면 초기 로드와 사용자 경험이 개선된다. 이 글은 초보자도 이해하기 쉽도록 적용 원리와 실무 절차를 정리한다. 주요 키워드는 react webp 적용, avif 이미지 사용 react, 이미지 포맷 변환 웹 성능 이다.

왜 WebP와 AVIF인가

두 포맷은 압축 효율이 뛰어나다. WebP는 이미 널리 지원되며, AVIF는 더 우수한 압축률을 제공한다. 다만 브라우저 호환성과 인코딩 속도 차이가 존재한다. 따라서 환경에 맞춘 전략 수립이 필요하다.

장단점 요약

  • WebP: 호환성 우수, 속도와 품질 균형
  • AVIF: 압축 효율 최고, 인코딩 비용과 일부 브라우저 제약
  • Fallback: 구형 브라우저를 위한 대체 이미지 필요

파일 변환 파이프라인

배포 전 빌드 단계에서 이미지 변환을 자동화하면 운영 부담이 줄어든다. 대표 도구는 sharp, imagemin, svgo, avifenc 등이다. 로컬에서 변환하거나 CI 파이프라인에 포함하는 방식이 일반적이다.

Node.js 예시: sharp를 이용한 AVIF/WebP 변환

const sharp = require('sharp');
const fs = require('fs');

async function convert(input, outputBase) {
  await sharp(input)
    .toFile(outputBase + '.webp');

  await sharp(input)
    .avif({ quality: 50 })
    .toFile(outputBase + '.avif');
}

convert('src/images/photo.jpg', 'dist/images/photo')
  .then(()=> console.log('변환 완료'))
  .catch(err => console.error(err));

위 스크립트는 간단한 예시다. 품질과 옵션은 프로젝트 요구에 맞게 조절한다.

React에서의 적용 방법

React에서는 몇 가지 방법으로 WebP와 AVIF를 적용할 수 있다. 정적 임포트, picture 태그 사용, 이미지 컴포넌트 활용 등이다. 각각 장단점이 있다.

방법 1: picture 태그와 srcset 사용

브라우저가 포맷을 선택하게 하는 가장 보편적인 방법이다. AVIF → WebP → JPEG 순으로 지정하면 호환성 확보에 유리하다.

<picture>
  <source srcSet="/images/photo.avif" type="image/avif" />
  <source srcSet="/images/photo.webp" type="image/webp" />
  <img src="/images/photo.jpg" alt="예시 이미지" loading="lazy" width="800" height="600" />
</picture>

이 방식은 react webp 적용 시 기본 패턴으로 권장된다. lazy 로딩과 크기 속성으로 CLS를 줄이는 것도 고려한다.

방법 2: 빌드 시 변환과 모듈 임포트

Webpack, Vite 같은 번들러에서 이미지 로더를 사용하면 정적 자산으로 변환 가능하다. 이미지 해시를 유지하며 배포 파일에 포함된다.

// 예시: import 방식
import webpSrc from './photo.webp';
import jpgSrc from './photo.jpg';

export default function Img(){
  return (
    <picture>
      <source srcSet={webpSrc} type="image/webp" />
      <img src={jpgSrc} alt="포토" loading="lazy" />
    </picture>
  );
}

이 방식은 빌드 파이프라인과 이미지 처리 플러그인에 의존한다. 빌드 성능과 캐시 정책을 확인한다.

방법 3: 프레임워크 전용 컴포넌트 활용 (예: Next.js)

Next.js 같은 프레임워크는 이미지 컴포넌트를 통해 자동 최적화를 지원한다. 설정으로 WebP/AVIF 변환을 조절할 수 있다. 단, 빌드 환경에 따라 추가 설정이 필요하다.

호환성과 폴백 전략

모든 사용자가 AVIF나 WebP를 지원하지 않는다. 따라서 폴백 이미지를 반드시 제공해야 한다. 폴백은 picture 태그의 마지막 img 속성으로 지정한다. 서버 측 Content Negotiation도 대안이 될 수 있다.

브라우저 지원 확인

  • AVIF: 최신 브라우저 중심으로 지원 확대
  • WebP: 대부분의 브라우저에서 지원
  • Fallback: 구형 브라우저와 이메일 클라이언트 고려

성능 측정과 배포 고려사항

변환 후 성능 개선 효과는 반드시 측정한다. Lighthouse, WebPageTest, 필드 성능 지표(CLI)를 활용한다. 또한 CDN에서 캐싱 정책을 설정하면 효과가 증폭된다.

체크리스트

  • 이미지 크기와 품질 균형 설정
  • responsive srcset 제공
  • lazy loading과 크기 속성 지정
  • 빌드 파이프라인 자동화
  • CDN 캐시, HTTP 캐시 정책 확인

결론

react webp 적용과 avif 이미지 사용 react 전략은 웹 성능 개선에 실질적 기여를 한다. 이미지 포맷 변환 웹 성능 향상을 위해서는 변환 자동화, 폴백 제공, 성능 모니터링이 핵심이다. 단계별로 적용하면 안정적인 성능 개선을 기대할 수 있다.

React WebP AVIF 이미지 최적화 react webp 적용 avif 이미지 사용 react 이미지 포맷 변환 웹 성능 퍼포먼스