TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

I replaced my native iOS app with a cross platform web app and no-one noticed

260 pointsby chris_nielsenabout 3 years ago

25 comments

null_objectabout 3 years ago
&gt; Are native apps dead? &gt; Not yet… but they’re going to be.<p>This post makes very big claims based on a very basic application that doesn&#x27;t seem to be much more than a few toggle buttons and a couple of animations thrown in, and some &#x27;statistics&#x27; that don&#x27;t appear to be based on any actual facts.<p>I work in a team developing an app that has around 5million users, and we abandoned an Ionic first version 5 years ago, after a couple of years of nightmarish development, where (after the first implementation, which went reasonably well) we spent most of our development time fixing inexplicable bugs, chasing native features, getting inconsistent UI problems, broken builds from package updates and a myriad other problems that just drained our energy and were generally dispiriting.<p>I personally felt the entire experience was a horrible professional dead-end. Luckily our management decided to switch to a native application, and learning Swift has been the most fulfilling part of my entire career. The application is faster, more reliable, the bugs are locatable and fixable; the entire framework feels solid and professional.<p>The application itself is immeasurably better now. We attracted better-qualified colleagues who have been a great learning resource. And the app itself went from an appstore rating of (iirc) around 2.8 stars to its current rating of 4.6.<p>We would never dream of going back to the nightmare that developing a complex and performant app with Ionic was in my experience.
评论 #31245666 未加载
评论 #31245012 未加载
评论 #31246741 未加载
评论 #31245100 未加载
评论 #31246444 未加载
评论 #31246132 未加载
评论 #31246243 未加载
评论 #31246292 未加载
评论 #31246599 未加载
brundolfabout 3 years ago
The main thing that makes a non-native app stand out today isn’t performance, it’s all the little UI inconsistencies. And not just the shapes and colors; the font sizes, the types of transitions that happen between screens, the “pressed” and “loading” states on buttons (or lack thereof), etc. The modern web gives you everything you need to do all these things, but you don’t get them for free. And many devs don’t think to implement these details, and even if they do give them attention and make the experience <i>good</i>, it may still be <i>inconsistent</i> with the host platform. That’s what’s hard.<p>For this app it makes total sense, because it already seems to have a pretty custom look and feel; there’s nothing that needs imitating. Many others out there are probably in a similar boat, but certainly not all of them.
评论 #31244564 未加载
评论 #31244818 未加载
评论 #31244675 未加载
yesimahumanabout 3 years ago
Ionic co-founder and Capacitor creator here: thanks for sticking with us on the journey. The stack has actually been really successful for us. We&#x27;ve been able to build a significant business on top of web native apps because they work really damn well for a whole class of data-driven apps.<p>We&#x27;ve also seen a renaissance of sorts recently with this new generation of web developers realizing they can use their favorite web stack to build for mobile. A lot of them didn&#x27;t &quot;grow up&quot; with bad phones and Cordova being the only option in town, and coming into the space with fresh eyes to see all the progress that has been made.<p>We are excited about seeing better UI tools and frameworks that raise the bar for mobile experiences with web tech. When we started Ionic Framework, there were few quality options. Today, there are a lot more, and we&#x27;re thrilled if people want to use their favorite stack on mobile with our Capacitor project.
评论 #31245546 未加载
jeroenhdabout 3 years ago
&gt; Our reaction time is ~200ms, we don’t need 100ms.<p>Our reaction time doesn&#x27;t matter when it comes to the look and feel of an application. You can clearly feel the difference between an old DOS computer with a CRT putting characters on screen nearly instantaneously and a modern text editor having a whole UTF-8 rendering pipeline to deal with first.<p>We&#x27;ve all slowly been growing accustomed to these high latencies and the bar of acceptable performance has been lowered, but that doesn&#x27;t mean such latencies don&#x27;t matter.<p>Personally, I find browsers noticeably less responsive unless developers go out of their way to reduce latency and overhead. Leveraging things like CSS animations makes a huge difference because even on slow hardware they feel snappy, but there are many other optimisations that you need to get the job done.<p>That said, if the web version was already reasonably fast then I don&#x27;t see a problem with porting it to mobile If a mobile browser can operate a website with tolerable performance, then why not stuff it into a platform native webview and he done with it. You&#x27;ll be fighting the terrible built-in browser engines of your user&#x27;s devices (I&#x27;ve seen people refuse to update the Webview on Android because they don&#x27;t know what it is) but your app just got a whole lot tinier and easier to update.<p>It would probably work the other way around just as well (Flutter to web, or maybe even Kotlin Multiplatform to web and iOS, I haven&#x27;t tried the latter) if your port source is of good enough quality.
评论 #31248496 未加载
fearfaceabout 3 years ago
If this is the app: <a href="https:&#x2F;&#x2F;apps.apple.com&#x2F;ch&#x2F;app&#x2F;school-morning-routine&#x2F;id1606853166?l=en" rel="nofollow">https:&#x2F;&#x2F;apps.apple.com&#x2F;ch&#x2F;app&#x2F;school-morning-routine&#x2F;id16068...</a><p>The I notice quite few things: - low fps animations - delay until the keyboard popups - no support to save the password or use e.g. an Apple account to login - no scrollbars in the modal and the back button out of view<p>So in general, this would not make the cut for the native apps my employer produces. Especially the low fps is a deal breaker.<p>Tested on an iPhone XR
评论 #31246734 未加载
fakethenews2022about 3 years ago
The crash statistic may be an invalid indicator. Problems in your app will no longer manifest themselves as crashes in your native code because the only native code running is iOS&#x27;s.
评论 #31244689 未加载
评论 #31244676 未加载
henningabout 3 years ago
&gt; Not brilliant, but hey, it’s a cheap Android tablet, what can you expect?<p>People on cheap Android tablets deserve the same experience as anyone else. You aren&#x27;t rendering 3d graphics, you&#x27;re displaying a few hundred characters of text.<p>There are hundreds of millions of users around the world with low-end Android devices. There are people in the world who are not rich white tech people living in suburbia, believe it or not.<p>&gt; Are native apps dead? Not yet… but they’re going to be.<p>You don&#x27;t have a crystal ball. What happens to all the legacy Java, Kotlin, Objective-C, and Swift code? That all just gets rewritten in JavaScript overnight? Right.<p>&gt; You see as humans we’re comfortable with 60fps of animation performance. We don’t need 70fps<p>Bullshit. This person has never used a 144hz monitor. I&#x27;m never buying another 60hz display.<p>&gt; Our reaction time is ~200ms, we don’t need 100ms<p>Our reaction time may be about this, but we perceive times much shorter in duration, which will matter if the tablet has a high refresh rate display like many of the iPads.
评论 #31246493 未加载
评论 #31247393 未加载
评论 #31244508 未加载
评论 #31244539 未加载
dkobiaabout 3 years ago
I love to build both native and hybrid apps and while you have a pretty good write up you’ve made some pretty bold claims for a handful of app installs. I did try out your apps and to be quite honest they do feel very webby (non-native). For the use case however I suppose it works.
alex_suzukiabout 3 years ago
Interesting read, thanks.<p>Have you considered going „full web“ with a PWA, foregoing a native container completely? That was my expectation when I saw the headline.<p>I have a couple of business apps implemented as offline-capable PWAs and the experience has been so-so. Still hoping for better browser support especially on iOS.<p>Customers love that they can instantly push updates and are not bound by arbitrary rules enforced by the gatekeepers (App Store, Play Store). Bit of course some crucial things are missing. App discovery through the platform app store for instance is something that just doesn’t need to be explained to users. Also the absence of push notifications hurts.
joshstrangeabout 3 years ago
I’ve been writing cross platform apps for many years now and a huge change that I don’t think people have noticed or understand is Cordova vs Capacitor. I put up with Cordova but always felt like I was on the edge of my builds breaking. The process to create the native project in the fly was always very inconsistent in my experience. The first debugging step for a failed Cordova app build was “try it again?”, that’s a horrible way to develop&#x2F;live.<p>Then comes along Capacitor. I assumed “Ok, it’s just the newer version of Cordova”, I couldn’t have been more wrong. Things that were a huge pain with Cordova (building the native project from scratch, any changes to the native project for things like capabilities&#x2F;permissions, the version of Google apis conflicting, etc) are gone. You now commit the Xcode and Android Studio projects to your source tree. This makes builds so much easier (throw fastlane into the mix and you’ve got something really awesome) and makes writing native code super easy.<p>I didn’t think I’d ever want to write native code for a cross platform app but Capacitor makes it stupid-simple to drop down to native code whenever you want. No more packaging your code in a plug-in (if you don’t want to at least), just add a class with the right annotations or extending the right class and you are calling native code from JS in no time at all. Native used to be scary or hard to work with in Cordova, that’s no longer the case in Capacitor. It gives me a ton of freedom and finally makes me feel in control of my builds and my app as a whole.<p>If you’ve slept on Capacitor I urge you to give it a shot, it’s quite nice to work with and fixes all the major pain points I’ve had over the years with Cordova.
ChrisMarshallNYabout 3 years ago
Eh, Ionic is good. I’ve retired native apps that I wrote, in favor of Ionic apps that someone else wrote, and felt fine about it.<p>But that “someone else” is a <i>very</i> good engineer, that did a great job.<p>Good software is <i>always</i> gonna be difficult and expensive; regardless of the tools and platforms. Good engineers are expensive, and take the time to do things right. No shortcuts. No free lunch.<p>We get all hung up on the tools, as if they make us good. It’s like someone with money, buying a top-of-the-line PRS guitar, and playing Smoke Over the Stairway to Freebird.<p>If a tool makes it easy to do something cool, and, suddenly, we can do something we couldn’t, before, that’s nice. Enjoy it while it lasts. Some kid will blow us out of the water, using the same tool, shortly.<p>Native will <i>always</i> give the best UX, if done by expert native developers, but, in many cases, this may not make financial sense.<p>Also, <i>bad</i> native developers will do bad work; even though they are using top-shelf tech (Smoke Over…).
calsyabout 3 years ago
Why do supporters of exclusive native development have to act all pretentious about it. You are developing mobile apps, get over yourself.<p>Guaranteed you could not tell if 10 randomly chosen apps were developed natively or cross platform. I&#x27;m sure you will say you can though.
评论 #31247977 未加载
评论 #31247325 未加载
Mizzaabout 3 years ago
I&#x27;m a strong believer in web-apps-as-mobile-apps (at least for my current use case), but I&#x27;m curious what the best way to package a WebView into a mobile app is these days.<p>This article recommends Capacitor, but although they say &quot;drop Capacitor into any existing web app&quot; - they actually mean any JavaScript application. I have an Elixir app, I just want to put it in a WebView and cut iOS&#x2F;Android versions. What&#x27;s the best way to do this in 2022? I&#x27;ve stumbled upon &quot;Jasonette&quot;, but have no idea if it&#x27;s the right way to do things these days.<p>Does anybody have any recommendations they could share?
评论 #31246704 未加载
jordanmoconnorabout 3 years ago
I think this type of decision comes down to resources available for development - if you&#x27;re a one-person (or very small) team, managing one code-base and one deployment stack is way better and more reliable.<p>On the other hand, native app performance is second to none when done well, and if you have dedicated developers to manage a separate deployment from the web interface then you&#x27;re going to have a better time going native.
noduermeabout 3 years ago
There used to be this thing called AIR where you could build a game and...<p>oh never mind.<p>Turned out the big problem wasn&#x27;t cross-platform compiling, it was dealing with Apple randomly telling you that your game was removed for some totally random reason and forcing you to upgrade it and submit it again every couple weeks.<p>Like, great, you compiled something for iOS. See how far that goes haha.
lawgimenezabout 3 years ago
I have been in the mobile dev industry for over a decade and I can tell many have claimed that native development will eventually die. Here we are still working on native Kotlin and Swift. It all depends on the company, client and budget. So nothing will die, hybrid development won’t die and so do native.
bob1029about 3 years ago
We are doing this right now. We run iOS in an enterprise B2B setting and Apple made it shitty enough for us to look at more open paths.<p>Our strategy for webapp involves nearly 100% raw vanilla javascript and some very unconventional techniques. One of my team members is about to demo it to a client.
azinman2about 3 years ago
I don’t have kids but this app looks great. I love the creativity with the design and the kid appeal. I can imagine this being very useful!
shisismsabout 3 years ago
This is a great app! Well done, and you’re right barely any difference.<p>That said, raising compliant kids is sooo boring :)
thealistraabout 3 years ago
Is there an app store link anywhere?
评论 #31246811 未加载
marstallabout 3 years ago
agree! my iOS&#x2F;web cross-platform stack looks like<p>smallish swift shim &gt; WebView &gt; react-native-web<p>In the end there are minimal &quot;tells&quot; and it is such a joy to be able to deploy small and large things to both platforms with a single push to GitHub.<p>(<a href="https:&#x2F;&#x2F;www.shelf.fm" rel="nofollow">https:&#x2F;&#x2F;www.shelf.fm</a> if you want to take a peek)
评论 #31246636 未加载
ComradePhilabout 3 years ago
You should re-title this to &quot;Why I never tried Flutter and why I will never know what I missed&quot;.
评论 #31246503 未加载
评论 #31245633 未加载
peppertreeabout 3 years ago
Save your 3 minute read. No one noticed because there are hardly any users - just his kids.
0x0100about 3 years ago
I can see this not being an issue today. Most phones have a ton of memory and a good gpu thus making performance issues harder to detect
评论 #31244557 未加载
Meaiabout 3 years ago
Doesn&#x27;t Apple forbid publishing web apps on the app store? How is it then possible that something like ionic framework and react native still work? Unless they literally translate all html features to native components but I seriously doubt it.<p>Edit: This is a &quot;talk to sales&quot; framework and ionic is 50€ per month as the absolute cheapest option. This is essentially an ad then.
评论 #31244767 未加载
评论 #31244646 未加载