I still don’t think they’ve fixed the code duplication problem. My apps tend to have a bunch of relatively heavy components that are reused across several different pages. This means importing them into each page that uses them, resulting in N copies of code that really only needs to be in one place.
As I understand it, the only real hope for addressing this would involve hoisting stuff that is used in multiple places into a “commons chunk”, at which point we have basically reinvented the monolithic app module, adding additional complexity for not a whole lot of benefit.
Which brings me to the PITA factor. There is a lot of boilerplate code involved in declaring all the lazy-loading modules, and things get especially tedious when you have services like ngx-translate and font-awesome which I use virtually everywhere. After spending about 40 minutes wrestling with getting those features working in my first Ionic 4 port, I decided to try throwing everything back in the app module, and found that it drastically reduced my potential points of failure.
If you have an app with seriously compartmentalized code, I could see lazy loading being helpful. I’m still not convinced it’s the right default, though.