web api instance method
Performance: mark() method
Available in workers
The mark() method creates a named PerformanceMark object representing a high resolution timestamp marker in the browser’s performance timeline.
Syntax
mark(name)
mark(name, markOptions)
Parameters
-
name- : A string representing the name of the mark. Must not be the same name as one of the properties of the deprecated
PerformanceTiminginterface.
- : A string representing the name of the mark. Must not be the same name as one of the properties of the deprecated
-
markOptionsOptional- : An object for specifying a timestamp and additional metadata for the mark.
-
detailOptional- : Arbitrary metadata to include in the mark. Defaults to
null. Must be structured-cloneable.devtoolsOptional Experimental- : Some browsers have use a structured
devtoolsobject within thedetailobject as part of an Extensibility API that surfaces these in custom tracks in performance traces. See the Chrome’s Extensibility API documentation for more information.dataTypeExperimental- : A string which must be set to
marker. Identifies as a marker.
- : A string which must be set to
colorOptional Experimental- : Defaults to
"primary". Must be one of"primary","primary-light","primary-dark","secondary","secondary-light","secondary-dark","tertiary","tertiary-light","tertiary-dark","error".
- : Defaults to
propertiesOptional Experimental- : Array of key-value pairs. Values can be any JSON-compatible type.
tooltipTextOptional Experimental- : Short description for tooltip.
- : Some browsers have use a structured
- : Arbitrary metadata to include in the mark. Defaults to
-
startTimeOptional- :
DOMHighResTimeStampto use as the mark time. Defaults tonow().
- :
-
- : An object for specifying a timestamp and additional metadata for the mark.
Return value
The PerformanceMark entry that was created.
Exceptions
SyntaxError: Thrown if thenameis one of the properties of the deprecatedPerformanceTiminginterface. See the example below.TypeError: Thrown ifstartTimeis negative.
Examples
Creating named markers
The following example uses mark() to create named PerformanceMark entries. You can create several marks with the same name. You can also assign them, to have a reference to the PerformanceMark object that has been created.
performance.mark("login-started");
performance.mark("login-started");
performance.mark("login-finished");
performance.mark("form-sent");
const videoMarker = performance.mark("video-loaded");
Creating markers with details
The performance mark is configurable using the markOptions object where you can put additional information in the detail property, which can be of any type.
performance.mark("login-started", {
detail: "Login started using the login button in the top menu.",
});
performance.mark("login-started", {
detail: { htmlElement: myElement.id },
});
Creating markers with a different start time
The default timestamp of the mark() method is now(). You can set it to a different time using the startTime option in markOptions.
performance.mark("start-checkout", {
startTime: 20.0,
});
performance.mark("login-button-pressed", {
startTime: myEvent.timeStamp,
});
DevTools Extensibility API
For browsers that support the Extensibility API you can use the detail parameter to provide more details in a devtools object that will be used to display this in performance profiles:
// Marker indicating when the processed image was uploaded
performance.mark("Image Upload", {
detail: {
devtools: {
dataType: "marker",
color: "secondary",
properties: [
["Image Size", "2.5MB"],
["Upload Destination", "Cloud Storage"],
],
tooltipText: "Processed image uploaded",
},
},
});
Reserved names
Note in order to maintain backwards compatibility, names that are part of the deprecated PerformanceTiming interface can’t be used. The following example throws:
performance.mark("navigationStart");
// SyntaxError: "navigationStart" is part of
// the PerformanceTiming interface,
// and cannot be used as a mark name