Description
Prerequisites
- I have read the Contributing Guidelines.
- I agree to follow the Code of Conduct.
- I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
v7.x
Current Behavior
I tried migrating my current app to Angular 17 and then migrating to Standalone Ionic components. I followed the official guideline and used the automated tool for help. Then I found out that the main JS chunk suddenly became ~1.3MB (compared to the previous ~600kb).
All my modules and pages are lazy loaded and this was a surprise for me. I double checked that all instances of IonicModule
are gone and all imports come from the /standalone
path. I also double checked that I only import what is needed and where it's needed. Everything seems to be fine. The app is a mixture between modules and standalone components (if this matters).
After checking the bundle that's what I found:
As you can see - the main chink is full of Ionic components which are not tree-shaken.
Actually I could also reproduce this in a clean Ionic standalone project with the latest CLI:
The issue happens with both webpack and esbuild.
Expected Behavior
I would expect all components to be tree-shaken and bundled in their respective places away from main JS.
Steps to Reproduce
- Generate a fresh Ionic project with the latest CLI - Chose Angular and Standalone. For template chose the one with the side menu (because it has an additional lazy loaded module).
- Edit the App component by removing all Ionic components from the template, leaving the router outlet only
- Remove the imports of these components from the TS file too
- Do a production build
Code Reproduction URL
No response
Ionic Info
Ionic:
Ionic CLI : 7.1.5 (/usr/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 7.5.6
@angular-devkit/build-angular : 17.0.3
@angular-devkit/schematics : 17.0.3
@angular/cli : 17.0.3
@ionic/angular-toolkit : 9.0.0
Capacitor:
Capacitor CLI : 5.5.1
@capacitor/android : not installed
@capacitor/core : 5.5.1
@capacitor/ios : not installed
Utility:
cordova-res : not installed globally
native-run (update available: 2.0.0) : 1.7.4
System:
NodeJS : v18.17.1 (/usr/bin/node)
npm : 9.8.1
OS : Linux 6.2
Additional Information
The app has only Browser platform. It's a mixture between modules and standalone components and all routes are lazy loaded.