Skip to content

This is the core official scaffold for Crowdbotics React Native apps.

Notifications You must be signed in to change notification settings

crowdbotics/react-native-scaffold

Repository files navigation

A customized React Native scaffold.

Source Code linter Production Release

Contents

Requirements for contributing

The following must be available in your system:

Node v18.16.0 (LTS) recommended.

Getting started

Install node modules:

yarn install

Install python packages:

pipenv install

Make changes to the scaffold and regenerate distribution artifacts:

yarn run bootstrap

Validate that the original facebook/react-native template was left untouched with:

yarn run template

Make sure to update the .crowdbotics.json version and add an entry to CHANGELOG.md.

macOS config

  • make sure to have a compatible version of urllib3 with openssl. urllib3 v2.0 or higher is compatible with OpenSSL 1.1.1 or higher

Scaffold updates checklist

When making scaffold updates, please make sure the following still works:

  • creating a demo app (npx crowdbotics/modules demo)
  • iOS Appetize build
  • iOS TestFlight build
  • iOS local emulator (npx react-native start)
  • iOS local xcode build
  • Android Appetize build
  • Android Internal build
  • Android local emulator (npx react-native start)
  • Android local debug build (./android/gradlew assembleDebug -p ./android)
  • Web deployment (called API in the Dashboard)
  • Web local dev server (yarn run web)
  • Web local build (yarn run web:build)
  • Studio loads the app and the welcome screen renders correctly

In order to test scaffold updates on Dashboard/Studio create a new Review App and set REACT_NATIVE_SCAFFOLD_REPO_BRANCH to the name of your branch.

Double check your work locally with those helper scripts checks:

  • yarn run bootstrap produces no changes besides potential changes in yarn.lock resolved versions
  • yarn run template produces no changes
  • yarn run semver check passes

Important!

Increase the version of the scaffold in package.json and .crowdbotics.json.

Finally make sure to update the CHANGELOG with human friendly descriptions.