Since I got serious about trying to get work done on an iPhone and iPad in mid–2012, I’ve constantly come across a roadblock that required me to set up complex workflows and scripts: uploading images to my server. Transmit for iOS 8, released by Panic today on the App Store, provides a solution to the problem of managing transfers to and from your own server with a feature set that, thanks to extensions and secure authentication with Touch ID, makes Transmit a first-class citizen on iOS.
Two years ago, I started converting my workflows to an iOS-first setup that would allow me to write, proofread, and publish from anywhere. Because I couldn’t be sure I’d always had access to my desk and my MacBook Air (a consequence of spending a lot of time in hospital beds and doctors offices), I needed to find a way to get as much work done as possible on the devices that I could carry with me. That meant committing to Markdown for all my articles and using text editors for iOS to write articles that would become full HTML posts on MacStories; after that, I began automating various parts of my daily MacStories work with Pythonista and, later, Editorial.
Today, I spend most of my days on my iPad mini writing, doing research for MacStories and Relay, replying to people on Twitter and email, or taking meetings on Skype. I automate a lot of my daily tasks, but I’ve never found a solution I was happy with to upload images to my server and easily insert them as HTML links in my articles. In spite of building an entire workflow to handle screenshot generation and preparation, I struggle at the most basic level – getting files from the iOS’ Camera Roll onto my remote server and back into plain text.
Transmit is Panic’s mobile adaptation of the popular desktop client, which allows you to manage transfers for FTP/SFTP/WebDAV and more with a full-featured file browser interface for uploads and downloads. It was clear to me when Apple announced iOS 8 at WWDC that new technologies would open up the possibilities we see in apps like Transmit today, but trying them in action as final products on an iPhone or iPad still manages to impress.
Before iOS 8, there were quite a few FTP clients on the App Store, but none of them could be as integrated, native, and transparent as Transmit is. There are still trade-offs involved with porting Transmit to iOS 8, but the gap between the app’s desktop and mobile experience is now significantly narrower. I’d even argue that because of iOS 8 and its new system integrations, I prefer Transmit on iOS.
Like its desktop counterpart, Transmit for iOS is an app to manage local and remote files. Local files can be organized in folders and you can import photos from the local library; for remote connections, Transmit supports FTP, SFTP, WebDAV, Amazon S3, and DreamObjects. Servers offer options to set up keys and assign root paths and URLs, and you can also collect them in server groups or connect to a server without saving it in the app using Quick Connect.
Given the mobile nature of the app, what changes from OS X is the way Transmit integrates with local files on your system. By default, the app shows a local Documents folder with a search bar and view options (the latter extends to other views of the app, with options for “folders above files” and ascending/descending sorting). To add files to Transmit’s Documents view, you hit a “+” button that offers shortcuts to create a new empty file, a new folder, and three different pickers for photos: the first one is a scrollable preview of recent photos from your library, while the other two let you take a new photo or choose one (not multiple ones) from a default photo picker UI.
I am surprised by Transmit’s lack of support for document providers on iOS 8. In spite of the manual interaction required to add files, Transmit doesn’t let you pick files from iCloud Drive or other document provider extensions currently installed on your device. Considering Panic’s attention to detail, this is a curious omission.
It gets better when you start adding remote servers to Transmit and using the app’s own extension to upload files from other parts of iOS. To test Transmit, I enabled WebDAV access on my Mac mini server, which runs 24/7 at Macminicolo and that I use to host scripts for image processing, uploads, and more.
The first aspect of Transmit’s conversion to touch that stood out to me was – besides its polished interface (not a surprise considering designer Neven Mrgan’s previous work) – the way navigation across folders has been designed on the iPhone’s smaller screen.
In title bar, the name of the current folder is highlighted in blue, and a navigation icon on the left lets you open a menu that lists all the folders up to the root level. You can tap on any of these to instantly open it, or you can simply swipe horizontally from the edge of the screen to go back one level. While I got confused initially as my brain was wired to think the navigation icon acted as a Back button, I think that the mix of popup navigation with gestures provides the right balance of immediacy (go back with a swipe) and full path control (open the menu and choose).
The second small-but-important addition is drag & drop, which is often ignored in multitouch apps but that Panic tastefully brought to iOS with an implementation that makes sense. Any time you want to put a file in a different location, just tap, hold it, and drag it around to drop it where you want it to be.
While drag & drop is more impressive on the iPad thanks to the always-visible sidebar and content areas, it’s also useful on the iPhone. When you’re dragging a file around, a purple bar appears at the bottom of the screen to quickly save it to your Downloads; if you want to navigate across folders while holding the file, put the file over the title bar and, similar to spring-loading on OS X, the app will open the enclosing folder and you’ll still be holding the file.
I didn’t use drag & drop much in my tests after all, but I appreciate the thought that Panic put into it. I don’t know why more developers aren’t taking advantage of drag & drop – an established interaction pattern – through the multitouch nature of iOS, and it’s good to see Transmit leading the way in this regard.
Where Transmit really feels like the future is in the share and document provider extensions, which bring the full power of Transmit to any part of iOS that lets you share or open items.
Transmit’s share extension lives in the system share sheet and can accept any file from any app at any time. Need to upload a photo to your server? Open the Photos app and upload to Transmit from the share sheet. A PDF from Dropbox? Share and upload. Want to put a Pages document on your WebDAV server? It’s as easy as hitting the usual share button and choosing Transmit.
The best part of Transmit’s share extension (and, therefore, Apple’s design of this feature on iOS) is how it talks securely to the host app while showing the same interface you’re accustomed to. When you share to Transmit from other iOS apps, you’ll always be prompted to authenticate with a passcode or Touch ID if you enabled those options in Transmit’s settings. Touch ID is, by far, my favorite security-related end-user change of iOS 8, as it lets me put up an extra layer of authentication in apps that store important documents and data without the tediousness of typing a password several times a day. Like Touch ID in 1Password, it just works as you’d expect with no setup.
When uploading to Transmit through the extension, you’ll be presented with the full Transmit interface that includes your favorite servers, history, groups, and Quick Connect. All favorites carry the settings you’ve already saved in the app and there’s no need to reconfigure locations when you upload using the Transmit extension – it’s the app, only available as an option elsewhere.
And it’s fantastic. I’ve been using Transmit on my iPhone for the past couple of weeks, and instead of relying on Python scripts to save images to my Camera Roll and uploading them to Dropbox, I used the extension to pick images and upload them to my Mac mini in a folder where Hazel takes care of sending everything to our CDN. I don’t have to guess upload progress through the Python console and everything happens with a beautiful UI that tells me my upload speed, number of items being uploaded, and file names. More importantly, I’m not forced to manage uploads from a specific app: whenever I want, I can quickly upload files to my server from any app that supports the iOS 8 share sheet without having to open either Transmit or Pythonista.
The same concept works in reverse, too: any time I want to download a file from my server and use it in an iOS 8 app, I can invoke Transmit’s document provider extension, browse my servers just like I can in the main app, and pick a file.
To test this, I tried Transmit’s document provider extension with the beta version of an email client for iOS. The developers of the email app had added support for document providers, a different kind of extension that lets any app advertise its documents to other apps and let them pick files and relay changes to the original source. In the email client’s case, there was an Attachments menu that supported various types of sources such as iCloud Drive and iCloud Photo Library, plus a “More…” button to activate more document provider extensions.
Transmit was among those options: once enabled, I could bring up Transmit’s interface inside the email client, connect to my server with the usual Transmit UI, browse, and pick a file to attach to a message. I didn’t have to take care of manually copying or “opening in” another app because iOS 8 extensions were doing all the work for me.
According to Panic, apps that implement the new document picker in iOS 8 will be able to open files from Transmit and automatically save changes back to the original source (such as your server) through Transmit – yet another example of how Apple is fixing the issue of multiple copies of the same document with iOS 8. Unfortunately, I wasn’t able to test this feature as I didn’t have any betas with proper support for the new document picker.
As per Panic’s tradition, there’s plenty of details throughout the app. If you want to copy a document from Transmit into another app, for example, Panic added support for the old-school Open In menu, but it’s got a custom UI. Instead of a regular share sheet with Open In support, you’ll get a simpler list of apps that can receive the selected file.
For uploads that can take several minutes, Panic built transfer notifications: they’re not interactive, but they’ll still allow you to know if a transfer has been completed or canceled; if background limitations are about to stop an upload in Transmit, tapping on a notification will let you open Transmit to continue the upload.
Last, Panic sync. Users of Coda 2.5 will be able to keep all their servers synced with Transmit for iOS 8 – a handy addition if you don’t want to copy and paste information over and over. The feature is not available for Diet Coda and Transmit for Mac, but it’s on the roadmap.
Transmit would have been a solid app on iOS 7, but iOS 8 allowed Panic to make it dramatically more powerful. This is how Transmit is supposed to work: from any app – whether it’s Apple’s Photos or a text editor – you just open a share sheet and upload using Transmit. You don’t have to create multiple copies of the same file and you don’t have to “Open In” because Transmit becomes a system feature that you can use anywhere with all its options.
Transmit is another fantastic example of the kind of innovation that iOS 8 is bringing to the third-party app ecosystem. Thanks to its share extension and document provider, Transmit can effectively be used as an alternative filesystem on iOS with hooks to other apps and cloud services that don’t have native iOS extensions yet.
In my case, Transmit also needs more services. My CDN of choice, Rackspace Cloud Files, still isn’t supported by the app; Panic says that new services will be added in the future.
I’ve been using Transmit as a surrogate for a Dropbox extension in the past few weeks: I created a shortcut to my Mac mini server, which runs Dropbox, and I’ve been uploading screenshots to a folder in Dropbox from any app on my iPhone running iOS 8. Even with this limited use case, the ubiquitous nature of the Transmit extension helped me get rid of scripts to upload to Dropbox via Python: instead, I simply created screenshots and used the native Photos app to upload them with Transmit. I suppose that, even with a full Dropbox extension, I’ll prefer Transmit’s design with favorites and connection history, and I can’t wait for Panic to consider new services.
Transmit’s debut on the iPhone and iPad has been made possible by two factors: Panic’s excellent work on interface design and adapting features to iOS, and new technologies built by Apple and opened up to third-party developers. The result is the best Transmit we could have asked for, with plenty of room for more services in the future.
To indicate that a file can be dropped into a new position, the destination gets outlined as you’re hovering over it. The purple bar turns light blue to show you that, upon releasing your finger, you’ll be saving a file to your local downloads. ↩