chore: add /next subpath + (beta) release please for next components - #4251
Conversation
e4e1834 to
84cab00
Compare
There was a problem hiding this comment.
Pull request overview
This PR establishes the infrastructure for releasing EDS 2.0 components as beta versions through a new /next subpath. The implementation enables a dual release strategy where stable (EDS 1.0) and beta (EDS 2.0) components coexist in the same package but are accessed through different entry points. The PR resolves the need for a controlled beta release process while components are under active development.
Key changes:
- Added
/nextsubpath export to enable importing beta components separately from stable ones - Configured Release Please to handle dual releases with separate changelogs (stable and beta)
- Updated CI/CD workflows to detect and publish beta releases with the
@betanpm dist-tag - Created comprehensive documentation for the beta release workflow and component graduation strategy
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
packages/eds-core-react/package.json |
Adds /next export path for beta components |
packages/eds-core-react/rollup.config.js |
Adds separate build configuration for /next entry point |
packages/eds-core-react/src/index.next.ts |
Creates entry point for beta components with documentation |
packages/eds-core-react/src/components/next/index.ts |
Creates placeholder export file for future beta components |
.github/workflows/trigger_publish.yml |
Adds beta release detection and separate publish triggers for stable/beta |
.github/workflows/publish_core_react.yaml |
Updates deployment logic to handle beta releases and environment selection |
.github/release-please-config.json |
Configures dual release strategy with beta prerelease support |
.github/release-please-config.md |
Documents the dual release configuration approach |
.github/release-please-manifest.json |
Adds initial beta version tracking |
documentation/how-to/BETA_RELEASE_GUIDE.md |
Comprehensive guide for beta release workflow and graduation process |
documentation/how-to/AUTOMATED_RELEASE.md |
Updates release documentation to include beta release instructions |
packages/eds-core-react/README.md |
Adds beta installation and usage instructions |
packages/eds-core-react/CHANGELOG.next.md |
Creates separate changelog for beta releases |
packages/eds-core-react/stories/docs/EDS2.mdx |
Adds Storybook documentation page for EDS 2.0 beta components |
packages/eds-core-react/.storybook/preview.mjs |
Adds EDS 2.0 section to Storybook navigation order |
README.md |
Documents beta components section with installation and usage examples |
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
070de03 to
943dec9
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
| The EDS repository uses a **dual release strategy**: | ||
|
|
||
| - **Stable releases** (`latest` tag) -- All components EXCEPT those in `/next` | ||
| - **Beta releases** (`beta` tag) -- Only components in `src/components/next/` |
There was a problem hiding this comment.
[nitpick] According to the markdown guidelines (CodingGuidelineID: 1000004), use endash (--) instead of double hyphen (--). The markdown already uses -- correctly, but note that in rendered markdown this should display as an em dash. Consider using the proper em dash character (—) or ensure the markdown renderer handles this appropriately.
| - **Beta releases** (`beta` tag) -- Only components in `src/components/next/` | |
| - **Beta releases** (`beta` tag) – Only components in `src/components/next/` |
| export const Placeholder = ({ | ||
| text = 'EDS 2.0 Placeholder', | ||
| }: PlaceholderProps) => { | ||
| return <div data-testid="eds-placeholder">{text}</div> |
There was a problem hiding this comment.
The naming convention for CSS classes in this project uses BEM with lowercase and hyphens (per CodingGuidelineID: 1000006). While this placeholder component doesn't have a CSS class yet, when styling is added, ensure it follows the pattern .placeholder for the class name and placeholder.css for the CSS file.
|
@torleifhalseth I've opened a new pull request, #4273, to work on those changes. Once the pull request is ready, I'll request review from you. |
| "release-type": "simple", | ||
| "component": "eds-core-react-next", | ||
| "prerelease-type": "beta", | ||
| "include-component-in-tag": false |
There was a problem hiding this comment.
What is the effect of this configuration @copilot ?
|
@torleifhalseth I've opened a new pull request, #4274, to work on those changes. Once the pull request is ready, I'll request review from you. |
There was a problem hiding this comment.
This looks very nice. I just added some questions to better understand the configuration. Also tested to mention copilot to see if it can answer inline, but please answer them if you have the answer @pomfrida :D
There was a problem hiding this comment.
Do you know the effect of using different component value?
torleifhalseth
left a comment
There was a problem hiding this comment.
Great work @pomfrida . I added some comments.
| order: [ | ||
| 'Introduction', | ||
| 'EdsProvider', | ||
| 'EDS 2.0 (beta)', |
There was a problem hiding this comment.
Should this be placed furter down? 🤔 I would suggest after everything else so that we don't add beta stuff in between.
There was a problem hiding this comment.
Beta stuff will be on top under "EDS 2.0 (beta)" so it won't be in between other components, I thought it would be nice to have it on top to make it clear what we are working on and what's coming? 🤔
There was a problem hiding this comment.
Ok! Great. What about the EdsProvider?
| @@ -0,0 +1,15 @@ | |||
| 'use client' | |||
There was a problem hiding this comment.
Hopefully we don't need to limit the new components to client. We want to support SSR out of the box. This is a Next.js spesific directive that I hope we can exclude.
There was a problem hiding this comment.
Good point! Removed 'use client' from the index file. For EDS 2.0, we'll add it per component that needs it (hooks/events), this way static components can remain server components
| For design tokens (required for CSS variables): | ||
|
|
||
| ```bash | ||
| npm install @equinor/eds-tokens | ||
| ``` | ||
|
|
There was a problem hiding this comment.
I don't think we should include this part. The tokens are included (dependency) to the eds-core-react package.
| { | ||
| input: ['./src/index.next.ts'], | ||
| external: [ | ||
| /@babel\/runtime/, | ||
| 'react/jsx-runtime', | ||
| ...Object.keys({ | ||
| ...pkg.peerDependencies, | ||
| ...pkg.dependencies, | ||
| }), | ||
| ], | ||
| watch: { | ||
| clearScreen: true, | ||
| include: ['./src/**', './../tokens/**'], | ||
| }, | ||
| plugins: [ | ||
| preserveDirective(), | ||
| resolve({ extensions }), | ||
| commonjs(), | ||
| postcss({ | ||
| extensions: ['.css'], | ||
| extract: false, | ||
| }), | ||
| babel({ | ||
| babelHelpers: 'runtime', | ||
| extensions, | ||
| rootMode: 'upward', | ||
| }), | ||
| ], | ||
| output: [ | ||
| { | ||
| dir: 'dist/esm', | ||
| preserveModules: true, | ||
| preserveModulesRoot: 'src', | ||
| format: 'es', | ||
| sourcemap: isDevelopment, | ||
| }, | ||
| { file: './dist/index.next.cjs', format: 'cjs', interop: 'auto' }, | ||
| ], | ||
| }, |
There was a problem hiding this comment.
Are we duplicating the default (stable) configuration? Could parts of this be shared? @copilot
|
@torleifhalseth I've opened a new pull request, #4275, to work on those changes. Once the pull request is ready, I'll request review from you. |
Thanks for the thorough review @torleifhalseth 💯 One thing I did not address was the menu order as I would like to make it clear what's new and what's coming. I think it makes sense to keep it on top |
millus
left a comment
There was a problem hiding this comment.
Looks awesome! Great work ✨
…4251) * WIP add /next subpath + separate rollup config * WIP release please config for beta release * Automate beta releases * Add EDS 2.0 Storybook documentation * Add valid ES module index * Add placeholder to stisfy build * docs: add more documentation * Update publish workflow to check beta vs stable releases * Update links to docs * Add simple release type * Actually move the next changelog * fix: consistent cache keys and README clarification * docs: simplify git push example * docs: remove duplicate install command in README * feat: add Placeholder story with beta labeling * refactor: share rollup config, remove use client from index, cleanup README
resolves https://github.com/equinor/design-system-internal/issues/216