Create React Native box

Hi guys,

I would like to have a stack with React Native tools preinstalled in order to cut deployment time. I asked on GitHub whether I should create a React Native stack/box or update the Xamarin one in order to make a “cross-platform stack”. @viktorbenei redirected me here and gave me additional infos:

  • there’s a feature request about having multiple workflows for one project: this would be nice to have but not needed for this feature request (you can always create two projects with the same cross-platform stack)
  • the Xamarin stack is updated with the development cycle of the Xamarin team
  • there are many Xamarin stacks available

So… should I make a PR for:
A) creating a React Native stack
B) changing Xamarin stack to Cross-platform stack with React Native tools and Xamarin

What do you think?

Thanks!

2 Likes

Hi @Minishlink and thanks for asking this here! :wink:

We definitely plan to have a better answer for this question, but we’re still discussing a couple of details. Our schedule right now is to start working on full React Native and Ionic/Cordova support early next month, starting with creating up to date sample projects and base workflows, and then decide what should be preinstalled and where.

Once that’s decided we can move on to auto detect RN/Ionic/Cordova projects, auto selecting the right stack and auto generating a suitable base configuration, just like what’s available for iOS, Android, Xamarin, MacOS, fastlane, … projects right now.

In the meantime, if anyone have any feedback please let us know!

Particularly we’re interested in:

  • If we create a separate “cross platform” stack (Xcode + Android SDK combined stack), should that be built on the latest Xcode and latest NodeJS version? Or should we use the latest LTS NodeJS version instead? E.g. right now, should we use NodeJS v6 or v7? Similarly, should we use the latest Xcode version which is 8.2.1 right now?
  • Should we provide multiple stacks or would a single one be sufficient?

I think for Node, v6 is best as I’ve found many dependencies just aren’t v7 ready.

As for Xcode, I think the latest should be a priority as it will encourage developers to ensure they have their own Xcode installations up to date. 8.x has been out for a while now, and it’s pretty backwards compatible as is (also the automatic signing stuff is gold)

1 Like

Thanks for the infos @JoshPike!

Unfortunately, although auto code signing is a great feature, not every tool supports it properly yet - see for example this Ionic 2 discussion: Can I use Bitrise to automatically build (and deploy) Ionic 2 (Cordova) based apps? - #9 by viktorbenei (“ionic platform add ios in itself is not enough, as it generates an Xcode project which has incompatible code signing settings for Xcode 8.”)

Fair enough, so why not have two seperate stacks, one with 7 and one with 8? That would cover everyone right?

Hopefully it will, but it might not be required either - we have to test this, and a couple of other things before we could commit to creating and maintaining these new stack(s) :slight_smile:

1 Like

Dope, looking forward to this new stack, thanks! :slight_smile:

1 Like

I agree it would be nice to have an image with RN tooling baked in to cut down on build time. FYI, right now we are using the Xamarin Stable with Xcode 7.3, on OS X 10.11 (El Capitan) - LTS Stack with the “Install React Native” step for our RN apps. We also are on node 6 for our dev environment.

1 Like

Thanks for the info @eliot_pear!

Just curious, do you use Xcode 7.3 on your Mac too?

Yeah… as I recall we were having some sort of issue with Xcode 8 signing that wasn’t playing nicely with our Appium tests and haven’t had a chance to dig into it yet.

1 Like

What tools would you like to see preinstalled?

@Minishlink what tools would you like to be preinstalled?

Hi Viktor, the basics should be good :slight_smile:

  • Git
  • XCode
  • Android SDK (at least build tools 23.0.1 and 23.0.2)
  • node
    • yarn
    • react-native-cli
    • maybe precache some very used dependencies like react-redux, react-navigation, redux-saga…
  • ruby
    • bundler
    • fastlane

Thanks!

2 Likes

Yarn pre-caching of libraries is an interesting idea, although you’d probably need to cache quite a few versions as each project might be on different versions of each package. And for floating dependencies it’d only speed up builds for as long as the cache was kept up to date. We’re not using yarn at the moment but hope to at some point. A gradle pre-cache might also be nice if possible.

Some more stuff that comes to mind:

  • cocoapods
  • gradle (I think this is included with jdk or android sdk?)
  • nvm, with preinstalled versions of the latest patch for each major node release (at least since node 6 LTS “Boron”)
  • npm
  • git-lfs
  • AWS cli
  • jq
  • docker for mac, to make it easier to set up a local backend for integration tests to run against
2 Likes

@viktorbenei any update on the availability of the React Native Stack ? Thanks in advance !

@Tlvenn right now we suggest you to use the Xamarin / Visual Studio for Mac stacks as those have both Xcode and Android tools. Of course those are updated as Xamarin updates its tools.

If you have any suggestions or issues why a separate stack should be created please let us know! For now we don’t have enough info why a separate stack should be created and if should what it would include and how it would be updated.

Just an update: a new “Hybrid” stack was released, with Xcode 8.3.3 for now, but we’ll provide an Xcode 9 version too in the near future:

I believe we have all the preinstalled tools now either on the Hybrid stack or on the Visual Studio for Mac stack (and on the upcoming Hubrid with Xcode 9 stack), so I’ll go ahead and mark this Feature Requests as completed. If you’d still have a request what should be preinstalled feel free to create a new Feature Requests or comment on the relevant discussion.

Thanks everyone for voting & for all the infos! :slight_smile:

2 Likes

This topic was automatically closed after 4 days. New replies are no longer allowed.