The first release was the whole plan
Store submission, device coverage and updates were treated as the end rather than recurring work.
We build apps your team can keep shipping, with the store process, device testing and release path set up from the start.
Release path
Build 2.4.1
Remote config
A bad build is a switch, not a release
Mobile is not automatically right. If the job is occasional and could run in a browser, a web application avoids store review, install friction and two release cycles.
Store submission, device coverage and updates were treated as the end rather than recurring work.
Older OS versions and low-bandwidth conditions were never in the test set.
Native on both platforms doubled maintenance without anyone deciding that was the trade.
One codebase across iOS and Android where the product does not need platform-specific behaviour.
Where hardware, performance or platform integration genuinely require it, rather than by default.
A new surface on data and logic you already run.
Preparing, submitting and getting through review, including the rejections nobody plans.
Staged rollout and a way to fix a bad build without waiting for another review cycle.
Real devices, older OS versions and poor connectivity, where apps actually fail.
Where this page stops. Browser-based applications belong to web app development. A 30-day first version for a founder belongs to Moonship MVP. Broader builds belong to custom software development.
This choice is usually made on preference and paid for in maintenance. These five questions settle it more reliably.
Does it need hardware the browser cannot reach
How different are the two platforms' behaviours
How often will it change
Who maintains it in two years
Does install friction matter
Most products that arrive asking for native fit the middle column. Where the last row is a yes, we say so even though it means a smaller engagement.
Using the table above, before any design work, because it changes everything downstream.
Acceptance stated per feature, so completion is a check rather than a judgement.
Test targets from your users' actual devices, not the latest hardware.
Metadata, permissions and privacy declarations prepared before submission, not after rejection.
Staged rollout and remote configuration, so a bad build is a switch, not a review cycle.
Your team able to submit, roll out and roll back without us.
30%
Faster trip acceptances
Milo. Fleet operations, where the app was the working surface for drivers.
Conscious Chemist. Customer-facing product answers.
Read the Milo case study or see all case studies.
0
Building software since
0+
Projects delivered
0 yrs
Longest running client integration
0
Countries served
Situations rather than industries. Published work covers fleet operations, consumer health and beauty; nineteen years covers more.
Where the work happens away from a desk and the record is made afterwards.
Where the whole experience assumes a device in a hand.
Where a web system exists but is unusable on the device people actually carry.
Where the original build shipped and then nobody could safely change it.
We raise this at scoping because it changes the platform decision. Two native codebases pays it twice.
OS releases force changes whether or not your product changed. That is annual work, not project work.
Privacy declarations and permission rules shift, and non-compliance eventually removes the app.
Analytics, payments and push each age. A build with many is a build with many upgrade obligations.
The test set that was current at launch is not current two years later.
An app that nobody budgets to maintain is an app that quietly stops working, usually at the next operating system release.
We are not tied to any framework; the choice follows the decision module.
The people scoping the work do it, which is what makes an estimate mean anything.
Continuity matters more than headcount, because undocumented context lives with whoever built it.
Working sessions rather than a closing handover document, because ownership transferred at the end rarely is.
Build-versus-buy and cut-versus-keep decisions reach someone who can make them.
We publish no team-size claim. Nineteen years and 500+ projects are verified; anything more specific belongs on the team page.
Handover is a two-sided arrangement, so both halves are set out before the work starts rather than discovered at the end.
What you have when the build ends
Owned and readable, with history intact.
Not ours, which is what makes the next release yours to make.
Documented, so it can be extended rather than rebuilt.
Written with your engineers, covering staged rollout and remote configuration.
Deferred scope with reasons, so the next decision starts from the record.
Who we need from your side
Descriptions, screenshots and privacy declarations need a decision-maker, not a queue.
Or a decision that one needs building, which changes the shape of the work.
Even approximate. It sets the test targets and prevents optimising for the wrong hardware.
Because handover is only real if there is somebody to hand to.
We would rather scope down to a mobile-friendly web surface than sell a build that will not earn its keep.
An app is overhead. A mobile-friendly page in a system you run costs less and needs no store review.
Building before the decision module is answered means paying twice.
Store submission, signing and device coverage are production concerns. Before a product decision they are premature.
If nobody needs to act offline or use hardware, this is a web page and should stay one.
Mobile adds a release path with constraints the web does not have.
A fix is not live when it is merged, and review time is outside your control.
How the build accounts for it
Remote configuration and staged rollout, so urgent changes do not need a review cycle.
Some people never update, so your backend serves several app versions at once.
How the build accounts for it
Versioned interfaces and a minimum-supported-version policy agreed before launch.
Unlike a server error, you often learn about it from a store review.
How the build accounts for it
Crash reporting configured before launch and routed to whoever can act on it.
Lose them and you cannot ship an update to existing users at all.
How the build accounts for it
Keys held in your accounts, with the recovery path documented at handover.
Usually yes if cross-platform, because the marginal cost is small. Usually no if native, because it doubles a maintenance commitment before you know the product is right.
Often. It depends on whether the source, signing keys and store access are available. Those three, not the code quality, are what decide it.
You should, and we set them up that way. Where an app was previously built under someone else's account, retrieving it is the first task.
The last row of the decision table is the honest test. Where install friction is decisive, a web application is the better answer and we will say so.
Yes, and that is the usual shape. Additional senior people run through our engineering bench. Broader questions are on our FAQ.
Most mobile problems are second-release problems. Describe what users do and how often it changes, and we will say whether native, cross-platform or web is honest.