Fantastical for iPhone Review

I wouldn’t call myself a calendar power-user.

Ever since I started organizing the things I have to do with a system I can trust, I’ve faced a workflow conundrum: is this a task or a calendar event?

I know that there’s a difference between so-called “actionable items” and time-based events. Maybe I’m not hooked up right, but I’ve been looking for a way to immediately visualize, in a single interface, all the things that I have to do on a specific day. Independently from their actionable (“you need to do this”) or time-based (“you need to be here”) status, I want a software that, like a personal assistant, tells me exactly what I need to get done.

I have found such system in displaying my OmniFocus items inside my calendar. And now, the system has been enriched by the addition of Fantastical for iPhone.

I’ve been a fan of Fantastical for Mac since I first tried it in May 2011. Replacing iCal’s overly complicated interface with a simple menubar overview of your upcoming events, not only did Fantastical show that a simpler way to access your calendar was possible, it also profoundly changed the third-party OS X development scene with its use of natural language input. Futuristic as a concept, in practice Flexibits managed to bundle a powerful language parser within Fantastical that would recognize commands like “Coffee with Chris tomorrow from 6 to 7” and deconstruct them as specific values for a calendar event. It’s not a fancy gimmick: rather than clicking buttons and menus, I constantly find myself invoking Fantastical on a daily basis, typing away like I’d normally do in a blog post or note, saving events in just a few seconds.

Fantastical is one of my must-have apps for OS X. But how could Flexibits ensure its soul wouldn’t get lost in the transition to iOS?

There are multiple factors to consider. Firstly, iOS apps can’t run in the background all the time: Fantastical for iPhone wouldn’t be able to always sit in the status bar like its bigger Mac counterpart. Similarly, Flexibits couldn’t build an app around the concept of “just a keyboard shortcut away”, as there are no hotkeys on iOS. Paused state or not, iPhone users would still find themselves manually launching Fantastical from an icon, subsequently heading over a “+” button to bring up a different screen to start typing.

Clearly, a simple port of Fantastical for Mac to the iPhone couldn’t have worked. And so Flexibits made something different.

In the age of “Back to the Mac”, Fantastical for iPhone is a delightful example of how Mac apps can be made smaller without compromising their functionality. Fantastical for iPhone is the same app you know and love, but it’s also different. And yet, I’d argue, with its differences and obvious limitations, Fantastical for iPhone is also more pleasant to use than the Mac version.

It boils down to the nature of a digital assistant: it should always be with me. So whilst I may prefer my iPad as the go-to device to get work done, the truth is my iPhone is the mobile companion that’s always with me. Combining the best aspects of calendar visualization and event creation, Fantastical for iPhone accomplishes the – at least for me – utterly important goal of providing a single view of all my future tasks in an interface that makes sense. It’s always there.

DayTicker

The big new feature in Fantastical for iPhone is the DayTicker. Rather than defaulting to a standard monthly calendar view (more on this in a bit), Fantastical for iPhone launches with a scrollable horizontal menu of five days (past two days, today, next two days) called “DayTicker”.

The DayTicker is directly connected to a standard visualization of events presented underneath it: as you scroll, events (grouped by day and colored according to your calendar’s settings) will move up or down; similarly, if you choose to scroll the list itself, the DayTicker will automatically “snap” to the day you’re viewing.

Those are a lot of words for a menu that’s actually very intuitive to use and, after a few tries, natural. Considering the nature of the iPhone’s display, I believe it simply makes sense to create a more swipe-friendly representation of your calendar. Furthermore, Fantastical directly benefits from the taller screen of the iPhone 5: more events can be shown vertically.

In spite of its simplicity, there are several little touches to be noted about Fantastical’s DayTicker. You can tap on a specific day to scroll to it; you can tap on the title bar to quickly go back to “today”; and, when a month ends, the DayTicker’s design will reflect that with a tiny piece of torn paper. Fantastical is skeuomorphic, but not arrogantly so: the texture of the title bar is subtle, the “magnifying glass” effect of the DayTicker friendly and rewarding. Fantastical correctly leverages skeuomorphism to bring a touch of familiarity that only improves the experience.

There’s more than “how it works” in regards to browsing days. The DayTicker will display a day’s events as tiny colored bars in “horizontal chronological order”: the ones on the left will be for the morning, those on the right will take place later in the day. If you’re a serious calendar user, you can get an idea of what a day looks like simply by taking a glimpse at the DayTicker.

The great thing about how Flexibits implemented the DayTicker is that they’re not forcing you to use it in horizontal mode. By pulling down, you can access a more traditional monthly calendar view that will effectively turn Fantastical into a tiny clone of its Mac counterpart. You can make the standard calendar view the default one in the Settings; my only complaint is that, whereas the DayTicker shows all events starting from Today, the calendar view only shows events for a selected day. Ideally, I’d like the calendar view to behave exactly like Fantastical on the Mac.

There’s also a search box: you can look for specific events and filter by title, location, invitees, or all fields.

Fantastical’s animations are elegant and top-notch. I have created an animated GIF to show the DayTicker in context.

Overall, I believe the DayTicker is a great idea that will help Fantastical differentiate itself from the plethora of calendar apps available for iOS. DayTicker is my preferred view, as it offers an acceptable and usable compromise between getting a complete overview and being able to interact with the app quickly and naturally. But Fantastical isn’t only about browsing and viewing events: the powerful language parsing engine that made Fantastical for Mac excel in its category has been ported to the iPhone, too.

Adding New Events

Natural language recognition on the iPhone works just like you’d expect from Fantastical. Even without an Internet connection, you can write down simple sentences like “Genius Bar tomorrow at 5 for 30 minutes” and Fantastical will automatically compose a new event recognizing various values in your input, such as “tomorrow”, or “for 30 minutes” to indicate duration. Fantastical will assign these values to a new calendar event with a nice animation that, just like on OS X, highlights recognized words and “flies them down” to the main event UI (based on iOS’ standard EventKit). The fact that event details such as duration, time, and location update instantly as-you-type makes for an incredibly cool experience.

For me, however, the best aspect of the New Event screen is that the parsing engine also works with dictated strings. Users with an iPhone 4S and iPhone 5 (and iPod touch 5th gen, too) can simply tap the microphone icon in the keyboard and start speaking; Fantastical will wait, and once the sentence is transcribed it will quickly fetch the elements it recognizes. Even better, because Fantastical supports multiple languages, I can keep my iPhone set to English but use an Italian keyboard to quickly dictate events in my first language.

The New Event screen itself is rather straightforward. Color-coded timeline aside, the bottom section of the screen contains standard iOS fields such as All Day, Repeat, Alert, and Availability. I like how Fantastical automatically assigns URLs it finds in a string to the URL field, or how it intelligently puts “lunch” events at 12 PM and “morning” ones at 8 AM. Events can later be edited by tapping on them in the main list (you can also swipe to delete them), and, fortunately, URLs can be launched with a tap as well (this makes working with my OmniFocus-Calendar sync easier).

A nice shortcut that I’ve come to appreciate is the possibility to create a new event on a specific day by tapping & holding a day in the DayTicker. I also like the subtle “flashing” animation that suggests a tap & hold was successful.

There are some things that Fantastical 1.0 doesn’t do. For instance, reminders: while the Mac app is capable of adding new reminders that sync with iCloud, the iPhone app doesn’t have this functionality yet, but I’m told it’s on the roadmap. The other big omission is the lack of a dedicated iPad version, but I understand why Flexibits wanted to start on the iPhone first.

URL scheme

For the joy of iOS automators, Fantastical for iPhone has a URL scheme. Like the Mac version, Fantastical has a parse sentence command to programmatically add new events from a text string attached to the URL scheme. It means you’ll be able to launch the app and add a new event automatically from, say, an input prompt in Launch Center Pro.

Or, you can play around with my proof of concept to add new events from Pythonista. You can download the script here. Using input alerts from console, the script allows you to type in an event name, choose whether you want to attach a location and, if yes, specify such location. Once passed through urllib.quote for proper encoding, the text will be sent to Fantastical using the URL scheme. Fantastical will parse the sentence instantly and fill out the fields for you.

Update: Here’s a version that fixes encoding with foreign characters and UTF-8.

import webbrowser
import clipboard
import urllib
import console

when = clipboard.get()

fant = 'fantastical://parse?sentence='

newtask = console.input_alert('What is this?', 'Type your event below')

loc = console.alert('Location', 'Does the event have a location?', 'Yes', 'No')

if loc == 1:
place = console.input_alert('Where', 'Type your location below')

event = newtask + ' ' + when + ' at ' + place

encoded = urllib.quote(event, safe='')

elif loc == 2:
event = newtask + ' ' + when

encoded = urllib.quote(event, safe='')

text = fant + encoded

webbrowser.open(text)

For me, the script is useful when I get emails that contain dates, which are recognized by iOS as items you can add to Calendar with a single tap.

The same menu can be used to copy the date, and that’s what I’m doing to pass the clipboard to Pythonista. By adding the script to the Home screen with a custom icon, I can simply copy a date from an email message, quickly write my sentence, and I’m in Fantastical with my event ready to be saved.

Here’s a video that demonstrates how I use the script. I recorded it using Reflection and AirPlay Mirroring on my Mac.

I appreciate the effort of developers who implement URL schemes in their apps. It is the kind of functionality that is hidden enough so casual users won’t be bothered by it, yet people like me can take advantage of it with tools like Pythonista and Launch Center Pro.

Wrap-Up

Fantastical for iPhone gets many things right without cluttering the interface or forcing me to learn a new set of rules and menus. Like Tweetbot’s tap & hold actions, Instapaper’s footnotes, or Launch Center’s presentation of shortcuts, Fantastical’s DayTicker and natural language support made me ask myself: Why hasn’t anyone else done this before?

As a reviewer, I think the best compliment I can pay to an app is describing how it had a positive impact on my life. Fantastical falls under the category of apps that, beyond pretty pixels and nerdery, have improved my workflow and personal life in ways that paper never could. When my doctor asks me about my schedule, I can just fire up Fantastical and have an instant overview of my week. If I need to quickly add an event, I can dictate it or, even better, ask my girlfriend to add it if I’m driving. She won’t have to learn a complex interface or carefully select menus and dropdowns.

Some people say that, in the end, they’re just apps. That it’s all about the money, that profits come before the users. That there’s no difference between good and bad apps.

I disagree. Quality software does matter. It’s about making money to make more movies: some developers do want to build a profitable business that will let them make more apps.

Fantastical is my new favorite iPhone app. It looks great, it works reliably, and, more importantly, it made managing my schedule better.

And it’s just $1.99 on the App Store.