나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-02-21 12:23:00

undici

<colbgcolor=#339933,#339933><colcolor=#fff,#fff> undici
운디치
종류 HTTP/클라이언트
최초 개발자 Matteo Collina[1]
개발 Node.js
출시 2018년 7월 26일#[2]
안정 버전 v7.22.0 (2026년 2월 13일)
개발 언어 JavaScript
플랫폼 Node.js
라이선스 MIT 라이선스
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 역사3. 특징4. 기타5. 관련 문서

1. 개요

Node.js 런타임용 HTTP 클라이언트 구현체. Node.js의 내장 fetch 구현체이기도 하다.

이름은 11을 뜻하는 라틴어 ūndecim에서 왔다.

2. 역사

2020년경부터 undici로 웹 표준 호환 fetch API를 구현하려는 undici-fetch 등의 시도가 생겼으며, 2021년 8월 머지되었다.#912

2022년 4월 Node.js 16에 --experimental-fetch 플래그를 통해 제한적으로 사용할 수 있도록# 추가되었으며,#41749# 동시기에 Node.js 18에서는 Current 공개와 함께 플래그 제한 없이 experimental 기능으로 추가되었다.#

3. 특징

llhttp 코어를 기반으로 여러 일반적인 HTTP/클라이언트 기능들을 Node.js 인터페이스 형태로 쌓은 구조로, 이중에서도 가장 고수준 API는 fetch API다. Node.js 18버전부터 지원되는 내장 fetch 함수의 실제 내부 구현체가 바로 이 undici라는 것.#

기본적으로 Node.js 자체에 내장되어 있기 때문에 빌트인 fetch를 쓴다면 이미 undici를 사용하고 있는 것이다. 다만 node:http같은 Node.js 표준 라이브러리 형태로는 제공되지 않기 때문에 fetch() 함수 외 추가적인 기능이나 설정을 하기 위해서는 npm으로 별도 배포되는 undici 패키지를 사용해야 한다. 해당 패키지에서도 setGlobalDispatcher() 등을 사용해 업스트림 라이브러리를 전혀 건드리지 않고 injection하는 게 가능한데, 이는 undici가 undici.globalDispatcher.1라는 전역 심볼을 공유하기 때문이다.# 반대로 node:http 등 표준 라이브러리를 쓰는 업스트림은 소스를 수정하지 않는 한 건드릴 수 없다.

기본적으로 둘다 llhttp에 기반한다는 점#44000만 동일할 뿐 node:httpNode.js 런타임 표준 프로토콜 스택에 기반하지 않고 자체적인 독자 스택을 사용한다. 여기서 생기는 문제점도 있는데, 가령 node:perf_hookshttp performanceEntry.entryType이나 node:trace_eventsnode.http 카테고리 등에서 추적이 불가능하다.

4. 기타

5. 관련 문서


[1] fastify의 개발자이기도 하다.[2] Node.js 공식 블로그에서도 undici 첫 출시를 2018년이라 소개하고 있다.#