What's new
This topic includes new features, improvements, and bug fixes for the Preflight tool.
2.0.0 - May 26, 2026
Preflight now supports saving design states to Asset Storage with subsequent rendering through the rendering service.
New Endpoint
POST api/product/save: Accepts a product object, userId, and stateId. Returns an array of origin file URLs and the stateId:
{
"originUrls": [],
"stateId": "4afcbe97-b51d-4f6f-b9db-70c55536b80a"
}
POST api/product/finish— Renders hi-res outputs. Now returns403 Forbiddenwhen theDisableFinishEndpointparameter is set totrue.
Configuration Parameters
Added new parameters for working with Asset Storage:
| Parameter | Description |
|---|---|
DisableFinishEndpoint | If true, disables the finish endpoint and returns 403 on access. |
AssetProcessorEndpoint | URL of the asset processor gateway in the current environment. |
AssetProcessorApiKey | API key for the asset processor. |
SaveStateRetryCount | Number of save retry attempts. Default: 3. |
AssetStorageStates | If true, saves the state file as a private asset in Asset Storage. If false, saves to disk (legacy behavior). |
State Backups
If all retry attempts to save the state file to asset storage fail, the state is saved to disk at basePath/backups/{userId}/{stateId}.st for recovery and investigation.
Recommended Usage
To use the new functionality, deploy Preflight 2.0.0, update the configuration, and adjust your pipeline:
- Approval step: Call
$['preflight'].getPreviews(). Previews are available in$['preflight'].previewsfor the gallery widget. - Add to cart (finish widget): Call
$['preflight'].saveProduct(), which returns the savedstateIdand an array of origin file URLs. - Order widget: Remove hi-res resources and include the
stateIdfrom$['preflight'].stateId.
note
Calling the finish method directly is not recommended with the new flow.