I’m seeing lots of developers dealing with extension issues as they get ready for tomorrow’s iOS 8 launch. I’m still working on an extension for Shoots & Leaves, but I have already dealt with one of the problems mentioned by Tumblr’s Bryan Irace:

For existing apps, the problem is simple; the data already exists somewhere outside of the shared container, and only the container app can migrate it over. Thus, if the user installs an update that adds an extension, and tries to use the extension before launching the application and giving it a chance to perform the migration, they’re going to have a bad time.

Workaround

There’s no great option here. If the user opens our extension first, we just throw up a dialog telling them that they need to launch the application first. Inelegant but necessary.

That’s a pretty bad workaround. I look at is as no different from when a user opens your app the first time: You need to give them some way to do what they want to do.

I don’t know how the Tumblr app is structured, so I won’t try to offer a different solution. But I will describe what I did.

In the Shoots & Leaves extension, if you open it before you launch the app you’ll be able to upload via Imgur (which doesn’t require a login) and send the link to Safari or1 the clipboard. At the bottom of the view is a message:

Full access to all your configured hosts and actions will be available after the next time you launch Shoots & Leaves”

Or something like that. And that message is a link you can tap on to launch the app.1 Once you open the app all your personal hosts and actions1 will be in the extension, and those defaults will be replaced.

It would be nice if the extension could launch the app in the background, and that’s something I could see Apple doing at some point. As we iOS devs say a lot: Maybe next year.


  1. I’ve since learned these things aren’t possible in share or action extensions at this time. I think the larger point stands.