--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Interaction to Next Paint (INP)|Interaction to Next Paint (INP)]] last_updated: 2026-05-02 --- # [[Interaction to Next Paint (INP)|Interaction to Next Paint (INP)]] ## πŸ“Œ Brief Summary > INP(Interaction to Next Paint)λŠ” μ›Ή νŽ˜μ΄μ§€μ˜ μ „λ°˜μ μΈ μƒν˜Έμž‘μš©μ„±(Interactivity)κ³Ό 응닡성(Responsiveness)을 μΈ‘μ •ν•˜κΈ° μœ„ν•΄ 2024λ…„ Google이 곡식 λ„μž…ν•œ [[Core Web Vitals|Core Web Vitals]] μ§€ν‘œμž…λ‹ˆλ‹€ [1-3]. 첫 번째 μƒν˜Έμž‘μš©λ§Œ μΈ‘μ •ν•˜λ˜ 기쑴의 FID(First Input Delay)와 달리, νŽ˜μ΄μ§€ λ°©λ¬Έ κΈ°κ°„ λ™μ•ˆ λ°œμƒν•˜λŠ” λͺ¨λ“  μƒν˜Έμž‘μš©(클릭, νƒ­, ν‚€ λˆ„λ¦„ λ“±)의 전체 μ§€μ—° μ‹œκ°„μ„ μΈ‘μ •ν•˜μ—¬ μ‹€μ œ μ‚¬μš©μž κ²½ν—˜μ„ 더 μ •ν™•ν•˜κ²Œ λ°˜μ˜ν•©λ‹ˆλ‹€ [4-6]. μ‚¬μš©μžμ˜ μž‘μ—…μ— λŒ€ν•΄ 즉각적인 μ‹œκ°μ  ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•˜λ©°, 200λ°€λ¦¬μ΄ˆ(ms) μ΄ν•˜μ˜ μ§€μ—° μ‹œκ°„μ„ 기둝해야 'μ’‹μŒ(Good)'으둜 평가받을 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 7]. --- > "단 ν•œ 번의 λΉ λ₯Έ λ°˜μ‘μ΄ μ•„λ‹ˆλΌ, μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό λ– λ‚  λ•ŒκΉŒμ§€ μˆ˜ν–‰ν•˜λŠ” λͺ¨λ“  μƒν˜Έμž‘μš©μ˜ 지연을 κ°μ‹œν•˜κ³ , 0.2초 μ΄λ‚΄μ˜ 즉각적인 응닡성을 μΌκ΄€λ˜κ²Œ 보μž₯ν•˜λΌ" β€” FIDλ₯Ό λŒ€μ²΄ν•˜μ—¬ μ›Ήμ‚¬μ΄νŠΈμ˜ 전체적인 λ°˜μ‘μ„±μ„ μΈ‘μ •ν•˜λŠ” 2024λ…„ 이후 [[Core Web Vitals|Core Web Vitals]]의 핡심 μ§€ν‘œ. ## πŸ“– Core Content * **λ„μž… λ°°κ²½ 및 영ν–₯:** INPλŠ” 2024년에 κΈ°μ‘΄ Core Web Vitals μ§€ν‘œμ˜€λ˜ [[First Input Delay (FID)|First Input Delay (FID)]]λ₯Ό κ³΅μ‹μ μœΌλ‘œ λŒ€μ²΄ν–ˆμŠ΅λ‹ˆλ‹€ [1, 2]. FIDκ°€ 첫 번째 μƒν˜Έμž‘μš©μ˜ 이벀트 ν•Έλ“€λŸ¬ μ‹œμž‘ μ „ μ§€μ—° μ‹œκ°„λ§Œμ„ μΈ‘μ •ν–ˆλ˜ 반면, INPλŠ” νŽ˜μ΄μ§€ 전체 수λͺ… λ™μ•ˆ λ°œμƒν•˜λŠ” λͺ¨λ“  μƒν˜Έμž‘μš©μ„ μΆ”μ ν•˜κ³  λ Œλ”λ§ μ§€μ—°κΉŒμ§€ ν¬ν•¨ν•˜μ—¬ μΈ‘μ •ν•©λ‹ˆλ‹€ [4-6]. 이 엄격해진 κΈ°μ€€ λ³€ν™”λ‘œ 인해 2024λ…„ 2μ›”, λͺ¨λ°”일 μ›Ήμ‚¬μ΄νŠΈλ“€μ˜ Core Web Vitals ν†΅κ³Όμœ¨μ΄ 크게 ν•˜λ½ν•˜λŠ” ν˜„μƒμ΄ κ΄€μ°°λ˜κΈ°λ„ ν–ˆμŠ΅λ‹ˆλ‹€ [1]. * **μΈ‘μ • 및 μ‚°μΆœ 방식:** INPλŠ” 75λ°±λΆ„μœ„μˆ˜(75th percentile)의 λ°©λ¬Έ 데이터λ₯Ό κΈ°μ€€μœΌλ‘œ κ³„μ‚°λ©λ‹ˆλ‹€ [8]. νŽ˜μ΄μ§€ λ‚΄ μƒν˜Έμž‘μš©μ΄ 50개 μ΄ν•˜μΈ 경우 κ°€μž₯ κΈ΄ μƒν˜Έμž‘μš© μ§€μ—° μ‹œκ°„μ„ INP둜 κ°„μ£Όν•˜λ©°, μƒν˜Έμž‘μš©μ΄ 50개λ₯Ό μ΄ˆκ³Όν•  경우 μ΄μƒμΉ˜(Outlier)의 영ν–₯을 쀄이기 μœ„ν•΄ 50개 κ·Έλ£Ήλ‹Ή κ°€μž₯ μ§€μ—° μ‹œκ°„μ΄ κΈ΄ 1개λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ 쀑 μ΅œλŒ“κ°’μ„ μ‚¬μš©ν•©λ‹ˆλ‹€ [8]. * **평가 μž„κ³„κ°’:** 200ms μ΄ν•˜λŠ” 'μ’‹μŒ(Good)', 200ms 초과 500ms μ΄ν•˜λŠ” 'κ°œμ„  ν•„μš”(Needs improvement)', 500ms μ΄ˆκ³ΌλŠ” 'λ‚˜μ¨(Poor)'으둜 λΆ„λ₯˜λ©λ‹ˆλ‹€ [5]. * **λΈŒλΌμš°μ € 지원:** [[Chrome|Chrome]]뿐만 μ•„λ‹ˆλΌ [[Interop 2025|Interop 2025]] ν”„λ‘œμ νŠΈλ₯Ό 톡해 Firefox(버전 144λΆ€ν„° 지원)와 Safariμ—μ„œλ„ INP μΈ‘μ • μ§€ν‘œ κ΅¬ν˜„ μž‘μ—…μ΄ μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [9]. * **μ§€μ—° μ‹œκ°„μ˜ μ„ΈλΆ€ ꡬ성 μš”μ†Œ (Sub-p[[Arts|Arts]]):** μ‚¬μš©μž μƒν˜Έμž‘μš©μ˜ 전체 λŒ€κΈ° μ‹œκ°„μ€ 크게 3λ‹¨κ³„λ‘œ λ‚˜λ‰˜λ©°, [[Chrome DevTools|Chrome DevTools]]λ₯Ό 톡해 이 μ„ΈλΆ€ 정보(INP breakdown)λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5, 10]. 1. **μž…λ ₯ μ§€μ—° (Input delay):** μ΄λ²€νŠΈκ°€ κ°μ§€λœ μ‹œμ λΆ€ν„° 이벀트 ν•Έλ“€λŸ¬κ°€ μ‹€ν–‰λ˜κΈ° μ „κΉŒμ§€μ˜ μ‹œκ°„ [4, 5]. 2. **처리 μ‹œκ°„ ([[Processing|Processing]] duration):** 이벀트 ν•Έλ“€λŸ¬ μ½”λ“œκ°€ μ‹€μ œλ‘œ μ‹€ν–‰λ˜λŠ” μ‹œκ°„ [4]. μ„±λŠ₯ 병λͺ©μ΄ κ°€μž₯ 자주 λ°œμƒν•˜λŠ” κ΅¬κ°„μž…λ‹ˆλ‹€ [10]. 3. **ν‘œμ‹œ μ§€μ—° (Presentation delay):** μ‚¬μš©μž μž‘μ—… 이후 λ‹€μŒ ν”„λ ˆμž„μ„ 화면에 λ Œλ”λ§(페인트)ν•  λ•ŒκΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„ [4]. * **μ΅œμ ν™” μ „λž΅:** INPλ₯Ό μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄μ„œλŠ” λΈŒλΌμš°μ €μ˜ 메인 μŠ€λ ˆλ“œ([[Main Thread|Main Thread]]) 차단을 μ΅œμ†Œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ κΈ΄ μž‘μ—…([[Long Tasks|Long Tasks]])을 비동기 청크둜 λΆ„ν• ν•˜κ³ , 핡심 이벀트 ν•Έλ“€λŸ¬μ˜ μš°μ„ μˆœμœ„λ₯Ό 높이며, λΆˆν•„μš”ν•œ [[JavaScript|JavaScript]] μ§€μ—° λ‘œλ“œ(Lazy load) 및 μˆ˜λ™ 이벀트 λ¦¬μŠ€λ„ˆ(Passive event listeners) μ‚¬μš©, λ ˆμ΄μ•„μ›ƒ μŠ€λž˜μ‹±([[Layout Thrashing|Layout Thrashing]]) κ°μ†Œ λ“±μ˜ μ „λž΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€ [11-14]. Chrome DevTools의 μ„±λŠ₯ νŒ¨λ„μ— ν†΅ν•©λœ [[Long Animation Frames API|Long Animation Frames API]]λ₯Ό ν™œμš©ν•˜λ©΄ μƒν˜Έμž‘μš©μ„ μ§€μ—°μ‹œν‚€λŠ” νŠΉμ • μŠ€ν¬λ¦½νŠΈμ™€ κ·Έ 원인을 μ§κ΄€μ μœΌλ‘œ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [15, 16]. * **특수 μΈ‘μ • 사둀 (ν…μŠ€νŠΈ κ°•μ‘° ν‘œμ‹œ):** μ›Ή νŽ˜μ΄μ§€μ—μ„œ ν…μŠ€νŠΈλ₯Ό λ“œλž˜κ·Έν•˜μ—¬ κ°•μ‘° ν‘œμ‹œ(Highlighting)ν•˜λŠ” ν–‰μœ„λ„ 일반적으둜 INP μ μˆ˜μ— 영ν–₯을 μ£ΌλŠ” μ‚¬μš©μž μƒν˜Έμž‘μš©μœΌλ‘œ κ°„μ£Όλ©λ‹ˆλ‹€ [17]. λ‹€λ§Œ, 2025λ…„ 초 Chrome의 μ—…λ°μ΄νŠΈλ₯Ό 톡해 μ‚¬μš©μžκ°€ 창의 κ°€μž₯μžλ¦¬μ— λ„λ‹¬ν•˜μ—¬ 슀크둀이 νŠΈλ¦¬κ±°λ˜λŠ” ν…μŠ€νŠΈ κ°•μ‘° ν‘œμ‹œ μƒν™©μ—μ„œλŠ” INP μ μˆ˜κ°€ μ¦κ°€ν•˜μ§€ μ•Šλ„λ‘ μΈ‘μ • 방식이 μ‘°μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [17]. --- - **μΆ”μΆœλœ νŒ¨ν„΄:** "Continuous Responsiveness and Task Yielding" β€” κΈ΄ μž‘μ—…μ„ μž‘κ²Œ μͺΌκ°œμ–΄ λΈŒλΌμš°μ €κ°€ μ‚¬μš©μž μž…λ ₯κ³Ό λ Œλ”λ§ μ—…λ°μ΄νŠΈ 사이에 숨 쉴 ν‹ˆ(Yield)을 μ£ΌλŠ” νŒ¨ν„΄. - **INP의 핡심 λ©”μ»€λ‹ˆμ¦˜:** - **Input Delay:** μ‚¬μš©μž μž…λ ₯ ν›„ 이벀트 ν•Έλ“€λŸ¬κ°€ μ‹€ν–‰λ˜κΈ° μ „κΉŒμ§€μ˜ λŒ€κΈ° μ‹œκ°„ (주둜 메인 μŠ€λ ˆλ“œ 점유둜 λ°œμƒ). - **[[Processing|Processing]] Time:** 이벀트 ν•Έλ“€λŸ¬ 자체의 μ‹€ν–‰ μ‹œκ°„. - **Presentation Delay:** 이벀트 처리 ν›„ μ‹€μ œ 화면에 λ³€κ²½ 사항이 κ·Έλ €μ§€κΈ°κΉŒμ§€μ˜ μ‹œκ°„. - **μ£Όμš” μ΅œμ ν™” μ „λž΅:** - **Breaking Up [[Long Tasks|Long Tasks]]:** 50ms μ΄μƒμ˜ 무거운 동기 μž‘μ—…μ„ `scheduler.yield()`λ‚˜ `setTimeout`으둜 λΆ„ν• . - **Web Workers:** λ³΅μž‘ν•œ 연산을 메인 μŠ€λ ˆλ“œ λ°–μœΌλ‘œ μ˜€ν”„λ‘œλ“œ. - **Optimization of Third-party [[Scripts|Scripts]]:** μƒν˜Έμž‘μš©μ„ μ €ν•΄ν•˜λŠ” κ΄‘κ³ /뢄석 슀크립트의 μ‹€ν–‰ μ§€μ—°. - **Event Debouncing/Throttling:** μž¦μ€ 이벀트 λ°œμƒμ„ μ œν•œν•˜μ—¬ λ Œλ”λ§ λΆ€ν•˜ κ°μ†Œ. - **의의:** μ‚¬μš©μžμ˜ μž…λ ₯에 μ¦‰κ°μ μœΌλ‘œ λ°˜μ‘ν•˜λŠ” μ›Ήμ‚¬μ΄νŠΈλ₯Ό 톡해 심리적 λ§ˆμ°°μ„ 쀄이고 λΉ„μ¦ˆλ‹ˆμŠ€ μ „ν™˜μœ¨μ„ λ†’μž„. ## βš–οΈ Trade-offs & Caveats - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** AI λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. --- - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** κ³Όκ±° FIDλŠ” 첫 번째 μƒν˜Έμž‘μš©μ˜ μ§€μ—°λ§Œ μΈ‘μ •ν–ˆμœΌλ‚˜, INP 정책은 '전체 μ„Έμ…˜ 쀑 κ°€μž₯ κΈ΄ μ§€μ—° μ‹œκ°„'을 μΈ‘μ • μ •μ±…μœΌλ‘œ μ‚Όμ•„ 훨씬 μ—„κ²©ν•œ μ΅œμ ν™”λ₯Ό μš”κ΅¬ν•¨. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” λͺ¨λ“  동적 리슀트 λ Œλ”λ§ μ‹œ 가상화(Virtualization) μ μš©μ„ μ˜λ¬΄ν™”ν•˜λ©°, 100ms μ΄μƒμ˜ 메인 μŠ€λ ˆλ“œ 차단 μž‘μ—… λ°œμƒ μ‹œ λΉŒλ“œ κ²½κ³  정책을 μ‹œν–‰ν•¨. ## πŸ”— Knowledge Connections - **Related Topics:** [[Core Web Vitals|Core Web Vitals]], [[First Input Delay (FID)|First Input Delay (FID)]], [[Long Animation Frames API|Long Animation Frames API]] - **Projects/Contexts:** Chrome User Experience Report ([[CrUX|CrUX]]), [[Chrome DevTools|Chrome DevTools]], [[Interop 2025|Interop 2025]] - **Contradictions/Notes:** 초기 μΈ‘μ • λ°©μ‹μ—μ„œλŠ” λͺ¨λ“  ν…μŠ€νŠΈ κ°•μ‘° ν‘œμ‹œκ°€ INP에 영ν–₯을 μ£Όμ—ˆμœΌλ‚˜, 2025λ…„ 초 Chrome의 μ—…λ°μ΄νŠΈλ‘œ 인해 μŠ€ν¬λ‘€μ„ λ™λ°˜ν•˜λŠ” ν…μŠ€νŠΈ κ°•μ‘° ν‘œμ‹œλŠ” μ˜ˆμ™Έμ μœΌλ‘œ INP μ§€μ—° μ‹œκ°„μ— ν•©μ‚°λ˜μ§€ μ•Šλ„λ‘ λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [17]. --- *Last updated: 2026-04-19* --- --- - [[Core-Web-Vitals-Metrics|Core-Web-Vitals-Metrics]], [[JavaScript-Optimization-Patterns|JavaScript-Optimization-Patterns]], [[Google-Page-Experience-2025-Update|Google-Page-Experience-2025-Update]], [[Frontend-Performance-Optimization-Guide|Frontend-Performance-Optimization-Guide]] - **Raw Source:** 00_Raw/INP (Interaction to Next Paint).md, 00_Raw/[[Interaction to Next Paint (INP)|Interaction to Next Paint (INP)]].md