Chrome DevTools

Runtime Domain

Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.

Methods

Events

Types

Methods

React NativeChrome DevTools

Runtime.addBinding #

If executionContextId is empty, adds binding with the given name on the global objects of all inspected contexts, including those created later, bindings survive reloads. Binding function takes exactly one argument, this argument should be string, in case of any other input, function throws an exception. Each binding function call produces Runtime.bindingCalled notification.

A map from binding names (registered during this session using @cdp Runtime.addBinding) to execution context selectors.

Even though bindings get added to the global scope as functions that can outlive a session, they are treated as session state, matching Chrome's behaviour (a binding not added by the current session will not emit events on it).

Parameters

name
string
executionContextId
Optional
ExecutionContextId

If specified, the binding would only be exposed to the specified execution context. If omitted and executionContextName is not set, the binding is exposed to all execution contexts of the target. This parameter is mutually exclusive with executionContextName. Deprecated in favor of executionContextName due to an unclear use case and bugs in implementation (crbug.com/1169639). executionContextId will be removed in the future.

ExperimentalDeprecated
executionContextName
Optional
string

If specified, the binding is exposed to the executionContext with matching name, even for contexts created after the binding is added. See also ExecutionContext.name and worldName parameter to Page.addScriptToEvaluateOnNewDocument. This parameter is mutually exclusive with executionContextId.


HermesHermes (Legacy)Chrome DevTools

Runtime.callFunctionOn #

Calls function with given declaration on the given object. Object group of the result is inherited from the target object.

In V8, @cdp Runtime.evaluate and @cdp Runtime.callFunctionOn populate the result field with the exception value, and some code paths in Chrome DevTools depend on this. See https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/35aa264a622e853bb28b4c83a7b5cc3b2a9747bc/front_end/core/sdk/RemoteObject.ts#L574-L592

Handles Runtime.callFunctionOn request @cdp Runtime.callFunctionOn Allowed even if domain is not enabled.

Parameters

functionDeclaration
string

Declaration of the function to call.

objectId
Optional
RemoteObjectId

Identifier of the object to call function on. Either objectId or executionContextId should be specified.

arguments
Optional
array[ CallArgument ]

Call arguments. All call arguments must belong to the same JavaScript world as the target object.

silent
Optional
boolean

In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state.

returnByValue
Optional
boolean

Whether the result is expected to be a JSON object which should be sent by value. Can be overriden by serializationOptions.

generatePreview
Optional
boolean

Whether preview should be generated for the result.

Experimental
userGesture
Optional
boolean

Whether execution should be treated as initiated by user in the UI.

awaitPromise
Optional
boolean

Whether execution should await for resulting value and return once awaited promise is resolved.

executionContextId
Optional
ExecutionContextId

Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified.

objectGroup
Optional
string

Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object.

throwOnSideEffect
Optional
boolean

Whether to throw an exception if side effect cannot be ruled out during evaluation.

Experimental
uniqueContextId
Optional
string

An alternative way to specify the execution context to call function on. Compared to contextId that may be reused across processes, this is guaranteed to be system-unique, so it can be used to prevent accidental function call in context different than intended (e.g. as a result of navigation across process boundaries). This is mutually exclusive with executionContextId.

Experimental
serializationOptions
Optional
SerializationOptions

Specifies the result serialization. If provided, overrides generatePreview and returnByValue.

Experimental

Return object

result
RemoteObject

Call result.

exceptionDetails
Optional
ExceptionDetails

Exception details.


HermesHermes (Legacy)Chrome DevTools

Runtime.compileScript #

Compiles expression.

Handles Runtime.compileScript request @cdp Runtime.compileScript Not allowed if domain is not enabled.

Parameters

expression
string

Expression to compile.

sourceURL
string

Source url to be set for the script.

persistScript
boolean

Specifies whether the compiled script should be persisted.

executionContextId
Optional
ExecutionContextId

Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.

Return object

scriptId
Optional
ScriptId

Id of the script.

exceptionDetails
Optional
ExceptionDetails

Exception details.


HermesHermes (Legacy)React NativeChrome DevTools

Runtime.disable #

Disables reporting of execution contexts creation.

Handles Runtime.disable request @cdp Runtime.disable If domain is already disabled, will return success.


HermesChrome DevTools

Runtime.discardConsoleEntries #

Discards collected exceptions and console API calls.


HermesHermes (Legacy)React NativeChrome DevTools

Runtime.enable #

Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context.

Handles Runtime.enable request @cdp Runtime.enable If domain is already enabled, will return success.


HermesHermes (Legacy)Chrome DevTools

Runtime.evaluate #

Evaluates expression on global object.

In V8, @cdp Runtime.evaluate and @cdp Runtime.callFunctionOn populate the result field with the exception value, and some code paths in Chrome DevTools depend on this. See https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/35aa264a622e853bb28b4c83a7b5cc3b2a9747bc/front_end/core/sdk/RemoteObject.ts#L574-L592

Handles Runtime.evaluate request @cdp Runtime.evaluate Allowed even if domain is not enabled.

Parameters

expression
string

Expression to evaluate.

objectGroup
Optional
string

Symbolic group name that can be used to release multiple objects.

includeCommandLineAPI
Optional
boolean

Determines whether Command Line API should be available during the evaluation.

silent
Optional
boolean

In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state.

contextId
Optional
ExecutionContextId

Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. This is mutually exclusive with uniqueContextId, which offers an alternative way to identify the execution context that is more reliable in a multi-process environment.

returnByValue
Optional
boolean

Whether the result is expected to be a JSON object that should be sent by value.

generatePreview
Optional
boolean

Whether preview should be generated for the result.

Experimental
userGesture
Optional
boolean

Whether execution should be treated as initiated by user in the UI.

awaitPromise
Optional
boolean

Whether execution should await for resulting value and return once awaited promise is resolved.

throwOnSideEffect
Optional
boolean

Whether to throw an exception if side effect cannot be ruled out during evaluation. This implies disableBreaks below.

Experimental
timeout
Optional
TimeDelta

Terminate execution after timing out (number of milliseconds).

Experimental
disableBreaks
Optional
boolean

Disable breakpoints during execution.

Experimental
replMode
Optional
boolean

Setting this flag to true enables let re-declaration and top-level await. Note that let variables can only be re-declared if they originate from replMode themselves.

Experimental
allowUnsafeEvalBlockedByCSP
Optional
boolean

The Content Security Policy (CSP) for the target might block 'unsafe-eval' which includes eval(), Function(), setTimeout() and setInterval() when called with non-callable arguments. This flag bypasses CSP for this evaluation and allows unsafe-eval. Defaults to true.

Experimental
uniqueContextId
Optional
string

An alternative way to specify the execution context to evaluate in. Compared to contextId that may be reused across processes, this is guaranteed to be system-unique, so it can be used to prevent accidental evaluation of the expression in context different than intended (e.g. as a result of navigation across process boundaries). This is mutually exclusive with contextId.

Experimental
serializationOptions
Optional
SerializationOptions

Specifies the result serialization. If provided, overrides generatePreview and returnByValue.

Experimental

Return object

result
RemoteObject

Evaluation result.

exceptionDetails
Optional
ExceptionDetails

Exception details.


HermesHermes (Legacy)Chrome DevTools

Runtime.getProperties #

Returns properties of a given object. Object group of the result is inherited from the target object.

Handles Runtime.getProperties request @cdp Runtime.getProperties Allowed even if domain is not enabled.

Parameters

objectId
RemoteObjectId

Identifier of the object to return properties for.

ownProperties
Optional
boolean

If true, returns properties belonging only to the element itself, not to its prototype chain.

accessorPropertiesOnly
Optional
boolean

If true, returns accessor properties (with getter/setter) only; internal properties are not returned either.

Experimental
generatePreview
Optional
boolean

Whether preview should be generated for the results.

Experimental
nonIndexedPropertiesOnly
Optional
boolean

If true, returns non-indexed properties only.

Experimental

Return object

result
array[ PropertyDescriptor ]

Object properties.

internalProperties
Optional
array[ InternalPropertyDescriptor ]

Internal object properties (only of the element itself).

privateProperties
Optional
array[ PrivatePropertyDescriptor ]

Object private properties.

Experimental
exceptionDetails
Optional
ExceptionDetails

Exception details.


HermesHermes (Legacy)Chrome DevTools

Runtime.globalLexicalScopeNames #

Returns all let, const and class variables from global scope.

Handles Runtime.globalLexicalScopeNames request @cdp Runtime.globalLexicalScopeNames Allowed even if domain is not enabled.

Parameters

executionContextId
Optional
ExecutionContextId

Specifies in which execution context to lookup global scope variables.

Return object

names
array[ string ]

React NativeChrome DevTools

Runtime.removeBinding #

This method does not remove binding function from global object but unsubscribes current runtime agent from Runtime.bindingCalled notifications.

Runtime.removeBinding has no targeting by execution context. We interpret it to mean "unsubscribe, and stop installing the binding on all new contexts". This diverges slightly from V8, which continues to install the binding on new contexts after it's "removed", but only if the subscription is targeted by context name.

Parameters

name
string

HermesHermes (Legacy)Chrome DevTools

Runtime.getHeapUsage Experimental#

Returns the JavaScript heap usage. It is the total usage of the corresponding isolate not scoped to a particular Runtime.

Handles Runtime.getHeapUsage request @cdp Runtime.getHeapUsage Allowed even if domain is not enabled.

Return object

usedSize
number

Used heap size in bytes.

totalSize
number

Allocated heap size in bytes.

Events

HermesHermes (Legacy)React NativeChrome DevTools

Runtime.consoleAPICalled #

Issued when console API was called.

We use the @cdp Runtime.consoleAPICalled context parameter to mark synthetic messages generated by the backend, i.e. not originating in a real console.* API call.

Parameters

type
string

Type of the call.

Allowed values: log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd

args
array[ RemoteObject ]

Call arguments.

executionContextId
ExecutionContextId

Identifier of the context where the call was made.

timestamp
Timestamp

Call timestamp.

stackTrace
Optional
StackTrace

Stack trace captured when the call was made. The async stack chain is automatically reported for the following call types: assert, error, trace, warning. For other types the async call chain can be retrieved using Debugger.getStackTrace and stackTrace.parentId field.

context
Optional
string

Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context.

Experimental

Hermes (Legacy)React NativeChrome DevTools

Runtime.executionContextCreated #

Issued when new execution context is created.

Parameters

context
ExecutionContextDescription

A newly created execution context.


React NativeChrome DevTools

Runtime.executionContextDestroyed #

Issued when execution context is destroyed.

Parameters

executionContextId
ExecutionContextId

Id of the destroyed context

Deprecated
executionContextUniqueId
string

Unique Id of the destroyed context

Experimental

React NativeChrome DevTools

Runtime.executionContextsCleared #

Issued when all executionContexts were cleared in browser


React NativeChrome DevTools

Runtime.bindingCalled Experimental#

Notification is issued every time when binding is called.

NOTE: When dispatching @cdp Runtime.bindingCalled notifications, we don't re-check whether the session is expecting notifications from the current context - only that it's subscribed to that binding name. Theoretically, this can result in over-sending notifications from contexts that the client no longer cares about, or never cared about to begin with (e.g. if the binding handler was installed by a previous session). // React Native intentionally replicates this behavior for the sake of bug-for-bug compatibility with Chrome, but clients should probably not rely on it.

Parameters

name
string
payload
string
executionContextId
ExecutionContextId

Identifier of the context where the call was made.

Types

HermesHermes (Legacy)Chrome DevTools

Runtime.CallFrame #

Stack entry for runtime errors and assertions.

Type: object

Properties

functionName
string

JavaScript function name.

scriptId
ScriptId

JavaScript script id.

url
string

JavaScript script name or url.

lineNumber
integer

JavaScript script line number (0-based).

columnNumber
integer

JavaScript script column number (0-based).


HermesHermes (Legacy)Chrome DevTools

Runtime.ExceptionDetails #

Detailed information about exception (or error) that was thrown during script compilation or execution.

Type: object

Properties

exceptionId
integer

Exception id.

text
string

Exception text, which should be used together with exception object when available.

lineNumber
integer

Line number of the exception location (0-based).

columnNumber
integer

Column number of the exception location (0-based).

scriptId
Optional
ScriptId

Script ID of the exception location.

url
Optional
string

URL of the exception location, to be used when the script was not reported.

stackTrace
Optional
StackTrace

JavaScript stack trace if available.

exception
Optional
RemoteObject

Exception object if available.

executionContextId
Optional
ExecutionContextId

Identifier of the context where exception happened.

exceptionMetaData
Optional
object

Dictionary with entries of meta data that the client associated with this exception, such as information about associated network requests, etc.

Experimental

HermesHermes (Legacy)Chrome DevTools

Runtime.ExecutionContextId #

Id of an execution context.

Type: integer


HermesHermes (Legacy)Chrome DevTools

Runtime.RemoteObject #

Mirror object referencing original JavaScript object.

Type: object

Runtime.RemoteObject's description property is a string, but in the case of functions, V8 populates it with the result of toString [1] and Chrome DevTools uses a series of regexes [2] to extract structured information about the function. [1] https://source.chromium.org/chromium/chromium/src/+/main:v8/src/debug/debug-interface.cc;l=138-174;drc=42debe0b0e6bf90175dd0d121eb0e7dc11a6d29c [2] https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/9a23d4c7c4c2d1a3d9e913af38d6965f474c4284/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts#L311-L391

Properties

type
string

Object type.

Allowed values: object, function, undefined, string, number, boolean, symbol, bigint

subtype
Optional
string

Object subtype hint. Specified for object type values only. NOTE: If you change anything here, make sure to also update subtype in ObjectPreview and PropertyPreview below.

Allowed values: array, null, node, regexp, date, map, set, weakmap, weakset, iterator, generator, error, proxy, promise, typedarray, arraybuffer, dataview, webassemblymemory, wasmvalue

className
Optional
string

Object class (constructor) name. Specified for object type values only.

value
Optional
any

Remote object value in case of primitive values or JSON values (if it was requested).

unserializableValue
Optional
UnserializableValue

Primitive value which can not be JSON-stringified does not have value, but gets this property.

description
Optional
string

String representation of the object.

deepSerializedValue
Optional
DeepSerializedValue

Deep serialized value.

Experimental
objectId
Optional
RemoteObjectId

Unique object identifier (for non-primitive values).

preview
Optional
ObjectPreview

Preview containing abbreviated property values. Specified for object type values only.

Experimental
customPreview
Optional
CustomPreviewExperimental

HermesHermes (Legacy)Chrome DevTools

Runtime.RemoteObjectId #

Unique object identifier.

Type: string


HermesHermes (Legacy)Chrome DevTools

Runtime.ScriptId #

Unique script identifier.

Type: string


HermesHermes (Legacy)Chrome DevTools

Runtime.StackTrace #

Call frames for assertions or error messages.

Type: object

Properties

description
Optional
string

String label of this stack trace. For async traces this may be a name of the function that initiated the async call.

callFrames
array[ CallFrame ]

JavaScript function name.

parent
Optional
StackTrace

Asynchronous JavaScript stack trace that preceded this stack, if available.

parentId
Optional
StackTraceId

Asynchronous JavaScript stack trace that preceded this stack, if available.

Experimental

Chrome DevTools

Runtime.TimeDelta #

Number of milliseconds.

Type: number


HermesHermes (Legacy)Chrome DevTools

Runtime.Timestamp #

Number of milliseconds since epoch.

Type: number


Chrome DevTools

Runtime.StackTraceId Experimental#

If debuggerId is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See Runtime.StackTrace and Debugger.paused for usages.

Type: object

Properties

id
string
debuggerId
Optional

Chrome DevTools

Runtime.UniqueDebuggerId Experimental#

Unique identifier of current debugger.

Type: string