Prop Interface Stability
The commitment a component makes about its props, slots, events and emitted structure — including the parts consumers depend on that were never intended as interface.
A component's declared interface is its props and events. Its actual interface is everything a consumer can observe and depend on: the DOM structure it renders, the class names it emits, its default values, the order in which it fires events, and whether it renders synchronously.
Consumers reach for all of it. A CSS selector targeting an internal element, a test asserting on rendered markup, a layout depending on the component's intrinsic height — each turns an implementation detail into something that breaks when it changes.
The response is not to forbid it, which does not work, but to make the boundary explicit and to give consumers supported ways to do what they were reaching for. Named slots for content injection. Design tokens for theming rather than style overrides. Stable test hooks so tests do not assert on structural markup. A documented statement of which parts are contract and which are internal.
The test of whether the boundary is real: can the component be reimplemented with different internal markup without breaking any consumer? If not, the internals are the interface, whatever the documentation says.