# Package structure meeting notes again **Moved into the repo--see https://github.com/microsoft/fluentui/pull/16577** OLD version below... --- --- --- Related to [RFC: Communicating new Package Structure for @fluentui/](/P5T_Br4hSZC18nBCinHkww) ## Summary Details and reasoning on all of this can be found below. Please read that before commenting. :) - Add badges (or similar) to package readmes to clarify GA/preview/dev status - Get rid of `/next` folders in converged component packages `react-{checkbox,link,slider,tabs,toggle}`: - Old (v8) component implementations move back to `react-internal` - Open question: does this mean we can/should move all the component implementations out of `react` for now? - Move prototype "converged" components to the package roots and get rid of `/next` folders - (done) Delete `react-next` for now - (In next couple months) Add notion of "insiders": - New package `@fluentui/react-insiders` exporting *only* converged components - New "Insiders" private channel within Fluent Community on Teams to communicate with internal early adoption partners - (Future note) We eventually want to export converged components from `@fluentui/react` once APIs are stable *and* old usage in suite is replaced, but this is probably not a priority in the next 6-9 months ## Details High-level question: how do we explain what's GA, preview, in development? - Consistent "badge"-like system on package readmes. Naming TBD but rough categories: - In development - Preview (converged/legacy) - Charting and maybe experiments would probably fall into the "preview (legacy)" category - Stable (converged/legacy/mixed) - Suite packages should list which components are converged or not - Deprecated - "Fluent UI Insiders" channel - Make a private Teams channel for internal partners we're working closely with - Make `@fluentui/react-insiders` with *only* the new stuff that's "80% ready"/in preview - Can do this later and should vet the name first, but this could be good to do in the next couple months - Exports will go away once they're moved to the suite - Document clearly from the start that the stability is lower, and people can consume it if they're willing to accept that potential for extra work to pick up minor versions sometimes - Either 1st or 3rd parties can use this if they're willing to accept the extra risk/work - Readme should be kept updated with status of each component - People can also use the individual component packages, but this is the "one-stop shop" for previewing converged components - Converged components will eventually be exported from `@fluentui/react`, but not until: - APIs are stable - We have tooling to help with the API migration - All references within the suite are updated - This gets nasty when props of the component are exposed within other components' props (like `buttonProps: IButtonProps`) - Notes: - Next 9 months (probably): we're not bringing anything back into the suite--just building them and working with partners to vet them - Legacy versions will move to `/compat` if still needed Make the following code moves (motivation: improve contribution story, in some ways improve consumption story) - All current v8 component implementations go back into react-internal - Checkbox - Link - Pivot - Slider - Tabs - **Open question**: should the components which were already in react (due to split-package deps) go back into react-internal? - Move "converged" components into the package roots and get rid of `/next` folders - The component packages can depend on react if needed for shared implementation parts, at least temporarily - Before release, any deps like this would need to be removed and handled with slots intead: e.g. if we haven't gotten to converge Label yet, converged Checkbox by default has built-in `<label>` as its `label` slot. But `@fluentui/react` will define and export a version of Checkbox which uses the old Label. - Delete react-next - It's not being used, causing minor confusion, and can come back later without too much trouble - ~~Move react-internal contents back into react?~~ - too high risk of doing all the work to un-split, then a few months later finding another cycle we can't break and having to do it all over again <!-- old notes, answered probably with @fluentui/react-insiders Separate but related: What's the easy way for a developer to access all+only the converged components? - This can't be `@fluentui/react` within v8 (though it will be eventually) - Maybe `@fluentui/react-next`? (TBD) - Realistically, 3rd parties building for MetaOS (starting later this year) will need some components that haven't been converged yet (in addition to the converged components) - Make react-next export ONLY converged things? Then if they need an old thing they can use react? - Make react-next export a mix of old and new? (back compat story?) - Make react export new things once they're ready? - Migration story for existing partners? -->