Replies: 10 comments 2 replies
-
P0 - Smooth MigrationThe migration from Yarn 1.0 to 2.0 was painful, and I still have that in mind. That's perhaps the most important item: whatever we do, it needs not only to have a smooth migration path, but also a clear one. We want to avoid the kind of confusion that occurred back then. One thing I think will mitigate most risks is that unlike the aforementionned migration, we now have a solid test framework that can support us and guarantee we don't ship unforeseen breaking changes. This wasn't the case before, as the 1.0 testsuites were comprised of unit tests that couldn't survive the heavy refactoring we did for 2.0. |
Beta Was this translation helpful? Give feedback.
-
P0 - Auto InstallsYou can achieve today "zero-installs" by enabling PnP and checking-in both your dependencies and the Yarn-generated Node.js dependency loader inside your repository. Because this loader uses relative paths, this setup removes the need to perform installs during branch switches or main updates. While this approach offers reliability, speed, and a streamlined developer experience, it requires adding binary artifacts to repositories. Though I once strongly advocated that Git could handle this approach, I have greater reservations after being exposed to the downsides of this approach on some very large projects. While I still think it's a simple and "good enough" strategy for many projects, I now want to explore alternative strategies that would achieve most the benefits for only a fraction of the downsides. My current plan is to introduce a new pattern, tentatively called "auto installs." In this mode - potentially as a default - Yarn would automatically install dependencies if it detects they’re out-of-sync when running Incidentally, it seems this is something that pnpm is also considering in some way. |
Beta Was this translation helpful? Give feedback.
-
P0 - Faster InstallsTo support auto installs, I believe install times must become nearly instantaneous. I have some promising ideas for achieving this but am unsure of their full feasibility. I’m working on a prototype to clarify the approach. |
Beta Was this translation helpful? Give feedback.
-
P0 - Reduced
|
Beta Was this translation helpful? Give feedback.
-
P1 - Task ManagementThe success of tools like Turbo show the value there is in having efficient task management when working with monorepo solutions. While Yarn attempts to provide a similar feature via |
Beta Was this translation helpful? Give feedback.
-
P1 - Reduced Redundancy in Dependency ManagementYarn restricts packages to only their declared dependencies, ensuring consistency in versions and stability for developers. However, this can lead to redundancy, particularly for large monorepos where multiple workspaces depend on the same packages (e.g., React). Maintaining duplicate listings can become tedious, especially if other dependencies such as One possible solution is a shared dependency concept, similar to pnpm's catalog feature. I’d like to explore whether Yarn could implement something like catalogs or an equivalent feature. |
Beta Was this translation helpful? Give feedback.
-
P1 - Corepack AlternativeWith the Node.js project reconsidering its stance on enabling Corepack by default, we’ll need to revisit our distribution strategy and decrease our reliance on third-party projects1. Whatever we do it'll for sure be compatible with the existing Footnotes
|
Beta Was this translation helpful? Give feedback.
-
P1 - Plug'n'Play v2Ever since we introduced Yarn Plug'n'Play in 2018, it remained mostly the same. The loader improved a lot, but the core concepts stayed the same, and so did the data format. Six years later I'm interested to explore evolutions we could bring to the table. One particular idea I have in mind is to leverage import maps to simplify integrations. Yarn would generate an enhanced import-map-compatible JSON file along with the classic |
Beta Was this translation helpful? Give feedback.
-
P2 - Better gitignore managementYarn now generates quite a few artifacts, and knowing which one to gitignore can be a bit of a pain. I'd like to explore ways to make this process more straightforward. My current idea is to add a |
Beta Was this translation helpful? Give feedback.
-
P2 - Release WorkflowThe release workflow introduced in Yarn 2 has been quite nice for us maintainers, but it's not as user-friendly as it could be. I'd like to spend some cycles improving it, potentially through an official GitHub Action workflow. Some ideas include:
|
Beta Was this translation helpful? Give feedback.
-
I'm opening this issue to share my vision and hear potential feedback regarding the next supermajor Yarn release. I’ve been working on a prototype intermittently for the past few months, but I expect to be able to allocate more time to it soon. Hopefully I'd like to release a first beta next summer.
Note
I mean by supermajor a release that will contain more significant changes in how we recommend to use Yarn than typical major releases (which are often prompted by technical requirements more than philosophical one; for example bumping the minimal Node.js version).
Beta Was this translation helpful? Give feedback.
All reactions