Luma Commons mobile app programming company
    ios engineering

    Building for Hospitality: What Travel Apps Get Wrong

    NN
    Nikhil Nangia
    July 20, 2025
    10 min read
    Modern hotel lobby with warm lighting and a reception desk

    Building for Hospitality: What Travel Apps Get Wrong


    I checked into a hotel in Lisbon last year. Nice property, four stars, part of a well-known European chain. During the booking process, they'd promoted their mobile app heavily. Digital room key, mobile check-in, restaurant reservations, spa booking. It sounded great.


    I downloaded the app in the taxi from the airport. When I arrived, I opened it to try the mobile check-in feature. The lobby WiFi was slow. The app needed to load my reservation from the server before I could do anything. It spun for about forty-five seconds, then timed out. I tried again on cellular, but the lobby had weak reception. Eventually I walked to the front desk and checked in the old-fashioned way. The whole interaction took about two minutes, which is roughly ninety seconds less than I'd spent trying to make the app work.


    Later that evening, I tried the digital room key feature. It required Bluetooth, which was fine, but it also required an active internet connection to "verify" my key status each time. In the elevator, where there was no signal, the feature didn't work. I had to go back to the front desk for a physical key card.


    The app had a 2.1-star rating on the App Store. I was not surprised.


    This experience captures almost everything the hospitality industry gets wrong about mobile apps. And having worked on travel and hospitality products over the years, I can tell you that this hotel's problems are not unusual. They're the norm.


    Offline-First Is Non-Negotiable


    If there is one principle I'd tattoo on the forehead of every hospitality product manager, it's this: your app must work without the internet.


    Hotels have notoriously inconsistent WiFi. Airports have dead zones. Cruise ships charge by the megabyte. Resorts in remote locations have barely functional cellular coverage. International travelers frequently have no data plan at all.


    And yet, the vast majority of hospitality apps treat internet connectivity as a given. They require it for everything. Viewing your reservation, accessing your room key, checking restaurant hours, browsing the spa menu. All of these things are static or semi-static data that could easily be cached locally.


    An offline-first architecture means the app downloads key information once and stores it locally. The reservation details, the room key credentials, the property map, the restaurant menus and hours, the concierge recommendations. When connectivity is available, the app syncs in the background. When it's not, everything still works.


    This is an app performance challenge as much as it is an architecture decision. You need thoughtful caching strategies, conflict resolution for data that changes (a restaurant that closes early, a spa slot that gets booked), and a sync mechanism that's efficient with bandwidth. It's more engineering work upfront, but the alternative is an app that fails exactly when your guest needs it most.


    Multi-Language Is Harder Than You Think


    Hospitality is inherently international. A hotel chain operating across Europe, the Middle East, and Asia might need to support fifteen or twenty languages. Most teams underestimate how hard this actually is.


    Translation is the easy part. The hard parts are everything else.


    Right-to-left languages like Arabic and Hebrew require your entire layout to mirror. Navigation, text alignment, scroll direction, even the placement of icons. If your UI was built with left-to-right assumptions baked into the layout code, supporting RTL isn't a configuration change. It's a significant refactoring effort.


    Date and time formats vary dramatically. Americans expect month/day/year. Europeans expect day/month/year. Some Asian markets use year/month/day. Time can be 12-hour or 24-hour. Some calendars aren't Gregorian. Getting this wrong in a booking flow doesn't just confuse people, it causes them to book the wrong dates.


    Currency formatting is another minefield. The comma and period swap roles between American and European number formats. Some currencies use no decimal places. Some use three. The currency symbol goes before the number in some locales and after it in others.


    Text expansion is the silent killer. German words are famously long. A button that says "Book Now" in English might say "Jetzt buchen" in German, which is manageable. But labels and descriptions can expand by 30-40%, breaking carefully designed layouts.


    If you're building a cross-platform development solution for hospitality, all of these localization challenges multiply, because you need them to work consistently across iOS and Android with different text rendering engines and layout systems.


    The Booking Flow Problem


    I've reviewed booking flows in hospitality apps that required seven, eight, sometimes ten screens to complete a simple room reservation. Date selection, room type, rate plan, add-ons, guest details, payment, confirmation, upsell, loyalty enrollment, survey opt-in.


    Every screen is a chance for the customer to abandon. And the data shows they do, in large numbers.


    The best booking flows I've worked on compress this to three or four steps at most. Select your dates and room on one screen. Enter payment details on the second. Confirm on the third. Everything else, the upsells, the add-ons, the loyalty enrollment, happens after the booking is confirmed, when the customer's commitment is already made.


    There's a tension here between the engineering team and the revenue team. The revenue team wants to surface every upsell opportunity during the booking flow because that's where the customer's wallet is open. The engineering team sees the dropout data and knows that each additional step costs bookings.


    The resolution usually comes from data. A/B test the streamlined flow against the full flow. In every case I've been involved with, the streamlined flow wins on total revenue, not just conversion rate. Fewer people drop off, and you can still present upsells in a post-booking screen where the acceptance rates are surprisingly good because the pressure of the purchase decision is gone.


    The Check-In Experience


    Mobile check-in should be the killer feature of any hotel app. Skip the front desk, go straight to your room. It's the feature guests actually want.


    But most implementations are terrible, and the reasons are mostly technical.


    Hotels run on property management systems (PMS) that were designed in the 1990s and 2000s. Opera, Protel, Mews, dozens of others. These systems manage room assignments, housekeeping status, billing, and a thousand other operational details. They're the source of truth for whether a room is ready, which room is assigned to which guest, and what charges are on the folio.


    Integrating a mobile app with these PMS systems is genuinely difficult. The APIs, when they exist, are often poorly documented, unreliable, or limited in functionality. Real-time room readiness data requires webhooks or polling that the PMS may not support well. Room assignment logic is often handled manually by front desk staff, which means the mobile check-in flow needs to either automate that logic or wait for a human to assign the room.


    The digital room key adds another layer. You need to integrate with the lock system vendor (ASSA ABLOY, Dormakaba, etc.), manage Bluetooth credentials securely, handle the enrollment process, and deal with the reality that Bluetooth is finicky and varies between phone models.


    I've seen teams spend six months just getting the PMS integration and digital key working reliably. It's worth it, because when it works, it genuinely transforms the guest experience. But you have to go in with eyes open about the complexity.


    Why Most Hotel Apps Have Two-Star Ratings


    Go to the App Store and look at hotel chain apps. Sort by rating. The numbers are grim. Two stars, 2.5 stars, occasionally three. The reviews tell a consistent story.


    "App crashes when I try to check in." "Room key doesn't work half the time." "Can't load my reservation without WiFi." "Had to go to the front desk anyway." "Booked the wrong dates because the calendar was confusing."


    These aren't edge cases. They're the core experience. The app fails at the things it's supposed to do.


    The root cause, in almost every case, is that the app was built as a marketing initiative rather than an engineering product. The team prioritized launching with a long feature list over making a short feature list work flawlessly. The budget was allocated for the initial build but not for the twelve to eighteen months of iteration needed to get reliability to an acceptable level.


    Hospitality companies that get mobile right take a different approach. They launch with less, maybe just mobile check-in and a digital concierge. They invest heavily in reliability. They test in actual hotel environments with actual WiFi conditions. They iterate based on guest feedback. And critically, they treat the app as an ongoing product with a dedicated team, not a project that gets handed off to a maintenance contractor.


    What Good Looks Like


    The best hospitality apps I've worked on or used share a few characteristics.


    They're fast and they work offline. Everything the guest needs during their stay is cached locally. Room key, reservation details, property information, restaurant menus. The app never makes the guest wait for a network request during a time-sensitive interaction.


    They're focused. They do three or four things extremely well rather than fifteen things poorly. Mobile check-in, room key, chat with the front desk, and local recommendations. That's enough. That's more than enough.


    They handle the unsexy stuff. Multi-language support that actually works. Date formats that match the guest's locale. Currency display that doesn't confuse. Error messages that are helpful. Fallback flows when Bluetooth doesn't cooperate.


    They integrate deeply with hotel operations. The room readiness status is accurate. The check-in flow actually assigns a room. The charges on the folio are correct and current. This requires significant integration work with legacy systems, and the teams that succeed are the ones that invest the time to get it right.


    They respect the context. A guest using a hotel app is usually tired, possibly jet-lagged, possibly in a country where they don't speak the language. The app should require minimal cognitive effort. Big buttons, clear labels, obvious next steps.


    The best hospitality apps disappear. They make the experience seamless without drawing attention to themselves. The guest doesn't think about the app. They think about the fact that they walked past the front desk, went straight to their room, tapped their phone on the lock, and the door opened. The technology fades into the background, and what remains is simply a better experience.

    Did you find this useful?
    Hospitality
    Travel Tech
    Mobile Apps
    Offline-First
    NN

    Nikhil Nangia

    Founder & Seasoned iOS Expert

    Seasoned iOS expert with 9+ years of experience building fintech, regulated, and consumer mobile products. Nikhil specializes in Swift, app architecture, and technical due diligence for pre-acquisition reviews.