New in Sketch 84

Sketch 84 is still in beta. We offer these notes as a preview of the upcoming changes to plugin developers.

Changes

We removed the internal class MSLayerArray from our codebase. Code that dealt with layer arrays now uses regular NSArray objects instead. This change made our internal code cleaner and easier to maintain by removing an unnecessary layer of abstraction.

As mentioned in our Internal API page, this is an internal class that should never be used. But we are aware that some plugins use it, and we’re providing this information to help them migrate their code to use the new APIs.

Code expecting an MSLayerArray object, and using its .layers() method to get an NSArray with the layers, will now receive an NSArray object. The .layers() call is no longer needed.

Plugins relying on any of the internal methods in MSLayerArray will not work. They may even crash Sketch if they’re passing the returned value unchecked to other parts of the plugin code.

Check the table in the next section for examples of how to migrate your code.

We recommend using the JavaScript API where possible.

Some examples

Note: when making changes to your plugin, you may want to add a version check to ensure that the code keeps working with older versions of Sketch. You can check the value of BCSketchInfo.shared().metadata().appVersion to see what the current version is.

If your plugin uses code similar to this… …use this instead
this._object.selectedLayers().layers() this._object.selectedLayers()
var layerArray = MSLayerArray.arrayWithLayer(layer) var layerArray = [layer]
var layerArray = MSLayerArray.arrayWithLayers([layers]) var layerArray = [layers]
var layerArray = MSLayerArray.emptyArray() var layerArray = []
var layerArray = MSLayerArray.initWithLayers([layers]) var layerArray = [layers]