25.4 · Feature flags, remote config and the release train

Because you cannot take a release back, the most valuable release tool is the ability to change behaviour after it ships. Flags decouple deploying code from exposing it, and a release train makes shipping boring.

Mental model. Ship code dark, turn it on gradually, turn it off instantly. And run releases on a schedule, so each one is small.

Flags

Kinds of flags, safe defaults, stable bucketing and clean-up.

  1. How do you design feature flags and remote config for a mobile app: flag kinds, defaults, stable percentage rollouts, consistency, security and clean-up? 25.4.1 · L5
    A flag is a value fetched from a server (or compiled in) that code reads to decide behaviour. There are different kinds, with different lifetimes. Release…

The train

Cadence, branch cuts, ownership and go/no-go for many apps.

  1. How do you run a release train for many apps: cadence, branch cuts, ownership, go/no-go criteria, hotfix lanes and shared SDK versions? 25.4.2 · L8
    A release train ships on a fixed schedule (for example every two weeks) whatever is ready, instead of waiting for features: what is not ready waits for the…

More in App Store & release engineering