perfectdesign.

Apps and mobile

Mobile app development

An app is worth building when a task repeats often enough that installing something for it saves real time. We scope it around that task, not around a feature list.

In short

Start with the task, not the app. When something is done often, on the move, by the same people, and the phone itself changes the job through notifications, the camera, location or working offline, an app is worth scoping. When none of that applies, a mobile website usually does the same work for less. Everything after that runs in sequence: the users and their conditions, the systems it must connect to, the use case, the platform, the evidence you need before committing, and who owns each part afterwards.

Written for a business owner or product lead deciding whether to commission an app, and what building one actually involves · 9 min read

Choose your situation

Android apps

Android app development in Malaysia: device and version fragmentation, Play Console requirements, testing and release, built in React Native.

Shopping apps

Shopping app development in Malaysia: catalogue and cart, payments in the app, push that people keep, and when a mobile website is the better buy.

Loyalty & membership apps

Plan member identity, benefits, reward rules, redemption, notifications and commerce, CRM or POS integrations for a loyalty and membership app.

Mobile games

Scope a mobile game around its playable loop, content pipeline, device limits and release evidence, and know when a specialist studio is the better partner.

Booking apps

Scope a booking app around real availability, staff and resource rules, deposits, cancellation policy, reminders and what happens when two people want the same slot.

Marketplace apps

Scope a two-sided marketplace app: buyer and seller surfaces, onboarding, trust and disputes, commission and payouts, and what decides whether it works.

Delivery apps

Scope dispatch, driver assignment, status and location events, proof of delivery, failed deliveries and offline working before a delivery app is commissioned.

iOS apps

Scope an iPhone or iPad app: Apple devices and versions, permissions, App Store review, TestFlight and who owns the developer account.

Cross-platform apps

One codebase for Android and iOS: what it genuinely saves, where platform-specific or native code is still needed, and who owns the upgrades.

App backend & APIs

Plan the backend and API behind a mobile app: ownership, authentication, syncing, retries, reconciliation and support responsibilities.

Learning & training apps

Scope an education and training app around learner roles, content, assessment, progress, offline use, notifications and learning-system integrations.

Field service & operations apps

Plan a field-service app workflow around tasks, forms, offline capture, synchronisation, approvals, evidence and back-office reporting.

Community apps

Plan a community app around a recurring member task, then settle roles, posting rules, messaging, reporting, blocking, moderation cover and deletion.

Fitness and wellness apps

Scope a fitness or wellness app around recorded activity, coaching content, device permissions and sensitive data, and keep it clearly outside medical claims.

What business task should the app improve?

An app earns its keep when a task repeats. Test yours against three questions. Does someone do it often enough to install something for it. Does the phone itself change the job, through notifications, the camera, location, a saved login or working offline. And can you describe the change you want in a sentence, without listing features. A task done once a year at a desk is a website. One done weekly, on the move, by the same people, is worth scoping as an app.

A product problem and a feature list are not the same thing. The list is easy to write and expensive to build, because every item carries roles, permissions, states, testing and upkeep. The problem tells you what can wait.

One assumed example runs through this page: a fictional appointment business whose customers request a time and whose coordinator confirms it. It is invented for illustration and no live system is represented. The rest of the page follows the order the decisions arrive in: users and conditions, systems, use case, platform, evidence before committing, and ownership. The table works that example through three steps of a booking.

A fictional appointment app, worked through three steps of one booking
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Booking requestAssumed customerThe app records a requested appointment and shows the request stateThe requested slot is unavailableA test trace showing the unavailable-slot message, the input preserved and a clear next action
Confirmation and coordinationAssumed coordinatorThe staff workflow reviews the request and records a confirmation stateTwo requests compete for the same slotA state-transition test showing the chosen outcome, the permission that acted and the notification the customer receives
Interruption or connectivity lossAssumed customerThe app shows an explicit pending or retry state and never presents an unconfirmed booking as completeThe connection drops after submissionA test trace covering retry, duplicate prevention and final reconciliation of the record
Four questions before an app is worth scoping. A yearly task done at a desk is a website; a weekly one on the move is worth scoping. A full text version follows.

Four questions before an app is worth scoping

Editorial framework. A yearly task done at a desk is a website; a weekly one on the move is worth scoping.

Basis: Perfect Design: mobile applications explained. Reviewed .

Read the graphic as text
  • Does it repeat?. Often enough that installing something pays
  • Does the phone help?. Camera, location, notifications or no signal
  • Say it in a sentence. The change you want, with no feature list
  • Name the person. Someone who would open it twice a week
Download this infographic (SVG)

Which users, devices and operating systems matter?

Define users and usage context

Turn the task into observable conditions. Who are the primary users, and which staff or administrator roles sit behind them. How long is a session. Are people walking, driving between jobs, standing at a counter or sitting down. How often are they interrupted, and what should happen when they return. Do they need anything to work without a signal, and which devices do they hold.

In the assumed example the two flows diverge. The customer opens the app rarely, on their own phone, and needs one uninterrupted path to a request. The coordinator handles many requests an hour on a shared device and needs speed, undo and a visible queue. Each condition becomes a requirement and then an acceptance question: what should the screen do when the signal drops there.

Plan UX, accessibility and interruptions

Six things shape scope more than any visual decision: touch target size, readable content, permission timing, what happens when a call interrupts, whether the app resumes where the user left off, and whether actions give feedback. Android's core app quality guidance, read on 18 September 2026, is a useful checklist: touch targets of at least 48 dp, contrast of 4.5:1 for small text, interface elements described for screen readers, and state preserved when the app leaves the foreground. That is dated platform guidance, not a guarantee of quality or store approval, and accessibility stays a requirement to test rather than a badge to claim. Task-specific accessibility testing goes deeper than this page and belongs in the test plan.

Malaysia is a two-platform market. Ship to one platform in Malaysia and you have written off roughly two in five of the people you wanted. The split is close enough that the question is which comes first, not which one. A full text version follows.

Malaysia is a two-platform market

Published statistic. Ship to one platform in Malaysia and you have written off roughly two in five of the people you wanted. The split is close enough that the question is which comes first, not which one.

Source: StatCounter GlobalStats: mobile OS share, Malaysia, Sept 2025 to Aug 2026. Reviewed .

Read the graphic as text

Malaysia

  • Android: 60.15%. The larger share, and the wider range of devices to test on
  • iOS: 39.58%. Nearly two in five, and higher in the cities where most buying happens
  • Everything else: 0.27%. Samsung Internet on other systems, and a long tail
Download this infographic (SVG)

What existing systems must connect?

Map data, roles and system boundaries

A mobile product is rarely just the customer-facing screen. Staff tools, backend services, permissions and the operational workflow behind them usually need defining too, and the boundary depends on the project. Work through four questions. Who owns each record. Who may act on it. Which system is authoritative when two disagree. And what the app must display against what it may change.

In the assumed example that means naming which system owns availability, which owns customer identity, which owns booking state and which sends notifications. If availability lives in a calendar you already run, the app reads it and the calendar stays authoritative, which changes permissions, data flow and evidence. Our Aruva Marketplace and VITALE builds are concept prototypes, not client work, and both carry several role workspaces over one set of records.

Specify integration evidence and exceptions

Whether an integration is feasible depends on four things outside the app: whether an interface exists, who can grant access, whether the data is clean enough to rely on, and what the third party's terms allow. Confirm those before they enter a scope. Then plan the exceptions, because a demonstration of the normal path proves very little. The unavailable slot and the dropped connection in the table are where the real design sits. Deeper backend and API design is its own discipline, and the core systems we build shows what usually sits behind an app.

The payment finishes in a banking app. Paying by FPX or DuitNow means leaving your site for a banking app and coming back. If that return journey is untested on a phone, that is where the order is lost. A full text version follows.

The payment finishes in a banking app

Published statistic. Paying by FPX or DuitNow means leaving your site for a banking app and coming back. If that return journey is untested on a phone, that is where the order is lost.

Source: Bank Negara Malaysia: Annual Report 2025, payments chapter. Reviewed .

Read the graphic as text

Online banking

  • Mobile banking: 64%. 25 million active users, growing 8.7% in 2025
  • Internet banking: 36%. 21 million users, and falling
Download this infographic (SVG)

Which app use case is needed?

Classify the recurring task and operating model

Classify by the job, not the industry. Name the primary user, the recurring task, the states a record moves through, the operational roles behind it, the device conditions, and the evidence you would need to accept it. That sequence usually lands on one of ten families. Shopping moves a buyer from browsing to paying for your own stock. Booking reserves time or capacity that can run out. A marketplace introduces a second business you have to onboard, police and pay. Delivery tracks a job moving through drivers and needs proof it arrived.

Loyalty recognises a returning customer and settles what they have earned. Education carries a learner through lessons and keeps progress. Field service puts work orders in the hands of people with poor signal. Community depends on members posting and on someone moderating. Fitness logs the same activity repeatedly and only becomes useful over months. Games are built around sessions, progression and in-app purchases. Whichever family you land in, the foundations are shared: user context, data and roles, integrations, accessibility, testing, release and ownership. The type decides the workflow, not the groundwork.

Route type-specific scope to the right owner

This page owns the cross-type qualification: enough to tell which family you are in and what that choice implies. The detailed workflow for each family, shopping through games, is a subject in its own right, and this page stops once the family is clear. Naming your family does not settle the platform, the integrations, the testing or the ownership questions, all of which come after. Most real projects sit across two families, usually a customer app and the staff tool behind it, which is a scoping decision rather than a naming one.

Do you actually need an app, or a mobile website?

Separate product surface from implementation choice

These are two questions, often confused. The product surface question is whether people install something or open a browser. The implementation question is what it is built with. Answer the first on its own. An installed app is worth investigating when you need notifications people actually receive, camera or location access, a saved identity, or real use without a signal. A responsive website is usually the better answer when none of those apply: nothing to install, nothing to update, no store in the way.

In the assumed example the customer books twice a year, so asking them to install adds a step before the one you want. The coordinator opens that workflow forty times a day, which is where an installed tool pays. Many businesses need a website for one and an app for the other. Our own HORIZON 2026 concept shows the distinction: its attendee app and door check-in console run as web applications, not store-published apps, and nothing we have built is on the App Store or Google Play yet. More app samples are being built.

Compare platform and implementation implications

Four decisions hide behind the word app: the use case, the product surface, the operating system and the implementation approach. Cross-platform React Native is our default, so one codebase serves Android and iOS, and we use native Swift or Kotlin when a feature genuinely needs it. Let the devices your users hold, the capabilities you require and how you intend to distribute decide the platform, then test on representative devices rather than one handset. Android projects declare their components, permissions, minimum platform version and required hardware or software features, and those declarations decide which devices can install from Google Play.

Two questions hidden inside the word app. Choosing a framework before the surface is how a website becomes an app nobody installs. A full text version follows.

Two questions hidden inside the word app

Editorial framework. Choosing a framework before the surface is how a website becomes an app nobody installs.

Basis: web.dev: What are Progressive Web Apps?. Reviewed .

Read the graphic as text
  • Surface question. Install something, or open it in a browser
  • Build question. What it is written in, and by whom
  • Answer order. Surface first, because it sets the budget
Download this infographic (SVG)

What evidence is needed before committing to build?

Use a scope and acceptance checklist

Before committing, a scope should name the users and their roles, the workflows end to end, the normal and exception states for each, the integrations with their access and terms confirmed, the acceptance criteria, and the release evidence you expect to receive. The right-hand column of the table is the short version: a trace for the unavailable slot, a state-transition test for the competing bookings, and a retry and reconciliation test for the dropped connection. Sequencing, timelines and release acceptance each go deeper than a commercial page can, and we work through them with you once the scope is real.

Who owns the app, accounts, source code and maintenance?

Settle five questions in writing. Who holds the store accounts. Where the source code lives. Who controls the environments and the renewals. Who ships updates when the operating systems move. And how an extra change is agreed and charged. Our answer is consistent: your business owns the Apple Developer and Google Play accounts, we set them up in your name, prepare certificates and signing and submit builds for you, and the code is handed over in your repository. We maintain apps after launch, covering operating-system updates, crash monitoring and dependency upgrades, scoped per project and quoted with the work.

An app is not finished when it ships. This is the honest reason an app carries a care fee. Leave it a year untouched and the store quietly stops offering it to new phones. A full text version follows.

An app is not finished when it ships

Published statistic. This is the honest reason an app carries a care fee. Leave it a year untouched and the store quietly stops offering it to new phones.

Source: Google Play Console Help: target API level requirements. Reviewed .

Read the graphic as text
  • New apps and updates: API 36. Must target Android 16 from 31 August 2026
  • Existing apps: API 35. Below Android 15 and the app stops reaching new users on newer devices
  • How often: Yearly. Google moves the floor every year, and Apple moves its own alongside each iOS release
Download this infographic (SVG)

What to bring to a first conversation

The sequence is the method: the task the app should improve, the users and their conditions, the systems it must connect to, the use case, the platform, the evidence you need before committing, and who owns each part. You do not need answers to all of it. Four things make a first conversation useful: the problem in a sentence, who does that task today, what they use now, and any constraint you know about, such as a system that cannot change or a date you are working to.

Bring those to a scoped enquiry and we will tell you which parts look solid, which need confirming before anything could be built, and whether the honest answer is a mobile website instead. If you are still comparing what to build first, the services catalogue sets an app beside the website and system work it sits next to.

What you get

What is actually delivered

01

A scope document you can argue with

Users and roles, workflows end to end, normal and exception states, integrations with access and terms confirmed, and the acceptance criteria for each.

02

A prototype you can click

The real journey on a live link before anything is committed, so the scope is judged from the thing rather than a specification.

03

The customer app and the staff side

The operational workflow behind the app, with permissions and states defined, because the visible screen is rarely the whole product.

04

Backend, data and integrations

The services the app runs on and the connections to systems you already use, scoped against confirmed interfaces, access and third-party terms.

05

Store accounts in your name

Apple Developer and Google Play accounts set up for your business, with certificates, signing, TestFlight and internal test tracks handled for you.

06

Device and interruption testing

Testing on representative devices, including permission prompts, interruptions, resume behaviour, connection loss and duplicate prevention.

07

Release and handover evidence

The test traces agreed in the scope, the builds submitted on your behalf, the source code in your repository and every account in your name.

08

Maintenance after launch

Operating-system and device compatibility updates, crash monitoring and fixes, dependency upgrades and resubmission when an update ships.

How it runs

Qualify first, build second

Most of the money wasted on apps is committed before anyone writes code, on a surface nobody needed or a workflow nobody mapped. We front-load those decisions.

  1. 01

    Qualify the task

    We test whether the task repeats, whether the phone changes it, and whether an installed app is the right surface at all. If a mobile website would do the same job, we say so.

  2. 02

    Users, conditions and systems

    We write down the roles, the devices, the offline and interruption conditions, and which system is authoritative for each record the app touches.

  3. 03

    Prototype you can click

    You get the main journey working on a live link, including the staff side, so the scope is agreed from something real before the build is committed.

  4. 04

    Build, integrate and test

    We build the approved scope in React Native unless a feature needs native code, connect the integrations whose access and terms are confirmed, and test the exception paths on representative devices.

  5. 05

    Release and hand over

    Accounts are set up in your name, certificates and signing prepared, review builds distributed, submissions made on your behalf and the code handed to your repository.

  6. 06

    Maintain

    After launch we keep the app current against operating-system changes, monitor crashes, upgrade dependencies and resubmit when an update ships.

Proof

Work you can click through

PantryCue is our own React Native app, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build; it is not on the App Store or Google Play. HORIZON 2026 is a concept prototype, not client work. Its attendee app and door check-in console demonstrate the interfaces, roles and state changes an event app needs, and both run as web applications.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

App stores

The accounts stay in your name

Your business owns the Apple Developer and Google Play accounts. We set them up in your name, prepare certificates and signing, and submit builds for you.

  • Apple Developer and Google Play account setup in your name
  • Certificates, signing and provisioning
  • TestFlight and internal test tracks for review builds
  • Store listing preparation and submission on your behalf

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about mobile apps

Straight answers to what people ask before they commit. Anything else, message us.

Do we need an app, or would a mobile website do?

A website is the honest answer more often than the industry admits. An installed app is worth investigating when you need notifications people receive, camera or location access, a saved identity across visits, or genuine use without a signal. When none of those apply, a responsive website reaches the same people with nothing to install and nothing to update. If your idea reads like a website, we will tell you.

What does an app cost?

We publish website packages openly on the pricing page, but an app is quoted against its scope rather than sold as a package. The number moves with how many user roles exist, how many systems it connects to, how much of the work is the staff side, and how much testing the exception paths need. The quickest route to a real figure is a scoped conversation.

How long does it take?

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed. Apps carry one step we do not control: submitting to the stores and waiting for their review, which sits outside our timeline and is worth planning around.

Can we see an app you have published?

Not yet, and we would rather say so than imply otherwise. Nothing we have built is on the App Store or Google Play. Our own PantryCue app is the closest answer: React Native, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build. Alongside it, the HORIZON 2026 concept adds an attendee app and a door check-in console that run as web applications. More app samples are being built and will be added here.

Who owns the Apple and Google accounts?

Your business does. We set up the Apple Developer and Google Play accounts in your name, prepare the certificates and signing, run TestFlight and internal test tracks for review builds, and submit on your behalf. If you move to another provider later, the accounts and the listings stay with you.

Android, iOS, or both?

Usually both, from one codebase. Cross-platform React Native is our default, so a single build serves Android and iOS, and we use native Swift or Kotlin when a feature genuinely needs it. The decision should follow the devices your users actually hold and the capabilities the app requires.

What happens after launch?

Apps need upkeep that websites do not, because the operating systems move underneath them. We cover operating-system and device compatibility updates, crash monitoring and fixes, dependency and SDK upgrades, and resubmission when an update ships. It is scoped per project and quoted with the work.

Where to go next

Sources

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.