Svelte Native
svelte-native.technology
svelte-native.technology
I'm sure they consider it a tribute but it fees a little deceptive that they're cloning the svelte docs look and feel without any kind of "who we are" statement.
I'll note that React is the only web renderer that gives official blessing to a native framework, and that's because it's also the only web renderer that built one themselves rather than leaving it to the community.
But that was like 5 years ago so maybe it's gotten better.
The key issue I see these days is that it's just not worth it to build a mobile app these days unless your payment flow happens outside of the app.
not true at all, 85% of something is better than 100% of nothing. This is coming from someone who hates mobile apps and apple's grip on them
You can still use your React knowledge with it.
Expo's workflow is so perfect comparing to pure native, it is not even comparable. To do iOS development you need: Swift Packages, Cocoapods and XCode at least. Whils in general it is simple, but cocoapods constantly fights with apple and xcode to not crash anything. While expo also uses cocoapods, it is much more stable because you can always just delete a native project and regenerate it from scratch and it will work.
I am not even starting to discuss how complicated is development for Android - literally everything now have 5+ different APIs for a simple things like "please encrypt this string" or "take a photo". React Native and Expo has perfect packages that solves real problems and work with a few keystrokes.
Cocoapods are on their way out. I use Swift Package Manager on new projects and it's literally a couple clicks to install whatever package you want. Haven't had any problems yet.
I feel Swift as a language is a lot more productive than TS/JS personally. I've found things like React Native and Expo etc. more of a liability than a help for businesses that are heavily reliant on mobile.
If you do need other libraries, or add native code yourself, the package system becomes a nightmare. It is NPM packages on top of Cocoapods on top of a XCode/Swift/Objective-C compile process. Only slightly better on Android.
Want to make a change to a library? Good luck getting linking working on your local setup.
Cordova had exactly the same issues. I'm not sure if Ionic Capacitor is better, but this is one area where Flutter is miles ahead.
Flutter is a joke because it reimplements literally what apple intended to perfect - rendering pipeline, a lot of things impossible to make good without using native api.
Flutter has issues with not using native UI, but I've found the package system with native modules to be way simpler and less issues. Unfortunately you're still stuck with Coacoapods though.
The two have some fundamental differences — React Native is complex because the React ecosystem is full of complexity. NativeScripts biggest problem is more ecosystem size.
They could all have a common API with OS-specific extensions - but instead of that, everyone is trying to make their own API. As a result, developers just write everything in electron/WebKit/WebView.
I wish there was an open standard API for writing native desktop/mobile apps that OSes could adhere to (that the EU forces them to adhere to, haha).
Given that GUI applications share a lot of aspects between platforms, I'd love to see an open "Vulcan"-like standard that defines a GUI API for native platforms.
OSes can interpret calls to that API such that the result looks congruent with the platform's design language - while the application code itself remains portable between platforms.
It's really not that hard to define, there's just no willingness to do so from OS vendors as it would erode their efforts to build walls around their platforms
POSIX became a standard because the US government needed software interoperability with their hardware. It wasn't enforced, but you'd miss out on the government contract lottery if you didn't adhere.
If we value competition in the OS space, it would be wise to support an initiative that would make the OS itself unimportant
I cannot even express how hellish and nightmare that whole flutter thing is: I'm worried about the engine itself (there were breaking changes in the typing system itself that I'd need to worry about), the libraries and packages to update. And not to even stop at the building (signing) stage with the whole ruby shenanigans that needs to match and work well with xcode.
Now compare that to go.
Which is honestly fine. React and React Native I think do a much better job of filling the niche of people who want to build native apps with web tech.
That being said, I think with the progress that Safari has made in implementing PWA support, the increased hostility of Apple toward native developers, and browser improvements like WebGPU coming out soon, I really hope that we no longer have to build native apps for like 95% of use cases. The only major hurdle to this is Apple continuing to treat web apps as second class citizens on iOS and only begrudgingly adding APIs to Safari to make good native experiences.
If you add a site to iOS' homescreen it automatically becomes a PWA. The best example I found of a site fully leveraging this feature is Cryptee[0]. They talk about the PWA thing here: https://crypt.ee/download
It's hard to make this point without linking to a screenshot, but the share menu is incredibly bloated. To get to the add to home screen button a user has to know it's in the share menu (which is just an unlabeled icon), and then scroll past the following menu items:
- An options button (which leads to another menu)
- Air Drop
- Share via text message (with several different contacts listed individually to share with)
- Copy
- Add to Reading List
- Add Bookmark
- Add to Favorites
- Add to Quick Note
- Find on Page
Chortle.
No doubt this and nativescript have improved since then, but from my early impressions, I wouldn't have recommended nativescript for anything other than the simplest of interface needs.
Get to proof of concept 10x faster. Spend 10x more time in the weeds on weird bugs.
I foundered on my first attempt at an React app (side project) coming from a C,C++,Java and non-React JS background, but the second one(professionally) after I've had exposure to some React got released and an fork of it is still in use today. And the company I work with has 2-5 other apps out for customers using RN/Expo (thanks to the positive experience I had).
We're also strict about using TypeScript though so we're not chasing basic type bugs (since debugging is a tad weaker with RN/Expo even if it's usable if shit the fan only occasionally) and we have plenty of React experience outside of it, biggest "quirks" are often RN/Expo upgrades if we haven't maintained things in a while (the oldest app used a relatively early version of Expo though) or platform specific notification crap (that I've heard is painful regardless of Expo/RN).
Hell no. It’s better to stick with RN if you want cross platform. Writing an app in Kotlin and Swift is easier compared to this contraption.
You can literally use all of the iOS SDK directly.
Not sure why I'm downvoted.. https://old.nativescript.org/native-api-access/
It's the basis of their entire product. On top of that they've built cross-platform wrapper for many UI things. And on top of that, they've integrated several toolkits.
They just market it the other way around, which i.m.o. is not helping them with traction. Right now they're always competing with many other products (react native for example), even though they have a very unique product.
Since I am very concerned with user experience, I always considered the perceivable UI rendering performance as highly important. For contemporary smartphones I cannot see any benefit in using tools like react native, flutter, nativescript in contrast to rendering inside a webview.
I think UI libraries like ionic are indistinguishable from native UI components. At least, to the best of my knowledge, there is no real user study, which proves the contrary. So why should one use such cross-platform tools and not use svelte directly with a webview?
My guess is it crosses a "good-enough" threshold for usability, and it feels objective, ex. maybe scroll performance is the same.
I strongly believe users notice things feeling "off" in a way that's either subconcious or hard to communicate, and that's why it matters.
The reason why I use Flutter instead of JS is for a number of reasons beyond perf / native controls. The shortest version is iOS / Safari makes web apps extremely obviously a worse version of a native app.
But I'm picky.
I just upgraded macOS and got a "you must accept new T&C" dialog. Accidentally scrolled on it vertically. It did the rubberband effect showing a white background, and I said to myself: "lo, how the mighty Apple has fallen!"
Is the tool chain very different from React native?
https://blog.nativescript.org/nativescript-with-react-native...
https://twitter.com/wwwalkerrun/status/1700719038392078607
Then throw in some SwiftUI too
No added tooling, only the SDKs from each platform, no late nights debugging integration layers, lack of support on IDEs,...
That is the fallacy of all these leaky abstractions, the need to actually know the native APIs from each platform doesn't go away.
Someone needs to take care of integration problems.