I’m a Pinboard user and I noticed that since upgrading to Safari 12 the existing Pinboard extensions that are distributed as .safariextz
files were not officially supported anymore.
Instead Apple introduced a new Safari App Extension Architecture. These new type of extensions are developed using Xcode and allow you to use native code ( Objective-C or Swift) besides JavaScript and CSS to inspect, read or manipulate web pages. Safari App Extensions can also be distributed using the macOS App Store.
I couldn’t find a Pinboard extension in the App Store and so I thought it might be an interesting small personal project to try to create a minimal Pinboard Safari App Extension and get it in the App Store. I started the project for 3 main reasons:
- I would use the extension a lot myself.
- I would learn using a new development environment, programming language,…
- It might be useful for others too.
I succeeded in my goal and my Safari App Extension is available in the App Store since about a week: bookmarker for pinboard.
I decided to make the extension available at no cost and make the code available at my github kristofa/bookmarker_for_pinboard and license it under the the Apache 2.0 license. This allows others to learn and contribute.
As a backend developer with mostly Java, Scala and a bit of Ruby experience it was an interesting project as I learned about:
- Xcode
- Swift
- several of the macOS API’s:
URLSession
,NSUserDefaults
, using KeyChain (to store the API token securely), user interface building. - the Pinboard API
- Distributing my App, the App Review Process and the tools at your disposal to find out how well your App is performing.
I made two small improvements since the initial release (issue #1 and #2), suggestions by one of the first users, which I plan to submit to the App Store soon.
I use my extension almost daily. If you’re a Pinboard / Safari user you might want to check it out: bookmarker for pinboard.