A page can be useful without governing your implementation. That distinction matters because the search results put several kinds of material side by side: current Fluent 2 guidance, a detailed Web Components API, React documentation and training, a Blazor repository discussion, a 2020 Microsoft narrative, a token transformation tool, editorial summaries, and reconstructed exports.
Name the decision before you copy a token name or value. Are you trying to understand Fluent's token layers, theme a React v9 application, assign a DOM-scoped value in a Web Component, discover what Blazor exposes, or transform source files? Each question has a different governing source.
| Source class | Use it for | Do not treat it as | |
|---|---|---|---|
| Fluent 2 design guidance | Current official design-language guidance | Global and alias token concepts, naming, and theming intent | A complete API contract for every platform |
| Platform documentation | Official documentation for a named implementation | The documented mechanism for a named library or runtime | A portable mechanism that automatically transfers to other platforms |
| Official training | First-party implementation training | Supported styling practices and implementation context | A substitute for current package and API documentation |
| First-party historical article | Dated architectural context from Microsoft | Why Microsoft pursued cross-platform tokens and centralized theming | A current implementation contract |
| Repository discussion | Platform-specific discussion and maintainer responses | A record of platform questions, gaps, and possible usage routes | A stable public API specification |
| Official transformation tooling | Microsoft's documented token transformation project | The tool's documented input, output, and current status | Proof that a legacy build step is still required |
| Third-party editorial summary | Independent editorial interpretation | Orientation, terminology, and migration questions to investigate | Canonical values without field-level official evidence |
| Unofficial reconstruction | Third-party reconstructed artifacts and exports | Inspiration or a separately governed adaptation | Canonical Fluent tokens or verified Fluent compatibility |
Do not collapse authority into convenience
A copy-ready CSS file or DESIGN.md may be easier to use than official documentation. Ease of copying doesn't establish provenance. If the requirement is to implement Fluent, every adopted value and API needs a traceable official source for the relevant platform.
Use the Fluent 2 model only to the depth you need
Fluent 2 describes tokens as stored values for styles such as color, typography, spacing, and elevation, avoiding raw values scattered throughout an interface. For source selection, the useful distinction is between global tokens and alias tokens.
Global tokens hold the available design values. Alias tokens describe how those values are used in context, so an alias can preserve intent while resolving differently across light, dark, high-contrast, or branded themes. This model identifies the kind of decision you're making, but it doesn't tell every platform how to deliver or consume that decision.
- Use global guidance to understand the vocabulary and intended token layers.
- Use alias guidance to reason about semantic roles and theme-dependent resolution.
- Use the named platform's documentation to determine the actual API, package surface, scope, and runtime behavior.
- Leave unresolved fields unresolved. Don't fill a missing platform detail with an example from another implementation.
For example, the Web Components documentation describes values assigned to elements and CSS custom-property emission. That mechanism is evidence for Fluent UI Web Components. It doesn't show that React v9 or Blazor exposes the same objects, scoping rules, or lifecycle.
Choose the path for your platform
| React v9 | Web Components | Blazor | Custom transformation | |
|---|---|---|---|---|
| Start here | React v9 Storybook and current React package documentation | Microsoft Learn Web Components token guide | Current Fluent UI Blazor documentation and repository | Current source-token files and their declared format |
| Implementation surface | React components, theme objects, tokens, and styling utilities | FAST-based token API, DOM-scoped values, and CSS emission | Blazor library abstractions and the CSS or token access it exposes | DTCG source, chosen transformer, generated artifact, and consumer mapping |
| Do not assume | That v8 guidance, Web Components APIs, or reconstructed CSS applies | That the API transfers unchanged to React or Blazor | That a React or Web Components example names the available Blazor API | That the legacy Fluent pipeline remains necessary |
| Proof needed | Named component and states render through the intended theme path | Scoped values resolve and emitted CSS reaches the intended element | The named component consumes the intended available token or supported override | Resolved source and generated output match, then a consumer renders the expected result |
React v9
Start with the React v9 documentation surface, then confirm the package identity used by the application. The captured Storybook identifies Fluent UI React Components as the converged React library, while Microsoft's training covers themes, tokens, styling practices, and problematic overrides. Neither source supports importing the Web Components token API into a React design.
Record whether the application is actually on the v9 line. A third-party overview warns that v8 and v9 coexist and that migration between them can be substantial. Use that warning as a reason to inspect your dependency graph, not as the authority for package behavior.
Web Components
The captured results provide the most detailed implementation guide for Web Components. It covers creating tokens, setting defaults and scoped values, reading and deleting values, derived or aliased values, and CSS custom-property emission. Apply those details only when the consumer is Fluent UI Web Components and the installed package supports the documented surface.
A successful API assignment proves only that the API accepted the value. Verification still needs the intended element scope, emitted or resolved value, component state, theme, and rendered observation.
Blazor
Treat Blazor as a distinct implementation. The captured repository discussion shows developers and maintainers working through token availability, injection, styling access, and documentation. It documents a platform-specific problem, but it doesn't justify inferring a stable API from a discussion excerpt.
For a Blazor decision, record the exact package, the official API or CSS surface you can verify, and any unresolved token access. A video can demonstrate a theme workflow, but the walkthrough isn't the governing contract for your installed version.
Custom transformations
Don't begin by adding the Fluent token pipeline to a build. Its official status page says Microsoft created it for the former proprietary token format. Current token files use the W3C Design Token Community Group draft format, and the page says the pipeline is no longer required to work with them. It also marks the proprietary JSON format as not in use and the UI-library integration guide as out of date.
That doesn't mean every custom transformation disappears. It means a Fluent token file alone no longer justifies the old pipeline. Identify the actual input format first, then choose a transformer based on the output your consumer needs. Retain a legacy step only when a named output still depends on it and you can test that dependency.
Migration boundary
Don't remove a legacy step on documentation alone. Mark it as a candidate for removal, produce the same required artifact through the intended current route, compare the outputs, and verify a representative consumer before accepting the change.
Apply a provenance check before adopting an artifact
A token catalog can look complete while answering the wrong question. The DesignSystems.one page explicitly calls its displayed values illustrative and sends readers to official Fluent references for canonical values. DesignMD offers a reconstructed token set, framework exports, and a DESIGN.md. These artifacts may work as references or starting material, but their presentation doesn't establish Microsoft authority.
- 1
Identify the publisher and artifact
Record the exact URL, publisher, observation date, page status, and whether the artifact is documentation, source data, generated output, training, discussion, or editorial reconstruction.
- 2
Name the decision it may govern
State whether the source governs design-language intent, a platform API, a package contract, a transformation, or only local adaptation. If it governs none of them, keep it as reference material.
- 3
Check currentness and scope
Look for version, platform, package, deprecation, format, and outdated-documentation notices. A first-party page can still be historical or explicitly out of date.
- 4
Choose a disposition
Adopt an official artifact that matches the required platform and scope. Adapt an artifact when you deliberately own the divergence. Reference contextual material without importing it. Leave behind material whose provenance or applicability cannot support the decision.
- 5
Write the proof limit
State what the source doesn't prove. Common limits include current package support, canonical values, product adoption, rendered behavior, migration success, and accessibility conformance.
| Adopt | Adapt | Reference | Leave behind | |
|---|---|---|---|---|
| Authority | Official and applicable | Clear source, but local ownership of changes | Contextual or illustrative | Unknown, conflicting, or insufficient |
| Platform fit | Matches the named consumer | Requires a documented mapping | Helps explain a decision | Does not match the implementation surface |
| Required record | Source and version plus consumer evidence | Source, mapping, divergence, and owner | Citation and proof limit | Reason for rejection |
| Typical example | Current platform documentation | A governed local token mapping | The 2020 architecture narrative | An unattributed copy-ready token dump |
Need an original system rather than a Fluent implementation?
Identity Forge creates implementation-ready brand systems with semantic tokens and portable exports. It's an alternative source for an original visual system, not a Fluent integration or a source of canonical Fluent values.
Keep available, implemented, populated, and observed separate
Many token investigations stop too early because they record four different claims as one completed task. A token can appear in official guidance but remain absent from your platform API. A local mapper can implement it while the active theme supplies no value. The token can even resolve correctly while a local override causes the component to bypass it.
- Available: the official source or platform contract provides the token, role, or mechanism.
- Implemented: the project maps or handles that token through its selected platform path.
- Populated: the active artifact or theme supplies a resolvable value for the recorded mode and scope.
- Observed: the named consumer renders the expected result under recorded conditions.
These states prevent a common false conclusion. A missing local value doesn't prove Fluent lacks the concept, and a documented token doesn't prove your application consumes it.
Accessibility remains a separate claim
A correct token path can support high-contrast or focus behavior, but token discovery, mapping, or a clean screenshot doesn't certify accessibility. Define and run the relevant accessibility checks separately.
Copy the source-to-consumer record
Complete this record for one representative component before expanding the implementation. Write expectations before observations. If a field is unknown, mark it unresolved and assign an owner instead of guessing from another platform.
record_id: FLUENT-TOKEN-[NNN]
observed_at: 2026-11-11
status: proposed | testing | accepted | revise | blocked
source:
authority: [Microsoft Fluent 2 | platform documentation | local authority]
url: [exact source URL]
source_revision_or_date: [value or unresolved]
source_class: [design language | platform API | tooling | contextual | reconstruction]
proof_limit: [what this source does not establish]
consumer:
product_or_repository: [name]
platform: [React v9 | Web Components | Blazor | custom]
package_and_version: [exact identity]
component: [name and variant]
states: [default, hover, focus, disabled, error, selected]
theme_and_mode: [light, dark, high contrast, branded]
environment: [browser/runtime, viewport, relevant conditions]
token_path:
source_identifiers: [global and/or alias identifiers]
platform_identifiers: [API or exported names]
local_mapping: [project token, theme field, CSS property, or unresolved]
populated_value_source: [artifact and version]
local_overrides: [none | exact override locations | unresolved]
expectation:
source_intent: [what should remain true]
resolved_value_or_relationship: [expected result]
component_behavior: [expected behavior for each recorded state]
observation:
available: [yes | no | unresolved, with evidence]
implemented: [yes | no | unresolved, with evidence]
populated: [yes | no | unresolved, with evidence]
rendered: [matches | diverges | not tested, with evidence]
first_divergence: [source | transform | artifact | mapping | component | override | render | unresolved]
decision:
disposition: [adopt | adapt | reference | leave behind]
owner: [person or team]
next_action: [one bounded action]
retest_trigger: [source, package, mapping, component, theme, or environment change]The record connects authority to implementation without treating them as the same thing. It also helps locate migration disputes. If the source is correct but the generated artifact is wrong, fix the transformation. If the artifact is correct but the component is wrong, inspect project mapping, component consumption, and overrides before editing the upstream token.
Diagnose the first divergent layer
- 1
Confirm source authority
Check that the selected source governs this decision for the recorded platform, package, and date. Stop if the artifact is historical, illustrative, reconstructed, or out of scope.
- 2
Resolve the source token
Confirm the intended global or alias reference exists and resolves for the recorded theme. Record missing targets, cycles, or unresolved names rather than substituting a value.
- 3
Inspect transformation and delivery
Confirm that the expected source version produced the expected artifact. For a legacy pipeline, prove why the step remains necessary instead of assuming it's part of Fluent adoption.
- 4
Inspect platform mapping
Confirm that the project uses the intended React, Web Components, Blazor, or custom mechanism and loads the expected package or artifact version.
- 5
Inspect component consumption
Check that the named component and variant consume the intended role in every representative state. A detached wrapper or old component line can bypass an otherwise correct theme.
- 6
Inspect overrides and rendered behavior
Check local CSS, wrapper styles, scoped values, mode selectors, and approved exceptions. Compare the computed result and visible behavior with the expectation recorded before testing.
Finding a token proves that a source exists. It doesn't prove that the intended value reached a component.
Make one bounded implementation decision
Select one platform and one representative component slice. A button works well when you need default, hover, focus, disabled, and destructive or selected behavior. Choose a different component if it better represents your product's risk. Before implementation, record the official source, exact package, theme, token path, expectations, and unresolved fields.
Implement and inspect only that slice. Accept it when the authority is appropriate, the mapping is explicit, the required values are populated, and the recorded states match expectations. Revise at the first divergent layer. Block expansion when authority, package identity, or a required state remains unresolved. Only then should you repeat the path across more components.
Fluent UI token questions
Are Fluent 2 design tokens and Fluent UI Web Components tokens the same thing?
They're related but not interchangeable. Fluent 2 documents the design-language model, while the Web Components page documents a specific runtime token mechanism. Use the former for concepts and intended layers, and the latter only for the Web Components implementation it describes.
Should a React v9 project use the Web Components token API?
Don't assume so. Start with the React v9 documentation and the exact installed package. A Web Components API example doesn't establish the React theme or styling contract.
Is the Fluent UI token pipeline still required?
Not merely because the input contains Fluent tokens. Its official page says current token files use the DTCG draft format and the pipeline is no longer required to work with them. Keep a pipeline step only if a named output still depends on it and your migration evidence supports that decision.
Can I use a reconstructed Fluent DESIGN.md or CSS export?
You can use it as a reference or a locally governed adaptation. Don't present it as canonical Fluent material unless Microsoft establishes that authority. Record the reconstruction, the local owner, every deliberate divergence, and the proof limit.
Does a resolved token prove the component follows Fluent?
No. It proves one stage of the chain. You still need to verify platform mapping, component consumption, local overrides, representative states, theme conditions, and the rendered result.
Sources
- Design tokens - Fluent 2 Design System: Microsoft's Fluent 2 guidance defines global and alias token layers, alias naming, and theme contexts including light, dark, high contrast, and branded experiences.
- Fluent UI Web Components design tokens - Microsoft Learn: The Web Components documentation describes a platform-specific token API with scoped values, defaults, deletion, derivation, aliasing, and CSS custom-property emission.
- Concepts / Introduction - Docs ⋅ Storybook - Fluent UI React v9: The Fluent UI React Storybook identifies React v9 as its own component and utility implementation surface rather than a generic cross-platform token API.
- Fluent UI React Trainings: Styling best practices and icons: Microsoft's React training treats themes, tokens, styling practices, and override behavior as concerns of the React implementation layer.
- docs: explain design tokens and styling · microsoft fluentui-blazor: The Fluent UI Blazor repository discussion records platform-specific questions about token availability, access, styling, and documentation.
- How Fluent UI Unlocks the Next Generation of Microsoft 365 Experiences: Microsoft's 2020 article explains the historical cross-platform design-to-code direction and the intended role of centralized design tokens.
- Microsoft Fluent UI Design System - DesignSystems.one: The third-party overview labels its displayed values as illustrative, directs implementers to official sources for canonical values, and warns about React library and migration boundaries.
- Microsoft Fluent Design System, Tokens and DESIGN.md | DesignMD: DesignMD publishes a reconstructed Fluent-style token set, framework exports, and DESIGN.md material that is convenient to copy but is not an official Microsoft token authority.
- Fluent UI token pipeline - Microsoft Open Source: The official pipeline page says current token files use the DTCG draft format, the pipeline is no longer required to work with them, the proprietary format is not in use, and the integration guide is out of date.