GitHub
When a GitHub build fails
Open the failed run on GitHub (the arrow next to it) and read the failing step. These are the ones seen in practice:
| Message | Cause and fix |
|---|---|
| Preflight: still the placeholder | The app's URL was never set to your real published address. Publish the site, then rebuild. |
| Preflight: returned 404 | Nothing is published at that address yet. |
| Invalid PNG signature | The logo file is not a real image. Regenerate it in the Brand tab. Newer builds repair this automatically. |
| SecKeychainItemImport failed | An empty Apple certificate secret. Either set all the signing secrets or none. |
| invalid source release: 21 | Java version mismatch — the workflow pins Java 21 for a reason; do not lower it. |
| Could not find method kotlinOptions() | Something edited android/app/build.gradle. Never patch it; the platform's workflow does not need to. |
Artifacts expire
GitHub deletes build files after a retention window. If a download says the artifact expired, run the build again — nothing is wrong.
The workflow is managed for you
Every build refreshes the workflow file from the platform before dispatching, so hand edits to it are replaced. This is deliberate: the pinned tool versions in it were each earned by debugging a real failure.