1. Introduction
This proposal defines a list of keys that represent various runtime environments.
These keys can be used in a variety of ways, and should be considered a reliable representation of the given runtime.
For example, they may be used in a project configuration file to indicate the given project supports the specified runtime.
This specification does not detail how the keys can be used; that is left up to community developed tools.
The point of this proposal is to only define what the keys are in order to prevent conflicts, and provide users a reliable list of platforms they can build tooling around.
Inclusion in this registry does not imply that the specified runtime is conformant with the WinterCG Minimum Common API.
Inclusing in this registry does not imply endorsement of any kind.
1.1. Example Usage
One example of how these keys may be used (remember, this proposal does not specify how the keys are to be used) is within package.json
files for projects hosted on npm.
The following package.json
file demonstrates a library that exports separate outputs for Node.js and Deno, as well as specifies which versions of each runtime it supports.
{ "name" : "the-library" , "version" : "1.0.0" , "exports" : { "node" : "./dist/node/index.js" , "deno" : "./dist/deno/index.js" }, "engines" : { "node" : ">=16" , "deno" : ">=1.10" } }
2. Keys
2.1. Alibaba Cloud - edge-routine
The JavaScript/Webassembly runtime that powers Alibaba Cloud edge-routine.
Key: edge-routine
Website: https://www.alibabacloud.com/help/en/dynamic-route-for-cdn/latest/er-overview
2.2. Azion - Edge Functions
Azion Edge Functions for ultra-low latency, edge-native applications, built with open standards for secure, high-performance serverless computing.
Key: azion
Website: https://www.azion.com/en/products/edge-functions/
2.3. Cloudflare - workerd
The JavaScript / WebAssembly runtime that powers Cloudflare Workers.
Key: workerd
Website: https://workers.cloudflare.com/
Repository: https://github.com/cloudflare/workerd
2.4. Deno Land - Deno
A modern runtime for JavaScript and TypeScript.
Key: deno
Website: https://deno.com
Repository: https://github.com/denoland/deno
2.5. Lagon - Lagon Runtime
Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Functions at the Edge.
Key: lagon
Website: https://lagon.app
Repository: https://github.com/lagonapp/lagon
2.6. Meta - React Native
A framework for building native apps using React. This key represents supported React Native JS runtimes on native platforms (excludes react-native-web).
Key: react-native
Website: https://reactnative.dev/
Repository: https://github.com/facebook/react-native
2.7. Moddable - Moddable SDK
Open source runtime for resource-constrained embedded devices using standard JavaScript and TypeScript. Supports standard ECMA-419 APIs.
Key: moddable
Website: https://www.moddable.com/
Repository: https://github.com/Moddable-OpenSource/moddable
2.8. Netlify - Edge Functions
Edge Functions connect the Netlify platform and workflow with an open runtime standard at the network edge.
Key: netlify
Website: https://docs.netlify.com/edge-functions/overview/
Repository: https://github.com/netlify/edge-functions
2.9. OpenJS Foundation - Electron
Build cross-platform desktop apps with JavaScript, HTML, and CSS.
Key: electron
Website: https://www.electronjs.org/
Repository: https://github.com/electron/electron
2.10. OpenJS Foundation - Node.js
Node.js is an open-source, cross-platform JavaScript runtime environment.
Key: node
Website: https://nodejs.org
Repository: https://github.com/nodejs/node
2.11. Oven - Bun
Incredibly fast JavaScript runtime, bundler, transpiler and package manager - all in one.
Key: bun
Website: https://bun.sh/
Repository: https://github.com/oven-sh/bun
2.12. React - Server Components
Used by React Server Components.
Key: react-server
Website: https://react.dev/
Repository: https://github.com/facebook/react
2.13. Vercel - Edge Light
Developing, testing, and defining the runtime Web APIs for Edge infrastructure.
Key: edge-light
Website: https://edge-runtime.vercel.app/
Repository: https://github.com/vercel/edge-runtime
2.14. Fastly - JavaScript on Compute@Edge
JavaScript runtime for Fastly Compute@Edge.
Key: fastly
Website: https://developer.fastly.com/learning/compute/javascript/
Repository: https://github.com/fastly/js-compute-runtime
2.15. Kiesel
A JavaScript engine and runtime written in Zig.
Key: kiesel
Website: https://kiesel.dev/
Repository: https://codeberg.org/kiesel-js/runtime
2.16. Wasmer Edge
The JavaScript runtime that brings JavaScript to Wasmer Edge.
Key: wasmer
Website: https://wasmer.io/products/edge
Repository: https://github.com/wasmerio/winterjs
3. Key Management
3.1. Adding a key
All JavaScript runtimes are welcome to create a key and add it to this list. New keys must not conflict with another existing key. Runtime entries on this list are encouraged, but not required, to participate in the community group.
To propose a new key, create a pull request in runtime-keys repository that adds the desired key to the index.bs
file using the following format:
## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>} <Runtime Description> Key: \`<Runtime Key>\` Website: [<Runtime Website> ](<Runtime Website> ) Repository: [<Runtime Repository> ](<Runtime Repository> )
The key should be inserted in alphabetical order based on the first character of the Runtime Organization.
Keys should meaningfully represent the relative runtime and be a simple, string-like value so it can be used in common configuration formats such as JSON and YAML.
Keys should also not conflict with existing Browserlist entries.
Entry pull requests must be approved by at least two active members of the community group that are not directly affiliated with the proposed runtime.
3.2. Modifying a key
Modifying an entry requires opening a pull request and recieving two approvals from active community group members not affiliated with the relative runtime project.
Modifications can be made to aspects such as the Organization, Name, Description, Website, and Repository.
Aside from extraordinary circumstances, to prevent breaking tools built around this list, Keys are not modifiable.
Keys may be deprecated to indicate inactive runtime projects.
Deprecated Keys may be undeprecated and claimed by another runtime.
To deprecate or undeprecate a key, open a pull request adding or removing <b>[Deprecated]</b>
from the Name:
+ ## <b>[Deprecated]</b> <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>} - ## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>}