skip to content

Governance & Operations

Running a system as a service: who decides, how product teams contribute, how releases and deprecations ship, and whether teams adopt it. Interviewers probe it because adoption is a process problem.

part ofDesign systems & UX foundationsoverview, primer and where to startread it →
on this pageshow

explore

questions

25

In a design system, why is a component deprecated first and removed later instead of being deleted in a single release?

level: juniorimportance: must knowfreq 38%

answer

  1. nobody breaks without warning
  2. still works, but warns
  3. time to migrate on their schedule
  4. removal is a breaking change
  5. minor to deprecate, major to remove

basics

~20 s

Deprecation keeps the component working while warning consumers and naming its replacement, giving teams a support window to migrate on their own schedule; removal comes later in a major release, so no product breaks without warning.

solid answer

~40 s

Deleting a component in one release breaks every product still using it the moment its team upgrades, with no time to plan. Deprecating first splits the change in two. The component is **marked deprecated** but keeps working, and it produces warnings and documentation notices that name the replacement and link a migration guide. Teams migrate within a published **support window**. **Removal** comes later, in a major release, because taking away public API is a backward-incompatible change. Semantic versioning backs this up: marking public API as deprecated requires a minor version increment, and its FAQ recommends at least one minor release carrying the deprecation before removal in a major. For a consumer, a deprecation notice means plan the migration now, not when removal arrives.

go deeper

for a junior

Recall the difference between deprecating and removing, and that a deprecated component still works while pointing you to its replacement and a migration guide.

for a middle

Explain why removal belongs in a major release and deprecation in a minor one under semantic versioning, and what the support window gives consuming teams.

for a senior

Show how you run the lifecycle across code and design library: warnings, docs, tracked usages and a firm removal release announced well in advance.

for a principal

Frame the deprecation lifecycle as a trust contract: predictable retirement is what keeps teams upgrading, and breaking it once costs adoption for years.

## Deprecation versus removal In a **design system**, retiring a component happens in two distinct steps: - **Deprecation** is an announcement: the component is still shipped and still works, but it is marked as on its way out, with a named replacement and a date or release after which it will be removed. - **Removal** is the actual deletion of the component from the system's packages and design library. On a travel-expense tool, for example, the old receipt uploader might be deprecated in favour of a new file-upload component that also handles multiple receipts and camera capture on mobile. For some months both exist; then the old one goes. ## What goes wrong with deleting in one release If the old uploader were simply deleted in the next release: - Every product still using it would **fail to build or render** as soon as its team upgraded. - Teams would face an **unplanned migration** in the middle of other work, often discovering it from a broken build rather than a notice. - Many teams would respond by **not upgrading** at all, which leaves them without fixes and new components and erodes the system's reach. - Some would **copy the deleted component** into their own code, creating forks that never receive fixes. The common problem is that the cost of change lands on consumers with no warning and no choice of timing. ## The two-step lifecycle 1. **Deprecate.** Mark the component as deprecated in the code package and the design library, update its documentation page with the replacement and a migration guide, and announce it in the release notes. 2. **Support window.** For a published period the component keeps working. Development-time warnings and documentation notices remind teams; the system team tracks remaining usages and helps where migration is hard. 3. **Remove.** When the window closes, delete the component in a **major release**, announced in advance, so teams that have migrated notice nothing and teams that have not can see exactly what to do. ## What semantic versioning says Many design systems version their packages with **semantic versioning** (MAJOR.MINOR.PATCH). Two of its rules shape deprecation: | Step | Semantic versioning rule | Effect | |---|---|---| | Marking a component deprecated | The minor version must be incremented when public API functionality is marked as deprecated | Consumers can adopt the release safely; nothing is removed yet | | Removing it | The major version must be incremented for any backward-incompatible change to the public API | Consumers can see from the number that the upgrade needs work | The specification's FAQ adds a recommendation: update the documentation, issue a minor release with the deprecation in place, and have **at least one minor release containing the deprecation** before the functionality is removed in a new major release, so users can transition smoothly. That is advice rather than a hard requirement, but it matches the lifecycle above. ## What a consumer should do on seeing a deprecation - **Read the notice and the migration guide**, not just the warning text. - **Plan the migration inside the support window**, ideally soon, while the system team is actively helping. - **Run any provided automated migration** and review the result, then handle the cases it flags. - **Raise blockers early**: if the replacement cannot do something the old component did, the system team needs to know before the removal date, not after. - **Do not copy the old component** into the product to keep it forever. ## Why it matters for the whole system A design system only works if consumers trust upgrades. Deprecation also has a cost for the system team: during the window it maintains two components, answers questions about both, and keeps two sets of documentation current. That cost is the price of not breaking consumers, and it is why a support window should be long enough to be fair but not open-ended. A predictable deprecation lifecycle is part of that trust: teams learn that nothing disappears without notice, a replacement and a guide, and a reasonable window. The same lifecycle applies to every platform the system ships: a native mobile package deprecates and removes components on the same pattern, and the design library marks the old component so designers stop placing it in new work.

  • Why should the design library mark a component deprecated at the same time as the code?
    Otherwise designers keep placing the old component in new designs, and engineers are handed work that uses a component they are being asked to migrate away from. Marking it in the design library, with a pointer to the replacement, stops new usages at the source while existing screens migrate.
  • Is a deprecation warning the same as a breaking change?
    No. A deprecation changes nothing about how the component works; it adds a warning and documentation. That is why semantic versioning puts it in a minor release. The breaking change is the later removal, which is why that step needs a major release and advance notice.

saying these in an interview costs you the question

  • Deprecated means the component stops working in the next release.
  • Removing a deprecated component is fine in a minor release since it was announced.
  • A deprecation notice can be ignored until the component is actually removed.
  • Deprecation only needs a changelog line; the docs and design library can stay as they are.
  • Copying the deprecated component into the app is a safe way to avoid migrating.
open as a page

What should a design system's release notes contain so a consuming product team knows what changed and whether it must act?

level: juniorimportance: must knowfreq 38%

basics

~20 s

Changes grouped by impact: first anything requiring consumer action, with the exact steps; then visible visual changes, new features and fixes, each naming the component, platforms and design-library counterpart, with links to docs and migration notes.

open as a page

In a design system, how would you measure whether product teams have actually adopted it, and why is counting package installs not enough?

level: middleimportance: must knowfreq 42%

basics

~20 s

Measure adoption from several signals: component usage in code scans and design files, the share of product UI built from system parts, detach and override rates, and consumer satisfaction surveys. An install proves only that a dependency exists.

open as a page

In a design system for an online learning platform, how do you decide whether one team's lesson countdown timer stays local or joins the system?

level: seniorimportance: must knowfreq 42%

basics

~20 s

Keep it local unless several teams need the same thing, it can be specified without one feature's business logic, and its design has settled; otherwise it stays a documented local component, built from system parts, that can be promoted later.

open as a page

In a design system for a travel-expense tool, how would you use a codemod to retire an old button component across many consuming codebases?

level: seniorimportance: must knowfreq 36%

basics

~20 s

Map the old button's options to the new one, write a syntax-aware codemod that rewrites mechanical cases and flags the rest, test it on real usages, then have teams dry-run it and track what remains.

open as a page

In a design system, what should a product engineer do when a shared component lacks a variant their feature needs?

level: juniorimportance: should knowfreq 30%

basics

~20 s

Check the docs for an existing variant or guidance first, then raise the gap through the contribution process, and meanwhile build a local composition from system tokens and primitives instead of forking or overriding the shared component.

open as a page

When a design system team scans product code for component usage, what does the scan count and what does it miss?

level: middleimportance: should knowfreq 30%

basics

~20 s

A code usage scan counts where each product imports and instantiates system components, with which options and at which version. It misses local look-alikes, heavily overridden instances, dead code, and how much rendered interface each reference represents.

open as a page

In a design system, how do the contribution tiers of fix, enhancement and new component differ in the path each follows?

level: middleimportance: should knowfreq 34%

basics

~20 s

A fix makes a component match its existing spec and needs light review; an enhancement extends an existing component's API and needs design and API review; a new component needs a proposal proving shared need before anything is built.

open as a page

What should a design system's deprecation policy define so that retiring a component never strands a consuming team?

level: middleimportance: should knowfreq 30%

basics

~20 s

Criteria for deprecating, how it is announced and marked in code and design library, a minimum support window with a known end, a replacement and migration guide first, usage tracking, and removal only in a major release.

open as a page

In design-system governance, how do centralized, federated and hybrid ownership models differ, and what does each one trade off?

level: middleimportance: should knowfreq 42%

basics

~20 s

Centralized: one system team owns and approves everything — consistent, but a bottleneck as teams multiply. Federated: product-team representatives share ownership — relevant, but slower and prone to drift. Hybrid: a core team owns foundations and approval; product teams contribute.

open as a page

In design-system governance, why should approving a breaking change require different decision rights than approving a new component?

level: middleimportance: should knowfreq 34%

basics

~20 s

Approval should scale with who bears the cost and how reversible the change is. A new component is additive and mainly commits its maintainers; a breaking change forces work on every consuming team, so their representatives must help decide.

open as a page

For a design system consumed by many product teams, what are the trade-offs between scheduled release trains and continuous releases?

level: middleimportance: should knowfreq 33%

basics

~20 s

Release trains batch changes on a fixed schedule, giving consumers predictable upgrade points and one coherent summary but delaying fixes; continuous releases ship each change as it merges, delivering fixes fast but creating upgrade noise and fragmented notes.

open as a page

How can a small design system team support dozens of consuming product teams without becoming a bottleneck?

level: middleimportance: should knowfreq 32%

basics

~20 s

Layer the support: self-service docs and an FAQ first, then a public support channel where answers stay searchable, scheduled office hours and community meetings for depth, and a single request intake triaged by a rotating team member. Recurring questions become documentation.

open as a page

In a design system, what does a rising rate of detached or overridden component instances tell the system team, and how should it respond?

level: seniorimportance: should knowfreq 26%

basics

~20 s

A rising detach or override rate means the system no longer fits a real need: a missing variant, a wrong default, a bug or unclear guidance. Segment it by component and cause, ask the teams, fix the system, re-measure.

open as a page

A customer-support ticketing tool imports design-system components in most of its files, yet much of its interface still looks hand-built; how do you measure its real UI coverage?

level: seniorimportance: should knowfreq 28%

basics

~20 s

Measure coverage as the share of the shipped, rendered interface built from system components, not the share of files importing one: sample key screens, classify regions as system-built, overridden or local, and weight screens by use.

open as a page

In a design system, product teams' contributions sit in review for weeks and teams stop contributing; how do you diagnose and fix the process?

level: seniorimportance: should knowfreq 28%

basics

~20 s

Measure where contributions stall across proposal, review, build and release, then fix that cause: a named intake owner with a response target, tiered paths for small fixes, an early proposal checkpoint, and published guidelines and templates.

open as a page

In a design system, a deprecated data table's removal release arrives with thirty usages left across five teams' apps; what do you do?

level: seniorimportance: should knowfreq 26%

basics

~20 s

Find out why each usage remains, then act by cause: fix gaps in the replacement or codemod, help with hard cases, and otherwise remove in the announced major release, since unmigrated teams can stay on the previous major briefly.

open as a page

On a government benefits application, the design-system team rejects a service team's document-upload component a month before a policy deadline; how should the disagreement be escalated and resolved?

level: seniorimportance: should knowfreq 30%

basics

~20 s

Start from a written reason against published criteria, then escalate through a known, timeboxed path — both leads, then the governance forum. Unblock the deadline with a sanctioned, time-limited local component that meets the accessibility bar, and record the decision.

open as a page

In a design system for a real-estate listings site, the design library publishes a new listing card weeks before the code ships; how do you coordinate the two releases?

level: seniorimportance: should knowfreq 27%

basics

~20 s

Treat a component change as one release with two artifacts: publish the design asset and the code together with one set of notes, or, if design must go first, mark it clearly as not yet in code and record availability per platform.

open as a page

A design system team has 120 open requests from product teams, including an urgent seat-map component for an airline booking flow; how would you triage and prioritise them?

level: seniorimportance: should knowfreq 26%

basics

~20 s

Sort requests by type first: answer questions and move them to the FAQ, rank bugs by severity with accessibility and blocking defects first, and judge feature requests by reach across teams, roadmap fit and effort. Close duplicates and decline visibly, with reasons.

open as a page

Leadership asks for one number proving the design system works; what would you tell them, and what would you report instead?

level: principalimportance: should knowfreq 22%

basics

~20 s

No single number proves a design system works, and any number made a target gets gamed. Report a small scorecard: weighted UI coverage, usage and version lag, detach and override rates, satisfaction, and the system team's service health, per product over time.

open as a page

As a product engineer using a design system, why ask your question in its public support channel instead of privately messaging a system team member?

level: juniorimportance: nice to knowfreq 18%

basics

~20 s

A public question is answered by whoever is on duty or knows the answer, stays searchable for the next person, and shows the system team where docs or components fall short; a private message depends on one person.

open as a page

Why does a design system team publish a public roadmap for its consumers, and what should that roadmap avoid promising?

level: middleimportance: nice to knowfreq 20%

basics

~20 s

A public roadmap lets consuming teams plan: build locally now or wait for the system. It cuts repeat questions and invites early feedback. It should show direction and confidence, such as now, next and later, not fixed dates it cannot keep.

open as a page

In a design system, a release changed the listing card's spacing and broke layouts in three consuming apps; how would a pre-release channel have caught it?

level: seniorimportance: nice to knowfreq 22%

basics

~20 s

A pre-release channel publishes release candidates that representative early-adopter teams run in their real apps and tests for a fixed window; the spacing breakage would surface there, get fixed, and never reach the general release.

open as a page

For a government department whose twelve service teams share one design system, how would you choose between centralized, federated and hybrid governance, and when would you change it?

level: principalimportance: nice to knowfreq 24%

basics

~20 s

Choose by maturity, scale, product diversity, funding and where consistency is non-negotiable. Often that means central authority over foundations and accessibility, federated ownership of domain components, and shifting the balance when review queues or divergence signal it.

open as a page