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

Proposal for switching desktop-client to vite #2084

Merged
merged 14 commits into from
Jan 11, 2024

Conversation

twk3
Copy link
Contributor

@twk3 twk3 commented Dec 14, 2023

Proposal for vite switch for #656

Why we need to switch from CRA/craco

They appear to be deprecated, and not getting their dependencies updated. That's a problem because it makes it a lot more difficult to keep actual's dependencies up-to-date. It's currently difficult to update to the latest typescript as an example.

What we want

  • something low maintenance (no ejecting react-scripts, avoid manual config of all the skeleton dependencies)
  • something well maintained, and receiving dependency updates
  • minimal deviation from existing work to begin with (either drops in nicely, or has a piece-by-piece migration path)

Pros of vite

  • One of the most popular cra replacements (along with nextjs, and remix), and as a result actively maintained and updated.
  • Was very easy to swap in and get the dev instance working
  • quick dev watches as changed files get dynamically reloaded
  • Supports swc so we aren't changing quite as much
  • vitest is based on jest, and is close to a drop in replacement
  • Final bundle size is similar, (a bit smaller) than our existing

Cons of vite

  • Still changing, major version changes mean we will be making changes while it stabilizes
  • Swaps our bundler/minimizer (to rollup), and css handing (a con vs being able to stay in the webpack ecosystem as an iteration)
  • the swc plugin doesn't do minify (there is a swc-only plugin avail that does, but the one I'm using here is the official plugin, in order to maintain good compat with rollup/vite going forward)
  • The use of esbuild and rollup fragments our monorepo (which is still using webpack)
  • Their doesn't appear to be any good chunking plugins avail in as our filesize grows
  • Doesn't really offer us an iterative migration path
    -Will need to build our own custom transform for the github action size compare (as it only works for webpack). This is outputing the stats, but we don't have a consumer.
  • There are likely to be a ton of little edge cases broken that the tests aren't catching

Speed and size

  • desktop-client bundles are a MB or two smaller with vite.
  • Production bundle speeds are smiliar, currently vite is a second slower on my machine, but some extra times is caused by the shim plugins I have put in place to match more of our old behaviour. Without the env shim vite production builds are a second faster. Once this is merged and we know we aren't moving back to craco, we can remove the shims and adjust the code.
  • Dev server is way faster. Always less than half a second with vite. With webpack, first serve is about 3 seconds, first reload is about 13 (I don't know why), and then further reloads can be as low as half a second.
    • Timed used desktop client only, for webpack using timing info from stats.json
    • I did also do some test runs with filesystem cache turned on for webpack, but that didn't change the timings on my machine (I have lots of memory on my dev machine, so the in memory caching was probably working fine)
    • Other than that first reload our current webpack setup actually isn't slow. But vite feels instant, which makes sense, it's making the browser do all the work in this mode. The moment you save your file the browser basically starts loading the change.

PR details

Major changes

  • the dev server is sending modules direct to the browser for loading, no compiling involved in dev mode (very fast, but very different)
  • rollup instead of webpack, esbuild instead of swc for minification and css (swc is still being used for transformations)
  • vitest instead of jest
  • an incredible amount of dependency changes

@trafico-bot trafico-bot bot added the 🚧 WIP label Dec 14, 2023
Copy link

netlify bot commented Dec 14, 2023

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit 755673b
🔍 Latest deploy log https://app.netlify.com/sites/actualbudget/deploys/659dc6d123adbb0008f50b1b
😎 Deploy Preview https://deploy-preview-2084.demo.actualbudget.org/
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@twk3 twk3 force-pushed the poc-desktop-client-vite branch 3 times, most recently from 0ca51ef to c0926be Compare December 14, 2023 02:23
@joel-jeremy
Copy link
Contributor

This is exciting! Took a stab before at implementing Vite bit but encountered issues with the inter-ui fonts as well as resolution errors.

Copy link
Contributor

github-actions bot commented Dec 14, 2023

Bundle Stats — desktop-client

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
15 → 0 3.08 MB → 0 B (-3.08 MB) -100%
View detailed bundle breakdown

Added

No assets were added

Removed

Asset File Size % Changed
static/js/main.js 1.43 MB → 0 B (-1.43 MB) -100%
static/js/665.chunk.js 824.28 kB → 0 B (-824.28 kB) -100%
static/media/Inter-italic.var.woff2 239.29 kB → 0 B (-239.29 kB) -100%
static/media/Inter-roman.var.woff2 221.86 kB → 0 B (-221.86 kB) -100%
static/js/231.chunk.js 117.38 kB → 0 B (-117.38 kB) -100%
static/js/wide-components.chunk.js 112.37 kB → 0 B (-112.37 kB) -100%
static/js/reports.chunk.js 77.81 kB → 0 B (-77.81 kB) -100%
static/js/narrow-components.chunk.js 43.34 kB → 0 B (-43.34 kB) -100%
static/js/553.chunk.js 13.14 kB → 0 B (-13.14 kB) -100%
static/js/473.chunk.js 13 kB → 0 B (-13 kB) -100%
static/js/resize-observer-polyfill.chunk.js 8.88 kB → 0 B (-8.88 kB) -100%
static/css/main.css 7.41 kB → 0 B (-7.41 kB) -100%
asset-manifest.json 1.92 kB → 0 B (-1.92 kB) -100%
index.html 1.69 kB → 0 B (-1.69 kB) -100%
static/media/browser-server.js 911 B → 0 B (-911 B) -100%

Bigger

No assets were bigger

Smaller

No assets were smaller

Unchanged

No assets were unchanged

Copy link
Contributor

github-actions bot commented Dec 14, 2023

Bundle Stats — loot-core

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
2 2.23 MB → 2.23 MB (-1006 B) -0.04%
Changeset
File Δ Size
node_modules/xmlbuilder/lib/XMLNode.js 🆕 +23.59 kB 0 B → 23.59 kB
node_modules/xmlbuilder/lib/XMLDocumentCB.js 🆕 +17.14 kB 0 B → 17.14 kB
node_modules/xmlbuilder/lib/XMLWriterBase.js 🆕 +15.23 kB 0 B → 15.23 kB
node_modules/xmlbuilder/lib/XMLElement.js 🆕 +9.32 kB 0 B → 9.32 kB
node_modules/xmlbuilder/lib/XMLDocument.js 🆕 +7.71 kB 0 B → 7.71 kB
node_modules/xmlbuilder/lib/XMLStreamWriter.js 🆕 +7.16 kB 0 B → 7.16 kB
node_modules/xmlbuilder/lib/XMLStringifier.js 🆕 +7.09 kB 0 B → 7.09 kB
node_modules/xmlbuilder/lib/XMLDocType.js 🆕 +5.47 kB 0 B → 5.47 kB
node_modules/xmlbuilder/lib/XMLDTDEntity.js 🆕 +3.03 kB 0 B → 3.03 kB
node_modules/xmlbuilder/lib/XMLAttribute.js 🆕 +2.61 kB 0 B → 2.61 kB
node_modules/xmlbuilder/lib/XMLCharacterData.js 🆕 +2.42 kB 0 B → 2.42 kB
node_modules/xmlbuilder/lib/XMLDTDAttList.js 🆕 +2.34 kB 0 B → 2.34 kB
node_modules/xmlbuilder/lib/XMLText.js 🆕 +2.11 kB 0 B → 2.11 kB
node_modules/xmlbuilder/lib/Utility.js 🆕 +2.1 kB 0 B → 2.1 kB
node_modules/xmlbuilder/lib/index.js 🆕 +1.75 kB 0 B → 1.75 kB
node_modules/xmlbuilder/lib/XMLDOMConfiguration.js 🆕 +1.75 kB 0 B → 1.75 kB
node_modules/xmlbuilder/lib/XMLProcessingInstruction.js 🆕 +1.74 kB 0 B → 1.74 kB
node_modules/xmlbuilder/lib/XMLDTDNotation.js 🆕 +1.73 kB 0 B → 1.73 kB
node_modules/xmlbuilder/lib/XMLNamedNodeMap.js 🆕 +1.52 kB 0 B → 1.52 kB
node_modules/xmlbuilder/lib/XMLDeclaration.js 🆕 +1.48 kB 0 B → 1.48 kB
node_modules/xmlbuilder/lib/XMLDTDElement.js 🆕 +1.29 kB 0 B → 1.29 kB
node_modules/xmlbuilder/lib/XMLComment.js 🆕 +1.21 kB 0 B → 1.21 kB
node_modules/fs-monkey/lib/util/lists.js 🆕 +1.2 kB 0 B → 1.2 kB
node_modules/xmlbuilder/lib/XMLStringWriter.js 🆕 +1.2 kB 0 B → 1.2 kB
node_modules/xmlbuilder/lib/XMLCData.js 🆕 +1.19 kB 0 B → 1.19 kB
node_modules/xmlbuilder/lib/XMLRaw.js 🆕 +1.09 kB 0 B → 1.09 kB
node_modules/fs-monkey/lib/correctPath.js 🆕 +1.08 kB 0 B → 1.08 kB
node_modules/xmlbuilder/lib/XMLDOMImplementation.js 🆕 +971 B 0 B → 971 B
node_modules/xmlbuilder/lib/XMLDummy.js 🆕 +916 B 0 B → 916 B
node_modules/xmlbuilder/lib/XMLDOMStringList.js 🆕 +603 B 0 B → 603 B
node_modules/xmlbuilder/lib/XMLNodeList.js 🆕 +560 B 0 B → 560 B
node_modules/xmlbuilder/lib/NodeType.js 🆕 +449 B 0 B → 449 B
node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js 🆕 +328 B 0 B → 328 B
node_modules/xmlbuilder/lib/DocumentPosition.js 🆕 +218 B 0 B → 218 B
node_modules/xmlbuilder/lib/WriterState.js 🆕 +155 B 0 B → 155 B
packages/node-libofx/libofx.web.js 📉 -2.63 kB (-0.03%) 8.36 MB → 8.35 MB
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNode.js 🔥 -23.59 kB (-100%) 23.59 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocumentCB.js 🔥 -17.14 kB (-100%) 17.14 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLWriterBase.js 🔥 -15.23 kB (-100%) 15.23 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLElement.js 🔥 -9.32 kB (-100%) 9.32 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocument.js 🔥 -7.71 kB (-100%) 7.71 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStreamWriter.js 🔥 -7.16 kB (-100%) 7.16 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStringifier.js 🔥 -7.09 kB (-100%) 7.09 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocType.js 🔥 -5.47 kB (-100%) 5.47 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDEntity.js 🔥 -3.03 kB (-100%) 3.03 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLAttribute.js 🔥 -2.61 kB (-100%) 2.61 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLCharacterData.js 🔥 -2.42 kB (-100%) 2.42 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDAttList.js 🔥 -2.34 kB (-100%) 2.34 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLText.js 🔥 -2.11 kB (-100%) 2.11 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/Utility.js 🔥 -2.1 kB (-100%) 2.1 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/index.js 🔥 -1.75 kB (-100%) 1.75 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js 🔥 -1.75 kB (-100%) 1.75 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js 🔥 -1.74 kB (-100%) 1.74 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDNotation.js 🔥 -1.73 kB (-100%) 1.73 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js 🔥 -1.52 kB (-100%) 1.52 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDeclaration.js 🔥 -1.48 kB (-100%) 1.48 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDElement.js 🔥 -1.29 kB (-100%) 1.29 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLComment.js 🔥 -1.21 kB (-100%) 1.21 kB → 0 B
node_modules/memfs/node_modules/fs-monkey/lib/util/lists.js 🔥 -1.2 kB (-100%) 1.2 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStringWriter.js 🔥 -1.2 kB (-100%) 1.2 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLCData.js 🔥 -1.19 kB (-100%) 1.19 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLRaw.js 🔥 -1.09 kB (-100%) 1.09 kB → 0 B
node_modules/memfs/node_modules/fs-monkey/lib/correctPath.js 🔥 -1.08 kB (-100%) 1.08 kB → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMImplementation.js 🔥 -971 B (-100%) 971 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDummy.js 🔥 -916 B (-100%) 916 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMStringList.js 🔥 -603 B (-100%) 603 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNodeList.js 🔥 -560 B (-100%) 560 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/NodeType.js 🔥 -449 B (-100%) 449 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js 🔥 -328 B (-100%) 328 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/DocumentPosition.js 🔥 -218 B (-100%) 218 B → 0 B
node_modules/xml2js/node_modules/xmlbuilder/lib/WriterState.js 🔥 -155 B (-100%) 155 B → 0 B
View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

No assets were bigger

Smaller

Asset File Size % Changed
xfo.xfo.kcab.worker.js 1014.45 kB → 1013.51 kB (-965 B) -0.09%
kcab.worker.js 1.24 MB → 1.24 MB (-41 B) -0.00%

Unchanged

No assets were unchanged

@MatissJanis
Copy link
Member

👋 Could you list out the pros/cons of the switch to vite? Do we have any performance, bundle size, DX benefits here? What cons would the switch have?

And don't get me wrong: I'm not against this move. I just want to get a better sense of the potential drawbacks of this approach.

A while ago we used to have loads of manually defined webpack files. They were a nightmare to maintain.. and upgrading webpack versions was super labour-intensive. So I made the decision to switch to react-scripts. Whilst it was not ideal - it did give us back a lot of dev capacity to focus on the product instead of maintaining build scripts.

No matter the future tool we choose: I would prefer that it is low-maintenance. So we get to spend our limited time working on the product, not the tooling around it.

@twk3
Copy link
Contributor Author

twk3 commented Dec 15, 2023

Fixed the netlify build so we can see it actually working. There is probably some better way that would allow us to keep using process.env, but currently process.env is always an empty object in a prod build, rather than being turned static)

@MatissJanis I updated the description with some goals/pros cons that I've thought of.

Of note this was just me trying a vite migration to see how it went, but it did actually go better than I was expecting, and might be worth consideration. (I'm happy to attempt a similar migration with another provider if someone wants to suggest some). My main goal is exploring ways to unlock dependency updates. react-scripts appears dead, and was getting in the way of trying a typescript upgrade. My first approach was to eject, but I did read the PRs introducing CRA back in, and craco, and agree with the desire to reduce the maintenance burden.

As a result my hope was to actually find a react-scripts replacement that was still using webpack. With swc in there, I don't see a reason to change if possible. But I wasn't able to find a popular one that was still being maintained. (things like snowpack are suggesting vite). I was actually planning to see what remix, (and still calling out to webpack from it), would look like. But a recent comment in #656 caused me to make an attempt at vite first.

I have to say, if you don't look at the yarn.lock, it actually dropped in pretty well. The big config file is mostly me trying to match the old build output and old config file. (so that this just drops into actual-server perfectly for example without any changes needed).

There are lots of downsides, when you do look at the lockfile, you can see the expanse of the behind the scenes changes this swap does. If we merged this, we would be spending the next month fixing edge cases we broke. And then ongoing, vite is still maturing, and releasing major versions somewhat frequently. We don't get those nice dependency updates along for the ride unless we also update vite. (this MR already needs a new vite update just to fix the fonts).

That being said, I do think this shows that vite is a viable option. And we will need something here in the next year when we want to update the dependencies. Let me know if there are others you want me to POC.

@glowtape
Copy link

Small comment, since I recently switched to Vite. Running Vite as dev server, it'll use esbuild, which in turn uses the React SWC plugin. In this case, minify is kinda irrelevant. If you build and bundle the project, that's all rollup instead, which doesn't use that plugin.

@joel-jeremy
Copy link
Contributor

Is there a Vite plugin to allow us to continue using process.env? I am most curious about the difference in build times and dev server reload time between the current and Vite so it would be great if we can measure that.

@twk3
Copy link
Contributor Author

twk3 commented Dec 17, 2023

Small comment, since I recently switched to Vite. Running Vite as dev server, it'll use esbuild, which in turn uses the React SWC plugin. In this case, minify is kinda irrelevant. If you build and bundle the project, that's all rollup instead, which doesn't use that plugin.

@glowtape in this MR swc is also used for transform even in build mode. This is triggered by passing a swc specific plugin the vite-react-swc plugin. No clue if there is a benefit yet. I was trying to keep the output similar to what we already have, which is using swc.

@twk3
Copy link
Contributor Author

twk3 commented Dec 17, 2023

Is there a Vite plugin to allow us to continue using process.env? I am most curious about the difference in build times and dev server reload time between the current and Vite so it would be great if we can measure that.

@joel-jeremy I went ahead and embedded one that fixes it so now process.env is working here. Of note both here, and previously, this was NOT the node process.env. (I saw a lot of stackoverflow suggestions to just dump node process env into the defines). Both CRA and vite are careful to clear out process.env. CRA just reused it for it's own env handling as well, whereas vite uses import.meta.env.

The inject plugin gets it back in there, but I was previously running into issues with the fact that vite was coming through during build and purposely replacing any instance of process.env with an empty object. https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/define.ts#L20

It's working now. Was all about timing things around when vite was messing with process.env so it didn't wipe out the shim.

Build times and size were similar to what we had before. Slightly longer on the build times (9 seconds vs 8 seconds on my machine, due to the inject plugin) And slightly smaller on the output sizes.

I haven't done any experiments with dev server times, which is where we SHOULD be getting some benefit.

@MatissJanis
Copy link
Member

Thanks for your write-up @twk3 !

Personally: as long as we can get feature parity with our current build set-up I would be in favour of switching over to Vite. It would unblock us from upgrading some outdated devtools. And I also have a hunch that it might solve #1766 .

@twk3
Copy link
Contributor Author

twk3 commented Dec 18, 2023

@MatissJanis I moved the renames over into a MR here that can be reviewed and merged if wanted: #2101 turns on the eslint rule to enforce it the (t|j)sx filename.

@twk3
Copy link
Contributor Author

twk3 commented Dec 19, 2023

Fonts are worked around now, and this has been rebased to include the renames that went in seperately. Now it's easier to review the actual changes here.

I haven't divined into why vite or its css is like this, but it's not resolving css urls relative to the node_module the css file is in. Using import directly of a scss file in the module works, but doing it via use does not.

We have some options to work around, what I've done here is just set the font path variable to go to the proper location. But we could also switch to an import from our index.tsx and drop the fonts.scss. (we would need to update inter-ui first for the import approach, as the current version would import all the fonts, vs the new version would just do the ones we use, similar to the current 'use' approach).

@twk3
Copy link
Contributor Author

twk3 commented Dec 26, 2023

After looking around and not really finding an good alternative that didn't involve a third party monitoring service, I ported and published a github action that gives us a sizecompare for rollup. https://github.com/marketplace/actions/rollup-comparison (just the webpack one, but modified to map the stats file from rollup visualizer)

I also removed the manual chunks. As the default is already patching the number that webpack had (with a bit smaller size), and maintaining a manual list seemed like a pain. I had only added them because rollup was complaining about the chunk sizes, so I've bumped up the warning threshold.

Remaining items that I know of is to look into the victory warnings, and see if I can see a dev environment load improvement.

@twk3
Copy link
Contributor Author

twk3 commented Dec 30, 2023

Tracked down the victory warnings. Looks like it's an incompatibility between babel output and rollup's PURE annotation implementation. I logged an issue with rollup here: rollup/rollup#5324

The impact (other than the warnings), is that tree shaking isn't working to remove extra code in the victory components. While nice to fix, the fact that our bundle sizes are already smaller with rollup probably makes this a non-issue for us. I'm going to take a look at filtering out these warnings for now to reduce some noise.

@twk3 twk3 changed the title [WIP]Proof of concept for switching desktop-client to vite Proposalfor switching desktop-client to vite Jan 4, 2024
@MatissJanis
Copy link
Member

Merged the electron PR. Apologies for creating merge conflicts here @twk3

- Updated to a rollup version that includes the fix
@twk3
Copy link
Contributor Author

twk3 commented Jan 9, 2024

Added one more commit. Rollup released a new version that fixed the victory warnings rollup/rollup#5324 so I was able to drop the warning suppression we had for that from the vite config

Copy link
Contributor

@joel-jeremy joel-jeremy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Awesome work!

@joel-jeremy joel-jeremy merged commit d5359a9 into actualbudget:master Jan 11, 2024
19 checks passed
@trafico-bot trafico-bot bot added ✨ Merged Pull Request has been merged successfully and removed ✅ Approved labels Jan 11, 2024
FlorianLang06 pushed a commit to FlorianLang06/actual that referenced this pull request Mar 7, 2024
* Proof of concept for switching desktop-client to vite

* Fix other packages ts tests issues

* Update jsx tests to use vitest instead of jest

* Inject our global shims properly

* Add comment regarding new plugin

* Cleanup unnessary change after rebase

* Fix inter fonts pathing

* Remove manual chunks sizes for now

Just set the limit higher

* Bring back size compare

* Suppress victory warnings

* Remove craco config now that it's not used

* Add vite basic ssl plugin

- This autogenerates self-signed certs in dev mode when HTTPS env is set
- Made to match the CRA behaviour

* Add release note

* Remove warning suppression for victory

- Updated to a rollup version that includes the fix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Merged Pull Request has been merged successfully
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants