When does an extension get updated in a project?

I’ve been puzzling over some bugs in beta beta editor/simulator. I note that this has been upgraded from 0.14.4 to 0.14.5 today.

I published some code and that may have picked up a more recent version of the animation extension than the code had in it. I can still load the code from the png file and it works fine. I’ve realised I don’t understand when an extension will be changed/upgraded.

I see this is described to some extent on https://makecode.com/extensions/versioning and this says:

Extension updates

To update, the user has to take explicit action (currently, remove and re-add the extension using the editor).

For animation there is no version in the pxt.json file and probably as a result of that none that shows up in the Explorer view. I’m just discussing this on Discord with @jwunderl

There are two “types” of extensions: built-in and user created. Those docs refer to user created extensions, but the animation extensions is actually one of the extensions built-in to arcade (just not added to new projects by default). That means it is tied to the version of arcade and can change without user action.

That being said, we take steps to ensure that those packages never have breaking changes. The reason they broke in this case was because the APIs that changed were never shipped to the main arcade site (non-beta beta). In other words, APIs that only exist in beta are subject to change at any time.

Sorry you ran into this! The new APIs are probably going to be the final version.

I should mention, we do our best to ensure backwards compatibility in the non-beta site. If you ever have a script that is broken by an updated release (in non beta beta), please let us know!

Also Arcade was a bit unusual in that there are lots differences between /beta and /. Once we push current /beta to / (possibly next week) this should be less of a problem.

I forget who but someone had pointed out I was likely being affected by the renaming of a function.

I tend to avoid journeys into JavaScript land as The layout of blocks sometimes changes after a switch to JavaScript and back #1269 requires a lot of re-arranging on a large program. I’ve fixed up code and it now cleanly converts back to Blocks.

On the API front, I’ve got no issue with this changing pre-release. APIs are a very important area to refine and get right.

On the extensions front, it would be good to correct/improve the documentation in this area. Should these be branded in the Explorer view as the same version as editor/simulator, e.g. marked with 0.14.5 and with some additional compact symbol (with mouse over) to indicate the automatic updating?