Introducing The Shelf

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.

I decided to spend my spare time this summer making such an app.

 

The Shelf

The Shelf is my new app designed and built for iOS 11 on iPad. (It is pretty great on iPhone too.) The Shelf allows you to import, via drop or copy, many kinds of data into it to hold until it is needed later.

Data Types

The Shelf supports a handful of data types at launch:

  • Map Locations1
  • Emails2
  • Images
  • URLs with rich previews
  • Links to apps
  • Attributed Text
  • Plain Text

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

Look out for it in the App Store on the day  that iOS 11 launches.

Sort & Filter Pack

Reaching this goal will produce enough income for me to spend the time to add the following features to The Shelf as part of the Sort & Filter Pack:

  • Search Items
    • Add a search bar to The Shelf to search for items
  • Sort & filter Items
    • Sort and Filter by keyword, type, date added, flag, etc.
  • Folders
    • Home screen style folders to group multiple items in one folder
  • Flagging
    • Flag important items to help with sorting and filtering
    • Option to put flagged items at the top
  • Multiple Shelves
    • Add multiple shelfs to segregate and store your data, if needed.

Once the goal is reached, this will take approximately 3 months to add to The Shelf. I also cannot guarantee that all features will be added, as the feasibility of each has not been fully defined.

Power User Pack

Reaching this goal will produce enough income for me to spend the time to add the following features to The Shelf as part of the Power User Pack:

  • Keyboard Support
    • Add the ability to navigate The Shelf using your keyboard
    • Add the ability to view items on The Shelf using your keyboard
  • Keyboard Shortcuts
    • Add the ability to copy items to the clipboard from The Shelf using your keyboard
    • Have any other ideas? Let me know.
  • URL Scheme Support
    • Allow items to be imported and exported from a URL scheme to allow automation

Once the goal is reached, this will take approximately 3 months to add to The Shelf. I also cannot guarantee that all features will be added, as the feasibility of each has not been fully defined.

Data Transfer Pack

Reaching this goal will produce enough income for me to spend the time to add the following features to The Shelf as part of the Data Transfer Pack:

  • Share Extension1
    • Implement a way to share from anywhere in iOS into The Shelf
    • Add to The Shelf directly for any app that supports sharing
  • Widget
    • Widget to allow another place to drag to and drop from.
  • Syncing
    • Sync the data to iCloud so that you can share the same shelf across all your iOS devices
    • This will require space in your iCloud storage
  • Import from Files
    • Implement a way to import files from the new iOS 11 Files picker from inside The Shelf

Once the goal is reached, this will take approximately 3 months to add to The Shelf. I also cannot guarantee that all features will be added, as the feasibility of each has not been fully defined.

What is a data type?

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:

  1. Apple Web Archive Type
  2. Attributed String
  3. Rich Text
  4. 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:

  1. Identifying suitably high fidelity version of the card to import
  2. Identify alternate representations that may be useful to the user1
  3. Implementing the logic to extract the correct data from the drop
  4. Implementing the logic to store the data in the app
  5. Designing and creating a badge icon to display in the UI
  6. Designing and creating the Cell UI to display the item on the shelf
  7. Designing and creating the Preview UI see the item
  8. Implementing the logic to export the data when needed

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.

 

What is a theme?

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.