Baton

Recipes

Recipes

One page per composition of what ships: the shape of a screen, the exchange, testing, UIKit, view models, porting from Relay, and the build integrations.

  • AgentsThe page a coding agent reads first: what to read, the shape of a screen, what never to write, what to run, and a review checklist.
  • Previews and testsA store without a server: a fixture committed as a response, recorded transports, a held mutation, a rule tested with a value.
  • The exchangeA challenge, a retry and a deadline over the transport's one verb, compiled in both runtimes.
  • UIKit and AppKitA handle held by a controller: the same reads, without SwiftUI.
  • Views and view modelsA Kotlin handle without a composition: a view model behind Android Views reads through snapshotFlow.
  • Derived state outside viewsA model over Observations that keeps a value computed from the store.
  • Discover once, refresh by idThe pattern for external keys: look a subject up by its natural key once, then refresh any number of them through nodes(ids:).
  • Porting from RelayRelay's words beside Baton's, in Swift and in Kotlin; what differs on purpose; what is not ported and why.
  • The compiler's command linebatonc: the command's contract for a build outside SwiftPM.
  • GradleThe Kotlin runtime from Maven Central and the compiler as a task.
  • BazelThe compiler as a toolchain and one rule over its command.