Developer Guide
Technical documentation for contributing to the Meshtastic Android and Desktop app.
Before You Open a PR
Things that trip up first-time contributors β check these before requesting review:
- Formatting passes β run
./gradlew spotlessApplyto auto-format, then verify withspotlessCheck - Detekt passes β run
./gradlew detektand fix all reported issues - All tests pass β run
./gradlew test allTests(both are needed:testcovers Android-only modules,allTestscovers KMP) - Screenshot tests pass β if you touched any Compose UI, run
./gradlew :screenshot-tests:validateFdroidDebugScreenshotTestand update reference images if needed - Proto submodule unchanged β
core/proto/is a read-only git submodule. Never modify proto files directly - Docs updated β if you changed user-visible UI, update the corresponding page under
docs/user/. TheUI & Docs GovernanceCI workflow will flag the PR if you didnβt. Add theskip-docs-checklabel if it genuinely isnβt needed - Previews updated β if you changed UI composables, update the corresponding
*Previews.ktfile and screenshot tests. The governance workflow will post an advisory. Addskip-preview-checkto dismiss - Branch naming β branches must start with
feat/,fix/,chore/,docs/,build/,ci/,refactor/,test/, ordeps/
Whatβs New for Developers
May 2026 β Measurement & Formatting β New page documenting the MetricFormatter API, locale-aware unit conversion patterns, and how to add new measurement types.
May 2026 β Testing β Compose Preview Screenshot Testing (CST) integrated: screenshot-tests/ module, @PreviewTest wrappers, CI validation, docs asset pipeline.
May 2026 β In-app documentation system added: markdown source under docs/user/ and docs/developer/ is bundled as Compose Resources and rendered via multiplatform-markdown-renderer-m3.
May 2026 β Architecture β Documented KMP module layering, Navigation 3 patterns, and feature module conventions.
May 2026 β Contributing β Established docs governance CI workflow for PRs that change UI without updating docs.