Hard👤 8-15 years 1 min read

How do you evolve a public API without breaking existing clients?

Asked inAmazonMicrosoftGoogleStripe-like
#backward compatibility#deprecation#contract#breaking change#api design
Report issue

⚡ Short Answer

Change additively: add optional fields/endpoints, never remove or repurpose existing ones, keep defaults stable, and tolerate unknown fields. For unavoidable breaks, introduce a new version, support both during a published deprecation window, and communicate via docs + Deprecation/Sunset headers.

Coffee Chat Question

Concept Made Simple

How do you evolve a public API without breaking existing clients?

🧠Mind Map Answer

Remember It Faster

Safeadd optional fields/endpoints
Breakingremove/rename/retype/make-required
Processnew version + deprecation window
SignalDeprecation/Sunset headers + docs

🔥What If?

Think Beyond the Expected

You must remove a field thousands of clients still use — what's the rollout?

Don't remove it abruptly. Mark it deprecated in docs and via Deprecation/Sunset headers, monitor who still uses it (telemetry), reach out to those consumers, keep it working through the announced window, then remove only after usage drops — ideally behind a new version.

😂Real World

Stripe/GitHub-style API longevity comes from additive evolution + clear deprecation policies; the costliest API mistakes are silent breaking changes that take down integrations.

🎯Interviewer's Expectation

Keywords they're listening for:

additive changeswhat counts as breakingtolerant readerdeprecation window + headersusage telemetry

⚠️Common Mistakes

  • Removing/renaming fields in place
  • Repurposing an existing field's meaning
  • No deprecation communication

Best Practices

  • Evolve additively; tolerate unknown fields
  • Publish + signal deprecations (Sunset header)
  • Use contract tests + usage telemetry

🔁Follow-up Questions

  • 1What is the 'tolerant reader' principle?
  • 2How do consumer-driven contract tests help?
  • 3How do you measure who still uses a deprecated field?

🧩Related Technologies

OpenAPIPact (contract testing)Deprecation/Sunset headers

Continue Learning with AI

Take this question deeper with your favourite AI assistant. Pick a depth, copy the prompt, or open it directly — AI is your learning companion, not a shortcut.

Plain-language foundations

I'm preparing for a software engineering interview and want to understand this from scratch, as a beginner.

Topic: Versioning (REST APIs)
Interview question: "How do you evolve a public API without breaking existing clients?"

Please:
1. Explain the core idea in simple, plain language, using an everyday analogy.
2. Define any technical terms you use.
3. Walk through one small, concrete example.
4. Finish with a single sentence I can easily remember.

Keep the tone friendly and assume I'm new to this topic.
Open inChatGPTGeminiClaude

Was this answer helpful?

Support our platform by exploring our recommended products.

As an Amazon affiliate, purchases through these links may earn us a small commission — at no extra cost to you. It helps keep Full Stack Interview Guru free.

Related Questions