From a70e02cdc72462b4a3216fac4a62ab97d807aae7 Mon Sep 17 00:00:00 2001
From: seonghobae <8172694+seonghobae@users.noreply.github.com>
Date: Wed, 29 Jul 2026 14:02:51 +0000
Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20Remove=20decoding=20async?=
=?UTF-8?q?=20from=20critical=20above-the-fold=20SVGs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.jules/bolt.md | 4 ++++
CHANGELOG.md | 1 +
index.html | 6 ++++--
tests/test_styles.py | 8 ++++++--
4 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/.jules/bolt.md b/.jules/bolt.md
index c10fb9b..0c5d7d3 100644
--- a/.jules/bolt.md
+++ b/.jules/bolt.md
@@ -12,3 +12,7 @@
## 2026-07-10 - Remove unnecessary DOMPurify for performance
**Learning:** 애플리케이션이 `textContent`와 같은 안전한 DOM API만 사용하고 `innerHTML` 등의 위험한 싱크를 사용하지 않는다면 DOMPurify와 같은 라이브러리를 통해 Trusted Types 정책을 생성할 필요가 없음.
**Action:** 불필요한 번들 다운로드 및 스크립트 실행을 방지하기 위해 사용하지 않는 라이브러리를 식별하고 제거할 것.
+
+## 2026-07-29 - LCP 최적화를 위한 above-the-fold SVG 이미지 decoding="async" 제거
+**Learning:** 초기 화면에 바로 나타나는 주요 SVG 이미지(로고, 히어로 이미지 등)에 `decoding="async"`가 있으면 브라우저가 디코딩을 비동기로 처리하여 메인 스레드 블로킹은 줄이지만, 실제 렌더링이 지연되어 LCP(Largest Contentful Paint) 수치가 저하될 수 있습니다. 반면 오프스크린 이미지(lazy)는 비동기 디코딩을 유지하는 것이 유리합니다.
+**Action:** `loading="lazy"` 속성이 없는 above-the-fold 이미지에서는 `decoding="async"`를 제거하여 렌더링 지연을 방지하고, LCP 성능을 개선해야 합니다.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 56ad628..bf53c18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# CHANGELOG
## [Unreleased]
+- **성능 최적화**: 화면 초기에 보이는 주요 SVG 이미지(로고, 히어로 아트)에서 불필요한 `decoding="async"` 속성을 제거하여 LCP(Largest Contentful Paint)를 개선했습니다.
- **보안 개선**: 컴포넌트 갤러리의 인라인 스크립트와 스타일을 외부 파일로 분리하고, 엄격한 Content-Security-Policy를 적용해 XSS 방어를 강화했습니다.
- **성능 회귀 복원**: 오프스크린 `.section` 렌더링을 `content-visibility: auto`로 지연하고, 일반 섹션은 600px·콘텐츠가 큰 DIKW/projects 섹션은 1000px의 `contain-intrinsic-size` placeholder를 유지해 초기 렌더링 비용과 스크롤바 이동을 함께 줄였습니다.
- **보안 개선**: Trusted Types 기반 CSP 강화: 잠재적인 DOM 기반 XSS 공격을 방지하기 위해 `require-trusted-types-for 'script'` 지시어 추가
diff --git a/index.html b/index.html
index c40fea3..0dacf4a 100644
--- a/index.html
+++ b/index.html
@@ -29,7 +29,8 @@
본문으로 건너뛰기