Live data from Hacker News

Expo – Open-source platform for making universal apps for Android, iOS, and web

github.com

131–140 of 172 posts

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#131
post #101
post #90

I’m primarily a web developer that’s long been interested in native mobile environments and after trying out many of these cross platform frameworks (all the way back to Appcelerator for those who remember!) my conclusion always ends up that they’re almost always a bad idea. The experience is inferior to native, it’s full of compromises to make cross platform work and you’re at the mercy of a company standing between…

After 4 years of doing cross-platform mobile, I loathe React and React Native by now, and I dislike Expo. But… suggesting any other alternative is tricky. True native development is, indeed, much better. But a small team will be hard-pressed for doing good work on both platforms, especially once you start fiddling with more important APIs. Configuration and getting your system to compile things to properly is almost…

> “Make a progressive web app”: yes, that might be the way to go; provided you can get the users to ‘install’ it on their devices.

Assuming you're talking about the not-well-known process of adding PWAs to the Home screen, it's worth noting that you can package web apps for app store distribution as well. https://capacitorjs.com/

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#132
post #30
post #15

Tbh, I liked expo, but since you cannot build locally nowdays (you can eject and build, but that won't work 99% of the time, literally didn't work for me on the hello world example), I kinda just threw it in the "cool, but won't use" bucket for time beeing :/, could change in the future, but I don't know how I feel about 3d party service (EAS) building my app and holding my signing certificates (yet)

Based on our experience with, well, everything, even if local build is currently possible, we KNOW it's going to be removed later on.

Building Expo apps locally is not going to be removed. I am one of the cofounders of Expo.

Being able to build your app on your own hardware is a relatively fundamental feature of any application software framework. The Expo framework is free and open source and we consciously keep it decoupled from Expo Application Services (EAS), which is a suite of hosted services we manage.

Two of the ways to build your app are: - Entirely locally, without EAS: generate your native Android and iOS projects with "npx expo prebuild:{android,ios}" and build your app with Android Studio/Gradle and Xcode/xcodebuild, respectively. - With EAS: after getting set up with EAS, installing EAS CLI, and configuring eas.json, run "eas build". There is also a "--local" flag that runs the compilation steps locally and uses your signing credentials managed by EAS.

Many developers use a mix. For instance, they'll build locally when working on a feature for a fast feedback loop. And they'll use EAS to build their release candidates and PR previews to share with their team.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#133

I used to maintain Detox for iOS when I was at Wix, from 2017 to 2021. We ended up dropping support for Expo for plenty of reasons, some technical, some "political". The people reporting "issues" (more like asking questions) for their Expo apps, usually had very little technical understanding of any of the increasingly thick environment stack (the Expo layer, RN layer, UI framework layer, OS layer). They were basical…

I learned a while ago that is not worth using an abstraction layer over the official tooling (whatever Apple and Google provides you), even for small apps I was building one for each platform (as one dev). Tried at the time Xamarin and PhoneGap, and bit later RN, each one has his quirks and things that works in one platform but not in other so in the end you end up building one app for each platform more or less, but…

I've realized that I don't want an abstraction layer. I want a guardrail layer.

Previously, much of my draw to things like Expo has been the reduction in mental load for handling multiple different platforms. In theory, they're built by people who know the different "gotchas" and can help me avoid them.

In practice, something always requires you to dive into the underlying layers. At which point, you're just fighting with bug-filled abstractions.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#134
post #90

I’m primarily a web developer that’s long been interested in native mobile environments and after trying out many of these cross platform frameworks (all the way back to Appcelerator for those who remember!) my conclusion always ends up that they’re almost always a bad idea. The experience is inferior to native, it’s full of compromises to make cross platform work and you’re at the mercy of a company standing between…

Flutter is the second nicest platform I've found for developing for Android (losing to Jetpack Compose) and best one for cross-platform. As a user though, I hate using Flutter (and non-native) apps for simple things. They often look totally different from the rest of the OS. For products that exist as something other than apps, it's fine, but I still prefer native Material You apps.

The best Android app for a product I've used is the AnonAddy app. It's stylish Material You while feeling very custom and tailored.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#135
post #106

Earlier quoted context omitted.

I learned a while ago that is not worth using an abstraction layer over the official tooling (whatever Apple and Google provides you), even for small apps I was building one for each platform (as one dev). Tried at the time Xamarin and PhoneGap, and bit later RN, each one has his quirks and things that works in one platform but not in other so in the end you end up building one app for each platform more or less, but…

I’ve come to the same conclusion. I began to build a very simple app about a month ago and as a Web Dev figured React Native would be the best tool. Having completed about 60% of the app, I’m going to trash the whole thing and restart with Swift/Kotlin. I’ve encountered too many “quirks” that end up burning a huge amount of time for what should be an inconsequential component.

For some bizarre reason I haven't figured out yet, it seems like the "cross platform" choice is always the worst one.

So when people talk about cross-platform on the Mac, for example, it's always some JavaScript abomination, or Java, or Delphi (yes, seriously), or Go.

How about going the other direction and getting Cocoa running somewhere else? GNUstep, Cocotron etc. Gosh, that would actually make sense, can't have that. Literally.

In fact, one company did. Apportable. Google bought them and buried the tech.

Hmm

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#136
post #67

Expo is great. I use it. My primary issue with it is the lack of support for in app purchases (last checked in late 2022). The only easy way to do it is via RevenueCat, as none of the other RN IAP libraries work with Expo. Expo also has built in support for over-the-air updates, which is great. However, it is a paid product, for $5/m per 1000 users (first 1000 free). I believe you can run your own server for OTA upda…

Expo these days is pretty extensible and the option to write your own IAP module is a bit easier with Expo Modules, which let you write custom modules with Kotlin and Swift and set up a config plugin to automate changes to your Android Studio and Xcode projects. It definitely would be good for more IAP modules to provide config plugins and automatically integrate with Expo.

The ability to write and run your own update server is a part of Expo Updates and it is not going to be removed. The Expo Updates protocol is an open specification here: https://docs.expo.dev/technical-specs/expo-updates-1/.

Separately, EAS provides an optional, hosted service that implements the server side of the standard Expo Updates protocol and supports both simple and more advanced deployment patterns, for instance: https://docs.expo.dev/eas-update/deployment-patterns/. It also integrates with EAS's build service and appeals to teams looking for managed cloud infrastructure.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#137

I've been using Expo for past 2 years and I enjoyed the experience overall. But make no mistakes that Expo is a SaaS with the ability to inspect some part of the codebase. (I stand corrected here) ~Everything important for building and distribution process is moving to EAS, cloud-based service that is not open-source and cannot be self-hosted. So if want to build your app using your own VPS, you are out of luck (at l…

Expo is the free and open source framework and, separately, Expo Application Services (EAS) is the SaaS. Expo and EAS are designed to be decoupled while also working well together, optionally.

The Expo framework gives you the module system, runtime environment, CLI tools, debugger, a suite of modules, navigation to build universal native apps. They're universal in that there is an Android build, an iOS build, and a web build, and, especially with Expo Router, they work together with universal links. They're native in that the user experience is native to the underlying platform, usually using system UI components and behaviors.

EAS provides hosted services for building your app, submitting it to the stores, and updating it. Many developers will use both EAS and their own hardware. It is convenient and fast to build locally when iterating on a feature. And it is convenient in a different way to use EAS to make preview builds of your app on your PRs that change your app's native code or to make release candidates for production.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#138
post #106

Earlier quoted context omitted.

I’ve come to the same conclusion. I began to build a very simple app about a month ago and as a Web Dev figured React Native would be the best tool. Having completed about 60% of the app, I’m going to trash the whole thing and restart with Swift/Kotlin. I’ve encountered too many “quirks” that end up burning a huge amount of time for what should be an inconsequential component.

For some bizarre reason I haven't figured out yet, it seems like the "cross platform" choice is always the worst one. So when people talk about cross-platform on the Mac, for example, it's always some JavaScript abomination, or Java, or Delphi (yes, seriously), or Go. How about going the other direction and getting Cocoa running somewhere else? GNUstep, Cocotron etc. Gosh, that would actually make sense, can't have t…

It’s not perfect by any means, but SwiftUI is the most productive development stack I’ve ever used for GUIs.

There’s definitely a huge learning curve and some rough edges, but the speed with which I can write a polished UI in it is staggering.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#139

Earlier quoted context omitted.

Almost no one knows what a progressive web app is. And for most people, the only way they use the internet on their phones is through apps. It just doesn't occur to them to do otherwise. I wish things were different. It would have saved our company almost a year's worth of development on a pwa.

This is highly dependent on your target market. On Android PWAs effectively are apps as far as users are concerned, you can even make a “WebAPK” and submit it to the Play Store. The story on iOS is much worse, naturally. But if you can get past getting users to actually install the app the rest of the experience is acceptable.

Can’t we disguise the PWA as a browser on the iOS App Store? So in theory it’s just another browser that only allows to open one website- the PWA. But on the surface, to the users it will be available as an app in App Store.

Re: Expo – Open-source platform for making universal apps for Android, iOS, and web

#140
post #90

I’m primarily a web developer that’s long been interested in native mobile environments and after trying out many of these cross platform frameworks (all the way back to Appcelerator for those who remember!) my conclusion always ends up that they’re almost always a bad idea. The experience is inferior to native, it’s full of compromises to make cross platform work and you’re at the mercy of a company standing between…

Part of Expo's approach is for Expo apps to be native apps that provide a user experience that is native to the underlying platform, whether it's Android, iOS, the web, or something new.

For instance, navigation is one of the more complicated parts of an app's UX. The navigator UI has many subtle behaviors and animations that have been built over the course of several years, like how the back button and screen headers transition in and out. The gestures often have invisible hit boxes that are hard to replicate without using the system UI components. The screen transitions use specific animation curves users expect. And there's non-visual behavior like supporting universal deep links that take the user to a specific screen, which tends to require quite a bit of work to implement.

Expo uses the system UI components and the behaviors described above are present. The goal is for Expo UI to be native UI. And in some aspects, Expo can already provide a better default user experience like with universal links. Every screen gets a URL with Expo Router since URLs are a first-class concept, like they are on the web. This lets us provide deep linking (navigate from URL to a screen) and universal linking (HTTPS links work across web and native) as default features.

Sometimes the way we talk about Expo is that it brings together the best of native and web, and a lot of that is the user experience of native applications with the developer experience of the web.

Post reply on HN