feat(docs): RFC to clarify _unstable naming convention for public APIs
#35694
+267
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This RFC proposes deprecating and renaming all public API exports with the
_unstablesuffix in stable Fluent UI React v9 packages. The current naming convention creates confusion about API stability guarantees and blocks the introduction of truly experimental features.Problem Statement
Currently, ~62 packages export ~1,300+ APIs with the
_unstablesuffix (e.g.,useBadge_unstable,renderBadge_unstable). Despite the naming suggesting volatility, these APIs are:This creates three main issues:
_unstabledoesn't actually mean unstableProposed Solution
Three coordinated changes:
Remove
_unstablesuffix from stable APIsuseBadge_unstable→useBadgerenderBadge_unstable→renderBadgeuseBadgeStyles_unstable→useBadgeStylesMaintain backward compatibility through deprecated re-exports
Reserve
UNSTABLE_prefix (all caps) exclusively for experimental featuresMigration Support
npx @fluentui/codemods v9-remove-unstable-suffixTimeline
Is this a breaking change?
No - deprecated re-exports maintain full backward compatibility. The removal of deprecated exports in the next major release will be a breaking change following standard major version semantics.
Related Issue(s)
This RFC addresses long-standing confusion around API stability and enables clearer communication about experimental features.