It’s been two years since our company decided we’ll pick NativeScript to create and maintain our Android App.
This was the biggest mistake our rapidly growing company made in the last 4 years. We are about to rebuild our Android app in Flutter from scratch now…
Don’t make the same mistake and forget about {NS} before it’s too late:
1. What {NS} promises is a lie
,,You can add NativeScript to an existing Angular Web project with the help of Angular CLI and NativeScript Schematics.”
To take advantage of the automated migration commands for NativeScript Angular you will need to install the Angular CLI. Run the following command:
npm install --global @angular/cli
Source: https://docs.nativescript.org/angular/code-sharing/migrating-a-web-project
Do not believe it. It won’t work just like that. Turning your website to an Android/iOS App will going to be 6 months of struggling with NativeScript.
You’ll have to learn how to use their barely working undocumented UI elements and API if you want to create more than a blue button on a white screen. Learning and understanding take months, since the docs are like 60% done, everything else takes days to find out on your own.
If you want to work instead of praying for valuable Google results, don’t use NativeScript.
2. Documentation is ridiculous
They are behind with the docs for years. They always promise that the next version’s documentation will be really finished and will be awesome and contain everything.
You wait, reload their website every day, ask them on their Slack channel, where they keep promising. Then they announce that they’ve started working on a new NativeScript version and never finish the current docs. This happened when I was upgrading to 6, then 7, and it’s happening now with version 8 too.
Don’t expect that you’ll get proper documentation ever.
You should expect instead:
- Unanswered questions on StackOverflow
- Unanswered or zero value answers (“it’s your fault…”) on GitHub
- Judging you on NativeScript Slack community instead of getting proper help
3. Performance is terrible
They promise that you’ll get a real Native App finally, but they don’t mention that it’s going to be extremely slow.
There are many GitHub issues opened about how they should improve the performance, but they don’t care at all. Usually, when you are right with a bug report, they don’t answer, just ignore you.
4. Arrogant communication
Go to their Slack channel and ask them about anything I mention above. They’ll cut you out with some trendy BS like:
,,You are too negative, I can’t help”
,,We are working on NS for 6 years, how dare you tell something is wrong?”
,,You can post a PR if you are that smart”
They are very clear about, an Opensource project can’t get a negative review, this is the nature of an Opensource project. I think this thinking led the {NS} devs to the wrong path, they only accept your opinion when you are saying positive things about NativeScript. When you are “negative” (meaning you spot out something is wrong and ask about it), they’ll attack you together and shut you up.
We are not perfect. Nobody does. But if everybody is telling me that I’m perfect, I won’t realize how should I improve myself. Right?
Quote from one of their community leaders:
Negative projections usually get back negative responses or non-responses.
The key here is the “non-responses” part, which testifies what I’m talking about. This convo is available on their Slack channel if you don’t believe me.
5. There’s no support at all
They keep telling to everybody that this is an OSS project so if you are looking for support, you are a bad-bad and stupid guy, and go away, actually why didn’t fix it on your own and sent a PR?! Then you feel bad that you asked something.
Do you know the feeling when you asked a question then you’re super anxious when you’ve got a notification you’ve got an answer? You’ll feel this all the time when you’re stuck and want to get some answers on Slack or GitHub. They will start bothering you, judge you, and tell, you are not smart enough the understand them, so shut up and do what they tell, even it has nothing to do with the support question.
6. Prepare for continuously refactoring
Every new version is like a totally new thing. When you upgrade prepare to a 100% refactoring of your code. Every new version brings a totally new approach, new module names etc etc…
Plugins won’t work either.
NativeScript is useless without some basic 3rd party plugins. You can’t even open a view to pick a file with the basic NativeScript. You’ll rely on several developers who are independent of the NativeScript community. After you spent days refactoring to the new version you’ll realize, 50% of the plugins are not compatible with the new version. A new adventure begins: going to each GitHub repos and begging for the developers to upgrade, OR you’ll finally create your own fork and maintain a plugin for yourself as I did.
Final Thoughts
I’m really sad, this project doesn’t work finally. It was one of the best concept ideas of the coder world in the last few years. I put into an extreme amount of energy and tried to help them to keep up the good work and do it on a professional level. Finally what I reached is they ignore me because I’m negative. I’m not negative, I just tell if something is wrong. When something is working I tell that too. But that doesn’t count. Living in a bubble and keep saying it’s not a bubble always ending with a huge fail.
So If you don’t want to build your company onto something that doesn’t work, just don’t do it.
UPDATE: NativeScript 8 upgrade
I’ve got a new task that I need to add the@angular/fire
package to the project.
Unfortunately, I wasn’t able to install an older firebase version, I was running into dependency issues until I upgraded my project to NativeScript 8.
After days of struggling with the versions, I’ve found a point where every dependency was satisfied and I was happy cause finally I did it, until
I wanted to build our Android app, and I’ve got 1000+ error messages as a result…
I’ve made a smaller riot on the NativeScript Discord channel because nobody was willing to answer my questions there. After I highlighted myself with whining, complaining, using sad face gifs, and basically spammed their channel finally they noticed me.
After like 3 minutes of discussing it came up, they stopped supporting their schematics, (which is an essential part of their code-sharing solution) and suddenly changed to nx
without even mentioning this in their “documentation”.
So if you have a shared-code NativeScript project, you are NOT supported anymore, and you will have to learn the whole thing from scratch OR you have to pay them to solve this issue.
From the NS Discord channel:
the previous core team really managed that before , but the current team has always been happy with using nx workspaces which xplat is built on
Basically, they officially confirmed that they support their internal team and don’t care about the developers who gave their trust in the NS team and stick around for years.
Finally, I’ve got a PM from nStudio’s head, where he offered me, he’ll continue NS development for our company for 100–120 USD / hour.
He said as well, they do this for the developers who stuck with NS all the time:
And just so you know depending on your company or your situation we can absolutely clone your repo and do it for you for an hourly rate as we do this sort of thing for people all the time
So basically, they used Progress to support them to build early versions of NS (which was cool), then they used us, the community to contribute, and now that they have a lot of desperate developers around, they want to steal their job and money.
Now I understand why they:
- have a 100% useless and misleading documentation
- are changing the core packages continuously between major versions
- act like a douchebag when you ask their help for free
Guess what? I won’t hire anybody, instead of paying 120 USD for sh*tty people, I’ll pay $25 for a good guy and redo the whole app in Kotlin and drop this mess for good.
I see how this whole project going to fail, nobody will hire these guys for the long term, and the disappointed coders are going to leave and never turn back.
Bye-bye NativeScript