Upgrade catalyst to v1.8.0 with explicit controller names#3930
Merged
Upgrade catalyst to v1.8.0 with explicit controller names#3930
Conversation
🦋 Changeset detectedLatest commit: 5f95b8a The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
…ators Co-authored-by: dgreif <3026298+dgreif@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Update catalyst to version 1.8.0 and modify controller instances
Upgrade catalyst to v1.8.0 with explicit controller names
Feb 11, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR upgrades @github/catalyst to v1.8.0 and updates all Catalyst @controller usages to use explicit controller/custom-element names, decoupling runtime registration names from class names to support production minification.
Changes:
- Bump
@github/catalystdependency from^1.6.0to^1.8.0(and update lockfile accordingly). - Update all affected
@controllerdecorators to@controller('kebab-case-name')across Primer components and forms. - Add a changeset for the patch release noting the Catalyst upgrade / explicit naming change.
Reviewed changes
Copilot reviewed 23 out of 24 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| package.json | Updates @github/catalyst dependency to ^1.8.0. |
| package-lock.json | Locks Catalyst to 1.8.0 and updates lock metadata. |
| app/lib/primer/forms/toggle_switch_input.ts | Uses explicit @controller('toggle-switch-input'). |
| app/lib/primer/forms/toggle_switch_input.js | Keeps generated JS in sync with explicit controller name. |
| app/lib/primer/forms/primer_text_field.ts | Uses explicit @controller('primer-text-field'). |
| app/lib/primer/forms/primer_text_area.ts | Uses explicit @controller('primer-text-area'). |
| app/lib/primer/forms/primer_multi_input.ts | Uses explicit @controller('primer-multi-input'). |
| app/lib/primer/forms/primer_multi_input.js | Keeps generated JS in sync with explicit controller name. |
| app/components/primer/scrollable_region.ts | Uses explicit @controller('scrollable-region'). |
| app/components/primer/beta/nav_list_group_element.ts | Uses explicit @controller('nav-list-group'). |
| app/components/primer/beta/nav_list.ts | Uses explicit @controller('nav-list'). |
| app/components/primer/beta/details_toggle_element.ts | Uses explicit @controller('details-toggle'). |
| app/components/primer/alpha/x_banner.ts | Uses explicit @controller('x-banner'). |
| app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.ts | Uses explicit @controller('tree-view-sub-tree-node'). |
| app/components/primer/alpha/tree_view/tree_view_include_fragment_element.ts | Uses explicit @controller('tree-view-include-fragment'). |
| app/components/primer/alpha/tree_view/tree_view_icon_pair_element.ts | Uses explicit @controller('tree-view-icon-pair'). |
| app/components/primer/alpha/tree_view/tree_view.ts | Uses explicit @controller('tree-view'). |
| app/components/primer/alpha/toggle_switch.ts | Uses explicit @controller('toggle-switch'). |
| app/components/primer/alpha/select_panel_element.ts | Uses explicit @controller('select-panel'). |
| app/components/primer/alpha/segmented_control.ts | Uses explicit @controller('segmented-control'). |
| app/components/primer/alpha/action_menu/action_menu_element.ts | Uses explicit @controller('action-menu'). |
| app/components/primer/alpha/action_list.ts | Uses explicit @controller('action-list'). |
| app/components/primer/alpha/action_bar_element.ts | Uses explicit @controller('action-bar'). |
| .changeset/tiny-pianos-deny.md | Adds a patch changeset describing the Catalyst upgrade and explicit naming. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
mattcosta7
approved these changes
Feb 11, 2026
jonrohan
approved these changes
Feb 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What are you trying to accomplish?
Part of https://github.com/github/core-ux/issues/1321
Upgrades
@github/catalystto v1.8.0 and adopts explicit controller naming. This enables class name minification in production builds by decoupling component registration names from class names.Changes:
@github/catalyst^1.6.0 → ^1.8.0@controllerdecorators updated with explicit names following convention: dasherize class name, drop-elementsuffixExample:
Affected components:
primer-multi-input,primer-text-field,primer-text-area,toggle-switch-inputnav-list,details-toggle,nav-list-groupaction-bar,action-list,action-menu,scrollable-region,segmented-control,select-panel,toggle-switch,tree-view,tree-view-icon-pair,tree-view-include-fragment,tree-view-sub-tree-node,x-bannerScreenshots
N/A - No visual changes
Integration
No deployment updates required. Component tag names remain unchanged.
Risk Assessment
<primer-text-field>, etc.) unchanged. TypeScript compilation and linting verified.What approach did you choose and why?
Explicit naming in decorators is a catalyst v1.8.0 feature designed for production minification. Applied naming convention mechanically across all components to maintain consistency.
Anything you want to highlight for special attention from reviewers?
Verify tag name stability matters for your use case - all component registration names follow existing conventions (dasherized class name sans
-element).Accessibility
Merge checklist
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.