Skip to content

feat(vscode): Migrate VS Code React app from Fluent UI v8 to v9 components #7588

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 16 commits into
base: main
Choose a base branch
from

Conversation

ccastrotrejo
Copy link
Contributor

Summary

  • Migrated 16 files in the VS Code React app from @fluentui/react v8 to @fluentui/react-components v9 equivalents
  • Modernizes UI components and aligns with the ongoing LESS to makeStyles migration project
  • Updated type definitions and event handler patterns for v9 compatibility

Key Changes

Component Migrations

  • Dropdown, SearchBox, Spinner → v9 equivalents with updated props
  • TextFieldInput + Field pattern
  • PrimaryButton/IconButtonButton with appearance/icon props
  • ShimmerSkeleton
  • MessageBarMessageBar with intent prop
  • SeparatorDivider
  • CalloutPopover
  • ShimmeredDetailsListDataGrid with v9 selection patterns

Type Updates

  • IDropdownOptionOption
  • Removed DropdownMenuItemType usage (simplified)
  • Updated event handler patterns for v9 API

Removed Dependencies

  • Removed initializeIcons() call (not needed in v9)
  • Cleaned up unused imports and variables

Files Changed

  • apps/vs-code-react/src/app/components/searchableDropdown/index.tsx - Complete Dropdown migration
  • apps/vs-code-react/src/app/export/workflowsSelection/workflowsSelection.tsx - DataGrid migration
  • apps/vs-code-react/src/app/export/summary/newResourceGroup.tsx - Popover + Field pattern
  • apps/vs-code-react/src/app/export/navigation/navigation.tsx - Button migration
  • Plus 12 other files with component and type updates

Test plan

  • Build completed successfully with no TypeScript errors
  • Code passes ESLint and Biome formatting checks
  • All components maintain existing functionality with v9 equivalents

🤖 Generated with Claude Code

…nents

Migrated 16 files in the VS Code React app from @fluentui/react v8 to
@fluentui/react-components v9 equivalents. This modernizes the UI components
and aligns with the ongoing LESS to makeStyles migration project.

Key component migrations:
- Dropdown, SearchBox, Spinner → v9 equivalents
- TextField → Input + Field
- PrimaryButton/IconButton → Button with appearance/icon props
- Shimmer → Skeleton
- MessageBar → MessageBar with intent prop
- Separator → Divider
- Callout → Popover
- ShimmeredDetailsList → DataGrid with v9 selection patterns

Type updates:
- IDropdownOption → Option
- Removed DropdownMenuItemType usage
- Updated event handler patterns for v9

Build verified successful with no TypeScript errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@Copilot Copilot AI review requested due to automatic review settings June 19, 2025 17:20
Copy link

github-actions bot commented Jun 19, 2025

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: feat(vscode): Migrate VS Code React app from Fluent UI v8 to v9 components
  • Issue: Title is clear, concise, and follows conventional commit format, summarizing the key change.
  • Recommendation: None, good job!

Commit Type

  • No commit type section found. The PR body uses a custom format (## Summary/## Key Changes) that omits the required commit type checklist.
  • Only one commit type should be selected from: feature, fix, refactor, perf, docs, test, chore.
  • Recommendation: Add the full Commit Type checklist to your PR body and select the appropriate type (feature) for this migration work.

Risk Level

  • No Risk Level checklist found. The body does not contain the explicit template section with only ONE option selected.
  • Recommendation: Add the Risk Level checklist from the template and select ONE (likely Medium for a broad UI migration, but not breaking core API/service contracts).

What & Why

  • Current:
    • `## Summary
  • Migrated 16 files ... from @fluentui/react v8 to @fluentui/react-components v9 equivalents
  • Modernizes UI components and aligns with the ongoing LESS to makeStyles migration project
  • Updated type definitions and event handler patterns for v9 compatibility`
  • Issue: While you describe the what/why well, the section is not under the template's required header, and the placement is inconsistent. This section must be explicitly headed with ## What & Why.
  • Recommendation: Move/rename your summary text to appear under a ## What & Why header, briefly summarizing the migration scope and motivation.

⚠️ Impact of Change

  • Section missing. Though you give affected files and high-level notes, you don't explicitly list user/developer/system impact.
  • Recommendation:
    • Users: Note if there are any visible changes in look/feel or workflow.
    • Developers: Note the new UI framework version and compatibility impacts.
    • System: Note if any performance or dependency/packaging impacts are expected.

⚠️ Test Plan

  • Testing information is present (Build completed ..., All components maintain ...), but should use the template's checklist.
  • Recommendation: Add a ## Test Plan section and use the checklist.

⚠️ Contributors

  • No contributors section present.
  • Recommendation: Add a ## Contributors section, even if left blank, and consider crediting PMs, designers, or other key reviewers.

⚠️ Screenshots/Videos

  • No screenshots/videos provided. If visual regressions or changes are significant, you might want to add them. If not, you're fine.
  • Recommendation: Add screenshots if visual changes are present or if reviewers may need context.

Summary Table

Section Status Recommendation
Title
Commit Type Add checklist with one selection (feature).
Risk Level Add risk level section/checklist. Use only one.
What & Why Move/rename explanation under correct heading as per template.
Impact of Change ⚠️ Add explicit User/Developer/System impact breakdown.
Test Plan ⚠️ Add checklist for required and optional test types.
Contributors ⚠️ Include/credit contributors section (can be blank).
Screenshots/Videos ⚠️ Add if UI has changed significantly.

Please update your PR body to follow the template strictly:

  • Add/checklist for Commit Type and Risk Level
  • Use the correct section headers (## What & Why, etc.)
  • Summarize impact for Users, Developers, and System
  • Explicitly use the Test Plan checklist from the template
  • Add contributors/credit
  • Add screenshots if possible

Once you address these, your PR will pass PR body compliance. Thank you for helping keep team communication and risk awareness clear!


Last updated: Tue, 01 Jul 2025 15:13:46 GMT

@ccastrotrejo ccastrotrejo marked this pull request as draft June 19, 2025 17:22
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates the VS Code React app from Fluent UI React v8 to Fluent UI React Components v9 by replacing v8 components with their v9 counterparts, updating imports and types, and aligning event handler patterns.

  • Renamed/aliased ThemeProvider and removed initializeIcons()
  • Replaced v8 UI components (Dropdown, Spinner, PrimaryButton, ShimmeredDetailsList, etc.) with v9 (Dropdown, Skeleton, Button, DataGrid, etc.)
  • Updated event handler signatures and type definitions (IDropdownOptionOption, MessageBarTypeintent, etc.)

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
apps/vs-code-react/src/themeProvider.tsx Aliased v8 ThemeProvider import to FluentV8ThemeProvider
apps/vs-code-react/src/main.tsx Removed obsolete initializeIcons() call
apps/vs-code-react/src/app/unitTest/index.tsx Swapped in v9 Link and tokens imports
apps/vs-code-react/src/app/export/workflowsSelection/workflowsSelection.tsx Replaced ShimmeredDetailsList/Selection with v9 DataGrid
apps/vs-code-react/src/app/components/searchableDropdown/index.tsx Migrated custom Dropdown to v9 and simplified filtering logic
Comments suppressed due to low confidence (1)

apps/vs-code-react/src/app/export/workflowsSelection/workflowsSelection.tsx:153

  • The updateSelectedWorkFlows action is not imported, which will cause a reference error at runtime. Ensure you import it from the correct Redux slice or use the intended action (updateSelectedItems).
              dispatch(updateSelectedWorkFlows({ selectedWorkflows: selectedItems }));

ccastrotrejo and others added 3 commits June 23, 2025 16:22
- Replace Fluent UI v8 GroupedList with v9 Accordion in reviewList
- Replace Shimmer with Skeleton components
- Update icons from Icon to react-icons (CheckmarkCircleRegular)
- Replace TextField with Field/Input components
- Replace ShimmeredDetailsList with DataGrid
- Replace PrimaryButton with Button component
- Update MessageBar to use intent prop instead of messageBarType
- Remove deprecated Fluent UI v8 imports and dependencies

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove obsolete reviewList helper.ts with v8 shimmer dependencies
- Update searchable dropdown to use CSS grid layout with proper gap spacing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link

❌ PR Validation Error

An error occurred while validating your PR. Please try again later or contact the maintainers.

Error: Bad control character in string literal in JSON at position 1119

ccastrotrejo and others added 7 commits June 24, 2025 14:25
- Update onOptionSelect to find and return complete SearchableDropdownOption object
- Add useCallback optimization for onOptionSelect handler
- Preserve access to key, text, and additional data properties

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…down

- Remove unused spinner component from searchableDropdown
- Add margin to searchableDropdown container
- Simplify export navigation panel button layout with flexbox
- Remove redundant CSS classes for cleaner styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants