Release Notes

🎉 Sketchpacks 0.5.7

Improved Plugin Management, Better Plugin Detection, and much more

Adam Kirkwood
Building Sketchpacks
5 min readJun 8, 2017

--

Since the last release, we’ve been heads-down addressing some much needed improvements, fixes, and nifty additions.

Improved Plugin Management

With the improvements to the Sketchpacks API and macOS App, we’re now able to identify plugins that you have already installed. Plugins can fall into one of two categories:

✅ Managed plugins

Plugins that can be identified by the Sketchpacks API will be added to the Managed view of your Library.

Managed plugins are tracked locally in your Library’s sketchpack JSON file. Providing you with fine-grain control over how your plugins are updated. As well as an easy way to share your plugin collection with others!

You can find your Library’s sketchpack file at:

~/Library/Application\ Support/Sketchpacks/my-library.sketchpack

❓ Unmanaged plugins

Plugins that can not be identified by the Sketchpacks API will be added to the Unmanaged view of your Library.

Unmanaged plugins are not capable of being updated by Sketchpacks. Unmanaged plugins are never added to your Library’s .sketchpack file.

🔒 Locking by Version Range

Taking full advantage of semantic versioning, we’ve widened the range of control beyond just locking/unlocking a plugin to a specific version. The API can now serve plugin updates using semantic version ranges. This allows us to introduce 2 new locking strategies to the Sketchpacks App:

Patch-level Locks allow you to restrict your plugin updates to only versions that are less than the next minor level version. For example, lets say we have version 0.1.2, only versions less than 0.2.0 will be downloaded.

Minor-level Locks allow you to restrict your plugin updates to only versions that are less than the next major level version. For example, if we had the version 1.2.3, then only versions less than 2.0.0 would be downloaded.

For more information on how Sketchpacks deals with version control, check out Semantic Versioning and Semantic Version Ranges.

Evolving the Sketchpacks API

We’ve been busy adding features to the API, but we’ve also been working on better documentation for it as well. One of the major pieces we focused on was getting the API ready for general consumption.

We are now following the Swagger/OpenAPI specification for our API schema. The schema definition is available in JSON and YAML at the following endpoints:

https://api.sketchpacks.com/api-docs/v1/swagger.json
https://api.sketchpacks.com/api-docs/v1/swagger.yaml

If you would like to explore or try out the API, you can do so on our API documentation page. The schema can also be rendered by any swagger-ui client by simply pointing to the URLs above.

⚡️ Appcast Feeds

Updating your plugins natively through Sketch will be available in Sketch 45!

To make this change as easy as possible for developers, we’ve added a new endpoint to the API which can manage a plugins appcast XML feed. This appcast feed will be used by Sketch to check for available updates.

To take advantage of this feature, simply add our appcast URL to your manifest’s appcast property.

https://api.sketchpacks.com/v1/plugins/{plugin_identifier}/appcast

Sketchpacks Relay powers the appcast feed, allowing you to distribute your plugin updates quickly whenever you create a new (published) release on Github.

For more information, see the docs on how to serve your appcast feed with the Sketchpacks API. You should also read the thread about plugin updates.

📈 Analytics

We’re pretty excited to start sharing the analytics from the API. As of right now, download and update metrics are available! If you choose to use our appcast URL, updates within Sketch will be included in the analytics as well!

Download Metrics track every time a plugin is downloaded or updated.

Update Metrics track every time a plugin is updated. Either natively by Sketch (using the appcast feature above) or by Sketchpacks macOS app.

If you would like to view the analytics for a plugin, you can use the following endpoint to view its counters and timeseries:

https://api.sketchpacks.com/v1/plugins/{plugin_identifier}/rollup

We’ve also made Download metrics available in our newly added Badges. So now developers can easily show off their plugins activity and current status.

🛡 Badges

Sketchpacks API now serves a handful of badges for you to add to your README.md:

Copy Framer Code plugin’s README.md with latest version and sketch compatibility version badges displayed

Updated .sketchpack File Schema

To support the refactor made to our API, we had to update the schema of the .sketchpack files. This means that Sketchpacks App 0.5.7 and beyond will not be capable of importing .sketchpack files with a schema less than 1.0.0.

You will need to export a new .sketchpack file in order to share your plugin collections with your team.

If you would like to validate JSON files against the new .sketchpack file schema, the schema definition can be found on our documentation page.

👉🏼 Are you a plugin author?

You can start serving your versioned plugin releases automatically in 15 seconds.

Start by installing the Sketchpacks Relay Github App and choose which plugins you want to publish to the Sketchpacks Registry and we’ll take care of the rest.

Sketchpacks Relay will serve your semantically versioned releases from your Github repositories. Keeping your standard Github Releases workflow intact.

Bill wrote about how you can get started with Sketchpacks Relay.

We love hearing feedback

✉️ Give feedback

Have some feedback you’d like to share? Good, we’re all ears. Leave us feedback in our github.

🐛 Report a bug

Be awesome today and report any bugs you notice. Report bugs at our Github Issues.

❓Ask a question

Have a general question you’d like answered? Feel free to email us.

--

--

Adam Kirkwood
Building Sketchpacks

Designing for a better human experience @FacebookDesign. Creator of www.sketchpacks.com.