Hacker News new | ask | show | jobs
by jamesgeck0 2890 days ago
The post says, "it’s roughly 1.5s startup delay to load a 15mb bundle on an iPhone X."

I've seen startup latency much slower than that on my iPhone SE. In the best case, the application takes about six seconds to cold boot when I tap on a notification. Sometimes it's closer to fifteen or twenty seconds if the app sits on the "connecting" screen for a while. It's difficult to understate how much slower the app feels than everything else on my phone.

3 comments

Hey, blog author here! The startup delay is the extra initialization time that React Native needs. Translating into our discord iOS app, it is the duration of the screen with spinning mascot and quote rather than the entire duration fully connect to our gateway socket.
 In our test case, its about 4s delay on iPhone SE.


Meanwhile, we keep working towards to improving our user experience on all the devices especially the lower-end ones (I personally use iPhone 6 as my go-to test device). For instance, we will add caching very soon to shorten the interaction waiting. Hopefully you will enjoy more using Discord on your SE then :)

The X is the most expensive iPhone you can buy right now, and the SE is the cheapest. Too bad engineers practically always have the top-end models, so they don't really have to dogfood the everyday pain of using the slower devices.
Actually I don't own an iPhone X :P Our core user base tends to use 6 and above (approx 2 generations behind) and we dogfood regularly with a huge group of beta testers (thousands) with a huge range of hardware. We try our best to make sure the average use case is considered.
Considering the average is good but it still pushes the performance treadmill forward.

If we had some magical way to make the dev treadmill run slower than the user treadmill, we'd see better architectures in many cases. In that alternate world it would be easy to precompile the javascript and load 20 times faster.

As an iOS dev, I use my personal phone (iPhone X) for the bulk of my dev/test cycle but also keep around an old-ish iPod Touch running the previous version of iOS that I dev/test on periodically as well. If something doesn’t perform adequately on the Touch, I tweak on it until it does.

iOS users tend to run newer devices generally which might lead some devs to feel that this extra optimization isn’t worth the time it takes, but I disagree because it doesn’t benefit only users with older devices – it’ll make your app run better on newer devices too and make it that much more unlikely that your app gets killed or causes the OS to kill other apps in multitasking scenarios (iOS kills resource hogs much more readily). In short, everybody benefits.

With this same thought process, I plan to pick up one of the 120hz iPad Pro models to test on soon. It’s one of the most powerful iOS devices available, but driving 120FPS isn’t easy and given how many apps fail to hit the target of 60FPS on similar hardware I’d bet that a huge number, perhaps even most, don’t come anywhere close to running at 120FPS even with the extra horsepower.

That creates opportunities for other developers to build a better product.
That kind of optimization is happening much more on Android than on iOS, the install base of low end devices is much, much larger.
Slower storage and slower CPU on the SE? Maybe that is a factor, I'm not quite sure.