facebook / react-native-website

The React Native website and docs
https://reactnative.dev
MIT License
1.93k stars 4.35k forks source link

Suggesting Project IDX as an Alternate Option for "Getting Started"? #4163

Open kirupa opened 1 month ago

kirupa commented 1 month ago

Hi everyone - I'm a Product Lead at Google working on Project IDX, a cloud-based development environment. Cross-platform mobile development is a big area of focus for us.

With IDX, with just a few clicks and entirely in your browser, you can have a fully configured cloud-based environment along with Android emulators that make it easy to code/build/test/deploy mobile apps. We started with Flutter and we recently added support for React Native (using Expo): https://x.com/kirupa/status/1813690012720120225 (Our underlying code editor is CodeOSS [same as VS Code]).

I feel this might be a good complement to the current installation steps to suggest to users who want to start building React Native apps. All they need is a Google log-in, and they are good to go.

Thoughts?

Cheers, Kirupa

cortinico commented 1 month ago

Hey @kirupa Nicola here from the React Native team at Meta.

Let me loop @brentvatne @ide on the Expo side, as my understanding is that Project IDX will work only with Expo right?

kirupa commented 1 month ago

Thanks @cortinico! Right now, we only provide a React Native template with Expo configured. We can also create a React Native template without Expo if that would be another alternative you all recommend.

Taking a few steps back, you all are the React Native experts 😄 What would be the appropriate starting points that we can provide that would be beneficial to RN developers?

(One change we'll make in the near-term from Brent's feedback to us on Twitter/X, we'll explore adding an option to run a development build in the near future.)

brentvatne commented 1 month ago

@kirupa - do you happen to know on what timeline Google plans to begin charging for usage of IDX? It must be relatively expensive to operate! I ask because ideally we don't want to be pushing developers to a paid service in the getting started flow (Expo is a free and open source React Native framework, which you can use completely independently of EAS, the paid CI/CD services that Expo the company provides).

my second concern is about the integration stability - currently it's listed as experimental, and when it's considered stable I think we would need to a) have something that we can rely on and b) ensure we can stay in sync around rolling out new versions of React Native / Expo. is the integration open source at all? is it something that we can contribute to?

as I said on Twitter, great work on IDX :) it's very smooth experience so far!

kirupa commented 1 month ago

@brentvatne - For #1, our plan is to always have a version of IDX available as a no-cost offering where developers can build for React Native and other frameworks/languages easily. There may be paid "add ons" (like more powerful VMs, more advanced AI capabilities, etc.), but that is something we are still in the early days of thinking about.

For #2, we are actively working on open sourcing all of our templates on Github to make it easier for developers to both learn more about how we configure Nix as well as contribute any changes. We are likely a few weeks out from being able to have that live. There are a few bugs we are working through right now (ie: onStart hooks are flaky), but we'll likely upgrade it to stable at around the same time as our templates are posted publicly.

geromegrignon commented 3 weeks ago

Hi @kirupa as far as I understand, the quick solution to replace the Getting started part would be to add a Open in IDX button.

The thing is the Getting started is especially directed to contributors and as they don't have write access to the repo, they need to make a fork. But IDX does only allow to provide a static repository URL to open a project so it'll target this one rather than the fork. Is there some work to make it dynamic or context-based? Gitpod does it with a referer link: https://github.com/gitpod-io/gitpod/issues/78