콘텐츠로 이동

API 레퍼런스: Edge Runtime

출처 URL: https://nextjs.org/docs/pages/api-reference/edge

Pages RouterAPI 레퍼런스Edge Runtime

마지막 업데이트: 2026년 2월 20일

Next.js 애플리케이션에서는 두 가지 서버 런타임을 사용할 수 있습니다.

  • Node.js 런타임(기본값): 모든 Node.js API에 접근할 수 있으며 애플리케이션을 렌더링할 때 사용됩니다.
  • Edge Runtime: 제한된 API 집합을 제공하며 Proxy에서 사용됩니다.
  • Edge Runtime은 모든 Node.js API를 지원하지 않으므로 일부 패키지가 예상대로 동작하지 않을 수 있습니다.
  • Edge Runtime은 Incremental Static Regeneration(ISR)을 지원하지 않습니다.
  • 두 런타임 모두 배포 어댑터에 따라 스트리밍을 지원할 수 있습니다.

Edge Runtime은 다음 API를 지원합니다.

API설명
BlobBlob을 나타냅니다
fetch리소스를 가져옵니다
FetchEventfetch 이벤트를 나타냅니다
File파일을 나타냅니다
FormData폼 데이터를 나타냅니다
HeadersHTTP 헤더를 나타냅니다
RequestHTTP 요청을 나타냅니다
ResponseHTTP 응답을 나타냅니다
URLSearchParamsURL 검색 매개변수를 나타냅니다
WebSocket웹소켓 연결을 나타냅니다
API설명
atobbase-64로 인코딩된 문자열을 디코딩합니다
btoa문자열을 base-64로 인코딩합니다
TextDecoderUint8Array를 문자열로 디코딩합니다
TextDecoderStream스트림을 위한 체이닝 가능한 디코더입니다
TextEncoder문자열을 Uint8Array로 인코딩합니다
TextEncoderStream스트림을 위한 체이닝 가능한 인코더입니다
API설명
ReadableStream읽기 가능한 스트림을 나타냅니다
ReadableStreamBYOBReaderReadableStream의 리더를 나타냅니다
ReadableStreamDefaultReaderReadableStream의 리더를 나타냅니다
TransformStream변환 스트림을 나타냅니다
WritableStream쓰기 가능한 스트림을 나타냅니다
WritableStreamDefaultWriterWritableStream의 라이터를 나타냅니다
API설명
crypto플랫폼의 암호화 기능에 접근합니다
CryptoKey암호화 키를 나타냅니다
SubtleCrypto해시, 서명, 암호화 또는 복호화와 같은 일반적인 암호화 프리미티브에 접근합니다
API설명
AbortController원하는 시점에 하나 이상의 DOM 요청을 중단할 수 있습니다
Array값의 배열을 나타냅니다
ArrayBuffer고정 길이 원시 이진 데이터 버퍼를 나타냅니다
Atomics정적 메서드로 원자적 연산을 제공합니다
BigInt임의 정밀도의 정수를 나타냅니다
BigInt64Array64비트 부호 있는 정수의 타입 배열을 나타냅니다
BigUint64Array64비트 부호 없는 정수의 타입 배열을 나타냅니다
Boolean논리 값을 나타내며 true 또는 false 값을 가질 수 있습니다
clearIntervalsetInterval()로 설정된 반복 동작을 취소합니다
clearTimeoutsetTimeout()으로 설정된 반복 동작을 취소합니다
console브라우저 디버깅 콘솔에 접근합니다
DataViewArrayBuffer의 일반적인 뷰를 나타냅니다
Date플랫폼에 독립적인 형식의 특정 시점을 나타냅니다
decodeURIencodeURI 또는 유사한 루틴으로 생성된 URI를 디코딩합니다
decodeURIComponentencodeURIComponent 또는 유사한 루틴으로 생성된 URI 구성 요소를 디코딩합니다
DOMExceptionDOM에서 발생하는 오류를 나타냅니다
encodeURI특정 문자를 UTF-8 이스케이프 시퀀스로 치환하여 URI를 인코딩합니다
encodeURIComponent특정 문자를 UTF-8 이스케이프 시퀀스로 치환하여 URI 구성 요소를 인코딩합니다
Error구문 실행이나 속성 접근 중 발생하는 오류를 나타냅니다
EvalError전역 함수 eval()과 관련된 오류를 나타냅니다
Float32Array32비트 부동소수점 수의 타입 배열을 나타냅니다
Float64Array64비트 부동소수점 수의 타입 배열을 나타냅니다
Function함수를 나타냅니다
Infinity수학적 무한대를 나타냅니다
Int8Array8비트 부호 있는 정수의 타입 배열을 나타냅니다
Int16Array16비트 부호 있는 정수의 타입 배열을 나타냅니다
Int32Array32비트 부호 있는 정수의 타입 배열을 나타냅니다
Intl국제화 및 현지화 기능에 접근합니다
isFinite값이 유한한 숫자인지 판별합니다
isNaN값이 NaN인지 여부를 판별합니다
JSONJavaScript 값을 JSON 형식으로 변환하거나 그 반대로 변환하는 기능을 제공합니다
Map각 값이 한 번만 나타나는 값의 컬렉션을 나타냅니다
Math수학 함수와 상수에 접근합니다
Number숫자 값을 나타냅니다
Object모든 JavaScript 객체의 기반이 되는 객체를 나타냅니다
parseFloat문자열 인수를 파싱하여 부동소수점 숫자를 반환합니다
parseInt문자열 인수를 파싱하여 지정된 기수의 정수를 반환합니다
Promise비동기 작업의 최종 완료(또는 실패)와 그 결과 값을 나타냅니다
Proxy속성 조회, 할당, 열거, 함수 호출 등 기본 연산의 동작을 사용자 정의하는 객체를 나타냅니다
queueMicrotask실행할 마이크로태스크를 큐에 추가합니다
RangeError값이 허용된 집합 또는 범위를 벗어났을 때의 오류를 나타냅니다
ReferenceError존재하지 않는 변수를 참조했을 때의 오류를 나타냅니다
Reflect가로챌 수 있는 JavaScript 연산을 위한 메서드를 제공합니다

RegExp| 정규 표현식을 나타내며 문자 조합을 일치시킬 수 있습니다. Set| 각 값이 한 번만 등장할 수 있는 값 컬렉션을 나타냅니다. setInterval| 각 호출 사이에 고정된 시간 지연을 두고 함수를 반복 호출합니다. setTimeout| 지정한 밀리초 이후에 함수를 호출하거나 표현식을 평가합니다. SharedArrayBuffer| 일반적이며 고정 길이의 원시 이진 데이터 버퍼를 나타냅니다. String| 문자 시퀀스를 나타냅니다. structuredClone| 값을 깊은 복사합니다. Symbol| 객체 속성의 키로 사용되는 고유하고 불변의 데이터 타입을 나타냅니다. SyntaxError| 구문적으로 잘못된 코드를 해석하려 할 때 발생하는 오류를 나타냅니다. TypeError| 값이 예상한 타입이 아닐 때 발생하는 오류를 나타냅니다. Uint8Array| 8비트 부호 없는 정수로 구성된 타입 배열을 나타냅니다. Uint8ClampedArray| 0-255 범위로 클램핑된 8비트 부호 없는 정수 타입 배열을 나타냅니다. Uint32Array| 32비트 부호 없는 정수 타입 배열을 나타냅니다. URIError| 전역 URI 처리 함수가 잘못 사용되었을 때 발생하는 오류를 나타냅니다. URL| 객체 URL을 생성하는 데 사용되는 정적 메서드를 제공하는 객체를 나타냅니다. URLPattern| URL 패턴을 나타냅니다. URLSearchParams| 키/값 쌍 컬렉션을 나타냅니다. WeakMap| 키가 약하게 참조되는 키/값 쌍 컬렉션을 나타냅니다. WeakSet| 각 객체가 한 번만 등장할 수 있는 객체 컬렉션을 나타냅니다. WebAssembly| WebAssembly에 접근할 수 있도록 제공합니다.

next devnext build 모두에서 Environment Variables에 접근하려면 process.env를 사용할 수 있습니다.

Edge Runtime에는 다음과 같은 제한이 있습니다.

  • 네이티브 Node.js API는 지원되지 않습니다. 예를 들어 파일 시스템을 읽거나 쓸 수 없습니다.
  • node_modules ES Modules를 구현하고 네이티브 Node.js API를 사용하지 않는 한 사용할 수 있습니다.
  • require를 직접 호출하는 것은 허용되지 않습니다. 대신 ES Modules를 사용하세요.

다음 JavaScript 언어 기능은 비활성화되어 있으며, 작동하지 않습니다.

API설명
eval문자열로 표현된 JavaScript 코드를 평가합니다.
new Function(evalString)인자로 제공한 코드로 새 함수를 생성합니다.
WebAssembly.compile버퍼 소스에서 WebAssembly 모듈을 컴파일합니다.
WebAssembly.instantiate버퍼 소스에서 WebAssembly 모듈을 컴파일하고 인스턴스화합니다.

드물게 코드가 (또는 import된 코드가) 런타임에 도달할 수 없고 treeshaking으로 제거할 수 없는 동적 코드 평가 구문을 포함할 수 있습니다. Proxy 구성을 사용해 특정 파일을 허용하도록 검사를 완화할 수 있습니다.

proxy.ts

export const config = {
unstable_allowDynamic: [
// allows a single file
'/lib/utilities.js',
// use a glob to allow anything in the function-bind 3rd party module
'**/node_modules/function-bind/**',
],
}

unstable_allowDynamic은 특정 파일에 대해 동적 코드 평가를 무시하는 glob이거나 glob 배열입니다. glob은 애플리케이션 루트 폴더를 기준으로 합니다.

이 구문이 Edge에서 실행되면 예외가 발생하여 런타임 오류를 일으킨다는 점에 유의하세요.