Developer Guide

Technical documentation for contributing to the Meshtastic Apple app.


Before You Open a PR

Things that trip up first-time contributors — check these before requesting review:

  • SwiftLint passes — run bash scripts/setup-hooks.sh once to install the pre-commit hook, then verify no new warnings with swiftlint lint
  • Snapshot tests pass — if you touched any SwiftUI view, run MeshtasticTests/SwiftUIViewSnapshotTests and commit updated reference PNGs
  • Protos regenerated — if the protobufs/ submodule changed, run ./scripts/gen_protos.sh and commit the generated Swift sources
  • SwiftData migration — if you added or changed any @Model type, add a new VersionedSchema and MigrationStage in MeshtasticSchema.swift
  • Docs updated — if you changed user-visible UI, update the corresponding page under docs/user/. The docs-staleness CI check will flag the PR if you didn’t. Add the skip-docs-check label if it genuinely isn’t needed.
  • Commit message — imperative mood subject line, explain what and why in the body

What’s New for Developers

May 2026SwiftData — Documented save strategy (autosave disabled, debounced saves), @Attribute(.unique) indexes, and data caps for positions/telemetry/messages. Fixed stale QueryCoreData/UpdateCoreData references.

May 2026CarPlay — Documented fetch limits and predicates on CarPlay data queries.

May 2026Deep Links — Added coreDataBrowser deep link for the SwiftData database browser.

May 2026Testing — Snapshot test conventions established: consolidated multi-state views into single combined images (light + dark pairs), use assertViewSnapshot helper with explicit width/height and transparent: true for icon snapshots.

May 2026Architecture — In-app documentation system added (003-app-docs-markdown): markdown source under docs/user/ and docs/developer/ is converted to HTML by scripts/build-docs.sh and bundled at Meshtastic/Resources/docs/.

Apr 2026Transport — Documented AccessoryManager transport extensions and connection lifecycle.

Mar 2026SwiftData — Initial SwiftData developer guide: ModelContainer setup, @Query usage, MeshPackets actor, schema migrations.


Table of contents


Copyright © 2026 Garth Vander Houwen. Distributed under the GPL v3 License.
This site uses Just the Docs, a documentation theme for Jekyll.