My Initial, Brief Thoughts on Snapchat’s Valdi

Based on only about 10 minutes of looking into it on the day it was announced. Take with a pinch of salt!

1. It’s already dated

It uses iOS’ and Android’s old UI frameworks, UIKit and Android Views, respectively, which are all but deprecated. Sure, they’re still widely used, but if you’re in a position to introduce a new framework, it shouldn’t be based on technologies that are on their way out. And sure, Valdi can switch to newer UI frameworks under the hood, but that’s likely to take years before it’s ready for widescale production use.

This likely also means it’s less performant to embed Valdi into SwiftUI or Compose, or vice versa.

Questions

  • What’s the performance of embedding Valdi in SwiftUI or Compose, or vice versa?
  • What’s the hope/plan, realistically, of updating Valdi to use SwiftUI or Compose?

Alternatives — What’s not dated?

  • Flutter, Kotlin Multiplatform w/ Jetpack Compose (“KMP+Compose”), etc: since these do their own rendering and do not utilize old UI frameworks.

Also for comparison:

  • React Native: Similarly “dated” (also renders using UIKit/Views)

2. It means adding a third language into the mix, and it’s UI-only

Introducing Valdi introduces a third language (in addition to Swift/Obj-C and Kotlin/Java) into the development of iOS and Android apps: TypeScript. And that TypeScript is limited to just UI code. All other (non-UI) code will need to be something else.

Alternatives — Cross-platform with fewer languages?

  • KMP+Compose: The Android app can be 100% Kotlin while the iOS app would be Swift/Obj-C + Kotlin; i.e., just two languages between the two platforms.
    • With KMP, Kotlin can also be used to share non-UI code (“business logic”) between Android and iOS; i.e., most code across both platforms could be Kotlin with just a little bit of Swift on iOS.
  • Flutter: Still three languages, but Dart could be used for shared, non-UI code (so minimal Obj-C/Swift and Java/Kotlin).

Caveat:

  • React Native, Valdi: It is possible to put more of the business logic in TypeScript so that most code is just one language (and minimal Kotlin and Swift), like with Flutter+Dart.

3. It doesn’t support Web?

It doesn’t appear that Valdi supports web. So if you want a web app, you’ll need to use React, Angular, etc?

Questions

  • Is there any plan to support Web? What would integration with React or Angular look like?

Alternatives — Cross-platform that supports web?

  • Flutter, KMP+Compose: These can both power webapps, also.
  • React Native: React can share UI with React Native.

tl;dr

I personally don’t find it very compelling. For new apps, I wouldn’t want to bring in dated technology. While it makes some sense to consider retrofitting into apps still on UIKit & Views, I think the time and effort would be better spent on modernizing the apps.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.