Developed by Michael Simmons and Kent Sutherland – together known as Flexibits – Fantastical pioneered features and design choices that, with time, have become a staple of other calendar apps and OS X utilities: natural language input is now expected in popular todo apps and services; the OS X menu bar has grown into a popular destination for desktop utilities; integration with multiple calendar services in a single app is now a de facto standard.
Fantastical was a powerful calendar assistant. Four years later, Flexibits wants Fantastical 2 for Mac – their latest creation years in the making – to be the only calendar app you’ll ever need. While the original Fantastical was a companion to the full Apple iCal experience, Fantastical 2 reinvents itself as a full-blown calendar client that retains the most important aspects of the app’s debut and adds a whole new calendar interface to the mix. And in the process, it exudes the finesse and attention to detail that Simmons and Sutherland are known for.
In 2011, Fantastical raised the bar for modern calendar interaction. Fantastical 2 builds on that solid foundation, bringing design changes and new functionalities that will define the evolution of the Fantastical family.
A New App
The new Fantastical is a good example of how Flexibits’ experience in building iOS apps for the past three years has been applied to enhancing a Mac app that takes advantage of the unique traits of OS X. Fantastical 2 is a complete calendar app with a new full-screen interface that, however, feels instantly familiar and coherent with the Fantastical ecosystem.
The main app is a combination of Apple’s Calendar and Fantastical for iPad, with a superior information density and flow than Apple’s own software. On the left, a sidebar lists all your events and reminders; on top of it, an inline monthly calendar shows all days for the current month, highlights the current day, and displays events for each day with colored dots. On the right, you can switch between Day, Week, Month, and Year views. As with the rest of the Fantastical lineup, these UI components aren’t displayed at once just to fill the screen – they’re connected to each other and follow your clicks and interactions.
On iOS, Flexibits perfected the concept of the DayTicker, a horizontal stripe of upcoming days that scrolls as you browse events in a list at the bottom, and vice versa. On the Mac, it works the same way, but with different user interactions and a richer set of information. As you scroll the event list on the left, the mini calendar in the top left highlights the day you’ve reached; click an event in the list, and it gets selected in the main calendar, automatically opening a popover to view more details and, if you need to, edit an event. Similarly, events you select in the calendar highlight the associated entry in the list, simultaneously advancing and highlighting in the mini calendar, too.
Clicking and scrolling in Fantastical 2 is reminiscent of Fantastical for iPad, but it works better because you’re able to see more events and reminders at a glance. Everything comes together beautifully when you activate full-screen mode on Yosemite: with all the screen real estate at its disposal, Fantastical 2 turns into a comfortable, easy-to-read calendar that forms a strong visual relationship between the compact event list and the widescreen month calendar. I’ve always felt somewhat disoriented in Apple’s Calendar app. Thanks to a cleaner structure and intelligent use of colors and highlights, finding events and managing time is cleaner and, ultimately, more efficient in Fantastical 2.
Fantastical 2 isn’t complex. Its information-rich display is based on a rigorous attention to visual cues and Flexibits have outdone themselves in translating the iOS experience to navigation that feels at home on OS X. Take clicks and mouseovers as an example: hovering over events (something that isn’t possible on iOS) subtly fades the currently selected day and quickly highlights another day in the top calendar. When your attention shifts to parsing available time slots in the top left and you hover over a day, a contextual popover appears underneath the cursor, condensing events and reminders in a popup that shows event titles, time, associated calendar, and location in a small list that is contextual to what you’re doing. Click, and the list scrolls to that day. Click again on the month’s name at the top, and you’re back to the current day.
Fantastical 2 feels natural, and, beyond design, this is the result of Flexibits’ focus on performance and native integration with OS X. This isn’t a cheap port or a web app wrapped in a desktop client. Fantastical 2 is fast, with popovers that appear quickly and fade out with similar speed; search results come up as you type in the search bar and – another detail that I appreciate – they only display current and future results by default (scroll back, and you’ll instantly see results for past events). Animations are smooth and the entire app feels perfectly integrated with Yosemite – further confirmation of the fact that while Flexibits may be late to support Apple’s latest OS X, they waited to get it right.
Furthermore, Fantastical 2 features a brand new custom CalDAV engine that has been written from scratch specifically for the app. This engine allows Fantastical 2 to sync fast and fetch changes quickly and, according to Flexibits, it’ll allow the app to be more versatile with future additions that will plug into the calendar engine. In my tests with a Google Calendar account, Fantastical 2 was responsive, nimble, and I never ran into any syncing issue.
Despite its graduation to a full calendar app, Fantastical hasn’t forgotten its humble menu bar roots. The app’s popular menu bar window is still available – in fact, you don’t have to use the main calendar interface if you don’t need to. As with the old version, clicking the Fantastical icon in the OS X menu bar opens a popover where you can view days, scroll existing events, and create new ones by typing with natural language commands in a text field at the top. Keyboard focus is immediately placed in this field when you bring up Fantastical from the menu bar, which makes it easy to switch to the app, quickly type out an event, and return to the previous task.
The event creation and browsing experience in the menu bar accessory mirrors the left column of the main app, only in a more compact window. In both instances, you’ll have access to a mini calendar, a scrollable list of events, and natural language input. When you start typing, Fantastical’s proverbial parsing will animate an event creation panel on the fly, dynamically filling the appropriate fields as you write an event in plain language.
The big difference from the original app is that the menu bar window can be detached in Fantastical 2 and dragged around freely. This has been nice in those cases when I didn’t want to have the full app UI in front of me, such as when I was having a conversation on iMessage and wanted to have my schedule next to it.1 When you’re done with the menu bar window, reattaching it to where it belongs is a matter of simply dragging it back towards the menu bar icon.
For years, I’ve been fine with Fantastical’s menu bar window and I created all my events with it. But as long as I was on my Mac, I needed to rely on Apple’s Calendar app if I wanted a full visualization of my schedule and the ability to see more at a glance. That’s no longer the case with Fantastical 2, which accomplishes the arduous task of bringing in new functionality and views without moving the needle towards complexity.
Windows and appearance are just a portion of the changes in Fantastical 2, though. What I truly appreciate are the features that Flexibits added to manage events and calendars, with a sharp focus on addressing what users have been asking for.
The first major addition is called Calendar Sets and it’s built for people who deal with multiple calendars. As the name implies, it lets you create different sets of calendars to quickly load independently at any time throughout the whole app. If you use multiple calendars constantly, this is a game changer.
A set is a group of calendars or Reminders lists that can be loaded to override the default view. If you have multiple calendars for Home and Work, for instance, you can create two groups and switch between them when you need to. Or, you can create a set for your kids’ soccer practice and open it when you want to eliminate distractions from extraneous events and focus on when you’ll need to pick up your kids. Or if you’re like me, you can create calendars for videogame and album releases, put them in a set, and load it when you want to know how you’ll be spending your money in the near future.
While the ability to selectively display a subset of calendars isn’t new, configuring multiple sets that can be loaded with a keystroke is. In the years I’ve spent covering apps and, in particular, calendar and reminder clients, I’ve never seen anything like Fantastical’s new Calendar Sets, which, in hindsight, are an obvious idea. Of course I should be able to create “folders” for calendars and open them when necessary. But most innovations tend to seem inevitable when they’re built for simplicity and a broad audience.
There are two ways to move between sets. You can use the predefined hotkey () followed by the number of the set; or, you can click on All Calendars at the bottom of the event list (or menu bar window) and select the set you want to use. Switching sets is instantaneous and it behaves like a filter: events from other calendars will be hidden and you’ll end up with a subset of events and reminders displayed in the app.2
As someone who doesn’t constantly switch between lots of calendars that contain several events, I don’t depend on Calendar Sets. They’re a cool addition for my Game Releases schedule, but I can live without them. However, I recognize their potential and importance for people who do manage a complex weekly schedule and would like the ability to effortlessly alter what is shown in the app without clicking a bunch of menus every time. I asked my friend Myke (who operates an indie business at Relay FM with dozens of co-hosts, guests, and live shows) why Calendar Sets are a big deal for Fantastical users like him.
“Calendar Sets are awesome because I don’t need to see all my calendars all the time”, Myke told me. “For example, we have a Google calendar for our live shows and I have an iCloud calendar that I use for all podcasting stuff (recording times, calls, etc); if I kept them both in my calendar I would have some event duplicates”. The key aspect of sets in Fantastical 2 is their simplicity and natural implementation, which Myke enjoys on a daily basis. “Calendar Sets allow me to hide the Google calendar most of the time, and just bring it up when I need to see it to change something. This helps me keep my main view cleaner and easier to see and understand”.
I have a couple of reservations about Calendar Sets. While you can automatically activate sets while you leave or arrive at a specific location (which is nice and clever), there are no rules to enable sets without having to use location. It would be cool to be able to load sets at certain times during the day. I also would prefer to have a customizable hotkey – I don’t like the default option, and I’d rather use my own keyboard shortcuts for individual sets.
Sets are a powerful idea, giving users the option to change the visualization of their calendar without opening dropdowns or clicking a handful of controls. They’re the kind of feature that just makes sense once you try it, and I’m hoping that Fantastical for iOS will receive Calendar Sets support as well.
Since I started MacStories six years ago, I’ve dealt with collaborators and developers from all around the world. Being based in Italy, I’ve often wanted a better system to calculate time zone differences between myself and others, but I learned how to perform calculations in my mind and, lately, I’ve mostly given up and started using Google search queries for time zones.
Flexibits has devised a way to improve Fantastical’s existing time zone support, and now I want their solution to be available in all the apps I use.
As with Fantastical 1.0, you can add time details such as “2 PM EST”, “10 AM AEST”, or any other time zone when typing an event; Fantastical will recognize the time zone and fill the event details with your local time. In Fantastical 2, the app will also list the original time zone in a menu – and what happens next is one of my favorite details of Fantastical 2.
In the main calendar, the event will be listed with your current time zone alongside all your other events. Click on it, however, and you’ll see the local time for the time zone you set in the original command. It used to be that Fantastical would just convert a time zone to your locale; now, the app shows time zone differences and offers more options for additional control.
This is a great way of dealing with time zones for users who are often in communication with other people around the world: an event can be created with an international time zone, but it’ll show up with both times so you’ll know what it means for you and any other participant. It also helps for things such as TV air times if you’re travelling, press releases set to be announced at a specific time, and, yes, even Apple events.
But it gets better. Say you entered a time zone name but you’re not sure whether that is correct and all you know is the name of a city located in another time zone. Over the past six years, I can’t tell you how many times I’ve searched for time zones for other cities – and it’s not funny when you stumble upon search results that seem to contradict each other. In Fantastical 2, you can edit an event that has a time zone, click the new time zone menu, select Other, and you’ll get a search box where you can type the name of any city in the world. Pick a city (which is easier to remember than a time zone acronym), and Fantastical will pull its time zone for you. No more looking around Google search results, no calculations to account for daylight savings internationally.
With version 2.0, Flexibits is also introducing floating time zone events, ideal for users who travel and want to ensure events stay pinned to local times. When adding an event, you’ll be able to check a floating menu (or just type “floating” next to an event title) and, even if you’ll change time zones, the event will stay fixed on the time you entered with no time zone adjustments. I wish I was able to try this on Fantastical for iOS when I travelled to San Francisco earlier this month – it’s another detail that showcases Flexibits’ care for different use cases and needs.
I wanted to ask Myke about time zones, as he has to deal with dozens of international hosts and meetings every day. “The time zone features of Fantastical are easily my favourite”, Myke noted. “I work with so many people in so many time zones that it can get tricky. So if I’m booking a call with Stephen, I would type in ‘Call with Stephen at 12 CST’ and Fantastical would set that call up in CST and convert it for me in to GMT. This means I don’t need to use multiple apps or math to try and work out exactly when to call someone”.
Fantastical 2 removes all the friction from managing events in different time zones, and it’s clearly been built with a focus on efficiency and saving time.
As I’ve written many times on MacStories, I’m not a calendar power user. I primarily use a single calendar, I don’t normally participate in many Skype meetings, and, since switching to Todoist last year, I don’t use iCloud Reminders either. Many of the features in Fantastical aren’t meant for me, but I’m still enjoying the additions to Fantastical 2 in my intermittent usage of OS X.
Fantastical 2 looks great on Yosemite. The app uses red, black, and white as primary colors in lieu of skeuomorphic textures, and it’s in line with Flexibits’ previous work on iOS. As you would expect from a Yosemite app, there’s a widget to glance at upcoming events in Notification Center and an extension to add items such as webpages to the app.3
On a typical session, Fantastical 2 is always open in my dock and I use the widget to get a summary of my schedule. I use the menu bar window to quickly add new events, and I open the app when I want to get the full Month view and click on event details to see their location information (also new in this version, with Maps support). The time zone features have been particularly handy to schedule meetings and Skype calls, and – as with the iOS app before – I’m a fan of the visual relationship between the event list and the main calendar view.
I do wish that Flexibits would consider more integrations with external services like Sunrise did. I can’t use iCloud Reminders in Fantastical, and Sunrise allows me to view my events and Todoist tasks at the same time, providing me with a complete overview of my schedule that goes beyond events. With Todoist and Wunderlist both offering APIs to developers, it’d be interesting to see a more connected Fantastical in the future.
Along the same lines, I also miss how Sunrise differentiates events by automatically assigning icons based on the event type. When I’m in Sunrise and I type “Skype call”, the app uses a Skype icon for the event, and so forth for other supported categories. This helps me parse events quickly, and it’s one of my favorite details of Microsoft’s app.
Overall, though, Fantastical 2 is a superior calendar app in almost every other way. The integration with OS X is top notch; the CalDAV engine is fast; the amount of view options, keyboard shortcuts, and choice between menu bar window and full app confirm that flexibility truly is at the core of the new Fantastical.
In my first preview from 2011, I called Fantastical the calendar app to look forward to. Over the past four years, I’ve been using Fantastical every day and witnessed its evolution, adoption of multiple platforms and design languages, but, more importantly, Flexibits’ relentless push for what they thought was the calendar app they wanted to make.
Today, I feel comfortable saying that Fantastical 2 is the best calendar app for Mac I’ve ever used. It’s really simple as that, and I wouldn’t be honest if I didn’t recognize the effort that went into this new version of the app. No other calendar client – not Apple’s Calendar, not Sunrise, and certainly not the original Fantastical – gets close to the masterful blend of simplicity and power of Fantastical 2.
Creating usable interfaces from a complex set of features is an exercise of taste and restraint. With Fantastical 2, Flexibits has been remarkably judicious in expanding the app without creating a cluster of new problems or inconsistencies. In both flavors – full app or menu bar popover – Fantastical 2 is coherent and easy to use, with a structure that is never perplexing nor embellished for the sake of eye candy.
Fantastical 2 doesn’t reimagine the calendar, but it reinvents itself and brings specific additions that are practical, efficient, and thoughtfully designed. It’s my favorite calendar app for OS X.
The window can still be pinned in front of other apps, which is handy when you don’t want to manage overlapping windows and just want to keep Fantastical in the front seat. ↩︎
A set is applied to both the full UI and the menu bar popover. ↩︎
I haven’t used the latter much because I don’t need to turn webpages into reminders anymore. ↩︎