The Next.js Edge Runtime is based on standard Web APIs, which is used by Middleware.
atob
: Decodes a string of data which has been encoded using base-64 encodingbtoa
: Creates a base-64 encoded ASCII string from a string of binary dataTextEncoder
: Takes a stream of code points as input and emits a stream of bytes (UTF8)TextDecoder
: Takes a stream of bytes as input and emit a stream of code pointsprocess.env
: Holds an object with all environment variables for both production and development in the exact same way as any other page or API in Next.jsThe Web Fetch API can be used from the runtime, enabling you to use Middleware as a proxy, or connect to external storage APIs
A potential caveat to using the Fetch API in a Middleware function is latency. For example, if you have a Middleware function running a fetch request to New York, and a user accesses your site from London, the request will be resolved from the nearest Edge to the user (in this case, London), to the origin of the request, New York. There is a risk this could happen on every request, making your site slow to respond. When using the Fetch API, you must make sure it does not run on every single request made.
TransformStream
: Consists of a pair of streams: a writable stream known as its writable side, and a readable stream, known as its readable side. Writes to the writable side, result in new data being made available for reading from the readable side. Support for web streams is quite limited at the moment, although it is more extended in the development environmentReadableStream
: A readable stream of byte dataWritableStream
: A standard abstraction for writing streaming data to a destination, known as a sinksetInterval
: Schedules a function to execute every time a given number of milliseconds elapsesclearInterval
: Cancels the repeated execution set using setInterval()
setTimeout
: Schedules a function to execute in a given amount of timeclearTimeout
: Cancels the delayed execution set using setTimeout()
Headers
: A WHATWG implementation of the headers APIURL
: A WHATWG implementation of the URL API.URLSearchParams
: A WHATWG implementation of URLSearchParams
Crypto
: The Crypto
interface represents basic cryptography features available in the current contextcrypto.randomUUID
: Lets you generate a v4 UUID using a cryptographically secure random number generatorcrypto.getRandomValues
: Lets you get cryptographically strong random valuescrypto.subtle
: A read-only property that returns a SubtleCrypto which can then be used to perform low-level cryptographic operationsconsole.debug
: Outputs a message to the console with the log level debugconsole.info
: Informative logging of information. You may use string substitution and additional arguments with this methodconsole.clear
: Clears the consoleconsole.dir
: Displays an interactive listing of the properties of a specified JavaScript objectconsole.count
: Log the number of times this line has been called with the given labelconsole.time
: Starts a timer with a name specified as an input parameterThe Edge Runtime has some restrictions including:
require
directly is not allowed. Use ES Modules insteadThe following JavaScript language features are disabled, and will not work:
eval
: Evaluates JavaScript code represented as a stringnew Function(evalString)
: Creates a new function with the code provided as an argument