GodotJS
-- TypeScript/JavaScript Support for Godot 4.x by leveraging the high-performance capabilities of V8 to bring the delightful development experience of TypeScript into Godot. --
Supports JavaScript engines:
- V8
- QuickJS
- JavaScriptCore
- Directly run scripts on the host browser JS VM when porting to web.

NOTE: The core functionality is implemented and essentially usable but still under testing.
Getting started
Read the getting-started.
Features
- Godot ScriptLanguage integration
- Debug with Chrome/VSCode (with v8) and Safari (with JavaScriptCore)
- REPL in Editor
- Hot-reloading
- Support for multiple javascript engines (v8, quickjs, quickjs-ng, JavaScriptCore, the host Browser JS)
- Worker threads (limited support) (experimental)
- Asynchronously loaded modules (limited support) (temporarily only available in v8.impl, quickjs.impl)
Getting the engine
No installation or setup necessary. The binaries for download are the complete, usable Godot editor and engine with JavaScript/TypeScript language support.
Binary downloads
Download the binaries from the Releases.
Choose your engine
Before initiating, make sure to select the JavaScript runtime you prefer between v8, QuickJS and Web (See Supported Platforms):
v8is proven to be one of the most powerful and high-performance JavaScript runtimes.QuickJSis a remarkable and lightweight option.JavaScriptCoreis the built-in JavaScript engine for WebKit and bundled with macOS/iOS.Webis only suitable when building for Web. All scripts run on the host browser JS VM rather than an additional interpreter.
Building from source
In some cases you want or need to build the engine from source. Read the Building from Source documentation in this case.
Examples
For more information on how to use GodotJS in a project, check out GodotJSExample for examples written in typescript.

Supported Platforms
| v8 | quickjs | quickjs-ng | Web Builtin JS | JavaScriptCore | |
|---|---|---|---|---|---|
| Windows:x86_64 | ✅ | ✅ | ✅ | ❌ | ❌ |
| Windows:arm64 | ✅ | ✅ | ✅ | ❌ | ❌ |
| MacOS:x86_64 | ✅ (not tested) | ✅ (not tested) | ✅ (not tested) | ❌ | ✅ (not tested) |
| MacOS:arm64 | ✅ | ✅ | ✅ | ❌ | ✅ (debugging) |
| Linux:x86_64 | ✅ (not tested) | ✅ (not tested) | ✅ | ❌ | ❌ |
| Linux:arm64 | ✅ | ✅ | ✅ | ❌ | ❌ |
| Android:x86_64 | ✅ (not tested) | ✅ (not tested) | ✅ (not tested) | ❌ | ❌ |
| Android:arm64 | ✅ | ✅ (not tested) | ✅ (not tested) | ❌ | ❌ |
| iOS:x86_64 | ✅ (not tested) | ✅ (not tested) | ✅ (not tested) | ❌ | ✅ (not tested) |
| iOS:arm64 | ✅ (not tested) | ✅ (not tested) | ✅ (not tested) | ❌ | ✅ (not tested) |
| Web:wasm32 | ❌ | ✅ (not tested) | ✅ (not tested) | ✅ (debugging) | ❌ |
| Debugger | ✅ Chrome/VSCode | ❌ | ❌ | ✅ browser devtools | ✅ Safari |
Android: only tested on ndk_platform=android-24
Web: only tested on emsdk-3.1.64
JavaScriptCore: macOS 15, iOS 18 (support for lower versions may be implemented in future versions)