Anyone else giving up on RC0? Rolling back to Beta 11!

Would you mind posting the steps for this procedure?

Give me 15 and I’ll post what I did.

2 Likes

First things first, add your scripts to the index.html page. Don’t worry about the location, we’ll fix it later. In my scenario, I needed to include these 3 libraries that rollup doesn’t play nice with, along with font-awesome.

<head>
    ...
    <link href="css/font-awesome.min.css" rel="stylesheet">
    <script src="libs/forge.bundle.js" type="text/javascript"></script>
    <script src="libs/encoding.js" type="text/javascript"></script>
    <script src="libs/encoding-indexes.js" type="text/javascript"></script>
</head>

Next thing we do is add these three files to your project. You have some choices here. Choose your preference.

  1. Add them via npm install
  2. Download the raw JavaScript and save them to a folder. I named my libs, and put it in my src folder

Now we tell ionic to copy these files when doing a build.
Create a folder named config in your project root.
Copy the following file node_modules/@ionic/app-scripts/config/copy.config.js to this folder.
Open it up in your favourite JavaScript ide and add an entry to it like so.

{
      src: 'src/libs/', //copy all files from here
      dest: 'www/libs/' //and put them here
},
{
      src: 'node_modules/font-awesome/fonts/',
      dest: 'www/fonts/'
  },
  {
      src: 'node_modules/font-awesome/css/',
      dest: 'www/css/'
  }

Last step. Tell ionic to use your copy.config.js file rather than the default one
Crack open package.json and add an config entry. Doesn’t matter where you add it.

  "config": {
      "ionic_copy": "./config/copy.config.js"
  },

All done. Run npm run build and it will copy these javascript files to the www folder.

BUT WAIT. THERE’S MORE!!

Need to tell Typescript to ignore things. In my case I would put this at the top of my .ts file that I use these libraries in

declare var forge: any;
declare var TextEncoder: any;

You could get reeeal fancy and put all this into a single declarations.d.ts file, as mentioned here

Once all this nonsense with rollingup, tree-shaking, angular compiling, typescript definition crap is sorted out, and the authors of these fine libraries migrate from CommonJs to ES5 modules, then I’ll remove my work-around.

Hope this helps.

Links that helped me.


1 Like

I decided to try a few last more things before reverting.

I ran npm install -g ionic@latest, npm install @ionic/app-scripts and now I can run > ionic run browser and it works for me. main.js|css is being built reliably, and I’m not seeing polyfill.js fail to load some .html files. ionic serve does not work for me.

I’m unblocked for now and can move on to some styling fixes to get the RC1 looking like the Beta11 version.

Going to press on with RC…

how does one use the old build tools with the RC0 release?

2 Likes

I am feeling your frustration, we were ready to release our app in beta. RC0-1 changed our schedule drastically since it isn’t stable enough. However I think moving to RC1 will be worth it in the end. Our startup time went from 9 to 4 seconds. Animations ran smoother, transitions worked better and tap actions look more responsive.

Currently I am waiting for a solution to develop on a physical device so I don’t have to wait 4-10 minutes compiling for each code change, see this topic.

Until then I have to wait, I am sure the Ionic team does anything in their power. :slight_smile:

For me RC0 was a disaster in terms of “rollup hell”, and RC1 fixed absolutely nothing.

It feels like the product jumped back to Alpha stage and devs are busy experimenting with shiny new toys rather than preparing a real release candidate.

Rolled back to Beta 11 while failing to make external libraries work for more than 2 weeks already. Constant “we are working hard to fix that” and “we are feeling your frustration” do not work much to my greatest regret.

1 Like

It took us two weeks to transfer everything to rc0 and it was a nightmare. I’ve flooded stackoverflow with questions. I was stuck on every little imaginable things:

  • ngc compiler crashing down: AoT will bring you nightmares
  • all sorts of typescripts errors
  • rollup config for external library

All I can say is: Just keep on pushing.

Or what Churchill said: If You’re Going Through Hell, Keep Going

Good luck!

I’m having similar problems. And RC1 does not fix anything either. Ionic serve dos not even work on a fresh started sidemenu ionic project. This is just ridiculous. How can this be a release candidate ?

I can’t get past 404 errors in ionic serve that seems to indicate that some file just don’t get generated for some unknown reasons as the compiler is not complaining about anything… How can we fix things that are not even reported by the compiler. This is just absurd !

Personally I have 2 app built with Ionic 2 latest beta in production in the Google Play Store working like a charm so I was really happy and exited to finally see RCs coming in. But seeing the pain and time I had making all the changes to adapt to RC and finally not being even to make it even work in Ionic serve.

I’m really pissed at the Ionic 2 team right now !

Arnaud

Personally I’ve avoided using beta for anything serious precisely because it was in beta. Saying we’ll go to production with a beta version rather than upgrading to a release candidate sounds like a pretty odd decision to me to be honest.

The build step is the biggest pain point right now but the latest Ionic 2 RC Weekend Updates say

Based on feedback, we are strongly considering adding Webpack support into app-scripts again, as we believe we can produce a small enough bundle size that boots quickly, which we didn’t believe was possible before.

If you’re interested in tracking that progress, please follow this Pull Request on ionic-app-scripts.

so hopefully that will improve the save/build/refresh cycle.

@mirkonasato you are right but you are completly missing the point here ! What we are all saying here is that the latest beta is more production ready than the latest released candidate. Which can sound absurd but which is actually true.

Strictly speaking ionic-angular is what is at 2.0.0-rc.1. That’s in RC status as in the API is stable and only bug fixes are expected. (At least I hope that’s what it means.) The build scripts are separate packages, like @ionic/app-scripts is at 0.0.34.

In theory you could set up your own project with whatever build system you like and use ionic-angular as a dependency. In practice that’s pretty difficult to do. (I’ve tried and haven’t yet figured out how discovering *.scss files is supposed to work.)

So it’s not surprising that people consider the build tools to be part of “Ionic” and expect the “RC” label to apply to everything. But conceptually they are separate things, and this is actually something else I’d like to see improved: make it easier to set up your own project without using the Ionic CLI, i.e. provide some documentation on how to do that.

3 Likes

I updated my Beta11 app to RC1 and followed the steps from the blog post below and everything works fine now! Thank you ionic team for a job well done and keep up the good work. You’re awesome :+1:

Ionic 2 RC Weekend Updates

P.S. The frustrations shown here by the community are just signs of how much we love this product

4 Likes

On the contrary, we were not nearly transparent enough in this release and got bit by it. We really should have released this under a flag and then wrote a lot about it and got feedback. That would have been 100x better than just releasing everything. Lesson learned.

1 Like

For SqlStorage, I know it sucks that we removed it, but it really is for the better. WebSQL is deprecated, you really shouldn’t be relying on it existing in the long term. The change we made removed our dependence on WebSQL for a SQL engine. If you want to use SQL, you’ll need to use the SQLite plugin on ionic-native which also gives you full access to the engine: http://ionicframework.com/docs/v2/native/sqlite/

Then, we moved to @ionic/storage with a simple key value API which was the original design goal of our storage stuff: https://github.com/driftyco/ionic-storage

1 Like

So, first of all, RC0 and RC1 are really only referring to Ionic Framework, not the build toolchain. With RC0, we also made a lot of changes to the build tools but they are separate projects now. That means we will continue to fix and improve and release new Ionic Framework RC’s (the components you know and love) and then stable releases, and we will continue to update app-scripts (our build tools), ionic-native, and ionic-storage separately under separate version numbers.

However, right now we are releasing app-scripts updates a lot more quickly than we release framework versions, in order to address issues.

We know this release wasn’t good enough, the team is working around the clock to fix that and we have certainly learned from this release. I’m excited about moving back to webpack because the tool is more widely used and more forgiving, and it sounds like we’ll have something out next week.

3 Likes

Any chance you could email me? max@ionic.io. The reason is that your startup time should be way faster than 4 seconds!! I’d love to take a look at your project and figure out what’s going on! :smiley:

Hey everyone, thanks so much for the feedback and again, we’re sorry for this releasing causing so many problems for people. On one hand, it’s self inflicted: rollup is a great tool that works well assuming everyone is using standard ES2015 modules and following the spec. We way overestimated how mature the module ecosystem was for modern JS modules; most JS modules today are still using commonjs as it’s the most compatible with existing browsers/tools/etc.

On the other hand, Angular 2.0.0 stable introduced the AoT compiler and ngc which we are also using which are causing problems for people. I think we’ve taken a decent amount of blame for those tools that should probably be directed at the respective Angular teams as they are somewhat out of our control. However, we do take responsibility for every tool in our toolchain and if those tools are going to cause problems then they are going to cause problems for us. We’re actively sharing feedback from you all to the Angular team on that.

Finally, I want to talk a little bit about why we made the changes to the build scripts that we made. Over the last 2-3 years, Ionic has relied on a lot of 3rd party tools: gulp, myriad npm modules, angular1/angular2, typescript, etc. etc. One thing we’ve learned from all this is that if we don’t have enough control over the tools Ionic uses underneath, then we can’t guarantee a level of stability that we need. The team was constantly dealing with dependencies breaking or changing underneath us, causing unnecessary work for things that were working fine before. That means less work going into making Ionic better.

@ionic/app-scripts was also inspired by some of the work the React team did with create-react-app, which basically wrapped up common build functionality into a single npm module so you could rely on it working in a specific way and could update the whole thing as a package instead of updating all the dependencies individually, which was always error prone.

With app-scripts and our upcoming CLI changes, we’re no longer relying on so many node modules, we’re not relying on specific build tools staying stable, and we’ll have much faster install and runtime because we are able to control every little detail.

In the long run, I think this is going to pay off for Ionic devs in a major way, though it hurts right now which sucks.

1 Like

Will this be an additional option or are you changing the whole build process back?

It took me days to get my app compatible with RC0, especially with rollup, but now everything works very well. Ok, besides one last thing: the development/build process using ionic serve is still much longer long compared to beta. A quick and dirty “development build process”, e.g. by bypassing some of the code optimization steps, would be highly appreciated.

Many of the changes required to move to RC0 were not related to rollup. ngc/AoT/Angular 2.0.0 required changes that were a bit involved and so that hasn’t changed.

Initially we’re going to keep it under a flag but considering we think it’s going to solve most of the module issues, we have no choice but to make it a default if it’s going to be a net win for the rest of the community. That is a question we are going to be asking ourselves this week.

As for the serve optimizations, do you see build dev started... in your ionic serve output, or does it say build prod? The dev flow should be a lot faster now, and a change we pushed last night means MUCH faster template builds. Make sure to update @ionic/app-scripts to see it: npm install --save-dev @ionic/app-scripts@latest

1 Like