-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
[Question] Shared modules are duplicate in multi-bundle files of MF v8.2.2 above #3776
Comments
Due to bug in webpack and federation when single runtime chunk is used. Shared modules are only hoisted up to the entrypoint level, not the runtime level - causing duplication acorss entrypoints. |
I should be releaseing support for splitChunks api in next which may improve this issue for you |
Thanks @ScriptedAlchemy |
@duyphuong2101 you can try this release, i cut it with the new split chunks mods - you can see if it works better or not. |
@ScriptedAlchemy Thanks, I will try the version on my project, and whether it works well or not I will report back to you. |
Hi @ScriptedAlchemy https://github.com/duannx/mf-duplicate-bundle-size-issue/blob/master/README.md |
Are you sharing lodash as eager? Don't use eager sharing |
Hi @ScriptedAlchemy, I'm taking over for my colleague. Yes, we are using eager. We tested with I have a small concern about the Thanks in advance! |
Okay the federation package duplicaiton, this is because of how next works. We inject federation runtime into the entrypoint, i then manually use another plugin for next to hoist it into the runtime chunk, but because next uses entry routing and single runtime chunk - each entrypoint contains the runtime package. I can try and scope this down specifically for next.js by attempting to only inject federation runtime into _app.js - next is very sub-optimal unfortunately. Regarding eager use, eager:true hoists the modules to the top of the runtime, except in next where it only hoists them to the entrypoints, not to the runtime chunks - making eager true not actually eager since its sitting in the entrypoint not the webpack runtime chunk. This is a problem in the eager + multi entry + single runtime chunk, this is a problem in webpacks core. Instead of relying on eager to try and ensure dependnecy control id use a runtime plugin. With runtime plugins you can take control of the resolver logic of shared and you can force your remotes to always "pick" a certan shared module from another host/remote. Look at the nextjs internal runtime plugin for example, the runtime plugin uses resolveShare which tells all remotes to prefer the hosts react and react dom, as well and the hosts next/router share over any others provided by the system. Effectively works like what youre trying to do with eager true, which is ensure that the loaded one is used. Resolve share would let you control this deterministically. |
Thank you for that. I'll give it a try |
Hi @ScriptedAlchemy, is there any update on this issue? Thank you! |
Hi @ScriptedAlchemy, I also get the same problem. |
Does this release solve the problem? 0.0.0-next-20240424224724 |
Hi @ScriptedAlchemy , I have checked on the new version that you provided but the issue is happened. |
Hi @ScriptedAlchemy , the module-federation package is still being duplicated. I tested with the latest version The size of the module-federation package is 96KB (21KB gzipped). Tripling this size would have a significant impact. Is there any change that I can work on it? Please provide me with some instructions. Thank you for your assistance. |
This is the PR that has the code to re-enable code splitting - which would allow less duplication as it would create another chunk most likely. |
Hi guy,
By using webpack-bundle-analyzer to analyze the shell app, we can see all shared lib and @module-federation are included in the multi-bundle files. Here is what we have by analyzing the react-18-ssr example:
- In shell-app server:
- In client:
My next.config.js shell-app:
But currently, I use MF v7.0.8 it doesn't have this error
Please help me re-check the bundle of MF v8.2.2 above!
Thanks all,
Tasks
The text was updated successfully, but these errors were encountered: