When they introduce backwards-incompatible changes to the API, they release a new version with the current date. This ensures older integrations don't break unexpectedly.
When you first make an API request to Stripe, your account is automatically pinned to the latest available version. This means all subsequent requests from your account will use that version by default. You can override the version manually through a special request header or via their dashboard.
This is a really elegant and developer friendly approach and allows them to make changes and improve their API more frequently but at the same time, it seems to me like it's very hard to maintain internally.
How are they taking care of all the code branching internally without this becoming a total mess ?
How much overhead is involved in supporting such versioning scheme and do you think it's worth for other companies to adopt this ?