Enhance your users' experience with bookmarks
Report bookmarks in Power BI let you capture the current state of an embedded report page, including all filters and the state of its visuals. When you open the report at a later time, you can select the a bookmark to restore the report to the saved state. Developers can control the user experience by using the Power BI Client APIs to capture and apply bookmarks.
A saved bookmark can either be a bookmark that was saved as part of a report or a bookmark that was captured as a real-time state of a report. If you apply a saved bookmark when you load a report, you can specify the bookmark to use by providing either the bookmark's name or its state. If you provide a bookmark by name, your report needs to contain a saved bookmark with that same name.
This article explains the different API settings you'll need to embed reports that support bookmarks.
Note
In reports you embed for your organization, report consumers create personal bookmarks by capturing the state of the report, and quickly returning to that state by selecting the bookmark. See Personal bookmarks for more information.
For information on how to create a similar experience in reports you embed for your customers, see the capture report view showcase in the Power BI embedded analytics playground.
For more information about using bookmarks in Power BI, see Create bookmarks in Power BI Desktop.
For information about using personal bookmarks when embedding Power BI, see Personal bookmarks.
How to use report bookmarks
The following sections show how to use the Power BI Client APIs to work with report bookmarks.
Manage a report's bookmarks
To manage a report's bookmarks, use the bookmarksManager
property of an embedded report instance.
The BookmarksManager class has the following methods:
getBookmarks
- Returns a list of saved bookmarks associated with the report.apply
- Applies by name a previously saved bookmark to the report.capture
- Captures and returns a base64-serialization string, which represents the current state of the report.applyState
Applies a previously captured base64-serialization state of a bookmark to the report.play
- Controls the slide show presentation mode for the report's bookmarks.
Access a report bookmark
To access an individual bookmark, use the getBookmarks
method to access a list of ReportBookmark
objects.
The ReportBookmark
class has the following properties:
name
- The unique identifier of the report bookmark.displayName
- The display name of the report bookmark, which appears in the Bookmarks pane.state
- A base64 serialization of the report bookmark's state. You can save it and apply it to a report with thebookmarksManager.applyState
method.children
- A list ofReportBookmark
objects representing a report bookmark group, if it exists.
Use the report bookmarks APIs
In an embedded report, developers can:
- Get a list of saved report bookmarks.
- Apply a saved bookmark by name on report load or during a session.
- Capture and get a current view as a bookmark object.
- Apply a captured bookmark state on report load or during a session
- Perform additional logic when a report bookmark is applied.
- Show or hide the Bookmarks pane.
- Enter or exit bookmarks slide show mode.
Get a list of saved report bookmarks
To get the list of saved bookmarks associated with a report, call the getBookmarks
method of the BookmarksManager object returned by the report's bookmarksManager
property.
The getBookmarks
method is defined as follows:
getBookmarks(): Promise<models.IReportBookmark[]>
For example:
let bookmarks = await report.bookmarksManager.getBookmarks();
Apply a saved bookmark by name on report load or during a session
To apply a previously saved bookmark to a report by using its bookmark name, call the apply
method of the BookmarksManager object returned by a report's bookmarksManager
property.
For more information, see Configure report settings.
The apply
method is defined as follows:
apply(bookmarkName: string): Promise<void>
For example:
await report.bookmarksManager.apply("Bookmark1234");
Capture and get a current view as a bookmark object
To capture the current state of a report as a base64 string, call the capture
method of a BookmarksManager object. The capture
method returns an IReportBookmark
object, which represents a bookmark that's not saved in a specific report. Use the IReportBookmark.state
property to return the base64 string identifying the bookmark state, which you can later apply to a report during load time or run time.
The capture
method is defined as follows:
capture(options?:ICaptureBookmarkOptions): Promise<models.IReportBookmark>
For example:
let capturedBookmark = await report.bookmarksManager.capture();
Capture bookmark options
You can also pass an ICaptureBookmarkOptions
object to the capture
method.
interface ICaptureBookmarkOptions {
allPages?: boolean;
personalizeVisuals?: boolean;
}
allPages
- By default, the captured bookmark state will save only the current page state. To capture the state of all pages, callcapture
method withallPages
option set totrue
.personalizeVisuals
- To capture the current state with personalized visuals, call thecapture
method with thepersonalizeVisuals
option set totrue
.
For example, the following code captures the state of all pages, including the personalized visuals:
let capturedBookmark = await report.bookmarksManager.capture({
allPages: true,
personalizeVisuals: true
});
Apply a captured bookmark state on report load or during a session
To apply a previously captured bookmark state to a report, use the applyState
method of a BookmarksManager object.
For more information, see Configure report settings.
The applyState
method is defined as follows:
applyState(state: string): Promise<void>
For example:
await report.bookmarksManager.applyState(capturedBookmark.state);
Perform additional logic when a report bookmark is applied
To determine when a report bookmark has been applied, listen for the bookmarkApplied
event by calling the on
method of the report object.
For example:
report.on("bookmarkApplied", (event) => {
console.log(event.detail.name);
});
Show or hide the Bookmarks pane
To show or hide the Power BI Bookmarks pane, update the panes
property of the report settings.
Show the Bookmarks pane
let embedConfig = {
...
panes: {
bookmarks: {
visible: true
}
}
};
Hide the Bookmarks pane
let embedConfig = {
...
panes: {
bookmarks: {
visible: false
}
}
};
For information about updating report settings, see Configure report settings.
Enter or exit bookmarks slide show mode
To control the slide show presentation mode for a report's bookmarks, call the play
method of a BookmarksManager object. For more information, see Bookmarks as a slide show.
The play
method is defined as follows:
play(playMode: models.BookmarksPlayMode): Promise<void>
Note
Before entering bookmarks slide show mode, make sure that there is at least one bookmark on the report with getBookmarks API.
Enter slide show presentation mode
await report.bookmarksManager.play(models.BookmarksPlayMode.Presentation);
Exit slide show presentation mode
await report.bookmarksManager.play(models.BookmarksPlayMode.Off);
Considerations and limitations
When you use the bookmarks API, certain changes to the report can cause an error or an unexpected result. One example of this is removing report filters from the report. To avoid errors, the corresponding filter cards must be present. Instead of removing the filters, set their values to
All
. If you don’t know which filters were deleted or changed, recapture the bookmark after you apply the changes to the report.Filters such as on load filters created by the embed session or added by the update filters add operation, are captured in the bookmark state but will be applied only in the current session. To overcome this limitation, the filter should be saved on the report with the
All
value, and modified in the embed session using the update filters update operation.