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.
Thank you for all the work you've put into the NativeScript ecosystem in the last couple of years. The community is tiny compared to Flutter and ReactNative, that's true. But the people are incredibly friendly and talented, and the framework has improved tremendously during the last two years. I can recommend the framework today much more than I could at the beginning of 2020, when information were scattered around different places and, if I recall correctly, it wasn't all based on TypeScript. I like the direction it's going and am very excited about the future.
> I think one of the biggest conflicts was that I had started ProPlugins about 1.5 years before nStudio purchased NativeScript.
While I understand the idea behind ProPlugins, I also see why this could have been a huge source of conflicts internally. Personally, I hope to see it go away as well one day, but I'd guess it is already less relevant in the NS ecosystem than it was in 2020.
> I'm not sure which community I will be joining for my new applications
No matter which choice you're going to make, I wish you all the best and hope you stay happy and healthy.
1. The community is minuscule now, it has always been tiny compared to React Native, but it has shrunk at least 10 fold (maybe even 100 fold) over the last couple years. There is virtually zero developers creating plugins. This is the piece that hurts NativeScript the most. When NativeScript has around 1,800 plugins, mostly broken. Flutter has 20,000 mostly working, and React Native 50,000 mostly working. Which eco-system looks the best on paper to everyone. Then you throw in that you can create both Mobile, Fuchsia, and Desktop with Flutter and which eco-system again looks better to management. Not all technological wins are based on developer choices. When the momentum turns massively against you, it is very unlikely for you to easily regain a good place. It was bad enough when Flutter was nothing and RN was the king, fighting up hill. But now that Flutter's market share is close to RN, NS has virtually no market left. I can only think of one thing that nStudio could do to make NS relevant again, but even that might be too late...
2. NativeScript has been using TypeScript since its inception, it was one of the first large TypeScript projects...
3. As for recommending it, I can tell you as someone who poured massive amounts of resources into this eco-system and has been here since the beginning, it has NOT been going in the direction of growth and stability and getting buggier by each release. The number of bugs I haven't even bothered to report is massive, because the bugs I've already reported have a higher priority in my book (& still aren't fixed). This isn't any slight against Igor or Osei, it just they don't have the team numbers to even remotely cover much of anything as big as the entire framework. You might check on Github my name and see how many "bigger" bugs are still unfixed. 😉
4. ProPlugins was my attempt to stave off the decline of plugins atrophy (I have a whole blog post series on the why of it), unfortunately I think it was still a day late -- too many developers (especially plugin) left the eco-system before that point. I will be leaving it in place as long as there is enough demand for it.
Thanks, I wish you lots of luck also in your endeavors!
Very sorry... And what about sqlite plugin? What will happen to it?
ProPlugins and any of my paid modules will continue to be supported for a while longer. Since the SQLite has a paid version (https://nativescript.tools/product/10), the paid version will be supported on the paid support site (https://git.master-technology.com) for a while longer and any issues resolved for those users. I have not set a definite date to discontinue the paid stuff, as I am perfectly happy helping companies with their NativeScript (or any other) projects in any fashion (code, speed, debugging, plugins, etc) as long as I am being paid for my time.
I’ve used a few platforms in the past and moved to Nativescript about 4 years ago and loved the community support, availability of plugins etc. I am by no means a pro developer but I am pleased with many of the apps I have created both for Android and iOS. However recently I have run in to problems when upgrading Nativescript and breaking plugins that I rely upon. Feedback from developers on GitHub or elsewhere has been scant and causing me major headaches in keeping my projects alive. I have found workarounds in some cases probably due to my improved knowledge but I still rely heavily on 3rd party plugins for things to work. I must admit I am seriously thinking of jumping ship from Nativescript but migrating projects yet again fills me with fear as I don’t know if it will be out of the pan and in to the fire.
I was really holding out for it to be able to become something big, as the foundation was awesome. I put a lot of effort into it over the years, so it was very hard for me to finally call it -- it probably has been on life support a lot longer than I wanted to see.
As you noticed, the third party eco-system is a primary key for any eco-system to continue and thrive, and NS has basically none now. I noticed this issue several years ago that NS third party developers were leaving in mass, which was why I started Pro-plugins to try and combat it. I feel it helped some, but really it just stemmed the tide, but didn't help reverse the mass leaving of third party developers. At this point the number of third party developers really extraordinarily tiny, with me leaving basically I think that just leaves primarily only Martin who runs and does most the work in NativeScript-Community and the occasional 1 offs. There isn't any other developers in the market (even nStudio is appears to be having a hard time just maintaining some of the key plugins when Eddy left, I haven't seen a new plugin from any of the three remaining owners of nStudio in years, and they used to be high in the author leader board.) Osie is probably the only other prolific plugin developer, but all his plugins are now I assume paid for by nStudio -- so virtually zero third party...
As for other directions, I'm not sure which I'm going to be going to -- but I'm going to investigate both RN and Flutter in-depth. Not big on either, but the market has chosen... I do plan on posting on my blog a detailed review of both.
Thanks Nathanael. It really is a minefield for mobile development as over the years many development tools have come and gone. I cut my teeth on Intel XDK which I thought was great at the time until Intel pulled the plug. I then moved to Ionic but ran in to issues with that as well. So jumped on the Nativescript bandwagon after a lot of research. I subscribe to proPlugins and have done for a while, we have communicated over a few account issues in the past. My issue is that the apps do not generate a huge income as they are mostly Enterprise, so buying in to paid development platforms is a non starter as most are extremely expensive. I have looked at Flutter but it is not ARM native yet and requires Rosetta, not really an issue I guess. I do develop on Apple Silicon. Maybe I need to look at RN. What guarantee is there that any dev platform will exist in the future, non I guess, going on past experience.
It has been, I started doing mobile development prior to Android/iOS on the Meego/Maemo (now SailFish) OS. It was actually an excellent device way ahead of the time, unfortunately Nokia totally fumbled their massive lead and Apple (& Android) ate their lunch. Now Sailfish is a tiny OS with virtually zero traction, I still play with a recent device and before leaving nStudio had planned on trying to see if Jolla would be interested in sponsoring a NativeScript port for Sailfish to have a unique platform Target for NativeScript. Unfortunately at the point I actually started talking with them, my life at nStudio came to a quick halt and that project was dropped.
Flutter is Mac Arm64 native as of v3.0, so no more Rosetta needed is my understanding.
As for ProPlugins, had I not started it, the majority of the authors in it (including myself) would have discontinued most our plugins several years back (pre-NS7 transition). I would have also written this post then, as this was before nStudio took over NativeScript. ProPlugins was honestly my last ditch effort at seeing if I could revitalize the third-party community for NativeScript. I always thought it was the key driver, no third party = no devs wanting to use it. I feel like it did work to some extent, but it was started to late after we had lost too many third party developers.
At this point, I've hung onto enough awesome platforms over my 30 year career to easily recognize when I'm deceiving myself into thinking it can and will continue. It was a great platform, and had a great run -- even if they finally got all the v8 engines caught up to recent versions and all the memory leaks & crashes fixed. It has virtually zero traction in the greater eco-system, I was surprised at how many tiny platforms I had never heard of had more traction than NativeScript at this point. But to me the key is it has no third party eco-system, nor any hope of it. When you can get a maintained plugin for virtually anything in the Flutter (& RN) eco-systems, it makes using NativeScript painful for anything but simple applications. When Flutter started, I honestly expected it to be killed by Google, but it has, imho, passed the critical point, so I don't expect to see Flutter or RN to be discontinued.
If you are going to do ReactNative development, I would use the actual ReactNative framework, not NativeScript -- the RN NS adapter basically allows you to use RN like syntax to create a NativeScript app. So even though you are using the React syntax everything would still be running under the (as of July 2022 - very buggy) NS engine and code base.
Hey, Nathaniel. Forgive my bad English:)
1) Thank you for all your work.
2) Could you leave the tools for generating images (Images processing site).
There are still developers who use your products:)
I'm curious to know why you would use my image processing site since the NS CLI tooling (added in NS 7 time frame) the ability to generate images. What does my site offer over the built in tooling now?
Your tool works efficiently and accurately. And this is what you need to work, less manual labor. And you are glad that we use your tools:)
I will be grateful if you restore your tools, although they look simple, but they are effective.
I'm in the process of moving servers, I'll try and see if I can get the tools to work properly on the new server...
Hi Nathanael, I will be more than happy to give you a space on my server for these tools. Please feel free to contact me. I wont be charging you anything just to keep the last few developers something to work with 🙂
I appreciate it. Send me an email at email@example.com and as long as your server can run an older version of PHP we can probably get at least the image code up again which has been what was requested...
Many would never use Flutter no matter how big it became, because who wants to rewrite their entire app?
... And yet, should things get bigger, I'd certainly not rely or convert to something like Flutter. IMO that makes no sense whatsoever. Likewise, if one already has to dabble with Swift and Java in the first place, I see little reason to use something like React Native, because I can already have my backend in NodeJS and you'd only need to build the front-end in Swift/Java.
So this is quite sad that NativeScript is in such a state.
I will look into it more, perhaps it is good enough to keep going and down the line I can contribute to it myself or help fund its growth should my own capacities grow.
Historically the greater concept always wins long-term. I would not get daunted just because a project is smaller than other projects. I believe it's important to keep a Beginner's Mind in this and imagine as if it were Day 1 of starting out of as a new promising project. New frameworks are started all the time. What if Svelte did a similar comparison before writing their first line of code and thought... 'well, React & Vue' clearly are overpowering the market, how could we possibly fit in there!
Giants fall all the time.
I'm all about optimizing the development flow to the max. And I think having one shared codebase is the unquestionable future. If no one else will do it, when it time comes, I will then do it and fund it myself to make NativeScript #1 or create an alternative that will become #1 and create the funding. There's no need for these wrong products in the wrong direction to exist. Size of existing players doesn't matter when at its essence and core they miss the entire point. If something's true, important & worthwhile enough, the odds don't matter much IMO.
Thank you for your comments. I appreciate your time put into them.
You do realize by your logic, you should be using Dart (which is trivial to learn if you know JS). Flutter from one code base you can not only do Mobile, but also Linux, Windows, Web, Fushia and Mac. So you get 7 platforms with the same code base. You only get two with NativeScript... 😉
I held on to NativeScript because I built a really good reputation in the NS market (I've been in it since virtually the beginning), and I really loved the platform. But at this point without any real third party support it takes exponentially longer (based on complexity of app) to create an app in NS because you have to write all the glue/plugins to talk to all the third party objects/services. With Flutter (& RN) I can use a plugin provided by the company or other developers. This makes my Time to market using Flutter/RN faster than yours using NS. That was the final piece that made me decide it was finally time, I can't afford to be a solo developer not able to get to market as fast as a Flutter/RN developer by using NS, this means they can charge less making my market for clients a lot smaller. It wasn't a problem in the past when we had a decent third party eco-system, and the other benefits of NS allowed me to be competitive in time. But that eco-system is basically dead, and without it -- you just can't compete using NS any more.