# [[Interaction to Next Paint (INP)]] ## πŸ“Œ Brief Summary Interaction to Next Paint (INP)λŠ” 2024~2025λ…„ Google Core Web Vitals μ—…λ°μ΄νŠΈμ—μ„œ First Input Delay (FID)λ₯Ό λŒ€μ²΄ν•˜μ—¬ μƒˆλ‘­κ²Œ λ„μž…λœ 핡심 λ°˜μ‘μ„±(Responsiveness) μΈ‘μ • μ§€ν‘œμž…λ‹ˆλ‹€ [1-3]. 이 μ§€ν‘œλŠ” μ‚¬μš©μžκ°€ μ›ΉνŽ˜μ΄μ§€μ™€ 처음 μƒν˜Έμž‘μš©(클릭, νƒ­, ν‚€λ³΄λ“œ μž…λ ₯ λ“±)ν•œ μ‹œμ λΆ€ν„° λΈŒλΌμš°μ €κ°€ λ‹€μŒ ν”„λ ˆμž„μ„ μ‹œκ°μ μœΌλ‘œ λ Œλ”λ§ν•  λ•ŒκΉŒμ§€ κ±Έλ¦¬λŠ” 전체 μ§€μ—° μ‹œκ°„μ„ μΈ‘μ •ν•©λ‹ˆλ‹€ [2, 4]. 일반적으둜 INPκ°€ 200ms μ΄ν•˜μΌ λ•Œ '우수(Good)'둜 ν‰κ°€λ˜λ©°, 500msλ₯Ό μ΄ˆκ³Όν•˜λ©΄ μ‚¬μš©μž κ²½ν—˜μ„ 크게 μ €ν•˜μ‹œν‚€λŠ” 'λ‚˜μ¨(Poor)' μƒνƒœλ‘œ κ°„μ£Όλ˜μ–΄ SEO μˆœμœ„ ν•˜λ½ 및 μ΄νƒˆλ₯  증가λ₯Ό μœ λ°œν•©λ‹ˆλ‹€ [5-7]. ## πŸ“– Core Content * **INP의 ꡬ성 μš”μ†Œ 및 μΈ‘μ • 방식:** INPλŠ” λ‹¨μˆœνžˆ μž…λ ₯ μ§€μ—° μ‹œκ°„λ§Œ μΈ‘μ •ν•˜λ˜ μ΄μ „μ˜ FID와 달리, μ‹€μ œ μ‚¬μš©μžκ°€ μ²΄κ°ν•˜λŠ” 전체 μƒν˜Έμž‘μš© 지연을 μΈ‘μ •ν•©λ‹ˆλ‹€ [2, 8, 9]. INPλŠ” 크게 3κ°€μ§€ μš”μ†ŒμΈ 'μž…λ ₯ μ§€μ—°(Input Delay) + 처리 μ‹œκ°„(Processing Time) + ν”„λ ˆμž„ ν‘œμ‹œ μ§€μ—°(Presentation Delay)'의 ν•©μœΌλ‘œ κ³„μ‚°λ©λ‹ˆλ‹€ [10, 11]. * **INP μ €ν•˜(μ„±λŠ₯ 병λͺ©)의 μ£Όμš” 원인:** INP 점수λ₯Ό μ•…ν™”μ‹œν‚€λŠ” 주된 μš”μΈμ€ 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜λŠ” 50ms μ΄μƒμ˜ κΈ΄ JavaScript μž‘μ—…(Long tasks), κ³Όλ„ν•œ μ„œλ“œνŒŒν‹° 슀크립트 μ‹€ν–‰, λ³΅μž‘ν•œ ν”„λ ˆμž„μ›Œν¬ λ¦¬λ Œλ”λ§(React, Vue λ“±), 무거운 μ• λ‹ˆλ©”μ΄μ…˜μž…λ‹ˆλ‹€ [10-12]. 특히 React 기반의 SPA(Single Page Application)μ—μ„œλŠ” 무거운 JS λ²ˆλ“€ λ‹€μš΄λ‘œλ“œμ™€ λΈŒλΌμš°μ € 메인 μŠ€λ ˆλ“œλ₯Ό λ¬Άμ–΄λ‘λŠ” 'ν•˜μ΄λ“œλ ˆμ΄μ…˜(Hydration) μ§€μ—°' 및 λΆˆν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈ λ¦¬λ Œλ”λ§μ΄ 높은 INP의 핡심 μ›μΈμœΌλ‘œ μ§€λͺ©λ©λ‹ˆλ‹€ [13-15]. * **λΉ„μ¦ˆλ‹ˆμŠ€ 및 SEO에 λ―ΈμΉ˜λŠ” 영ν–₯:** INPλŠ” Google의 νŽ˜μ΄μ§€ κ²½ν—˜(Page Experience) λž­ν‚Ή μ‹ ν˜Έμ˜ μ£Όμš” μ§€ν‘œλ‘œ 40%의 κ°€μ€‘μΉ˜λ₯Ό κ°–μŠ΅λ‹ˆλ‹€ [16, 17]. INPκ°€ λ‚˜μ˜λ©΄(예: 150ms 초과) 응닡성 λΆ€μ‘±μœΌλ‘œ 인해 μ‚¬μš©μž μ°Έμ—¬κ°€ 23% κ°μ†Œν•˜κ³  크둀링 μš°μ„ μˆœμœ„κ°€ λ–¨μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€ [18]. 반면 INPλ₯Ό 300msμ—μ„œ 150ms둜 λ‹¨μΆ•ν•˜λ©΄ μ „ν™˜μœ¨ 12% 증가, μ΄νƒˆλ₯  15% κ°μ†Œ, 수읡 10% 증가와 같은 μ‹€μ§ˆμ μΈ λΉ„μ¦ˆλ‹ˆμŠ€ μ„±μž₯ 및 SEO μˆœμœ„ μƒμŠΉ 효과λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€ [19, 20]. * **핡심 μ΅œμ ν™” μ „λž΅:** * **JavaScript μ‹€ν–‰ μ‹œκ°„ 단좕 및 μž‘μ—… λΆ„ν• :** 50msλ₯Ό μ΄ˆκ³Όν•˜λŠ” κΈ΄ μž‘μ—…μ€ `setTimeout` 등을 ν™œμš©ν•΄ λΈŒλΌμš°μ €κ°€ UIλ₯Ό μ—…λ°μ΄νŠΈν•  수 μžˆλ„λ‘ μž‘κ²Œ μͺΌκ°œμ•Ό ν•˜λ©°(Chunking), μ€‘μš”ν•˜μ§€ μ•Šμ€ μŠ€ν¬λ¦½νŠΈλŠ” 싀행을 μ§€μ—°μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€ [4, 21-23]. * **Web Workers 및 이벀트 ν•Έλ“€λŸ¬ μ΅œμ ν™”:** 무거운 연산은 Web Workersλ₯Ό 톡해 메인 μŠ€λ ˆλ“œ μ™ΈλΆ€λ‘œ μ˜€ν”„λ‘œλ“œ(Offload)ν•˜κ³ , 이벀트 ν•Έλ“€λŸ¬(슀크둀, 검색 λ“±)μ—λŠ” λ””λ°”μš΄μŠ€(Debounce)와 μŠ€λ‘œν‹€(Throttle)을 μ μš©ν•΄ μ‹€ν–‰ λΉˆλ„λ₯Ό μ œν•œν•©λ‹ˆλ‹€ [4, 12, 24]. λ˜ν•œ, 비동기 μž‘μ—…μ—λŠ” `requestIdleCallback` νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ [25, 26]. * **React μ„±λŠ₯ νŠœλ‹:** λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ 막기 μœ„ν•΄ `React.memo`, `useMemo`, `useCallback`을 적극 ν™œμš©ν•˜κ³ , λΆ€λΆ„ ν•˜μ΄λ“œλ ˆμ΄μ…˜(Partial Hydration) λ˜λŠ” 점진적 ν•˜μ΄λ“œλ ˆμ΄μ…˜μ„ 톡해 메인 μŠ€λ ˆλ“œ λΆ€ν•˜λ₯Ό μ΅œμ†Œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€ [13, 27]. ## πŸ”— Knowledge Connections - **Related Topics:** [[First Input Delay (FID)]], [[Core Web Vitals]], [[Largest Contentful Paint (LCP)]], [[Cumulative Layout Shift (CLS)]], [[Single Page Applications (SPA)]], [[JavaScript Optimization]], [[Hydration]] - **Projects/Contexts:** [[Google Page Experience 2025]], [[React SEO Optimization]], [[Web Performance Optimization Checklist]] - **Contradictions/Notes:** μ†ŒμŠ€ 6μ—μ„œλŠ” INP의 '우수(Good)' νŒλ‹¨ μž„κ³„κ°’μ„ 150ms 미만(< 150ms)으둜 더 μ—„κ²©ν•˜κ²Œ μ œμ‹œν•˜κ³  μžˆμœΌλ‚˜ [28], μ†ŒμŠ€ 12, 14, 15, 23을 ν¬ν•¨ν•œ λŒ€λ‹€μˆ˜μ˜ λ‹€λ₯Έ μΆœμ²˜μ—μ„œλŠ” 200ms μ΄ν•˜(≀ 200ms)λ₯Ό ν‘œμ€€ '우수(Good)' κΈ°μ€€μœΌλ‘œ κ·œμ •ν•˜κ³  μžˆμ–΄ λ¬Έμ„œ κ°„ μ„ΈλΆ€ κΈ°μ€€μΉ˜μ— μ•½κ°„μ˜ 차이가 μ‘΄μž¬ν•©λ‹ˆλ‹€ [5, 9, 17, 29]. --- *Last updated: 2026-04-26*