The team at San Digital has extensive experience developing apps for mobile devices, smartwatches, and smart TVs; using native and hybrid technologies (and everything in-between!) including using Rust for complex comms.
The first, second and third question in the process of developing a mobile app is "do you really need an app?" Reasons I've heard why companies believe they need an app include:
Of course, none of these are justified or evidenced reasons for a mobile app. When we sit down with a client to discuss the possibility of a mobile app, it's a workshop to discuss and tease out the business's goals and objectives - or the challenge we're trying to address. Once there's a clear view or problem statement, we then look at appropriate technologies and solutions, often with rapid prototyping and end-user testing.
In our experience, the solution is very rarely a mobile app that's submitted and maintained in the App Store, Google play, and others. More often than not a responsive website or a PWA (Progressive Web App) can deliver a better outcome, at a lower cost of development (often with existing web component reuse) and without introducing new technologies and maintenance overheads. After all, a mobile app requires installation on the mobile device.
There are justifications for mobile apps, such as requiring:
These justifications are great examples of the tech we love to work with at San Digital and usually deliver a defined outcome.
Thinking about what types of devices, platforms and versions of operating systems to support can be a tricky mapping exercise. There may be quick wins for support, but it's often best to look at the audience's devices. Rarely is "we need to support all devices and platforms from day one" justified, or a sensible strategy.
To give some colour to the number of devices and platforms, Android alone has >10 major Android versions (with at least half still a general consideration for targeting). There is also Android TV and Android Wear – which target very different physical devices and may work in tandem with another device.
Analysing only mobile, Android is open-source meaning many mobile handset manufacturers choose to modify or enhance the operating system with their own "flavours", including app deployment. Marrying this complexity with device capabilities, such as screen size and the number of cameras, to motion and AI processors, highlights the sheer number of target devices and nuances to consider. Bad app reviews because a mobile device does not have a physical required capability is easily mitigated when fully understood.
A common approach to this device matrix mayhem is to target a single device or platform as a rapid prototyping exercise. This loop can yield quick feedback from users or target audience, which sometimes proves there is no rationale for developing the app for production use and that you don't need an app! Having a clear but flexible plan to deploy for other platforms reduces the "big bang" day one release.
Framework selection and tooling should always factor in the devices targeted and the specific features required, sometimes with considerations for existing team skills. A friend recently asked "what do you think of Flutter", to which there is no quick answer, there is no "killer framework" to rule them all, forever, for everyone. There's the old hybrid vs native debate too, with marketing such as "write once, run everywhere", if that's true, you probably don't need an app.
Let's call it CPCDCF! (let's not, you can call it Agile if you want). It is critical to get a working prototype (even with stubbed functionality) into end-users' hands as fast as possible. We typically stub functionality that's seen as a commodity (e.g. login) and tackle the most challenging and unique features first. This approach de-risks any technology concerns by tackling them early and head-on while establishing business merits by testing with real users.
To push apps to users quickly, we typically use one of our standard continuous delivery pipelines. Our clients can utilise from day one to accelerate development – more on this another time.
There are many tools available to monitor crash logs, engagement, and activities such as A/B testing – ensure the right products are selected and provide value (as some tools themselves require investment and tracking of that return).
OK, this article just got serious. Unit and integration testing can be completed mostly with virtual devices as part of CPCDCF pipelines. However, due to manufacturers' divergence and the fact physical devices can behave differently than emulators and simulators, there is no substitute for physical device testing.
Physical devices are costly to acquire, grow old quickly, and their resale value drops drastically (but the devices will need to be retained for legacy testing anyway). For context, I recently spoke to a company with tens of thousands of test devices!
There are many reasons for using real devices for testing:
Once the app is finally released to whichever platform(s), the feedback cycle does not stop. With live feedback on the App Store or Google Play, it's even more essential to ensure feedback is responded to appropriately and taken into account.
In addition to feedback, keeping abreast of the latest developments in hardware, operating systems, trends, usage, and capabilities are integral to assessing future return on investment and the brand/security risk.
Keeping the lights on isn't easy when the whack-a-mole switches and new lights keep dis/appearing.
The mobile, tablet and connected devices market continues to develop at high-speed, with new versions, platforms, and devices launched regularly. However, there is a lack of real innovation in the industry, meaning that updates are usually cosmetic.
Do you really need an app? Then figure out where you want to focus first. We'd love to help, especially with a sprinkling of IoT, AI or another emerging tech you also really need.