Skip to content
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

react-components versioning and release cycle #19106

Closed
miroslavstastny opened this issue Jul 23, 2021 · 8 comments · Fixed by #19783
Closed

react-components versioning and release cycle #19106

miroslavstastny opened this issue Jul 23, 2021 · 8 comments · Fixed by #19783

Comments

@miroslavstastny
Copy link
Member

miroslavstastny commented Jul 23, 2021

  • switch to exact versions in dependencies
  • will it work for unstable components? -> @layershifter
    • solution might be to still use ^versions and provide a resolutions generator
  • manually triggered weekly/monthly release cycle?
  • Write documentation about what partners can expect from beta: stability, whether there will be breaking changes, etc.
@JustSlone
Copy link
Collaborator

Topic to be covered in build v-team eta for update August 5th

@Hotell
Copy link
Contributor

Hotell commented Aug 5, 2021

will it work for unstable components? -> @layershifter

  • solution might be to still use ^versions and provide a resolutions generator

Can we get more context on this one folks ? 🙏 (RFC/DEMO)

@Hotell
Copy link
Contributor

Hotell commented Aug 6, 2021

linking relevant docs from the sync:

PROPOSED: All vNext package.json deps should be pinned to specific versions (no carets, etc) including react-components suite package. This makes debugging and yarn resolutions manageable and predictable. Solves current issues with duplicate versions and bisecting hell when debugging.
Ultimate goal is to have determinate packages as much as possible in partner builds. We will confirm details of yarn resolutions to ensure we do what we can. Pinned versions is a best guess at the time of meeting, open to other solutions.

With current versioning those issues are easy to introduce and difficult to avoid and with lack of support time consuming to reveal.

Should we (re)add setVersion?
PROPOSED: will first try determinate versioning, if this is still an issue, we will reconsider. Issue here was side-effects mostly.
Keep the same version for all packages and always release everything in lockstep?

RESOLVED: We will release lock step packages in vNext. Partners shipping reusable components (HVCs) will use peerDeps (per standard practices).
Manual/nightly?
(note from Elizabeth: we previously implemented beachball features which could help with some of these things, so we may want to consider trying those features before totally switching systems for now, in the interest of time)

@layershifter
Copy link
Member

will it work for unstable components? -> @layershifter

  • solution might be to still use ^versions and provide a resolutions generator

Can we get more context on this one folks ? 🙏 (RFC/DEMO)

  • Let's assume that we are using lock step versioning (all packages are bumped)
  • Let's assume that we are strict versions (no carrets)

In my app I will consume @fluentui/[email protected]:

- @fluentui/[email protected]
  - @fluentui/[email protected]
  - @fluentui/[email protected]
  # 👆 dependencies are strict

In my app I want to use @fluentui/[email protected], this component is unstable and is not exported. That gives me:

- @fluentui/[email protected]
  - @fluentui/[email protected]
  - @fluentui/[email protected]

- @fluentui/[email protected]
  - @fluentui/[email protected]
  - @fluentui/[email protected]

As versions are strict, packages cannot be deduplicated even if they are according to semver are compatible. This leads to two problems:

  • bundle size because of duplicates
  • broken components as they will use different versions of React contexts and makeStyles(), sample demo on CodeSandbox

This could be solved via resolutions with Yarn to force these packages (@fluentui/react-make-styles, @fluentui/react-shared-contexts) to 9.3, but it creates another maintenance problem as everyone who bumps @fluentui/react-components should be aware of them.

@behowell
Copy link
Contributor

8-19 update:

@levithomason
Copy link
Member

We're getting more requests to pin our internal versions during our pre-release tag phase so that compat is guaranteed for consumers.

@ling1726
Copy link
Member

In the current state the steps required to release beta are:

@ling1726
Copy link
Member

Closing since the remainder of tasks have been moved to separate issues

@microsoft microsoft locked as resolved and limited conversation to collaborators Oct 24, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants