Skip to main content
There are two things with a version, and they move apart on purpose.

The widget is never frozen in your bundle

Like @stripe/stripe-js, @concatflow/embed does not bundle the widget. It loads the hosted widget.js. Your customers always get the current launcher and assistant, with its fixes, without a redeploy on your side.

The contract is versioned

Every init call from @concatflow/embed carries the version of the options contract it speaks: v: 1, exported as PROTOCOL_VERSION.
The messages between widget.js and the assistant’s iframe carry their own version too. A message from another version is ignored, never guessed. The rule on Concatflow’s side: the hosted script keeps understanding older versions. An old copy of @concatflow/embed in your bundle keeps working after Concatflow ships a new widget.

Package versions

Both packages are at 0.2.0. They are versioned independently of the widget: upgrading them is never needed to get widget fixes.

The HTTP API

@concatflow/node calls versioned routes under /api/v1/. See the HTTP API.