Skeleton screens

Exporting the conversion from Telegram. Tomek asked:

Did you consider adding Skeleton screen?

I don't think we have ever talked about skeleton screens before for our apps.

The iOS launch screen feature (people commonly refer to it as the splash screen, but there's a distinction there) provides a skeleton screen specifically launch time. Material design has a launch screen concept.

In Apple HIG (https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/launch-screen/):

"Design a launch screen that’s nearly identical to the first screen of your app. If you include elements that look different when the app finishes launching, people can experience an unpleasant flash between the launch screen and the first screen of the app."

Many apps use it for branding purposes instead. We do too, though in a less blatant manner. Also important to note that with newer iOS versions and faster devices, launch time gets improved so apps should take shorter to load and launch. It's improved a few weeks ago, but the launching speed for iOS is slower than desirable.

Tomek: Did you consider adding Skeleton screen?

I feel that we either:

A) show an empty screen and fill it with information or B) show what we already have locally and update it when we have fresh content

If we add skeleton screens, it's a bit more jarring and actually slower.

Besides at launch time, do you have any particular screen(s) in mind? Maybe the answer is to make those screens load faster.

A fast app is a better app.

I feel skeleton screen is not an A3 project, since there is no minimal integral change needed. i.e. you can implement that for the Wallet tab itself, or implement it for wallet tab + token tab, or wallet tab + token tab + send / receive. It doesn't matter if they rolled out at the same time (unlike Activity where it affects multiple places and it would be inconsistent / duplicate of code if 2 kinds of behavior co-exist. Do you agree with that? Because if you do, I'll send this to a green team.

It feels like it needs more definition of what is the problem first. I'm of the opinion that it doesn't need to be implemented or possibly approached from another angle. Reason being, there are 4 tabs:

  • Wallet — if this is slow to appear the first time, it's either (A) a launch speed issue or (B) a similar issue like Transactions. If it's a launch speed issue, we can try to speed it up. There's some work done on B recently, but it's a bit more complicated because it loads TokenScript and it hits both the filesystem directly and the database. This doesn't affect new users with little tokens and TokenScript files. Adding another screen will likely slow it down further.
  • Transactions — we should be able to load from the database immediately or for new users, it's empty, but only for those few seconds for any user, ever, unless there are no transactions. If this is slow, we can try to speed up the loading from database.
  • Browser — always something there. There's bit of UI and we show a list of bookmarked sites if any.
  • Settings — always loaded

Using a different launch screen (the white screen that shows a single AlphaWallet logo at the moment) that looks like an empty Wallet tab could help a bit, and that's also inline with Apple HIG. This is of course a good one for the green team. And actually makes for a very simple first PR.