
CSR 환경에서 Dynamic OpenGraph 구현하기
두줄요약
CSR 환경에서 소셜 공유용 OpenGraph 메타 태그를 동적으로 제공하는 방법을 다뤘습니다. CloudFront Function으로 봇만 분기해 엣지에서 HTML을 응답하고 기존 CSR 구조는 유지했습니다.
문제 상황
- Vite + React 기반 CSR에서 소셜 크롤러가 동적 메타 태그를 읽지 못하는 문제
- 멤버십별로 다른 OpenGraph 카드가 필요하지만 SSR 전환은 과도한 상황
원인 분석
- React Helmet 같은 클라이언트 측 메타 변경은 봇이 실행하지 않는 JavaScript에 의존
- SPA 라우팅과 S3/CloudFront 정적 호스팅 구조가 멤버십별 HTML 응답과 맞지 않음
해결 방법
- Vite 플러그인으로 SSG 파일을 생성해보았지만 운영 복잡성과 확장성 문제를 재확인
- CloudFront Function에서 User-Agent로 봇을 판별해 엣지에서 OpenGraph HTML을 즉시 응답
- 일반 사용자는 기존 S3 index.html과 CSR 라우팅을 그대로 유지



