HomeGuidesMobile app development
Mobile app development · Practical guide

Mobile App Handover Checklist: What to Get From Your Developer

A useful mobile app handover gives you the source, the access and the instructions needed to maintain the app without depending on the original developer’s laptop. Before accepting it, have an authorized maintainer build the agreed version from a fresh checkout, run the core user journey and demonstrate the next release path in a test environment. A working installed app is only one part of that delivery.

The useful takeaway

Check three things separately: what was delivered, who controls it and whether someone else can operate it. Record the evidence and unresolved exceptions; do not put passwords or private signing keys in a public handover document.

Start with an owner, access and evidence worksheet

An APK, IPA or store link shows a result. It does not tell you who can change the source, renew a service or submit an update. Use the worksheet below during a live handover, not just as a list of files to request.

“Owner” means the person or organization responsible for an asset. “Maintainer access” is the permission needed to do agreed work. Keep those separate. Document contractual rights to code and licensed materials separately too: repository access alone does not establish those rights.

Mobile app ownership and access worksheet
AssetOwner to identifyEvidence to collect
Source repositoryThe agreed product owner or organizationAuthorized maintainer can clone the release commit and read its history.
Store accounts and app recordsResponsible Apple and Google account ownersApp identity, current release and the authorized update role are confirmed.
Signing and release setupNamed release custodianDocumented protected access and a successful test release-build path.
Backend, storage and domains, if usedAccount and billing owner for each serviceService inventory, environments, renewal responsibility and working scoped access.
Designs, source artwork and licensesAgreed rights holder or license custodianEditable files and the allowed uses of third-party materials are documented.
Build and support documentationPerson responsible for keeping it currentA second maintainer follows the instructions and records remaining gaps.

For a new project, include these delivery expectations in the mobile app MVP brief. For an existing app, start with what is actually deployed rather than assuming the latest file in a shared folder is the release source.

Prove the source works away from the original laptop

Choose the exact commit or release tag being handed over. In a fresh working directory, an authorized maintainer should follow the documented setup using a test environment and fictional data. Record the required Flutter and platform-tool versions, dependency lockfile, environment configuration names, build variant and asset-generation steps where applicable.

The Flutter command-line reference documents commands such as flutter --version, flutter doctor, flutter pub get, flutter analyze and flutter test. They are useful checks, but the README must also give the project’s own build command and configuration. A project with flavors, generated files or native dependencies may need additional steps.

Do not solve a missing configuration by copying everything from the outgoing developer’s home folder. Document each required item, its purpose and its protected provisioning route. Include relevant source assets and generation instructions; exclude private credentials from the repository.

Ask the maintainer to record the source revision, tools, environment and output version. This proves the documented workflow is usable; it is not a claim that every rebuilt binary will be byte-for-byte identical. If the build fails, keep the cause and corrective step on the open-issues list rather than calling the handover complete.

Check who can sign and submit the next update

Building a debug app, creating a signed release and having permission to submit that release are different checks. Demonstrate the agreed release path without making an unapproved production change.

Release-access checks for each target platform
TargetWhat to verifyImportant boundary
Android on Google PlayPackage identity, Play Console role, upload-signing setup and a test artifactWith Play App Signing, the upload key and Google-held app signing key have different jobs.
iOS on the App StoreBundle ID, Apple team, signing configuration and authorized App Store Connect accessApp Store Connect access is not automatically access to every developer resource.
Another distribution routeThe exact signing, hosting and update process used by that routeDo not assume a Play or App Store workflow covers other distribution methods.

Google’s Play App Signing documentation distinguishes the key used to authenticate uploads from the key used to sign apps delivered to users. Establish which signing arrangement this app uses. A Google-managed app signing key is not simply a file to demand from a contractor. Arrange protected custody of the upload setup and document its recovery responsibility.

Flutter’s Android release guide explicitly warns against publishing the keystore and signing properties in source control. The handover worksheet should describe where authorized access is managed, not contain the secret values.

For iOS, Flutter’s release guide uses Xcode on macOS and the correct Apple app identity. Check the signing approach actually used by the project. Apple’s user-access documentation distinguishes individual and organization memberships and notes that certificate-related access can widen app visibility. Select appropriate permissions rather than assuming every collaborator needs an Admin role or a shared Apple Account password.

Inventory services, assets and operational decisions

List external services even when they are not visible on a screen: authentication, storage, notifications, purchases, crash reporting, advertising, email, domains and scheduled jobs. Mark anything unused explicitly. For each active service, record the environment, account owner, billing or renewal responsibility, access method and what stops working if it becomes unavailable.

Ask for configuration instructions, not an email full of production secrets. Use service invitations and scoped permissions where available. GitHub’s organization repository roles, for example, let teams assign access according to the work a collaborator needs to perform. Other account types and services have their own controls.

Include editable listing artwork, product text, third-party license records and the privacy-policy destinations the released app uses. Record who maintains accurate store disclosures when an SDK or feature changes. Identify purchase product IDs and configuration when purchases are in scope, without including payment-account credentials.

For local records or a backend, document the recovery and migration behavior you actually support. Use the local storage, backup and cloud sync worksheet when those promises are unclear. An exported report, server login or repository backup does not by itself prove that user records can be restored.

Run a small, concrete handover rehearsal

Consider a fictional reading-log app. Its agreed release saves a title and date, permits an edit and keeps the record after the app reopens. The rehearsal below tests operation and delivery, not whether new features should be added.

Fictional reading-log handover rehearsal
CheckAction by the receiving maintainerEvidence or exception to record
Fresh setupClone the agreed revision and follow the README in the test environment.Tool versions, missing steps and the resulting app version.
Core journeyCreate a fictional entry, reopen it, edit it and restart the app.The saved values and persistence behavior match the agreed example.
Automated checksRun the documented analysis and test commands.Results, what the tests cover and any accepted unresolved failures.
Update pathPrepare the agreed signed test build or archive with authorized access.Correct app identity and a documented next submission step; no unapproved release.
Support readinessLocate the service owner and instructions for a failed save.A responsible contact, troubleshooting steps and an escalation route.

Flutter distinguishes unit, widget and integration tests. Ask what the suite actually checks. A green unit-test result does not replace checking an installed app’s full journey or the platform’s permission behavior.

Use a sandbox or approved test route for purchases, notifications and server writes. Do not test deletion, billing changes or a release against production merely to demonstrate access. Record the intended delivery state clearly: source delivery, beta availability, submission and public release are separate milestones.

Finish with a sign-off record and a safe access transition

Copy the following fields into a private handover record. Each row should say “verified,” “not applicable” or “open,” with evidence or an explanation. Do not include tokens, passwords, signing keys or production user records.

  • App and release: Product name, platform identities, delivered revision and version.
  • Recipient and owners: Receiving maintainer and the responsible owner of every active account.
  • Build result: Environment, instructions used, resulting artifact and any missing steps.
  • User-journey result: Agreed test cases, actual behavior and remaining defects.
  • Release result: Protected signing access, authorized submission role and intended delivery state.
  • Operational materials: Service inventory, source designs, licenses, recovery instructions and support notes.
  • Open items: Issue, consequence, responsible person and agreed follow-up; do not silently omit a blocker.
  • Access transition: Ongoing maintainer roles, any approved access-removal steps and when to verify them.

Confirm that replacement access works before removing access still needed for an agreed transition. Review unnecessary invitations and tokens through their owning services; if a credential was shared or exposed, agree on an appropriate rotation plan and check dependent systems. Account transfers, release changes and removal of access need their own authorized steps.

Moocsoft offers Flutter mobile app development. This worksheet gives a project discussion a concrete delivery target: an app someone can maintain, with known owners and a tested workflow, rather than an unexplained bundle of files.

Common questions

Is receiving an APK or IPA enough for an app handover?

No. An installable artifact does not supply the source, account access, configuration and release instructions needed for maintenance. Verify those separately against the agreed delivery scope.

Should signing keys be included in the source repository?

Do not publish private keys or signing passwords in a repository or public handover document. Document the actual signing arrangement and provide authorized access through a protected process. With Play App Signing, Google-held app signing keys and developer-held upload keys serve different purposes.

How can I check that another developer can maintain the app?

Have an authorized maintainer follow the documented setup from a fresh checkout, run the agreed tests and user journey, and prepare the appropriate test release artifact. Record missing steps and unresolved issues.

Does repository access mean I own the app’s code?

Technical access and contractual rights are different questions. Document rights to code, designs and third-party materials in the project agreement, then verify that the required account and repository access works.

References and further reading

Published by Moocsoft, an independent Flutter development studio. Examples and worksheets are illustrative. Project scope, platform requirements and release responsibilities need to be agreed for each project.

From a brief to a project conversation

Have a mobile app idea?

Moocsoft offers Flutter mobile app development. Bring your user goal, target platforms and existing materials to discuss whether the project is a fit.