- Published on
Next.js Script 컴포넌트 strategy 옵션 완전 정리
- Authors

- Name
- Deokgoo Kim
들어가기전
최근 개인 프로젝트 성능 개선을 위해 리소스를 lazyload 하는 것을 고려하다 next/script에 strategy라는 속성을 알게 되어 공부하고 정리했습니다.
본론으로
Script Tag 속성 defer, async
script 태그에서 속성으로 async defer이 존재합니다. 외부에서 파일을 가져올 때 사용하게 되며 로드하는 시점, 실행하는 시점이 다릅니다.
defer 또는 async를 사용하는 것만으로도 시간 단축 효과를 볼 수 있습니다.
(다른 훌륭한 자료들이 많기 때문에 그림으로 대체)

NextJS에서는
nextjs에서 제공하는 next/Script는 script의 호출을 자유롭게 만들었습니다. 특히나 strategy라는 전략을 사용하게 되면 Component 어디에서 호출을 하더라도 명시적으로 타이밍을 결정할 수 있습니다.
strategy의 선택지는 아래와 같이 3가지를 공식문서에서 다음과 같이 설명합니다.
- beforeInteractive: Load before the page is interactive
- afterInteractive: (default) Load immediately after the page becomes interactive
- lazyOnload: Load during idle time
(https://nextjs.org/docs/basic-features/script#strategy)
beforeInteractive는 head에 위치하게 되며 속성으로 defer을 사용합니다. (inline script 사용안됩니다.)
<!-- beforeInteractive -->
<head>
<script src="./script.js" defer data-nscript="beforeInteractive"></script>
</head>
afterInteractive는 head에 위치하며 기본 script태그를 사용합니다. (inline script 사용가능)
<!-- afterInteractive -->
<head>
<script src="./script.js" data-nscript="afterInteractive"></script>
</head>
lazyOnload는 페이지 라이프사이클 load 이후에 발생하며 body태그 마지막에 추가되어집니다. (inline script 사용가능)
<!-- lazyOnload -->
<body>
...
...
<script src="./script.js" data-nscript="lazyOnload"></script>
</body>
마무리
NextJS에서 제공하는 Script를 사용해서 간편하고 명확하게 script를 로드할 수 있습니다. 특히나 analytics 관련 cdn 호출, 각종 플러그인, 소셜미디어 등 잘 고려해서 사용하면 좋을 것 같습니다.
관련 글
2026년 3월 1일
블로그 프로젝트를 갈아엎은 이야기 — Next.js 12에서 16으로, 파일 기반에서 클라우드 CMS로
3년 운영한 Next.js 12 파일 기반 블로그를 Next.js 16 App Router + Firestore로 전면 재구축했습니다. 배포 없이 글을 쓸 수 있게 된 과정과 ISR 캐싱 전략까지 정리했습니다.
2024년 8월 15일
프론트엔드 개발에서의 Virtualized Rendering 이해하기
대규모 리스트와 인피니티 스크롤을 효율적으로 관리하기 위한 virtualized rendering의 원리와 사용 방법을 알아봅니다.
2026년 1월 1일
2025년, 개발자로 성장한 한 해를 되돌아보며
2025년 한 해 동안 개발자로서 경험한 기술적 성장, 주요 프로젝트, 그리고 개인적 깨달음들을 솔직하게 돌아보는 회고록입니다.
댓글
새 글 알림 받기
실무에서 바로 써먹을 수 있는 개발 팁과 경험담을 받아보세요
개인정보는 뉴스레터 발송 목적으로만 사용되며, 언제든 구독을 해지할 수 있습니다.