About JavaScript Interop

Ultralight is built on JavaScriptCore-- the same high-performance JavaScript engine used by Safari/WebKit on macOS and iOS.

We expose low-level C bindings to JavaScriptCore so that you can seamlessly integrate your native code with JavaScript running on a page.

πŸ“˜

C++ Wrapper for JavaScriptCore

We offer a wrapper to simplify usage from C++. See JSHelpers.h in the AppCore API

Using the JavaScriptCore API

To use the JavaScriptCore API in your code, just include <JavaScriptCore/JavaScript.h>:

#include <JavaScriptCore/JavaScript.h>

You can browse the API headers for JavaScriptCore by clicking here.

Common API Types

API TypeDescription
JSContextRefA JavaScript execution context, you will need this to make most calls in JavaScriptCore.
JSValueRefThe base type for all JavaScript values (eg, Number, String, Object, Boolean, etc.).

This is a garbage-collected type.
JSObjectRefA JavaScript object-- this value is technically typedef'd to the same underlying type as JSValueRef and can be passed anywhere that accepts a JSValueRef.

This is a garbage-collected type.
JSStringRefA raw UTF-16 string buffer for passing strings to/from JavaScript.
JSClassDefinitionUsed to create custom JavaScript objects that wrap native objects.

What’s Next