As many of you might have noticed I haven’t been really doing much as part of the NativeScript community for the last year and a half. Which if you are one of the very few long term community members remaining, you might have wondered why...
I was one of the earliest plugin developers, and one of the most prolific plugin developers over my tenure for NativeScript and many techniques I pioneered are used in many plugins.
I created many resources for NativeScript including writing books, spoke at conferences, blog posts, answering questions on many different sites. In addition, I created sites like:
- Images processing site (creates splash screens, icons, etc) as this used to be a very manual process...
- the NativeScript engine compatibility tables (so you knew which JS was safe to run on which iOS & Android runtimes).
- The first NativeScript plugin tracking site (automatically indexes all plugins, including new ones uploaded to NPM)
- A quick search-ability of plugins code to see how other authors do different techniques
- I even had a fully working iOS & Android Playground (called Fiddler initially then Contriver) in 2017, which I never released
I didn’t realize Progress had been also developing a playground themselves, so when I showed it to them they were like very nice, but we are releasing ours in a couple weeks, I was totally demoralized and dropped it thinking I couldn't compete with an entire team. In hindsight, I should have still released mine as mine supported many advanced things like running a android emulator _in_ the browser to do instant editing and testing. Full build servers (ios & android), full git support for private repos, easy adding plugins UI, and my favorite feature was shared sessions so you could either have multiple people edit and/or view the editor and emulator for teaching classes… Ah well, water under the bridge.
- I also created a fully encrypted v8/JSCore engines (for NativeScript app security),
- And even helped Progress build the NativeScript Market plugin site. (Been replaced by nStudio but looks the same)
- Created ProPlugins to help keep plugins funded so they will always work.
Sufficed to say, I was a champion and major support for NativeScript for the majority of its life.
When I helped found nStudio, LLC -- I made one primary mistake, I went into a split co-owner partnership. I found out too late that partnerships works well, until it doesn’t. I thought I had that covered by making it a odd numbered partnership but that also failed. I should have kept 51% ownership in the company so that no matter what happened I held the final control.
So, even with that mistake it was a great day when we started the company. My picks for partners was the great Brad Martin and the awesome Osei Fortune (aka Triniwiz). Unfortunately Osei just started doing a large project for another company so he declined or this story could have also turned out differently. I felt strongly we needed three equal partners to allow for dealing with any disagreements. So, we offered the final position to Nathan Walker. So Brad, myself and Nathan Walker started nStudio in April of 2017. We did very well as a team the first couple years.
nStudio, a couple years later managed to purchase NativeScript from Progress, which was one of the crowning achievements in my humble opinion. We founded nStudio solely because of NativeScript, and here we are purchasing it and would now have the control we needed to push it farther (nStudio has since transitioned NativeScript to OpenJS, which was a awesome move spearheaded by Nathan Walker).
Unfortunately this is where the story turned darker, conflicts started happening a bit more. I think one of the biggest conflicts was that I had started ProPlugins about 1.5 years before nStudio purchased NativeScript.
At the time of ProPlugins creation, most of nStudio supported me, in fact several of them have plugins in ProPlugins. Nathan Walker was ambivalent at best initially (or perhaps he didn’t actually support it, hard to say). At the point nStudio owned NativeScript, he was definitely against ProPlugins and thus I believe this started the majority of our conflicts because I wasn’t willing to kill one of my other companies despite the pressure he tried to exert to have me do so. Long story short, we got into a major fight in April of 2021 and after months of infighting, I asked to be bought out of the partnership and left quietly. In my humble opinion, leaving was at the time, the best for NativeScript survival as Nathan Walker really is a much better TSC chair than I ever would be. The only other choice was bringing the conflict to the community and that would have just split the remaining community and probably destroyed what little of it remained and even potentially lost a chunk of nStudio's customer base. Since then, I have mostly stayed away from anything NativeScript community wise.
I have continued to work on several NativeScript client projects (I also do Web FullStack, Frontend/Backend, Node, JS, PHP, C/C++, Rust, C#, DevOps, Security and manage several companies web servers and many other technologies). If a client asks to start a new app, in the past I would have described why I felt NativeScript was the best choice. Now, I have have to strongly recommend against NativeScript and explain that Flutter or pure native would be my top recommendations.
Not because of nStudio, or because NativeScript isn’t a great environment. I still dearly love NativeScript! It was one of the best mobile platforms, but it is now tremendously outclassed daily on ALL fronts by every single one of its competitors. For every 1,000 PR’s against Flutter or React Native – NativeScript gets a couple.
Each day it is farther and farther behind in the race. Even though Igor and Osei are some of the best developers I know, two developers competing against the teams that Google, Facebook, and Microsoft pay for React Native & Flutter work, let alone the community contributions makes it an impossible race.
They are very outmatched, and it is showing as more and more issues go unaddressed and Flutter and React Native is eating more and more of their lunch.
Since, I also try to fact based in my articles, and not just feelings lets look at the numbers. Being lazy, I only ran some numbers since the beginning of 2022. NativeScript has published in releases around a 100 PR’s across their 4 primary repos (CLI, iOS & Android Engine, & the NS common-modules). It appears for Flutter (UI & Engine, not including Dart) to be somewhere around 30 PR's a day. So in the 6 months, that would make it somewhere around 5,000 PR’s. React Native (framework repo only) it appears to have about 8 direct commits from Facebook employees and another 8 community PR’s a day. So that makes it about 2,880 changes since the beginning of the year. So in 6 months; 5,000 vs 2,880 vs 100. Talk about overwhelming.
In addition the community has been slowly dwindled over the last few years. Based on the NPM download stats (year 2022 projected with current 6 month number doubled, my understanding is Flutter downloads is larger, but couldn't find any real project-able numbers):
Then if you use Google Trends, you can see the number of TOTAL search for the most recent 7 day period (Jun-19 thru 25) is only 17 searches, not even three a day WORLDWIDE!
Comparatively, you can see how much Flutter has grown over the same time, for every 1 NativeScript search, 97 flutter searches are preformed.
And against several frameworks, it wasn't doing too poorly against React and Flutter initially, but by Jun 2022, it has basically no searches:
When you start to consider that the market for developers and developers creating plugins has drastically dropped, even the best technology can't continue to fight when the entire market has gone elsewhere. At this point, despite NativeScript being in the market almost as long as React Native, and longer than Flutter -- its has only collected ~1,900 plugins vs Flutters almost 27,000 plugins paints a really grim picture of the state of the eco-system...
Keeping the existing developers becomes even more problematic when you consider the last v8 engine upgrade for iOS was from mid-2021 and Android from mid-2020. Since that point there has been 13 stable releases to the v8 engine on iOS and almost twice as many for Android from the Google v8 team. This is a lot of basically "free" work in v8 engine by Google that is still missing from the NativeScript runtimes.
Which means that NativeScript is missing a chunk of EcmaScript support simple things like Promise.any and logical assignment operators (i.e. `&&=`) doesn’t work on Android but does on iOS. And important Class features like Static initializers don't work on either platform. A large number of performance optimizations that the v8 team has done are also not available. This puts NativeScript behind the curve in recent JS support and performance when they can't even keep up to date using all the v8's team free hard work.
Finally, then you throw in things like several long standing crashing, missing support, broken ndk support, and memory issues in the actual v8 runtime engines that haven’t yet been addressed.
I never thought this day would come, because honestly NativeScript was the best toolkit. But the numbers don't lie, these are the statistics for Applications built with Frameworks for Android & currently Installed on Android phones (I didn't put in Java, as you can just guess....):
I never thought I would see the day that Titanium has twice as much market share as NativeScript. Let alone Adobe Air and the long discontinued PhoneGap being that far ahead. But the primary point of this chart really is look at the difference between React Native, Flutter and NativeScript. The % of market share difference is MASSIVE.
The market has chosen, no matter which technology is the best -- "good" frequently wins against best based on a wide number of factors. How many of you knew there was a better iPhone before the iPhone with much better developer tooling. Nokia totally fumbled the ball because they were afraid to steal market from their massive share of the flip phone market and instead it cost them virtually the entire market when iPhone and Android walked away with virtually the entire smart phone market.
Since you can't find good NativeScript developers to do the work, nor is there much of a third party eco-system left. It is really a bad idea for any companies to base anything off of NativeScript going forward.
I'm not sure which community I will be joining for my new applications, but I plan on doing a deep dive in both React Native and Flutter again. Last time I looked both had some flaws, but I know some of React Native's most recent changes address a large chunk of my initially found flaws. Flutter, well it based on the most recent surveys (including Stack Overflows 2022 developer survey) is eating React Native's lunch because it supports Desktop, Web and Mobile apps all from basically the same code base. Then you throw in the Flutter tooling, which has always smoked the rest of the market...
All of my NativeScript services (except ProPlugins and my paid for plugins) will be going away as I have never been paid for any of them, and the continued costs to run and maintain them are pointless to continue for a community I'm no longer a part of.
Please note, if you need NativeScript contract work, creating a plugin for your app (any language including NativeScript!) or just help with your NativeScript app (including performance & debugging) you can contact me at firstname.lastname@example.org -- I still work with many, many, mostly dead technologies for a wide variety of clients.