A working prototype shows that an idea can be demonstrated. Before real users and business operations depend on it, you need evidence that the system protects data, handles failure, supports change and has someone accountable for running it.
Moving an app from prototype to production starts with a gap assessment across the whole service. Keep useful work, identify the risks that block the intended launch, and fund the smallest credible route to operating safely. A complete rewrite is one possible outcome, not an automatic requirement.
This guide is for UK founders with a proof of concept, clickable prototype, no-code build or early MVP. It offers an engineering review framework, not a security certification or legal opinion. Products involving safety-critical decisions, regulated activity or particularly sensitive information need appropriate specialist assessment.
Define what the existing product has actually proved
Use these working definitions in the review; teams use the labels differently.
| Asset | The question it helps answer | What still needs evidence |
|---|
| Proof of concept | Can this uncertain technical idea work? | Whether it works reliably within a complete service |
| Prototype | Can people understand and use the proposed journey? | Whether the underlying operations and controls exist |
| MVP | Can a limited product test a real value hypothesis? | Whether its particular scope is supported and appropriate for real use |
| Production product | Can we deliver and maintain the intended service? | Whether that remains true as users, dependencies and risks change |
An MVP used by real customers already carries production responsibilities for that use. Calling it an experiment does not remove the consequences of losing their work or mishandling their information.
Write a launch boundary before reviewing code: intended users, critical journeys, data handled, supported devices, operating hours and excluded use cases. A private demonstration using synthetic data has a different risk profile from a public booking service accepting personal information and payments.
Build a production-readiness gap map
Ask the team to demonstrate each control against the proposed release. A policy document, screenshot or verbal assurance may help, but should not substitute for evidence that the relevant behaviour works.
| Area | Evidence to request | A practical warning sign |
|---|
| Architecture and code | Fresh build, dependency inventory, critical-flow walkthrough | Only one developer can run the app |
| Data | Model, migration rehearsal and restore record | Backups exist but nobody has restored one |
| Security | Access boundaries, abuse scenarios and review findings | Signing in is treated as the entire security model |
| Quality | Tests for essential journeys and important failure states | The demonstration covers only a successful journey |
| Operations | Useful alerts, incident ownership and service checks | A crash is discovered only when a customer complains |
| Release and recovery | Traceable build, deployment rehearsal and recovery steps | “Rollback” has no explanation of what happens to data |
| Ownership and support | Controlled accounts, runbooks and escalation arrangements | Business-critical access belongs to one person's account |
Classify findings as launch blockers, requirements before expanding access, or improvements with an agreed owner and review date. This is a proposed decision framework, not a universal scoring standard. One serious exposure cannot be averaged away by several green rows.
Check whether the code can be changed and supported
Start with a fresh checkout or the equivalent export and configuration process for a hosted builder. Can another authorised engineer produce the intended release without the original developer's laptop, undocumented files or personal credentials?
Trace a critical journey from screen to API, storage and third-party services. Look for where business rules live, how failures surface and which components share assumptions. A useful architecture makes those responsibilities understandable; a fashionable pattern name proves little by itself.
The NCSC's secure-development guidance connects maintainable code, dependency management, protected repositories, testing and vulnerability handling. Use those principles to examine how the team works, rather than treating security as a final scan.
Inventory SDKs, libraries, hosted services, licences and unsupported dependencies. Record who can update them and how you would notice a breaking change. For a no-code product, investigate the same responsibilities through the platform's actual permissions, export, integration and operational capabilities. Restricted control may be a constraint to manage or a reason to replace a component; establish which before deciding.
For Flutter-specific structure, the MVP architecture guide explores the choices in more detail. Here, the immediate question is whether the next engineer can understand, test and safely change this release.
Treat data recovery as a demonstration
Review identifiers, relationships, ownership and lifecycle rules. What prevents duplicate submissions? How are partially completed actions recognised? What happens if a payment succeeds but the app loses its connection before showing confirmation?
These are review scenarios, not a prescription for one database. Ask the implementation team to show how the chosen design handles retries, conflicting updates and reconciliation where relevant.
Rehearse schema changes with representative, appropriately protected test data. Check old and new application versions against the proposed transition. Agree how records created during a failed release will be preserved or corrected; reinstalling old code is not a complete data-recovery plan.
The NCSC's backup guidance recommends knowing how to restore a backup and checking that it contains the important data. For an application, extend that principle into a recorded recovery exercise covering the database, uploaded files, necessary configuration and access to recovery tooling.
Set business-appropriate recovery objectives: how much recent work could be lost, and how long the service could be unavailable. Record what the rehearsal actually achieved. Include permissions, encryption-key dependencies and the time needed to check restored records, rather than timing the database command alone.
Keep restore testing separate from production. A successful exercise should leave a record of the recovery point, elapsed time, missing components, verification checks and corrective actions.
Build privacy into the intended service
Map what personal information enters the product, why it is needed, where it goes, who can access it and when it should be removed. Include analytics, support tools, exports, logs and third-party integrations in that map.
The ICO's data-protection-by-design guidance places these considerations at design and throughout the lifecycle. It also explains that a data protection impact assessment is required where processing is likely to result in a high risk to people's rights and freedoms.
Ask the responsible privacy lead to confirm the applicable lawful basis, notices, retention rules, processor arrangements and assessment needs. Do not assume that a privacy-policy page, UK hosting or a consent checkbox establishes compliance.
Translate the decisions into behaviour the team can demonstrate: restricted visibility, minimum necessary collection, appropriate deletion and an operational route for handling rights requests. For services likely to be accessed by children, check the additional relevant requirements with a qualified adviser. A generic launch checklist cannot determine the legal position for every product.
Test identity, permissions and abuse boundaries
Review how users register, recover accounts, change privileges and lose access. Use separate test identities to examine whether one person can obtain another person's records or trigger an action outside their role. Include administrative and support access in that review.
Ask which expensive or sensitive operations could be repeated or automated: messages, uploads, exports, searches or third-party API calls. Set proportionate controls and a way to investigate suspected abuse. A successful login test does not establish that these boundaries hold.
Check how production secrets are stored, injected and rotated, and who can modify the release pipeline. The NCSC guidance above treats repository and pipeline protection as part of secure delivery. Record review findings and their resolution; do not describe a tool's clean report as proof that the application is secure.
Use the secure mobile development guide for a deeper review of mobile controls. The founder's responsibility at this stage is to ensure the review has a defined scope, competent ownership and an explicit decision about unresolved risks.
Cover real journeys and important failures
Select tests from the harm a failure could cause. Begin with the essential journey, then add interrupted connections, expired sessions, rejected permissions, duplicate actions, unavailable dependencies and incomplete inputs where they apply.
Flutter's testing overview distinguishes unit, widget and integration tests. Use each for the behaviour it can exercise. Business-rule tests, interface tests and end-to-end checks answer different questions, and a high coverage percentage alone does not show that a customer can complete an important task.
Include manual checks on representative devices and assistive technologies. Confirm what the selected tools can actually exercise, particularly native permission screens, notifications and platform interactions. Record device and operating-system coverage without claiming to have tested every combination.
Define the load you expect at launch and a plausible busy period. Test relevant constraints and document the conditions: dataset, request pattern, environment and external limits. Avoid converting a successful demo into an unsupported claim that the product will support an arbitrary number of users.
The startup QA checklist helps turn these concerns into a test plan with clear launch criteria.
Make failures visible and recovery specific
Monitoring should show whether people can complete the service, not merely whether a server process exists. Choose checks around failed transactions, delayed jobs, unavailable dependencies and other critical behaviour. Assign someone to receive alerts and define what they should do next.
Use diagnostic information proportionately. Review logging for sensitive content and restrict access and retention. Rehearse an incident using safe test conditions: identify the affected journey, decide whether to pause access, communicate with users and verify recovery.
Microsoft's safe-deployment guidance recommends staged exposure, health checks and explicit recovery procedures, while recognising the complexity of reversing stateful changes. Apply the principles to your environment; adopting Azure is not required.
Distinguish stopping a rollout, disabling a feature, reverting code, restoring data and correcting transactions. A feature switch may limit further use while leaving already changed records untouched. Returning an entire database to an earlier point can also discard legitimate later activity. The recovery choice needs a rehearsed explanation of these consequences.
Mobile distribution adds another constraint. Apple's phased-release documentation describes staged automatic updates, but users can manually download an update during that period. Do not treat the rollout percentage as a strict cap on exposure or a pause as recovery for devices that already installed the version. Plan compatible APIs and a route to a corrective release.
Confirm the business can operate what it owns
List repositories, cloud accounts, domains, app-store accounts, signing assets, billing contacts and critical subscriptions. Confirm appropriate organisational control, authorised access and recovery arrangements. Avoid storing passwords or secret keys in the handover document itself.
Separate operational access from legal ownership. Being able to download source code does not settle every contractual right or third-party licence restriction; have the relevant agreements reviewed when ownership is uncertain.
Ask another team member to use the runbook to build, deploy, investigate a failure and locate recovery instructions. Note where they need undocumented help. Give routine maintenance, support hours, incident escalation and dependency updates explicit owners and budget.
For a hosted builder or external platform, include the support plan, export limitations and what happens when a subscription or integration stops. A service can be suitable for production with managed dependencies, provided those responsibilities and limits are understood.
Use ten questions to make the launch decision
Bring these questions to a review with the founder, engineering lead and relevant operational or specialist owners:
- What users, journeys and data are included in this release, and what is excluded?
- Can someone else reproduce the release from controlled source and configuration?
- Can we show the essential journey working under realistic success and failure conditions?
- Have we checked who can access or change each important record and action?
- What personal information do we hold, and are the applicable privacy decisions implemented?
- Can we restore the required service and verify its data within agreed objectives?
- What happens when a deployment changes data or leaves old clients in use?
- Which signals reveal harm or failure, and who responds?
- Does the organisation control the accounts and have sufficient rights and documentation to continue?
- Which unresolved findings block launch, which constrain expansion, and who accepts the remaining risk?
Record evidence, environment, version, owner, outstanding action and review date for every material answer. Keep unknowns visible. A time-limited acceptance should identify the exposure and compensating control, not simply say “fix later”.
Choose the smallest credible path to production
Consider an illustrative booking prototype with a sound user journey but untested recovery and unclear account permissions. The next investment could be a scoped remediation and verification exercise. Rebuilding its screens would not, by itself, address those gaps.
If the platform cannot enforce required access boundaries or provide a viable data-exit route, replacement may be necessary. If a limited launch is proposed, show how its restrictions actually reduce the relevant risk and verify them. A smaller audience does not make a serious privacy or security failure acceptable.
End the assessment with a clear decision: proceed within a defined boundary, remediate and reassess, replace specific components, or pause. Keep supporting evidence and schedule another review when scope or risk changes.
To review your prototype before production, bring its current build, intended launch boundary and known constraints to a scoping conversation with FlutterCraft. Share technical access through an agreed secure process, not through a public enquiry form.
Sources checked on 30 October 2026. Review this guidance by 28 January 2027, or sooner if relevant platform, security or privacy guidance changes.