Auto Saving Annotations

PSPDFKit for Web supports auto saving the changes that occur to annotations. Auto-save behavior is dependent on the deployment method used and the configuration of Configuration#autoSaveMode.

Standalone Deployments

In a standalone deployment of PSPDFKit for Web, changes will be stored in memory until they’re exported. The same persisting steps are traversed, which means we still differentiate between saved and unsaved changes, and exported Instant JSON will only contain changes that were saved. Please see the guide on importing and exporting for more information.

Server-Backed Deployments

In a server-backed deployment, local changes are always synced to the server by default. This means you can always use the backend API to interact with these objects. This auto-save behavior can be set by the Configuration#autoSaveMode configuration option.

Before the change is sent to the server, we assign a stable ID (ULID). This ID is also used by the server, and it allows you to track updates that happen before the server responds. If you’d like to ensure a local change has been saved by the server, you can use the Instance#ensureChangesSaved method:

PSPDFKit.load(configuration).then(async (instance) => {
	const createdAnnotations = await instance.create(newAnnotation);
	const [savedAnnotation] = await instance.ensureChangesSaved(
		createdAnnotations
	);
	console.log(savedAnnotation.id);
});

Configuration#autoSaveMode

If nothing else is configured, PSPDFKit for Web will have auto save enabled. This means that local changes are automatically synced. You can use Configuration#autoSaveMode to configure exactly when saving occurs.

Save Mode Use Case
default If Configuration#instant is true, autoSaveMode defaults to PSPDFKit.AutoSaveMode.IMMEDIATE. Otherwise, it defaults to PSPDFKit.AutoSaveMode.INTELLIGENT.
PSPDFKit.AutoSaveMode.IMMEDIATE Changes are saved whenever something changes, as long as they’re in a valid state. This is useful for real-time updates but increases server load.
PSPDFKit.AutoSaveMode.INTELLIGENT Changes are saved whenever we detect a complete operation. This merges multiple operations into one server request and saves, for example, on deselect.
PSPDFKit.AutoSaveMode.DISABLED Changes aren’t saved by default. You can use Instance#save to trigger a save manually whenever you want.

Here’s an example of how to set the autoSaveMode in the configuration object passed to PSPDFKit.load():

PSPDFKit.load({ autoSaveMode: PSPDFKit.AutoSaveMode.INTELLIGENT });

We use cookies to improve your experience and for marketing. Learn more in our privacy policy.