Most iPhone travel planning fails at the leave-by math. Apple Maps tells you drive time; Apple Calendar fires a generic 15-minute alert. Composed’s LeaveByCalculator factors traffic, TSA buffers (120 minutes domestic, 180 international), and the departure airport’s actual timezone — so a JFK 9pm EST departure surfaces the right leave-by time even on Pacific time. Screenshot a Delta or United confirmation and Claude Vision extracts every detail. Five graduated flight alerts fire in the airport’s timezone, not your device’s.

The category is full of apps that get parts of this right and parts of it dangerously wrong. TripIt stitches multi-leg itineraries but doesn’t compute when to leave for the airport. Flighty tracks live flight status but isn’t a calendar. Apple Calendar’s “Travel Time” feature does drive-only math — fine for a dentist appointment, not fine for a 9pm flight that needs you at the curb by 6pm. This guide is the working theory of what iPhone travel planning should look like in 2026, with the specific math and product behavior named.

Composed is the iPhone planner built around the gap between “I have a flight” and “I’m at the gate with a charged phone, a boarding pass, and a snack” — and most of the bugs that used to surface across that gap have been fixed at the airport-timezone level instead of patched at the display level. The result is the rare travel-planning experience where your iPhone tells you to leave at the right time without you having to second-guess it.


How does Composed import flight bookings from a screenshot?

Composed reads a screenshot of any flight confirmation — Delta, United, Southwest, Alaska, an aggregator like Kayak or Google Flights, or the airline’s iPhone app — through the parse-screenshot edge function, which sends the image to Claude Vision for extraction. The model returns airports (as IATA codes), departure and arrival times, airline, flight number, confirmation code, and any connections. Composed writes the result into a single calendar event with endAt in the arrival airport’s timezone, not your iPhone’s.

The behavior matters because timezone bugs are the most common silent failure in the category. A JFK 9pm EST departure to SFO arriving at 12:30am PST displays correctly across the Composed timeline only if endAt is stored against the SFO timezone. Composed resolves the airport timezone through a local IATA dictionary lookup before writing — never through TimeZone.current. You can also share an existing screenshot from your camera roll; the extraction happens at the share moment, so a confirmation you screenshotted three days ago still works today.

What gets created when you share: a single calendar event titled with airline + flight number + route, departure and arrival times in their respective airport timezones, the confirmation code in the notes field with a copy button, a phase-aware Flight Timeline Card that shifts through pre-flight, check-in open, boarding, in-flight, and arrived states as the day moves, a generated prep checklist (3-5 tasks tuned for flights), and five graduated alerts scheduled against the airport timezone. This is the screenshot import workflow that Composed pivoted around — a feature that exists because manual flight entry has six to eight micro-decisions and screenshot capture has zero.


What is the airport buffer math — and why do most apps miss it?

The airport buffer is the time between when you arrive at the airport and when your flight pushes back from the gate. Composed’s LeaveByCalculator adds 120 minutes for domestic flights and 180 minutes for international flights as the default buffer, on top of the live drive time computed from Apple MapKit and Google Maps. Most iPhone planning apps don’t include any airport-specific buffer at all — they reuse the same “leave 15 minutes before” alert pattern that works fine for a dentist appointment and catastrophically wrong for a flight.

The classic failure mode looks like this: your flight is at 9pm. You check Apple Maps, which says JFK is 45 minutes from your apartment in current traffic. Apple Calendar fires a “leave in 15 minutes” alert at 8pm and you arrive at the airport at 8:45pm — fifteen minutes before push-back, with TSA still ahead of you. By the time you’re at the gate, the door is already closed. Composed’s leave-by math against the same flight tells you to leave at 6pm, because 9pm minus 120 minutes domestic buffer is 7pm at the curb, minus 45 minutes drive time is 6:15pm departure with a 15-minute safety margin.

The buffers come from observed best practices (Apple Maps integrations, airline-recommended arrival windows, TSA wait statistics from named hub airports), not from a marketing decision. Composed uses 120 minutes domestic and 180 minutes international as a single floor for every flight, which over-protects for some airports (a small regional with no TSA line) and under-protects for a few of the worst (Newark on a Monday morning at 7am). The honest framing: this is a calibrated default, not a guarantee, and any iPhone planner that tells you to leave 31 minutes before a 9pm flight is using drive-time-only math and you should not trust it on travel days.

Hotel checkout dates use a different math entirely — Composed parses hotel checkout in UTC as a calendar date, not a datetime, so a checkout day doesn’t get shifted by your timezone or by daylight saving boundaries. That’s its own pipeline, fixed at five places in the codebase (the hot-zones doc lists each one), and it’s the reason your “Hilton San Francisco checkout” event shows up on the right calendar day even when you booked from London.


How does Composed handle cross-timezone flight events?

Composed stores eventDate (departure) and endAt (arrival) in their respective airport timezones, resolved via the IATA dictionary. Display always goes through FlightTimeFormatter — never through DateFormatter defaults or Text(date, style: .time), both of which silently fall back to device timezone. A DEBUG assertion fires on any device-timezone fallthrough, so timezone regressions crash the simulator rather than shipping silently.

For a westbound JFK 9pm EST to SFO 12:30am PST flight, the Today hero card shows “Departs JFK 9:00pm” in local EST and “Arrives SFO 12:30am” in local PST. The five graduated alerts fire against JFK timezone for the boarding side, then against SFO for arrival-side alerts. The hardest case is the eastbound dateline (Tokyo to Honolulu, “arriving” earlier than departing same calendar day). Composed’s overnight-guard uses a while result <= eventDate pattern rather than a single if, which sounds small until you’ve seen a flight display “Arrives Tomorrow” when it should display “Arrives Today, three hours ago by clock.”

When you change your iPhone’s timezone after arrival, the flight event continues to display in airport-local times — device timezone affects everything else on your calendar, but flight times stay anchored to the airport clock.


Can voice planning create travel events?

Yes — Composed’s voice input accepts travel-event speech the same way it accepts any other event. Say “Flight to Tokyo Tuesday at 6pm out of SFO” and Composed runs the audio through OpenAI Whisper for transcription, parses the natural language with Claude, looks up SFO via the IATA dictionary to resolve the departure timezone, and writes a calendar event with airline-flight-number left empty for you to fill in later. Voice is fastest for the capture moment (“I just booked this, get it on my calendar before I forget”); screenshot import is best for the full-fidelity case where you want the confirmation code, airline, gate, and connections also extracted.

The voice pipeline is sub-three-seconds for a typical sentence and works hands-free — useful when you’re walking out of an airline office, driving back from dropping someone off, or remembering a return flight the moment your partner mentions it. Voice doesn’t currently extract flight numbers or confirmation codes (it doesn’t have a confirmation email to read), so for full flight intelligence the screenshot path is still the recommended workflow.

For road trips, voice is actually the better capture method. There’s no booking confirmation to screenshot, so saying “Road trip to Yellowstone Friday morning, leaving from Charlevoix” creates the right event shape without the extra step of building it from a webpage.


How do I plan a road trip on iPhone?

Road trip planning answers four questions flight planning doesn’t: which hotel each night, how long each driving day actually takes (not what Google Maps says with no stops), what time to leave for a scheduled stop, and where the long-haul gas and food moments will be. Apple Maps handles routing; Composed handles the scheduling layer on top.

Create a Composed event for each driving day — “Charlevoix to Mackinaw City” Friday, “Mackinaw City to Marquette” Saturday. Add the hotel address as the event location so departure tracking resolves the right starting point each morning, computing the leave-by time by working backwards from your scheduled arrival, factoring in current traffic via Apple MapKit. A prep checklist auto-generates for each leg: “Top off gas tonight,” “Pack ice in the cooler before sleeping,” “Set alarm earlier than yesterday because today is the long driving day.”

For multi-stop trips, hotel checkout dates are the operational anchor. Composed parses checkout as a UTC calendar date (not a datetime), so a “Mackinaw City Hotel — checkout” event shows up on Saturday in your iPhone calendar regardless of which timezone you slept in. That behavior is why a hotel-stay event spans the right days in the month view without phantom bars or off-by-one shifts — the same bug class that breaks flight times also breaks hotel times if you handle them naively.


How do you plan a layover without stressing out?

A layover is two timing problems stitched together: the inbound arriving on time, and the outbound departing on time. Composed handles both as separate flight events with LeaveByCalculator running independently on each. A layover-specific alert fires when your inbound has landed, with the gate, terminal, and walking time pulled from the airport’s known connection windows.

Two questions to resolve before travel day. First, is your connection on the same ticket? If yes, the airline transfers your checked bag; if no, you collect and re-check it yourself during the layover. Composed can’t read airline contract data, so put the answer in the event notes. Second, are you in the same terminal? If your inbound lands at JFK Terminal 4 and your outbound leaves from Terminal 1, the inter-terminal transit is a 25-minute event in itself, and the layover buffer needs to absorb it.

For layovers under 90 minutes, the entire plan is “find the gate, find the bathroom, be ready to board.” For layovers over 90 minutes, you have decisions to make — eat where, lounge access yes or no, charge devices. Composed’s prep checklist surfaces these as checkboxes (“Confirm gate for connecting flight,” “Locate food near gate,” “Check lounge access”), generated by the generate-checklist edge function tuned for the layover scenario, not pulled from a generic template.


What is the leave-by recalc — and when does it fire?

The leave-by recalc is Composed’s recalculateDepartureAlerts(for:) routine, which runs on app foreground entry and on cold launch for any timed event with coordinates within the next eight hours. It re-queries Apple MapKit and Google Maps for the current travel time, re-runs LeaveByCalculator against the latest traffic, and reschedules the action-tier and urgency-tier alerts at the updated time. A 10-minute throttle prevents excessive re-runs; the whole operation is non-blocking at background priority, so the UI never hangs on a slow Maps query.

For flights the routine is the same, with the airport buffer added on top. A 9pm JFK flight that was “leave at 6:00” before rush hour might recalc to “leave at 5:35” if Google Maps reports the BQE is moving slowly. The buffer never shrinks — Composed will never tell you to skip airport buffer to make a flight; if drive time plus buffer exceeds the available time, the alert fires at the latest moment the math allows and the leave-by surface shows a clear “tight” indication.

Apple Calendar’s “Travel Time” setting computes once at event creation and never recalcs — a 5am alert based on overnight traffic data is the alert you get at 8am rush hour, hours after drive-time math has changed. This is the structural difference between a calendar with a travel-time toggle and a planner built around departure as a first-class operation. The leave-by alert page goes deeper on the recalc model.


How does Composed compare to TripIt, Flighty, and Apple Calendar?

Composed, TripIt, Flighty, and Apple Calendar each solve different parts of travel planning. Composed is the daily-planner layer — screenshot-to-calendar import, airport buffer math, leave-by recalc on traffic, AI-generated prep tasks. TripIt is the itinerary stitcher: forward confirmation emails to plans@tripit.com and TripIt groups flights, hotels, and reservations into one trip object (excellent for the multi-leg case). Flighty is the live flight-status tracker (gate, delays, weather, equipment) and is best-in-class for operational flight data. Apple Calendar’s “Travel Time” does drive-only math, computed once at event creation, with no airport buffer.

A frequent-flier pattern that works on iPhone in 2026: TripIt for the multi-leg itinerary view, Flighty for live status on the travel day, and Composed for the daily prep, leave-by, and graduated reminders. The composed-vs-fantastical comparison covers a similar layered pattern for non-travel events. The frequent travelers use case goes deeper on the operational stack. For monthly travelers and below — the larger group — Composed alone is enough, because the dominant failure mode isn’t itinerary stitching, it’s leaving on time and arriving prepared.


What should an iPhone travel planner do in 2026?

The category has matured enough that the bar should be specific. A working iPhone travel planner in 2026 should:

  • Import flight bookings from a screenshot. No typing of flight numbers. No copy-pasting confirmation codes from email into calendar notes. Screenshot the booking, share to the planner, and walk away.
  • Store flight times in airport timezones. Display flight times in the local airport’s clock, not the device’s clock, and never silently fall back to TimeZone.current in any code path.
  • Compute leave-by with airport buffers. Domestic flights need a 120-minute buffer; international flights need 180 minutes; that buffer goes on top of live drive time, not in place of it.
  • Recalc on traffic. A leave-by time set at 8am should not be the same leave-by time at 3pm if the BQE has slowed by 25 minutes. The recalc should be passive — running on app foreground, throttled, no notification spam.
  • Fire graduated flight alerts. Five tiers (check-in at 24 hours, summary at 4 hours, boarding, gate close, layover) — all scheduled against the airport’s timezone, not the device’s.
  • Handle hotel checkout as a calendar date in UTC. Not a datetime. Not subject to your iPhone’s timezone. A hotel checkout day on the calendar is the day you check out, regardless of where you slept.
  • Generate a prep checklist tuned for travel. “Verify passport valid 6+ months,” “Confirm seat assignment,” “Charge headphones,” “Download offline content,” “Set out-of-office reply.” Pulled from the event type, not from a generic template.
  • Stay calm. No red, no exclamation points, no shame-loaded labels on travel-day items. Anxiety and air travel already have enough chemistry between them; the planner should not add to it.

The 95 travel-planner roundups on Google fail this test entirely. Most rank apps by feature count or download count, neither of which says anything about whether your iPhone will actually tell you to leave at the right time for a 9pm flight.

The most useful travel planner isn’t the one with the most integrations. It’s the one that tells you to leave at the right time, in the right timezone, with the right amount of buffer — and stays out of the way the rest of the trip.

If you want to see what the working version of this looks like on iPhone, Composed is free to start and reads your existing Apple Calendar from the first launch — including any flights already on it. The travel-planning use case is documented at travel planning, and the best planner apps for iPhone in 2026 roundup covers the full comparison set.

The author behind Composed’s travel-planning rules is Jesse Meria — every design choice in the flight intelligence layer came out of a specific real-world failure mode (a flight nearly missed because Apple Maps said “leave in 31 minutes” when 120 minutes of airport buffer was the actual answer).


Frequently asked questions

How does Composed know which timezone a flight is in?

Composed resolves the timezone for every flight leg through a local IATA dictionary lookup against the airport code (JFK, SFO, NRT, LHR, etc.) — never through the iPhone's device timezone. The departure timezone comes from the origin airport and the arrival timezone from the destination, both stored against the calendar event so display, alerts, and the leave-by calculation all reference the correct airport clock. A DEBUG assertion fires in `FlightTimeFormatter` if any flight time-of-day display falls back to device timezone, which means timezone regressions crash the simulator instead of shipping silently.

What is the airport buffer in Composed's leave-by calculation?

Composed's `LeaveByCalculator` adds a 120-minute buffer for domestic flights and a 180-minute buffer for international flights, on top of the live drive time from Apple MapKit and Google Maps. So a 9pm JFK flight with a 45-minute drive in current traffic produces a leave-by time of 6:15pm, not 8pm. The buffer comes from observed best practices (airline arrival windows + TSA wait statistics for named hub airports) rather than a marketing decision; it over-protects for small regional airports and under-protects for the worst-case mornings at Newark or LAX.

Can Composed import flights from Google Flights or Kayak screenshots, or only airline apps?

Composed imports flights from any screenshot that contains the flight details — airline apps (Delta, United, Southwest, Alaska), aggregators (Google Flights, Kayak, Expedia), email confirmations, or even a photo of a printed boarding pass. The `parse-screenshot` edge function sends the image to Claude Vision for extraction, which handles the format variability. As long as the airline name, flight number or route, and departure time are legible, Composed will create the event.

Does Composed track live flight status or just static flight times?

Composed is static after flight creation — it does not track live flight status, gate changes, or delays. The five graduated alerts (check-in, summary, boarding, gate close, layover) fire on the scheduled times. For live flight tracking, Flighty and TripIt Pro are the iPhone apps purpose-built for that layer; many frequent travelers run Composed alongside one of them. Composed handles the day-of preparation and the leave-by math; Flighty or TripIt Pro handles the operational status.

What happens if my flight is delayed and my connection gets tight?

Composed re-runs `recalculateDepartureAlerts(for:)` on app foreground for any timed event within 8 hours, throttled to once every 10 minutes. The recalc updates the leave-by time and reschedules the action-tier and urgency-tier alerts; you don't get two notifications and you don't get a notification when the recalc itself happens. For live flight status (the actual delay data), Composed doesn't read airline APIs — pair it with Flighty or the airline app for that layer. The pattern is: watch the airline app for delay information, glance at Composed for the recalibrated ground-side timing.

Does Composed handle international travel with passport reminders?

Yes, but the way it handles them is through the AI prep tasks layer, not as a separate feature. When you create an international flight event (Composed detects international via IATA codes that span countries), the `generate-checklist` edge function produces prep tasks tuned for international travel — typically including 'Verify passport valid 6+ months,' 'Check visa requirements,' 'Notify bank of travel dates,' and 'Confirm seat assignment.' Tasks have checkboxes; you check them off as you complete them. The readiness score (0-100%) at the top of the event tracks your preparation progress.

The behavior you want from an iPhone travel planner is the one you don’t notice on a smooth travel day — leave at the right time, arrive with buffer, board prepared. The behavior you remember is the one that tells you to leave 31 minutes before a 9pm flight because nobody on the engineering team thought about TSA. The whole point of the airport buffer math is to make the smooth travel days the rule and the airport-sprint days the exception.