I agree. I just got Ionic 3 working and then hit an issue, so decided to go with Ionic 4 where everything broke. It was not an easy upgrade to Ionic 4 but I finally got it working. But now I have other issues (with trying to add a push plugin that doesn’t cause the Android build to fail).
That’s not a short list of breaking changes by any stretch. I understand the rationale in much of what you say, but this has proven to be a difficult upgrade and a lot of what was working for me before was broken. It took a lot of time to repair – even though many updates were trivial and syntax based, there were changes to life cycle events. Again, the rationale might be valid but the impact is much larger than I was ready for. And with breaking from Angular as the only supported language we risk the fragmentation of responses on how to solve issues. I hope this was all worth it because I’m sticking with it…for now
Small example of what I mean - the grid’s syntax has changed … you think it’s minor, but when the old syntax didn’t work and I didn’t understood why - I now needed to go to the docs an re-learn it. problem !.
I didn’t say that the changes were minor, but rather that they were necessary. Our most reported issues of all time surrounded startup & build times. We made the decision to get rid of Sass and use CSS in order to reduce both. In addition to that - using web components, expanding framework support, and improving performance required some syntax changes.
Specifically with the grid, since we are no longer rebuilding all of Ionic’s styles every time a change in Sass is made, there is no way to create all of the grid’s CSS column classes based on the number of columns in the grid. In order for us to maintain support for changing the number of columns in a grid, we went with properties on the grid that calculate their width based on the number of columns. This also allows us to decrease the size of the CSS for the grid drastically (which in turn helps with startup times).
The migration linter I mentioned above will detect syntax changes from v3 -> v4 and warn about them. It even automatically fixes some of the syntax issues, including with the grid. You can see the full list of rules here: https://github.com/ionic-team/v4-migration-tslint#rules. If you’re having problems remembering the new syntax, you could always write it the old way and run the linter.
We understand that the changes were more than expected, but with a major version change and massive internal refactor, there were bound to be breaking changes in order to make improvements. As I said before, we don’t plan to make any changes this drastic again since we’re now relying on web standards. Hopefully you’ll find that the changes make sense in the end.
If anyone is running into problems upgrading to Ionic 4 or finds a breaking change that isn’t documented (or any missing documentation) please create a new issue on the ionic and ionic-docs repository, respectively.
We appreciate everyone’s feedback, but I am going to close this as it is no longer a constructive conversation.