{"id":29324,"date":"2024-04-20T11:41:00","date_gmt":"2024-04-20T10:41:00","guid":{"rendered":"https:\/\/www.web-systems.pl\/mobile-app-for-company-when-it-makes-no-sense\/"},"modified":"2024-04-20T11:41:00","modified_gmt":"2024-04-20T10:41:00","slug":"mobile-app-for-company-when-it-makes-no-sense","status":"publish","type":"post","link":"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/","title":{"rendered":"5 Signs a Mobile App for Your Company Makes No Sense (and What to Do Instead)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The question &#8220;does a mobile app for my company make sense&#8221; usually reaches us too late. A few weeks after someone signed a contract with a creative agency, approved the visual design and promised the board a launch at a trade fair. We are the Web Systems team, a software house from \u0141\u00f3d\u017a, in business since 2006. And you know what? We talk clients out of building a native mobile app more often than we propose one. Sounds odd coming from a company that makes its money writing code, right? But that is exactly why it is worth listening to us. We have no interest in discouraging projects that genuinely make sense.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The problem is that the decision to build an app is often made emotionally rather than analytically. Someone saw a competitor&#8217;s app. Someone read that &#8220;customers are mobile these days&#8221;. And someone else simply wants the company icon on their phone screen. Meanwhile, a mobile app is one of the most expensive and hardest to maintain digital products a company can order at all. Before you sign anything, check whether the project already carries the marks of a future failure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this article we show five specific warning signs that we most often see at the requirements analysis stage, before a single line of code is written. Each one is a red flag. None of them on its own kills a project, but a cluster of them should set off an alarm and prompt a pause: is a mobile app for your company an investment, or just an expensive spend on a digital gadget? At the end we also suggest what to do instead of a full app when those warning signs light up.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#When_a_mobile_app_is_an_expense_not_an_investment\" >When a mobile app is an expense, not an investment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Sign_1_Your_users_need_nothing_that_a_responsive_website_cannot_deliver\" >Sign 1: Your users need nothing that a responsive website cannot deliver<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Sign_2_Nobody_counted_the_cost_of_maintenance_only_the_cost_of_the_rollout\" >Sign 2: Nobody counted the cost of maintenance, only the cost of the rollout<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Sign_3_There_is_no_backend_no_integrations_and_no_%E2%80%9Csingle_source_of_truth%E2%80%9D_about_the_data\" >Sign 3: There is no backend, no integrations and no &#8220;single source of truth&#8221; about the data<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Sign_4_The_user_forecast_does_not_justify_two_platforms_at_once\" >Sign 4: The user forecast does not justify two platforms at once<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Sign_5_Nobody_planned_security_scaling_and_what_happens_after_launch\" >Sign 5: Nobody planned security, scaling and what happens after launch<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#FAQ_common_questions_about_whether_a_company_mobile_app_makes_sense\" >FAQ: common questions about whether a company mobile app makes sense<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Mobile_app_or_responsive_website_%E2%80%93_what_to_choose_at_the_start\" >Mobile app or responsive website &#8211; what to choose at the start?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Do_you_always_have_to_build_iOS_and_Android_separately\" >Do you always have to build iOS and Android separately?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.web-systems.pl\/en\/mobile-app-for-company-when-it-makes-no-sense\/#Summary_before_you_build_an_app_check_these_5_signs\" >Summary: before you build an app, check these 5 signs<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"When_a_mobile_app_is_an_expense_not_an_investment\"><\/span>When a mobile app is an expense, not an investment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The line between an investment and an expense is thinner than it looks. An investment pays back in new revenue, saved time, better customer service or a competitive edge you can put numbers on. An expense is something that simply costs money, keeps demanding more, and generates no value. A mobile app can be either. Which way it tips is usually decided by what happens during analysis, not during programming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In our practice the most common scenario looks like this: the client arrives with a finished vision &#8211; &#8220;we need an app for iOS and Android&#8221;. Not with a problem to solve, but with a specific solution for which we are then supposed to find a justification. That reverses the natural order. A good contractor should ask the uncomfortable question at that point: which real mobile usage scenario are we trying to serve, and what does that scenario require that cannot be achieved more cheaply? If the answer is &#8220;well, customers need access to our offer from their phone&#8221;, we have our first warning sign.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A native app is expensive not because developers enjoy inflating quotes. It is expensive because it is a product with a long life cycle and high technical complexity. You are creating not one but two separate products &#8211; for iOS and for Android &#8211; you maintain them in two stores with different rules, you track operating system changes, you react to forced library updates and you answer user reviews. That is a commitment for years. Not a one-off project with an end date.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is why at Web Systems we treat the requirements analysis phase as a filter. Before we quote anything, we check whether the app passes five control questions. Each one corresponds to one of the signs described below. If a project &#8220;fails&#8221; several of them, we tell the client plainly that a better first step will be a responsive website, a PWA, a web tool or an integration of an existing system. And we save the native app for the moment when the need is genuinely proven.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why does this filter make sense right at the start? Because the cost of reversing a decision grows exponentially as the project progresses. Backing out at the analysis stage costs a few meetings and a bit of wounded pride. Backing out after six months of work, when the backend is half built and the UI designer has already delivered the full set of screens, is a burned budget counted in hundreds of thousands of zlotys. Warning signs are cheapest to catch before the start.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So let us look at five specific situations in which, as a contractor, we switch on the amber or red light. These are not abstract warnings from a guidebook. They are patterns that keep repeating in conversations with clients and in projects we rescued after other teams had failed at them. We describe each sign from a technical, cost and business perspective, because only the combination of those three views gives an honest answer to the question of whether an app makes sense.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sign_1_Your_users_need_nothing_that_a_responsive_website_cannot_deliver\"><\/span>Sign 1: Your users need nothing that a responsive website cannot deliver<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first and most common sign appears when we write down the feature list of the planned app and it turns out that everything boils down to browsing content, filling in forms and logging into an account. A product catalog, news, contact details, a customer panel, an order form. All of that is handled today by <a href=\"https:\/\/www.web-systems.pl\/en\/website-and-online-store-development\/\">a well designed responsive website<\/a> or a PWA (Progressive Web App). Far more cheaply and without the barrier of installing from a store.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A native app only starts to gain an advantage when you need deep access to the capabilities of the device. We are talking about smooth work with the camera and real-time code scanning, reliable push notifications, a full offline mode with a local database, background geolocation, NFC contactless payments, integration with sensors or advanced Bluetooth handling. If none of those things is at the heart of your idea, a native app is like buying a truck to carry a single folder of documents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The line is not sharp, though, because web technologies are catching up with native ones. A modern PWA can send push notifications, work offline thanks to Service Workers, install an icon on the home screen and use the camera. The difference lies in the details: push notifications in a PWA on iOS were limited for a long time, access to some APIs is incomplete, and the experience is not always as polished as in native code. That is why the decision should follow a specific scenario, not a general belief that &#8220;an app is better&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A typical mistake we see constantly is building an app &#8220;because the competition has one&#8221;. That reasoning has two flaws. First, you do not know whether the competitor&#8217;s app works at all &#8211; it may be sitting in the store with three downloads and one star, generating nothing but maintenance costs. Second, copying someone else&#8217;s technology decision without knowing its context is a recipe for repeating their mistake with your own money.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> Before you decide on an app, describe one specific moment in the user&#8217;s life when they reach for their phone to use your solution. If that moment can be served just as conveniently in a browser, you probably do not need a native app. At least not for the start.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To make this distinction clearer, here are the situations in which a native app genuinely beats a responsive website and a PWA:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Offline work with large volumes of data<\/strong> &#8211; field service technicians, warehouse staff or couriers operating in places with no signal, who have to save data locally and synchronize it later.<\/li>\n<li><strong>Heavy use of the camera and sensors<\/strong> &#8211; scanning documents, object recognition, accelerometer measurements, handling barcodes at a rate of dozens per minute.<\/li>\n<li><strong>Push notifications as the core of the product<\/strong> &#8211; apps in which an immediate, reliable notification determines the value of the whole service, for example in logistics or alerting.<\/li>\n<li><strong>NFC payments and wallet integration<\/strong> &#8211; payment and loyalty solutions that require contactless contact with a terminal.<\/li>\n<li><strong>Background geolocation<\/strong> &#8211; route tracking, automatic presence reporting, navigation that has to keep working with the screen off.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If your project does not fall into any of those five baskets, it does not mean you have to give up on mobility. It only means it is worth starting with a cheap, fast validation of the need &#8211; a responsive site or a PWA &#8211; and watching how users actually use the solution. Data from real usage will tell you more about whether an app makes sense than the best presentation at a board meeting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sign_2_Nobody_counted_the_cost_of_maintenance_only_the_cost_of_the_rollout\"><\/span>Sign 2: Nobody counted the cost of maintenance, only the cost of the rollout<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The second sign lights up when the only question asked during the budget conversation is &#8220;how much does it cost to build the app&#8221;. That is a question about the rollout cost, that is, about a one-off purchase. And a mobile app is, in cost terms, a subscription product &#8211; you pay for it continuously throughout its entire life. Leaving maintenance out of the calculation is one of the most common reasons why seemingly successful mobile projects end in disappointment and abandonment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let us start with the fundamental fact. A native app for two platforms means two separate codebases, written in different languages and with different tools. iOS is the world of Swift and Xcode, Android is Kotlin and Android Studio. Even if you choose a cross-platform technology that reduces this duality, you are still left with two builds, two publication processes and two sets of platform-specific problems. Every change tends to be work done twice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On top of that come costs that clients usually do not consider at all during planning. An Apple developer account is an annual fee, a Google Play account is a one-off fee, but both platforms regularly change their technical requirements. Apple can force an update of the minimum SDK version, so an app that worked flawlessly suddenly stops being accepted in the store until you update it. Google does exactly the same, imposing new target system version requirements under threat of removal from Google Play.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is a realistic list of the hidden costs you have to add to maintaining a mobile app over a few years:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Accounts and certificates<\/strong> &#8211; annual developer fees, renewing signing certificates, managing keys and provisioning profiles.<\/li>\n<li><strong>Forced platform updates<\/strong> &#8211; adapting the code to new versions of iOS and Android, which come out every year and can switch off old APIs.<\/li>\n<li><strong>Library and dependency updates<\/strong> &#8211; patching security vulnerabilities in third-party components, of which a typical app uses dozens.<\/li>\n<li><strong>Store reviews and policies<\/strong> &#8211; time spent going through the review process, reacting to rejections, adapting to the changing rules of the App Store and Google Play.<\/li>\n<li><strong>Support for many system versions and devices<\/strong> &#8211; testing on different phone models, screen resolutions and system versions used by your users.<\/li>\n<li><strong>Monitoring and incident handling<\/strong> &#8211; error tracking tools, response time to reports, shipping fixes.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">None of these items is theory. Each is a monthly or annual expense that does not disappear after launch. An app that goes a year without updates starts to fall apart: it stops working on new phones, it disappears from the store or it opens up security holes. A digital product that is not maintained does not stand still. It moves backwards, because the technology around it moves forward without it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> Before you calculate the rollout budget, estimate the maintenance cost over two to three years and treat it as a full part of the decision. In our experience the annual maintenance cost of a well built app is often a significant fraction of the cost of building it. If that number frightens you, it is a sign that the project may be out of proportion to the need.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An honest contractor will present these numbers up front, even if they reduce the chance of signing a contract. At Web Systems we would rather lose an order for a misguided app than build something that gets abandoned after a year because the client did not anticipate the maintenance costs. An abandoned project is not only the client&#8217;s money lost. It is also our reputation, and we have been building that since 2006 for too long to risk it for one-off revenue.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sign_3_There_is_no_backend_no_integrations_and_no_%E2%80%9Csingle_source_of_truth%E2%80%9D_about_the_data\"><\/span>Sign 3: There is no backend, no integrations and no &#8220;single source of truth&#8221; about the data<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The third sign is the most technical, but also the most dangerous financially. It appears when the entire conversation about the app revolves around the look of the screens, the color of the buttons and transition animations, and nobody asks where the app will get its data from and where it will save it. Because a mobile app is above all a presentation layer &#8211; what the user sees. Without a solid backend, a database and integrations with the company&#8217;s systems, it is an empty, pretty shell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine an app for a trading company that is supposed to show stock levels, take orders and report shipment status. Each of those functions requires a connection to something on the server side: a warehouse system, an ERP, a payment gateway, a logistics module. The app itself &#8220;knows&#8221; nothing &#8211; it only displays what the API feeds it and sends back what the user enters. If those server-side systems are not ready, tidied up and exposed through sensible interfaces, building an expensive mobile frontend is putting up the roof before the foundations exist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is worth reaching here for a principle that has been a foundation of good application architecture for years, including in the official recommendations for Android. As the Android app architecture documentation puts it:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">It&#8217;s a common mistake to write all your code in an Activity. The primary role of an Activity is to host your app&#8217;s UI. This ephemeral nature makes them unsuitable for holding application data or state.<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">In other words: you must not keep data and business logic in the interface layer. The data and the rules that determine how your company operates have to live in the data layer &#8211; in the backend and the database &#8211; and the app should only query and present that layer. This separation of responsibilities (layer separation) is not an academic invention. It is the condition for a product that can be maintained and developed without being rewritten from scratch with every change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Closely related is the notion of a single source of truth about the data. The same architecture documentation states it plainly:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">When a new data type is defined in your app, assign a single source of truth. The SSOT is the owner of that data, and only the SSOT can modify or mutate it. This pattern centralizes all changes to a particular type of data in one place and protects the data so that other types cannot tamper with it.<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">In practice this means that stock levels, product prices or order status have one authoritative place where they are stored and changed &#8211; usually a database on the server side. The mobile app, the website, the service panel and the invoicing system all read the same data from the same source. When a company lacks that order, every channel has its own truth, the data drifts apart, and the mobile app becomes yet another place where contradictory information shows up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The most expensive mistake we observe is building an elaborate mobile frontend before the data and integrations on the server side have been sorted out. The client pays for beautiful screens, and then it turns out there is no API to feed them, that the data in the ERP is in an unpredictable state, and that integrating the warehouse requires rewriting half the system. The frontend waits, costs grow, and the launch slips by quarters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is why at Web Systems, when we see this sign, we propose reversing the order of work. First we clean up the backend, design the API, establish a single source of truth and the integrations with existing systems. Only then do we build the mobile layer. It often turns out along the way that once the backend and the API exist, value can be delivered quickly and cheaply through a web app or a PWA, and the native app can wait until it is genuinely justified.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sign_4_The_user_forecast_does_not_justify_two_platforms_at_once\"><\/span>Sign 4: The user forecast does not justify two platforms at once<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fourth sign concerns scale. It lights up when we are planning a native app for iOS and Android for an audience that is small, known and countable. The classic example is an internal tool for thirty field workers, or an app for a closed group of business partners. Building and maintaining two separate native apps for such a narrow group is rarely defensible economically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The logic is simple. The cost of building and maintaining a native app is largely fixed, regardless of the number of users. Two codebases, two publication processes and two sets of tests cost about the same whether thirty people use them or three hundred thousand. The difference is that at large scale that fixed cost spreads across a huge user base and works out at pennies per person, while at small scale it weighs on the budget like a stone. That is why a forecast of user numbers should be one of the first inputs into the architectural decision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fortunately, two native apps are not the only road to mobility. The spectrum of options is wide, and it is worth knowing it before you default to the most expensive one:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>One cross-platform codebase<\/strong> &#8211; technologies such as Flutter or React Native let you write the app once and ship it on iOS and Android from a single codebase. This does not remove the differences between platforms entirely, but it significantly reduces the cost of building and maintaining, which at medium scale is often a sensible compromise.<\/li>\n<li><strong>Progressive Web App<\/strong> &#8211; an app that runs in the browser, can be installed on the home screen and uses part of the device&#8217;s capabilities. No store installation and one codebase for all platforms make it a very cheap entry into mobility.<\/li>\n<li><strong>A web app instead of a store app<\/strong> &#8211; for internal tools the best choice is often simply a responsive web app available at a URL, without having to go through the App Store and Google Play with their reviews and fees.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">An internal tool for thirty employees is a textbook case in which a web app or a PWA beats a native app hands down. Employees log in through the browser, an update is immediate for everyone (you do not wait for each person to update the app from the store), there is no review process, and the maintenance cost is a fraction of what two native apps would consume. Access to the camera or notifications, if needed, can often be handled within a PWA.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> Build a simple decision table with three columns &#8211; number of users, device types, usage scenarios &#8211; and only then choose the technology. An architectural decision should follow hard data, not the fashion for having &#8220;an app&#8221; or the wish to own an icon in the store.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is also worth remembering that the choice of technology is not a decision forever. A sensible path for a company with uncertain scale is to start with a PWA or a cross-platform app, gather data on real usage, and then, if the numbers justify it, invest in a native solution where it will genuinely deliver an advantage. This approach of gradual escalation protects the budget and lets you make each successive decision on the basis of evidence rather than assumptions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At Web Systems we work with all of these technologies, so we have no interest in pushing any one of them. Our job is to match the tool to the problem, not the problem to a favorite tool. When the user forecast does not justify two platforms at once, we say so plainly and show cheaper routes to the same business goal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sign_5_Nobody_planned_security_scaling_and_what_happens_after_launch\"><\/span>Sign 5: Nobody planned security, scaling and what happens after launch<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fifth sign is at once the most serious and the most frequently ignored. It lights up when not a single sentence in the conversation about the project touches on security, scaling and what will happen to the app after launch. All the energy goes into the release date, as if the launch were the finish line rather than the start. And for a digital product, launch is only the beginning of the longest and most expensive phase of its life.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Security is the area where the lack of a plan takes its most painful revenge. An app that processes customer data has to have well thought out authentication, secure storage and transmission of data, protection against typical attacks and compliance with GDPR. These are not add-ons you glue on at the end. They are a foundation that has to be designed from the start. A mobile app runs on someone else&#8217;s device, outside the company&#8217;s control, which raises additional requirements: locally stored data has to be protected, communication with the server encrypted, and keys and secrets should never end up in the app&#8217;s code in an unprotected form.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On top of that come security updates, which are a continuous process. The libraries an app uses regularly disclose vulnerabilities, and someone has to track and patch them. If nobody owns that process, the app becomes leakier month by month, until it finally poses a real risk to the company and its customers. GDPR adds legal duties on top: the right to erasure, consent, a record of processing activities. All of that has to be reflected in the architecture, not only in the terms and conditions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Scaling and maintenance are the second area that routinely lands in the drawer labelled &#8220;we will deal with it later&#8221;. And that &#8220;later&#8221; is, in our experience, the most common cause of abandoned mobile projects. A backend designed for a hundred users falls over at ten thousand. Code written in a hurry, without tests and documentation, becomes impossible to develop once the original team leaves. No development plan means that every new feature is a fight with the technical debt accumulated since launch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> If you cannot answer the question of who will develop and maintain this app a year from now, that is a very strong sign that there is no point in building it yet. A digital product without an owner and without a maintenance plan is not an investment, it is a problem postponed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A plan for &#8220;what happens after launch&#8221; should cover several concrete elements: who monitors errors and the response time to incidents, how often updates ship, who is responsible for compatibility with new system versions, what the development budget looks like in the coming years, and how we measure whether the app actually meets its business goals. Without those answers, a launch is a leap in the dark rather than a controlled product start.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is exactly where the difference shows between a contractor who only wants to sell a project and a technology partner who thinks about the product life cycle. At Web Systems we treat security, scalability and the maintenance plan as part of the conversation from the first meeting, not as a topic for &#8220;someday&#8221;. We would rather design a smaller but solid and maintainable product than an elaborate app that dazzles at launch and becomes an abandoned burden a year later. Security and scaling are not a cost you can skip. They are a cost you pay either up front in the project, or many times over in the form of an incident and lost customer trust.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"FAQ_common_questions_about_whether_a_company_mobile_app_makes_sense\"><\/span>FAQ: common questions about whether a company mobile app makes sense<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In conversations with clients certain questions come back almost every time. We have collected the two most common ones and answer them the way we answer them in meetings &#8211; concretely and without wrapping them in marketing fluff.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Mobile_app_or_responsive_website_%E2%80%93_what_to_choose_at_the_start\"><\/span>Mobile app or responsive website &#8211; what to choose at the start?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">At the start, almost always begin with a cheap validation of the mobile need rather than with a full native app. A well designed responsive website or a PWA lets you check whether users actually use your solution on their phones and how they do it, at a fraction of the cost and risk. You then collect real data: how many people arrive from mobile devices, which functions are used, where problems appear. Only when that data shows a clear need for something the web cannot handle &#8211; offline work, heavy camera use or reliable push notifications, for example &#8211; does investing in a native app start to be justified. Reversing that order, that is, building an expensive app on faith, is the most common source of burned budgets we see. A PWA as the first step costs many times less and gives you a hard basis for the next decision.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Do_you_always_have_to_build_iOS_and_Android_separately\"><\/span>Do you always have to build iOS and Android separately?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. And very often it is not worth it. Separate native apps for iOS and Android make sense mainly at large scale, when the fixed cost of two codebases spreads across a huge user base, and where you need maximum performance and the deepest access to the capabilities of a specific platform. At smaller scale it is often far more sensible to use one cross-platform codebase &#8211; in Flutter or React Native, for example &#8211; which serves both platforms from a single base, or simply a web app or a PWA if the usage scenarios allow it. The decision should follow the number of users, the type of devices and the specific scenarios, not the assumption that &#8220;you have to be in both stores&#8221;. Many of our clients were surprised by how much could be achieved by a cheaper route once we started with an analysis of the need rather than with a default choice of the most expensive option.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Summary_before_you_build_an_app_check_these_5_signs\"><\/span>Summary: before you build an app, check these 5 signs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let us return to the five warning signs that we, as a contractor, catch already at the requirements analysis stage. Each of them is a question worth answering honestly before you sign a contract for a company mobile app. Together they form a simple but effective filter that separates investments from expensive spending on a digital gadget.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, a real mobile need &#8211; do your users need something that a responsive site or a PWA cannot deliver, or does the app come down to browsing content and filling in forms. Second, the cost of maintenance &#8211; has anyone counted the spending two or three years ahead, and not only the cost of the rollout itself. Third, a ready backend and integrations &#8211; is there an orderly data layer with a single source of truth, or will the app be an empty shell with no API and no connections to the company&#8217;s systems. Fourth, the scale of users &#8211; does the forecast audience justify two native platforms, or would one cross-platform codebase or the web be better. Fifth, a security and development plan &#8211; is it clear who will protect, scale and develop the app after launch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If several of these signs light up at once, it does not mean you have to abandon your digital ambitions. It means that a full native app probably is not the right first step. Often a much better entry point is an MVP, that is, a minimal version of the product that tests the idea on real users at low cost. Just as often the value you are looking for can be delivered through an integration or automation of an existing system, without building anything mobile from scratch. Cleaning up the data, exposing a sensible API, automating repetitive processes or modernizing an outdated system can bring a company more than a shiny app that mainly generates maintenance costs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At Web Systems, since 2006, we have been <a href=\"https:\/\/www.web-systems.pl\/en\/software-development\/\">designing and delivering web and mobile applications<\/a>, B2B systems, API integrations, automations, e-commerce solutions and AI rollouts. That experience has taught us one thing: the best recommendation we can give a client is sometimes the one that saves them money. That is why we start with a question about the problem rather than about a ready-made solution, and match the technology to the real need, scale and budget.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are wondering whether a mobile app makes sense in your case, or you are looking for a sensible first step, let us talk. We will help you go through these five signs on a specific project and advise whether the better choice is an MVP, an app, an API integration, automation, an AI solution or the modernization of an existing system. Get in touch with the Web Systems team &#8211; we will start with your problem, not with a ready-made app.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>The question &#8220;does a mobile app for my company make sense&#8221; usually reaches us too late. A few weeks after someone signed a contract with a creative agency, approved the visual design and promised the board a launch at a trade fair. We are the Web Systems team, a software house from \u0141\u00f3d\u017a, in business [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":28370,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[810,820,826],"tags":[1238,1081,1555,1112,1132,1419],"class_list":["post-29324","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence","category-business","category-technology","tag-business-en","tag-guide","tag-mobile-app-en","tag-software-development","tag-software-house-en","tag-technology"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/29324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/comments?post=29324"}],"version-history":[{"count":0,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/29324\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media\/28370"}],"wp:attachment":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media?parent=29324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/categories?post=29324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/tags?post=29324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}