Electrical Engineer, iOS Developer.

Category: The Shelf

In August, I announced The Shelf, which allows you to import, via drop or copy, many kinds of data into it to hold until it is needed later. Check out the original article for full details and a demonstration of The Shelf.

New Features

During beta testing, I received many requests for PDF support, I was able to add this in time for release.

Pricing

During App Review, I was told by Apple repeatedly that The Shelf was an unacceptable app type for Auto-Renewing Subscriptions. As a result, I have changed the business model from yearly subscriptions to a one-time IAP to unlock unlimited items in the App. I hope that this will cover the cost of all further development and as a result I will not need to charge for anything else in the future, but I cannot guarantee that at this stage.

Get it now

Before Apple’s annual developer conference this year, WWDC 2017, Federico Viticci and Sam Beckett created a piece on MacStories titled iOS 11 : iPad Wishes and Concept Video. This included a concept they called Shelf for iPad in iOS 11. The whole premise of the shelf was centred around system wide drag and drop to “serves as a holding place for bits of content without an immediate destination”.

In June, Apple held WWDC and did indeed announce APIs and support for system wide drag and drop in iOS 11 on iPad. Unfortunately, Shelf as envisaged by Federico and Sam was not included in iOS. Fortunately, the public APIs allowed the concept to be created as a standalone app by a third party developer. The new and improved Slide Over in iOS 11 also means that such an app can always be one swipe away at all times.

Data Types

Data that is represented as one of these types 3 can be imported into The Shelf to store for later. When needed the data can be exported, dragged or copied, from The Shelf.

Dynamic Data Export

When data is dropped into The Shelf it often has many representations, for example:

when an extract of a website, is imported into The Shelf from Safari, it can be represented as Attributed Text 4, Plain Text or the URL of the page containing the extract

when an image is added from Safari, it can be represented as the original image data or the URL of the image

The Shelf will intelligently recognise and store these alternate representations of the data, even offering them to the receiving app when exported. The individual representations can also be viewed and exported out individually, creating an incredible powerful and flexible app. The Shelf can also export data via the iOS Share Sheet – allowing Workflows to be triggered.

Feature Roadmap & Pricing

Developing The Shelf is a side project, something I work on alone in my spare time around my day job. Continuous ongoing development of The Shelf is essential to allow support for more data types to be added; as 3rd party apps support dragging, comprehensive dropping support can be including in The Shelf.

To justify and help finance further development, I need help from you. If you subscribe, you will help pay for more data types to be supported and development of new features for The Shelf. To use The Shelf, at first there will be a small 5 yearly subscription. This cost may increase over time as I add more features, but I never increase your subscription.

The more subscriber there are, the faster that I can add features and data types. A subscriber count and provisional list of subscriber needed and planned features can be seen here. It’s a bit like Kickstarter except instead of backers and strech goals, it’s subscribers and app features.

Beta Testing

As The Shelf is a new app, I am sure there are some bugs hiding in the edge use cases. I would love help testing, if you are interested, let me know via email or twitter.

Launch

I am not a designer and I made this app by myself. I am not happy with the design, or the icon. Hitting this goal will allow me to comission to a designer to work alongside me, to redesign the app and new icons for every theme and colour option.

Overview

A data type is a whole series of logic and assets in The Shelf that determines how a piece of data is imported, stored, displayed, and exported. As an example, the Image data type:

imports the image data

Checks if there is a URL of the image available too

Stores the image in an appropriate manner

Displays the image in the cell with the orange photos style badge on it

Allows the image to be previewed

Enables the image and available URL to be exported.

How it works?

When something is dropped into The Shelf, iOS tells The Shelf what type of data is available form the drop. For example, when an text extract is dropped from Safari, the following representations are available:

Apple Web Archive Type

Attributed String

Rich Text

Plain Text

These are ordered in degrading fidelity, where the top one is the most representative. From this, The Shelf decides which data type is most suitable to store this data for later. The Shelf, then stores the data as that data type and displays it on screen.

Adding new data types

As more apps support drag and drop, The Shelf will need to be updated to add support for these new types. For example, if a contact card is dropped into The Shelf today, it will just store the text representation of it, as that is all The Shelf knows how to handle. However, with a day or two of work The Shelf can be updated to support contact cards, this will involve:

Requesting data types

Does your favourite app support Drag and Drop and you want The Shelf to support it? Let me know via email or twitter.

Once I have a bunch of request, I make it public which type are the most requested and what order I plan to add them. Based on the number of subscribers, I will be adding up to 3 new data types each month.

The current theme of The Shelf is the icon style with badges over the top right corner and the orange tinting. I have many more ideas for layouts to allow users to customise the appearance of The Shelf. For example, full width, short cells1, or big square cells with the titles within the cells, etc.

I also plan to add different tint colours that will propagate across the whole UI, as the orange tint does today.

I also plan to have a dynamic icon that will represent that current theme and tint colour, as the initial icon does matching the badged icon UI and orange colour.