Node.js/NPM
Integrate GitBook Assistant using the NPM package for full application-level control
If you need more control and want to work at the application level, you can install the GitBook embed package from npm. This approach is ideal for server-side rendering, build-time integration, or custom iframe management.
Steps
Install the package
Add
@gitbook/embedto your project:npm install @gitbook/embedImport the package
In your application code, import the
createGitBookfunction:import { createGitBook } from "@gitbook/embed";Or using CommonJS:
const { createGitBook } = require("@gitbook/embed");Initialize GitBook
Create a GitBook instance with your docs site URL:
const gitbook = createGitBook({ siteURL: "https://docs.company.com", });Create an iframe
Generate an iframe element and set its source to the Assistant URL:
const iframe = document.createElement("iframe"); iframe.src = gitbook.getFrameURL(); iframe.id = "assistant-container"; iframe.style.border = "none"; iframe.style.width = "100%"; iframe.style.height = "600px";Attach the frame
Create a GitBook frame instance and mount it to your page:
const frame = gitbook.createFrame(iframe); document.getElementById("assistant-container").appendChild(iframe);Control the Assistant programmatically
Use the frame instance to interact with the Assistant:
// Open the Assistant frame.open(); // Close the Assistant frame.close(); // Toggle the Assistant frame.toggle(); // Navigate to a specific page frame.navigateToPage("/getting-started"); // Send a message frame.postUserMessage("How do I get started?");Add configuration options
Pass customization options when initializing:
const gitbook = createGitBook({ siteURL: "https://docs.company.com", welcomeMessage: "Welcome to our help center!", suggestions: ["How do I get started?", "What are the pricing plans?"], buttons: [ { label: "Contact Support", icon: "envelope", onClick: () => { window.open("mailto:support@example.com", "_blank"); }, }, ], });
Props & Configuration
siteURL
string
Yes
N/A
Your GitBook docs site URL (e.g., https://docs.company.com).
welcomeMessage
string
No
null
Custom welcome message shown when the Assistant opens.
suggestions
string[]
No
[]
Array of suggested questions displayed to users.
buttons
object[]
No
[]
Custom buttons in the Assistant header. Each button has label, icon, and onClick properties.
Frame Methods:
open()
None
Open the Assistant panel.
close()
None
Close the Assistant panel.
toggle()
None
Toggle the panel open/closed.
navigateToPage(path)
path: string
Navigate to a specific docs page.
navigateToAssistant()
None
Navigate directly to the Assistant interface.
postUserMessage(message)
message: string
Send a message as the user.
clearChat()
None
Clear all chat messages.
destroy()
None
Remove the Assistant and clean up resources.
Common pitfalls
Forgetting to install the package – Run
npm install @gitbook/embedbefore importing.Missing siteURL – The
siteURLoption is required and must match your published docs site.iFrame not rendering – Ensure the parent container has sufficient width/height for the iframe to display.
Frame methods called before initialization – Wait until
createFrame()completes before calling frame methods.Not cleaning up on unmount – Always call
frame.destroy()to prevent memory leaks in single-page apps.
Last updated
Was this helpful?