"매 mobile / laptop 의 battery 와 thermal budget 을 의식하는 frontend". 2026 매 user 의 80%+ 가 mobile 매 access — 매 60fps 의 X, 매 power-aware design 이 differentiator. Battery API deprecation 후 매 alternative signal (visibility, network, thermal) 활용.
매 핵심
매 power consumer (frontend)
CPU/JS: 매 long task, 매 layout thrash, 매 polling.
GPU: 매 unnecessary compositing, 매 large canvas, 매 video decode.
Network/radio: 매 frequent fetch, 매 large payload, 매 keep-alive.
Display: 매 bright pixels, 매 high refresh rate.
Sensors: GPS, accelerometer, camera 매 always-on.
매 power-aware signals
Page Visibility API: 매 hidden 시 매 work 중단.
prefers-reduced-motion: 매 animation 축소.
Network Information API: 매 'slow-2g' / 'saveData' 감지.
deprecated Battery API: Chrome 84+ removed — 매 indirect signal 의존.
매 응용
Background tab 매 timer/animation 정지.
Save-data mode 매 image/video 축소.
requestIdleCallback 매 non-critical work 의 deferral.
💻 패턴
Page Visibility — 매 hidden 시 정지
letrafId=null;functiontick(){// 매 expensive animation
draw();rafId=requestAnimationFrame(tick);}document.addEventListener('visibilitychange',()=>{if(document.hidden){cancelAnimationFrame(rafId);rafId=null;}elseif(!rafId){rafId=requestAnimationFrame(tick);}});
Save-Data — 매 light mode
functiongetDataSaverMode(){constconn=navigator.connection||navigator.mozConnection;if(!conn)returnfalse;returnconn.saveData===true||['slow-2g','2g'].includes(conn.effectiveType);}if(getDataSaverMode()){document.body.classList.add('lite-mode');// 매 disable autoplay video, large hero image, prefetch
}
classPowerAwareSocket{constructor(url){this.url=url;this.connect();document.addEventListener('visibilitychange',()=>this.adjust());}connect(){this.ws=newWebSocket(this.url);}adjust(){if(document.hidden){// 매 hidden — close to save radio
this.ws.close();}elseif(this.ws.readyState!==WebSocket.OPEN){this.connect();}}}
CSS — 매 dark mode 매 OLED 절전
@media(prefers-color-scheme:dark){:root{--bg:#000;/* 매 true black 매 OLED 의 pixel off */--fg:#e8e8e8;}}
매 결정 기준
상황
Approach
매 background tab
requestAnimationFrame 정지
매 save-data
image quality 축소, prefetch X
매 reduced-motion
animation 비활성화
매 idle
requestIdleCallback
매 OLED + dark mode
true black bg
기본값: visibility + saveData + reduced-motion 의 3개 매 mandatory.