Skip to main content
Version: 1.x.x

Initialization

quip.apps.initialize

To initialize your Live App, the app should call quip.apps.initialize with a config of type quip.apps.InitOptions. Your app must call this method within a timeout or it will be considered broken and an error message will be displayed to the user.

quip.apps.InitOptions

This is the set of initialization options the app can specify when initializing the app instance. It has the following parameters:

initializationCallback

required

Function(root: Element, params: InitializationParameters) => void

When the app calls initialize, we set up the container and call this callback so you can set up your app. See InitializationParameters for documentation on the possible params.

toolbarState

optional

quip.apps.ToolbarState

The initial state of the Live App's toolbar menus. See quip.apps.ToolbarState for more details.

InitializationParameters

isCreation

required

boolean

true if this app is being inserted into a document.

creationUrl

optional

string

This will be set to a string representation of the url that generated this app if the app was inserted via an intercept URL. Note that this is only available on web.

initOptions

optional

string

If this app was created with options (usually via being inserted as HTML via the automation API or another automation), this will be a (typically JSON) string with initialization parameters.

initOptionsSource

optional

enum initOptionsSource: string {
NONE = "NONE"
TEMPLATE = "TEMPLATE"
HTML_IMPORT = "TEMPLATE"
}

A string enum value indicating how this app was inserted (only provided if the app is being inserted):

  • NONE: inserted by a user
  • TEMPLATE: created via a template
  • HTML_IMPORT: created via an HTML import

creationBlobs

required

Blob[]

An array of blobs that this Live App was initialized with.

Example


import {Component}, React from "react";
import ReactDOM from "react-dom";
import quip from "quip-apps-api";

class Root extends Component {
render() {
return <div>Hello World!</div>;
}
}

quip.apps.initialize({
initializationCallback: async (root, params) => {
const rootRecord = quip.apps.getRootRecord();

if (params.isCreation) {
console.log("App instance created for the first time!");
}

ReactDOM.render(<Root />, root);
},
toolbarState: {
menuCommands: [
{
id: "addItem",
label: "Add Item",
handler: () => console.log("Add Item"),
},
{
id: "deleteItem",
label: "Delete Item",
handler: () => console.log("Delete Item"),
},
],
toolbarCommandIds: [
"addItem",
"deleteItem"
],
},
});