Expo and React Native apps

Quite some apps are made with React Native these days. Expo is an app that allows developing and running apps build with React Native more easily. I’d love to see this available on F-Droid, and wonder if more people would be interested.

It is open source (BSD + 3rd party MIT, Apache, CC, etc.), but does integrate with play services, crashlytics, its own API (but app works without using it), and perhaps more. May need several android SDK versions to build, also requires the android NDK.

What would be the way to go about this? Try to find support with the app itself and introduce feature toggles for proprietary services; and if that fails, maintain a fork?
It looks like it would be quite a job, but as it paves the way for more React Native and Expo apps to appear within F-Droid, perhaps it is actually worth it.

There is a policy for including in F-Droid, easily searchable. Also there
is “rfp”. Please read and ask back if have questions left.

Thanks, hadn’t discovered “rfp” yet.

As far as I can see, these are things to look at:

  • License is ok
  • may need to remove / add feature toggle for dependencies (see build.gradle)
    • com.google.android.gms (google play services)
    • com.facebook.android (Facebook integration)
    • com.segment.analytics.android (analytics, external API?)
    • io.branch.sdk.android (deep linking integration, external API?)
  • same for expoview dependencies (see build.gradle)
    • com.crashlytics.sdk.android (crash reporting service, external API)
  • Needs NDK r10e, seems metadata supports this (ndk=r10e)
  • Javascript part of the app seems ok (package.json)
  • are these binary libs that need to be rebuild?
  • ReactAndroid seems to download things
    • is downloading sources ok?
    • do these contain binaries as well?
  • “Please use Node 7 and npm 4.” - how to we get this on the build machine?
  • Depends on xdl (just javascript)
    • looks like this belongs in the prebuild step

rfp: F-Droid / Requests For Packaging · GitLab

1 Like

Status update: I’ve got an apk to build and was able to run basic Expo apps. Because of the many Java and Javascript dependencies, it was a little involved. Also a number of analytics services and non-free integrations were removed.

See WIP: Add host.exp.exponent (Expo) (!2370) · Merge requests · F-Droid / Data · GitLab

@wvengen - I’m really new to this community (I literally created an account just now to make this comment). I can’t help but notice that Ildar has directed you to the rfp in both of their response, but I can’t find such an issue over at F-Droid / Requests For Packaging · GitLab. This leads me to believe that there are reasons to point you to there, such as an already established workflow, a template that gathers standard information that people frequently miss, etc.

I think your suggestion that F-Droid support expo and react native apps is a good one. But my guess is you’ll get a whole lot more support if you follow the recommended process. :wink:

@metasean thank you for your message, and willingness to help out! What I got from the Inclusion How-To whas that you could either open an RFP so others could pick it up, or open a Merge Request if you can do it yourself.
Looking in more detail now at other RFPs, I can see your point - will open one. Thanks!
edit Expo (#240) · Issues · F-Droid / Requests For Packaging · GitLab

1 Like