Skip to content

⚡ Bolt: [성능 개선] 불필요한 이미지 디코딩 지연 제거#84

Open
seonghobae wants to merge 7 commits into
mainfrom
bolt-fix-image-decoding-2110590937339615064
Open

⚡ Bolt: [성능 개선] 불필요한 이미지 디코딩 지연 제거#84
seonghobae wants to merge 7 commits into
mainfrom
bolt-fix-image-decoding-2110590937339615064

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

💡 What

  • index.html 파일에 있는 모든 SVG 이미지(.svg)와 fetchpriority="high"가 설정된 LCP(최대 콘텐츠 풀 페인트) 이미지에서 decoding="async" 속성을 제거했습니다.
  • 이를 검증하는 tests/test_styles.py의 테스트 코드 로직을 수정하여, loading="lazy"이면서 SVG가 아닌 래스터 이미지에 대해서만 해당 속성이 있는지 검사하도록 변경했습니다.

🎯 Why

SVG 이미지는 브라우저가 파싱을 통해 렌더링하므로 래스터 이미지처럼 별도의 '디코딩' 과정이 필요하지 않아 decoding="async" 설정 자체가 무의미합니다. 더 큰 문제는 fetchpriority="high" 속성이 부여된 중요 LCP 이미지(히어로 이미지 등)에 이를 함께 적용한 것입니다. 이는 가장 먼저 동기적으로 그려져야 할 핵심 콘텐츠의 렌더링을 굳이 비동기로 지연시키는 심각한 성능 안티패턴이기 때문에 제거해야 합니다.

📊 Impact

히어로 섹션 및 기타 주요 SVG 이미지들의 렌더링 지연을 방지하여 LCP(Largest Contentful Paint)와 TTI(Time To Interactive) 지표를 소폭 개선합니다. 브라우저의 메인 스레드 오버헤드를 줄입니다.

🔬 Measurement

  1. index.html의 소스코드를 열어 SVG 이미지 태그들에 더 이상 decoding="async"가 존재하지 않는지 확인합니다.
  2. tests/test_styles.py 테스트가 정상적으로 통과하는지 확인합니다. (python3 -m pytest tests/)

PR created automatically by Jules for task 2110590937339615064 started by @seonghobae

- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함
- SVG는 디코딩이 아닌 파싱이므로 속성이 무의미함
- fetchpriority="high"인 LCP 이미지에 async를 주면 동기 렌더링이 지연되어 성능 저하
- 테스트 코드도 svg 파일을 예외처리 하도록 수정함

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for e61275ded4fd9d82915157df8cc30755bcb32ae6.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: test_styles.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_styles.py"]
  R2 --> V2["targeted test run"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: e61275ded4fd9d82915157df8cc30755bcb32ae6
  • Workflow run: 29764954536
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for e61275ded4fd9d82915157df8cc30755bcb32ae6.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: test_styles.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_styles.py"]
  R2 --> V2["targeted test run"]
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant