Naver FE News 2026년 4월 — 49MB 웹 페이지부터 Temporal Stage 4까지

12 min read
Naver FE NewsTemporalTypeScriptNode.js웹 성능
Naver FE News 2026년 4월 — 49MB 웹 페이지부터 Temporal Stage 4까지

매달 쏟아지는 프론트엔드 소식 중에서 진짜 알아야 할 것만 골라야 한다. Naver FE News 2026년 4월호에서 임팩트가 큰 6가지를 뽑았다. 49MB짜리 뉴스 페이지, 9년 걸린 Temporal의 Stage 4 도달, Node.js 릴리스 전략 변경, TypeScript 6.0 발표, Axios 공급망 공격, 그리고 Expo SDK 55의 Jetpack Compose 도입이다.


한눈에 보기

소식카테고리임팩트
49MB 웹 페이지성능웹 비만의 실태를 수치로 보여주는 사례
Temporal Stage 4언어 표준ES2026에 포함, Date 교체 확정
Node.js 연간 메이저 릴리스런타임짝수/홀수 구분 폐지, 모든 버전 LTS
TypeScript 6.0언어Go 기반 컴파일러 7.0으로 가는 다리
Axios 공급망 공격보안RAT 배포, npm 생태계 신뢰 이슈
Expo UI (SDK 55)모바일Jetpack Compose로 React Native UI

1. 49MB 웹 페이지 — 헤드라인 4개에 422개 요청

뉴욕 타임즈 홈 페이지를 열면 헤드라인은 4개인데, 브라우저가 받아야 하는 데이터는 49MB다. HTTP 요청 422개, JavaScript만 13MB. 기사 콘텐츠는 전체 페이지의 극히 일부이고, 나머지는 광고, 추적 스크립트, 분석 도구가 차지한다.

비유하면 편지 한 장을 받으려고 택배 트럭 한 대분의 포장재를 뜯는 것과 같다. 콘텐츠 대비 오버헤드의 비율이 비상식적이다.

[💡 잠깐! 이 용어는?] FCP(First Contentful Paint): 페이지를 요청한 후 브라우저에 첫 번째 콘텐츠(텍스트, 이미지)가 그려지는 시점이다. 사용자가 "페이지가 로딩되기 시작했다"고 느끼는 순간과 대응한다.

이 분석의 핵심 메시지는 단순하다. 성능 최적화의 가장 큰 장벽은 기술이 아니라 비즈니스 모델이다. 광고 수익 구조가 바뀌지 않는 한, 페이지 크기는 계속 늘어난다. 개발자가 통제할 수 있는 범위에서라도 서드파티 스크립트의 영향을 측정하고 관리하는 것이 현실적인 대응이다.


2. Temporal Stage 4 — 9년의 여정이 끝났다

2017년에 제안된 Temporal API가 드디어 TC39 Stage 4에 도달했다. ES2026 표준에 포함이 확정된 것이다. JavaScript의 Date 객체를 대체할 공식 후계자가 9년 만에 완성됐다.

항목DateTemporal
가변성Mutable (원본 변경)Immutable (새 객체 반환)
타임존암묵적 변환명시적 지정 필수
월 인덱스0-based (1월 = 0)1-based (1월 = 1)
캘린더ISO 8601만다중 캘린더 지원
기간 표현없음Duration 타입

Chrome 144가 이미 Temporal을 탑재하고 있고, 다른 브라우저도 순차적으로 구현 중이다. Stage 4는 "모든 주요 엔진이 구현을 완료하거나 진행 중"이어야 통과할 수 있으므로, 크로스 브라우저 지원은 시간문제다.

moment.js는 2020년에 이미 유지보수 모드에 들어갔다. Temporal이 표준이 되면서 date-fns, Day.js 같은 라이브러리의 존재 이유도 점차 줄어들 것이다.


3. Node.js 연간 메이저 릴리스 — 짝수/홀수 구분 폐지

Node.js가 지금까지 유지해온 짝수/홀수 릴리스 전략을 버렸다. 기존에는 짝수 버전(18, 20, 22)만 LTS(Long-Term Support)를 받고, 홀수 버전(19, 21, 23)은 단명하는 Current 릴리스였다. 이제는 모든 메이저 버전이 LTS를 받는다.

기존변경 후
매년 2개 메이저 (짝수 LTS + 홀수 Current)매년 1개 메이저 (모두 LTS)
홀수 버전은 실험적모든 버전이 프로덕션 대상
LTS 선택이 필요버전 선택 고민 감소

[💡 잠깐! 이 용어는?] LTS(Long-Term Support): 장기 지원 버전이다. 보안 패치와 버그 수정을 최소 30개월간 받을 수 있어서, 프로덕션 환경에서 안정적으로 사용할 수 있다.

이 변경의 실질적 효과는 의사결정 비용 감소다. "지금 21을 쓸까 22를 기다릴까"라는 고민이 사라진다. 어떤 버전이든 LTS 지원을 받으니, 최신 버전을 바로 프로덕션에 올려도 된다.


4. TypeScript 6.0 — Go 컴파일러로 가는 다리

TypeScript 6.0은 그 자체로 혁신적인 릴리스라기보다 7.0을 위한 준비 단계다. 7.0에서 Go 기반 컴파일러(tsgo)로 전환될 예정이고, 6.0은 그 사이를 잇는 다리 역할이다.

terminal
npm install typescript@6.0.0-beta

6.0의 핵심 변경사항:

  • --module node18이 기본값으로 변경 — ESM 모드가 기본이 된다
  • --target es2023 — 최신 ECMAScript 기능을 기본으로 타겟팅
  • noUncheckedIndexedAccess 강화 — 인덱스 접근의 타입 안전성 향상
  • 사전 지원 중단 경고 — 7.0에서 제거될 옵션에 대한 마이그레이션 가이드 제공

비유하면 고속도로(TypeScript 컴파일러)를 다시 깔고 있는데, 6.0은 공사 구간 우회 안내판이다. 7.0에서 Go 컴파일러가 들어오면 컴파일 속도가 10배 이상 빨라질 것으로 예상되지만, 기존 설정과의 호환성이 깨질 수 있어서 6.0에서 미리 경고하고 마이그레이션 경로를 안내하는 것이다.


5. Axios npm 패키지 공급망 공격

npm 생태계에서 또 다른 공급망 공격이 발생했다. axios 패키지의 타이포스쿼팅 변종이 RAT(Remote Access Trojan)을 배포한 것이다.

항목내용
공격 방식유사한 이름의 악성 패키지 배포
악성코드 유형RAT (원격 접근 트로이목마)
영향 범위설치 시 시스템 제어권 탈취 가능
대응npm에서 패키지 삭제, 설치자 대상 경고

[💡 잠깐! 이 용어는?] 타이포스쿼팅(Typosquatting): 유명 패키지 이름과 유사한 이름으로 악성 패키지를 등록하는 공격 기법이다. axiosaxiso, axois 같은 오타를 노린다.

이 사건이 주는 교훈은 명확하다. npm install은 사실상 임의의 코드를 다운로드해서 실행하는 행위다. lockfile 검증, npm audit, 설치 전 패키지 이름 재확인이 일상적인 보안 습관이 되어야 한다. 특히 CI/CD 파이프라인에서 의존성을 자동 업데이트하는 경우, 새로 추가되는 패키지에 대한 수동 리뷰 단계가 필요하다.


6. Expo UI (SDK 55) — Jetpack Compose가 React Native에 온다

Expo SDK 55가 expo-ui 패키지를 도입했다. 핵심은 Jetpack Compose 컴포넌트를 React Native에서 직접 사용할 수 있다는 것이다.

기존 React Native UI는 브릿지를 통해 네이티브 뷰를 제어했다. expo-ui는 이 패턴을 바꿔서, 각 플랫폼의 최신 UI 프레임워크(Android: Jetpack Compose, iOS: SwiftUI)를 직접 래핑한다. React 컴포넌트처럼 사용하지만 렌더링은 완전한 네이티브다.

기존 방식Expo UI
브릿지 기반 네이티브 뷰Jetpack Compose / SwiftUI 직접 래핑
커스텀 네이티브 모듈 필요React 컴포넌트 API로 즉시 사용
플랫폼별 룩앤필 불일치각 OS 네이티브 디자인 시스템 반영

비유하면, 기존에는 한국 음식(React)을 미국 식재료(기존 네이티브 브릿지)로 만들었다면, 이제는 한국 식재료(Jetpack Compose, SwiftUI)를 직접 가져다 쓰는 것이다. 결과물의 맛(사용자 경험)이 근본적으로 달라진다.


주목할 도구 3가지

이번 호에서 소개된 도구 중 눈여겨볼 것들이 있다.

도구한 줄 설명링크
Defuddle웹 페이지에서 본문만 깔끔하게 추출하는 라이브러리github.com/nichochar/defuddle
shadcn/cli v4shadcn/ui 컴포넌트를 CLI로 설치/관리하는 도구 v4 업데이트ui.shadcn.com
RTK (Rust Token Killer)Rust로 만든 토큰 최적화 도구, LLM 컨텍스트 절약용github.com/nichochar/rtk

Defuddle은 Readability 같은 기존 도구와 비슷하지만, LLM 에이전트가 웹 페이지를 읽을 때 특히 유용하다. 광고, 네비게이션, 푸터를 제거하고 본문 텍스트만 추출해서 토큰을 절약할 수 있다. RTK도 같은 맥락에서 코드의 토큰 수를 줄이는 데 초점을 맞춘 도구다.


마무리

이번 달 소식의 공통 키워드를 뽑자면 **"성숙"**이다.

  • Temporal이 9년 만에 표준이 됐고
  • Node.js가 불필요하게 복잡했던 릴리스 전략을 단순화했고
  • TypeScript가 Go 컴파일러라는 큰 전환을 체계적으로 준비하고 있다

반면 49MB 웹 페이지와 Axios 공급망 공격은, 생태계가 성숙해져도 근본적인 문제(웹 비만, 공급망 보안)는 쉽게 풀리지 않는다는 걸 보여준다.


참고:

관심 있을 만한 포스트

Bun vs Node.js vs Deno — 뭐가 다른지, 그래서 뭘 쓰면 좋은지 (2026 기준)

런타임 3대장 비교: 호환성(Node), 속도/번들(Bun), 올인원/보안(Deno). 팀/프로덕트 상황별 선택 기준과 체크리스트까지 정리.

BunNode.js

node:vfs — Node.js에 가상 파일 시스템이 필요한 이유

Matteo Collina가 제안한 node:vfs 모듈이 해결하려는 4가지 문제와 아키텍처를 분석한다.

Node.jsVFS

envscan — .env.example을 손으로 관리하지 말자

코드에서 process.env 참조를 스캔해 .env.example을 자동 생성하는 envscan의 접근 방식과 기존 도구들과의 차이를 정리한다.

Node.js환경 변수

Tsonic — TypeScript를 네이티브 바이너리로 컴파일하는 실험

TypeScript → C# → NativeAOT 파이프라인으로 네이티브 실행 파일을 만드는 Tsonic. 어떻게 동작하고, 어떤 한계가 있는지 살펴봤다.

TypeScriptNativeAOT

Bun이 빠른 건 맞다 — 그런데 당신의 이벤트 루프가 문제다

Bun으로 바꿔도 p99가 개선되지 않는 이유. 런타임 선택보다 먼저 봐야 할 진짜 병목 지점들.

BunNode.js

TypeScript 6.0 Beta — TS 7 가기 전에 tsconfig부터 정리하자

TypeScript 6.0 Beta의 주요 변경 사항과 깨지는 기본값들을 정리하고, TS 7(Go 네이티브) 전환을 대비하는 마이그레이션 전략을 다룬다.

TypeScripttsconfig

Temporal API — JavaScript Date의 30년 묵은 저주가 풀린다

Chrome 144가 Temporal API를 정식 탑재하면서 JavaScript 날짜 처리의 새 시대가 열렸다.

TemporalJavaScript

죽지 않는 배포 파이프라인 — Netflix가 Temporal로 실패율을 40,000배 낮춘 이야기

Netflix Spinnaker 팀이 Temporal Durable Execution을 도입해 Cloud Operation의 일시적 장애를 사실상 제거한 마이그레이션 이야기.

TemporalNetflix