2013-10-30



Last month, I was discussing my schedule for this Fall’s check-ups with my oncologist. During our conversation, she asked me if I had a list of all the appointments and todos that I had saved for the next weeks because she couldn’t find the department’s calendar and she doesn’t save patients’ information in her personal one.

I know that my doctor has an iPhone, and I know that she uses Apple’s Calendar and Reminders apps to manage her own schedule, so I showed her the beta of Fantastical 2 that I had on my iPhone.[1] “You can search for events and reminders that match a keyword or location and get a single list showing all results”. She was intrigued. “For my appointments here, I save them with the hospital’s name, so I can just look for that if I want to see them all at once”. At that point, I’m pretty sure she was sold on the app. “But you can’t buy it yet”, I added with a subtle smirk.

Fantastical 2 for iPhone, released today on the App Store and on sale at $2.99 for a limited time, is one of the best iOS 7 apps I’ve tried so far and the best calendar and reminder client for iPhone, period. It improves upon several aspects of the original app and it introduces powerful new features while sporting a complete redesign that makes the app feel at home on iOS 7 without compromising its identity.

Fantastical 2 is, for my workflow, better than Apple’s built-in apps, and it builds upon the solid foundation of the original Fantastical to offer new functionalities and more flexibility.

Design

Michael Simmons and Kent Sutherland, the duo behind Flexibits, weren’t planning on releasing Fantastical 2 for iPhone this year. But then WWDC happened. “After we saw iOS 7 in June, we were inspired by it”, Simmons told me last week. “iOS 7 is more than just a new look”, Simmons added, noting that, after the first beta of iOS 7 was released in June, they switched gears and started working on a brand new version for the iPhone.

In my review of Fantastical last year, I called the app “skeuomorphic, but not arrogantly so”. Fantastical 1.0 made use of a texture for the title bar and used a loupe metaphor for its DayTicker interface, but otherwise stayed away from the heavy-handed realism of apps like Find My Friends and Calendar for iPad to offer a streamlined experience that primarily consisted of a black list for your events with date separators.



Fantastical 2 has been redesigned but not revolutionized: the textures are gone and the DayTicker’s loupe effect is more nuanced, but everything is (mostly) still in its place. Events are shown in a black list and they are color-coded to match the calendar they belong to, and, in this version, reminders can be displayed as well following the same idea. There is a new Light theme, but I prefer to keep Fantastical set to black because I like the contrast that it creates between the background and an item’s text and color.



I’ve been using Fantastical for two years on the Mac and over a year on iOS. I’ve gotten used to the app’s design and color scheme, and, being an app that I launch several times each day, I was afraid that a new design would require a lot of time to adjust to it. Fantastical 2 isn’t a dramatic redesign like Tweetbot 3, but its appearance has changed in every area of the app, and yet I instantly knew how to use it. Because of the brighter red and black colors that Flexibits used, the app’s layout is easier to glance at and events stand out more. I am a fan of iOS 7’s Dynamic Type as it makes text size consistent across the apps I use, and Fantastical 2 respects that setting to provide the text size I like.

As with every other iOS 7 app relaunch, after weeks of using Fantastical 2 I went back to Fantastical 1 on my iPhone. The app felt fuzzy and less spacious – but primarily old, both in regard to design and feature set.

Reminders

It’s funny because last year I thought of a way to display my OmniFocus todos in the calendar, and this year, just after switching to Reminders, Fantastical 2 comes out with direct Reminders integration.

This is the big addition of Fantastical 2, and I couldn’t be happier with how it works. After granting the app access to your Reminders, you’ll be able see your reminders and events in a single list sorted by chronological order below the DayTicker. This list has, like Fantastical 1, separators for days and it highlights the current day (used to be a white highlight; now it’s blue). Reminders are shown with colored checkboxes, which you can tap to mark a reminder as complete and sync it back to iCloud; if you tap a reminder, you’re taken to the Edit screen, which shows event-like options for title, list, URL, notes, and reminder settings.

Fantastical 2 can set time and location-based reminders without having to use Apple’s Reminders app. There are no artifacts with lists and filters and everything is a 1:1 representation of your Reminders lists and alerts, only done within Fantastical and while taking advantage of the app’s superior features for reminder creation and management.

You can create reminders in Fantastical using natural language from the app’s New Event screen, which has been updated for the new iOS 7 design but that still works like last year’s app. Using a natural set of commands like “todo Buy pasta” or “Remind me to Listen to The Prompt at 7 AM tomorrow”, you can instruct Fantastical to create a new reminder that will be added to your default Reminders list. If you don’t want to use the new special syntax to tell Fantastical that you’re creating a reminder instead of an event[2], you can flip a switch and manually move from event to reminder creation. When the app recognizes that you’re adding a reminder, the title bar changes from “New Event” to “New Reminder” and the item preview in the middle of the screen reflects the change by showing the appropriate list color and a checkbox.

Alert times given to reminders correctly activate iCloud’s “Remind me on a day” setting that is shared across devices. There really isn’t much to explain because Flexibits’ implementation works just like iCloud and there isn’t anything new to learn when it comes to alerts and due dates. More interesting to me is support for geofences in Fantastical: if you choose the “Remind me at a location” option, you’ll be able to enter a new Location screen that shows shortcuts for your current location, Home address, and recent locations, plus a search bar.

Once you’ve found a location or address that matches your needs, you can select it and tell Fantastical to remind you when entering or leaving that location, just like Apple’s Reminders app. This is the first reminder client for iPhone that I’ve seen with a built-in replacement for Apple’s “remind me at” setting, which, in the past, always forced me to use Apple’s Reminders app if I wanted to try it.

Fantastical’s take on geofences is nice: in the Edit screen, you can get a nice embedded map view that shows different icons for “entering” and “leaving” modes, as well as the location radius that will trigger the reminder’s alert when approaching the geofence. The radius itself can be set in Fantastical without having to open the Reminders app. Like Apple’s app, I couldn’t create a radius large enough to remind me to call my mom when I’ll leave the continent.

My problem with geofences – and this is completely unrelated to Fantastical – is that they rely on Apple’s place database, which rarely works for me. Searching for POIs in Fantastical returns the same set of results of Apple’s Maps app, which means it’s basically non-existent for my area. Sure, I can add specific addresses, but even in that case geofences often fail to fire off: in my tests (run with both Fantastical and Reminders) geofences that were supposed to give me alerts when leaving my house didn’t work. Again, the problem is not in Flexibits’ app but in Apple’s backend, which I know has caused problems to other people. Perhaps a solution would be for Flexibits to integrate with other POI providers (such as Google or Foursquare), but even that wouldn’t fix Apple’s geofence technology. Therefore, if you’re going to use geofences in Fantastical, keep in mind that they may or may not work for you based on the success that you’ve had with this feature in other Apple apps in the past.

Fantastical’s support for reminders doesn’t stop at fetching and creating them. In the Settings, you can configure the app to hide completed reminders (thank you, Flexibits), hide lists, set a default list, and organize items by list.

With reminders enabled, a Reminders button sits on top of individual items and below the blue “Today” section header; tap it, and you’ll be taken to a dedicated Reminders view that shows all your reminders from all your lists. However, if you activated the last setting I mentioned above, you’ll end up with a much better view that groups reminders by list and lets you navigate into individual lists.

A nice detail is that, in this view, you can type in the “New Reminder” field at the top to quickly create a reminder without the full-blown natural language screen. When you tap that field in the all lists/reminders view, it gets highlighted with the color of your default list; tap it while inside a list, and it gets highlighted with the color of that specific list.[3]

Fantastical’s implementation of reminders is simple and unsurprising – and that’s exactly the point. I like Apple’s Reminders, but the third-party apps that have tried to “enhance” them with filters and custom due date settings have failed. Instead, Fantastical 2 follows Apple’s way of assigning alert times and geofences, augmenting Reminders with natural language support, a much better UI and presentation of lists, and a creation workflow that is powerful and pleasant to use. In my opinion, not only can Fantastical 2 be used as a full-featured alternative to Reminders on the iPhone – it also is a better app because of the extra features it has. Notably, it can let you tap on URLs, which is something that you can’t do in Apple’s app.[4]

DayTicker

I’ve called Fantastical’s DayTicker one of the best pieces of custom iPhone UI ever made, and I still think that’s true. Here’s how I described it last year:

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.

It was a genius move: don’t show all days at once, but focus on just five days and combine a nice-looking design with a cool transition and make the vertical list of events scroll accordingly to the ticker’s position. I loved it.

The DayTicker has been changed in Fantastical 2, and, after a period of adaptation, I think it’s been altered for the better. Essentially, the DayTicker now shows the current day plus the next four days instead of the past two days, current day, and next two days. The current day now sits at the leftmost side of the DayTicker and it’s highlighted in blue, with four future days available on the right. Days still show a mini-preview of your schedule with colored bars and now they get checkboxes for available reminders, too.

The idea in Fantastical 2 is that you want to use the app for your current and future schedule, not stuff that’s already in the past. And, after having used it for a while, I have to say it feels silly to look back at the old DayTicker – why did those past two days need to be there? Isn’t Fantastical meant to be an assistant that tells you what’s next? It was wasted space, plain and simple, and the DayTicker of Fantastical 2 is the “oh” moment of the app when you see it.

With the new layout, you see more of your future schedule and less of the things you don’t need to take care of anymore. Because overdue reminders are automatically advanced to the current day, you won’t miss them in the main list below the ticker, and with two extra days in the future you can quickly tap on the right to move the DayTicker ahead in time and see what’s coming up.

Gestures are unchanged: you can still scroll the DayTicker in any direction; tap & hold a day to quickly create an event or reminder in it; tap the title bar to snap back to Today (with a cute animation on the current day); or, you can tap & hold the title bar to open the “Go to…” day switcher.

Natural Language

Fantastical’s natural language parser was already superior to the one seen in other calendar apps, and it gets even better in Fantastical 2. Aside from reminder creation support, Flexibits has enhanced the parser to make it smarter with repeat settings: you can now write something like “Team meeting at 9 AM on the second Tuesday of every month”, and Fantastical will pick up your sentence correctly and parse it to set an advanced repeat pattern.

Alongside the visual cue (which is one of the best parts of the original app), you can check if Fantastical parsed your input correctly by tapping Show Detail > Repeat > Custom. I don’t use repeat settings much these days, but it’s always good to see them working when you need them.

For devices with a 4-inch display (iPhone 5 and later), Flexibits has added an extra keyboard row that contains numbers and date/time separators for your locale. This is a clever use of available space as it removes the need to tap the “123” button on the iOS keyboard to access numbers and other characters used for dates and times. My muscle memory still makes me tap the “123” button, but I’ve been getting used to the new keyboard row and I think it’s one of those minor additions that will make you save seconds every day.

Power User Tips

Fantastical 2 supports TextExpander snippets on iOS 7 – both regular and fill-in snippets. The URL scheme has been kept the same, only the app now uses fantastical2:// instead of fantastical://. The addition of TextExpander support is very welcome and, combined with the existing URL schemes and x-callback-url automation, it can allow you to set up handy time-saving shortcuts and workflows.

For instance, I know that Maps is spotty with POI and location names in Italy, so I have to type out an address just like Apple likes it every time I’m adding a location if I want Fantastical to pick it up and allow me to set up geofences properly. These addresses are usually long and boring, and I don’t want to type them every time. I could set up separate snippets for each one of them, right? I could. But why create six snippets for my most used locations when I can create a single, fill-in one?

In TextExpander, I set up a fill-in, popup snippet that has options for the full addresses of the locations where I typically go to. These are the addresses that Maps uses and I copied them from Apple’s Maps app to avoid any sort of formatting or spelling issue (Maps is very picky with this stuff). In TextExpander, I created an option for each address, and prefixed them with “at” so that Fantastical would interpret them as location fields.

In Fantastical, I don’t have to type addresses anymore. After I’ve added the name of an event or reminder, I can type “lll”, which will trigger my fill-in snippet and launch TextExpander. In the app, I’m presented with a popup that contains my addresses; I can scroll the list, and tap Done when I’ve chosen one. Then, I’m taken back to Fantastical, which shows updated text with the address I’ve picked – and I didn’t have to type any of that. Now, imagine setting snippets for complex repeat settings or other long natural language queries, and you get the idea of how you can speed up Fantastical with, effectively, templates in TextExpander.

If you don’t use TextExpander, you can also hack your way around templates using Launch Center Pro. Contrast’s app doesn’t come with visual options for multiple choices like TextExpander, but you can set up multiple actions inside a group and give each action an address that you don’t want to type manually. Then, using perhaps a [prompt], you can combine text you’ve typed in Launch Center Pro and an address hard-coded into a URL scheme to launch Fantastical and have all the fields automatically filled and parsed for you.

I use Launch Center Pro shortcuts to search for events that have been assigned a specific location – such as the hospital – so I can use the URL scheme and set its scope to the location parameter to get a list of events and todos that match my query. Overall, Fantastical 2 comes with the same URL scheme-related features of version 1.0, which is good news for people who have their own workflows as those will require minimal tweaking to work with the new app.

The Little Things

Would it really be a review without a list of the minor features and details that impressed me while using the app? I don’t think so. At least, I wouldn’t be satisfied. So here it is.

Fantastical 2 can open web links in Google Chrome or Safari and locations in Apple Maps or Google Maps. Both options only show up in the Settings if you have Google’s apps installed on your device; for Chrome, links support x-callback-url to let you go back to Fantastical with one tap. To open URLs, you have to tap the blue arrow next to them.

The app can send its own notifications for events and reminders allowing you to turn off the Calendar and Reminders ones in the Notification Center settings on your device. Fantastical uses the Background App Refresh System APIs to achieve this, which means that iOS decides how frequently events and reminders should be synced in the background. In my tests, the app seemed to sync every 30–60 minutes, which wasn’t enough for me to drop the built-in iCloud sync (even if alerts will open Apple’s apps instead of Fantastical). The feature is opt-in and available in the Settings.

You can access a new week view by rotating the iPhone and using Fantastical in landscape mode. When you activate it, a delightful animation will take the DayTicker and expand it to turn it into a scrollable week view that shows event blocks and due reminders. It’s not for me, but it’s really well done: you can tap on the month’s name to go back to today, drag & drop events, and also tap & hold days to create events in them. Watch the animation when you rotate the iPhone back to portrait mode, too.

When you’re creating an event or reminder using natural language and you paste a URL, it is automatically extracted and assigned to the URL field. This already happened with Fantastical 1, but I think it’s so nice to have with reminders now.

If you have Fantastical 1 installed, buy Fantastical 2, launch it, and the app should read the settings that you had in the first version and set them automatically for you.

Fantastical can show birthdays from your Contacts. If you tap on a birthday, you’ll be taken to a screen that contains something special I don’t want to spoil in this review.

Wrap Up

Fantastical is the best thing that’s ever happened to my iPhone’s calendar.

When on my iPhone, I like to see a single list of all upcoming events and todos, grouped together by date and time and displayed with proper color information for context. Fantastical 2 provides just that. Thanks to natural language input, I can grab my iPhone and jot down or dictate a sentence and have Fantastical parse it for me so I don’t have to tap options or scroll menus to set dates and alerts. I have found myself using Fantastical when I’m not at home to check on the things I have to do and get an overview of my schedule, but also while I’m at my desk because the app is such a pleasure to use.

Since I moved from OmniFocus to Reminders earlier this year, I’ve been looking for an app that could elegantly group events and reminders, telling me what I have to do while allowing me to tap URLs for webpages I need for work or directions for Google Maps. For those times when I need more advanced features such as URL scheme-powered search or x-callback-url, Fantastical 2 is ready to be chained to other apps – keeping this functionality hidden from view but still available to the power user. These features aren’t just “cool” because they’re geeky: they help me more easily get to a location or see all future hospital-related events thanks to templates I’ve created in Launch Center Pro. I’m pragmatic when it comes to my schedule, and Fantastical works for me.

I don’t like Apple’s Calendar app and I was forced to use the built-in Reminders app because there was no full-featured alternative. Fantastical 2 is better than both apps for people who prefer a vertical visualization of events and reminders over event blocks, month views, or “cards”. While not for me, the week view is also well done and nicely integrated with the rest of the app.

I don’t have many wishes for Fantastical 2 right now. I would like to see an option to hide past results from search and background updates could be improved, but I know that there isn’t much Flexibits can do about the latter. I have no idea when Flexibits will release an iPad version of Fantastical, and I don’t know how the DayTicker could scale to the larger screen.

Fantastical won’t change lives. But if an app can remove frustration from managing your everyday schedule and actually make it even a bit of fun, what’s not to love about it?

For me, Fantastical 2 is an excellent sequel to a great app that I’ve been using every day for the past year. The new version packs an impressive feature set for all kinds of iOS users and a clean new design that prioritizes information density and color over unnecessary pixels or effects. Fantastical 2 is useful and dependable, intuitive and powerful.

As for my doctor? I’m emailing her a link to the app right now.

I asked Flexibits if I could show the app to a (non-blogging special) friend, and they said it was cool. I don’t normally do this, but it’s useful to get input from normal people for new apps I’m testing. Showing the app to my oncologist – someone who deals with calendars and todos on a daily basis for stuff that matters – was a great opportunity, and Flexibits was very happy about it after I told them. Plus, I believe that the chances of my oncologist “leaking” the app to tech blogs would have been extremely low anyway. I hope she’s not reading this footnote right now though.  ↩

The fastest way is to prefix a command with “todo” or “remind me to”. Like events, you can create reminders in a specific list by using the /list format.  ↩

I am nitpicking here, but if you group by list and use the New Reminder field in the Reminders screen, the reminder is added and shown among lists. It’d be nice if the app made it disappear into a list instead (right now, you have to go back and re-open the Reminders view for this to take effect).  ↩

The only Reminders feature that I haven’t seen replicated in Fantastical 2? Changing a list’s color. But iCloud is probably doing that for you already.  ↩

Show more