DEV Community

loading...
Cover image for React Native Boilerplate 2021

React Native Boilerplate 2021

Handi Priyono
i'm learner in javascript
Updated on ・4 min read

React Native is a JavaScript based mobile-app framework that which allows you to build natively rendering mobile applications for android and also iOS. If you have learned JavaScript, then you can start creating react-native Project with ease.

if you wanna go to the point, this is the GitHub repository for react native boilerplate : https://github.com/handi-dev/react-native-boilerplate.

Updated info of Library & package version of this React Native Boilerplate:

  • react-native": "0.65.1"
  • React Navigation 6
  • react-navigation/native: "^6.0.2
  • react-navigation/native-stack: "^6.1.0"
  • react-navigation/stack: "^6.0.7"
  • react-native-gesture-handler: "^1.10.3"
  • react-native-screens: "^3.6.0"
  • react-native-tab-view: "^3.1.1"
  • react-native-masked-view/masked-view: "^0.2.6"
  • react-navigation/bottom-tabs: "^6.0.5"
  • react-navigation/material-top-tabs: "^6.0.2"
  • react-native-async-storage/async-storage: "^1.15.7"
  • react native vector icons: "^8.1.0"

react native boilerplate 2021

React-Native Boilerplate 2021

The problem comes from how we manage the structure of the files, folder structure best practice, and also what library that we’ll use to develop apps that are stable. Make sure you only use the library you need. Never install libraries, but in fact, you don’t use those libraries in code. It is better to uninstall that library instead of you inserting in your project.

Criteria for the Best React Native Boilerplate

If you are going to create React native projects from scratch, you’ve to think about using React-native boilerplate. React-native boilerplate architecture usually created for the best performance and also it follows React / React Native best practices.

If you want to get the best react-native boilerplate, make sure that boilerplate is monthly-updated. Because libraries always get updated and also the react-native version itself. Commonly, you can check that updated change log at GitHub repository.

If you clone the old and unmaintained react-native boilerplate template, your app will be under-performance. And, this will cause another problem in your code when it comes to compatibility and so on.

Basically, what any React native boilerplate should have are:

1. Navigation.

It is used to navigate to another page or screen. Most developers use React Navigation.

2. State Management.

It is used for storing global state, which can be accessed from any screen. One of them is Redux with Redux Thunk. Another option is MobX.

3. React Hooks

You can use the latest react Hooks instead of using React Class. Some developer also want to integrate react native boilerplate with typescript. That’s an option.

4. React Native Icon

Mostly, a project always uses the icon to enhance its appearance. So, we can use ‘react native vector icon’. As another option, you can also import your local icon.

Ya, that’s all. Because the needs of every Project are different, so that has to be just Simple boilerplate. Later on, developers can add another library that is needed for developing the new features.

Based on my experience as a React-native Engineer for almost 3 years, I have created the React-Native boilerplate that I can use in any Project. You can also use this simple boilerplate in your project, because it consists of simple Libraries and has the best folder structure.

I will share this boilerplate and how to use it in your Project. Make sure you have installed react-native-rename as a global package. If you haven’t installed that yet, you can follow this command.

npm i react-native-rename -g

After that, follow steps below:

  • Clone this repo, git clone https://github.com/handi-dev/react-native-boilerplate.git

  • Go to project’s root directory, cd .

  • Remove .git folder, rm -rf .git

  • Use React Native Rename to update project name $ npx react-native-rename <newName>

  • Run npm install to install dependencies

  • Run npx pod-install from root of your project

If you got error like: The version of CocoaPods used to generate the lockfile (x.x.x) is higher than the version of the current executable (x.x.x), then you can upgrade your cocoapods version.

If you install cocoapods using homebrew, you can using this command: brew upgrade cocoapods if that does not work, try brew install cocoapods.

If you previously install using gem, then use this command and run on your terminal: sudo gem install cocoapods

make sure your cocoapods version is updated after run that command.

To check your current version of cocoapods, run pod --version

After that, don't forget to execute in your terminal pod repo update

And, finally, run npx pod-install. Those methods must be solved that problem.

Last method: If All the above steps not work, remove Podfile.lock in folder ios , and then run `npx pod-install

  • Start the packager with npm start
  • Connect your device or use emulator that’s installed in your PC
  • Run the test application:
  • On Android: Run npx react-native run-android
  • On iOS: Open npx react-native run-ios

I hope that boilerplate can be useful for all of you guys. If you have any questions please visit me on github. don’t forget fork and give a star.

For full instructions on how to install , you can go to react native boilerplate 2021 Github repository: https://github.com/handi-dev/react-native-boilerplate

original article: React-Native Boilerplate 2021

Discussion (5)

Collapse
appi2393 profile image
Apurva Jain

npx: installed 1 in 1.666s
Scanning for pods...
1.9.3

pod install
Auto-linking React Native modules for target reactNativeBoilerplate: RNCAsyncStorage, RNCMaskedView, RNGestureHandler, RNReanimated, RNScreens, RNVectorIcons, and react-native-safe-area-context
Analyzing dependencies
Fetching podspec for DoubleConversion from ../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec
Fetching podspec for Folly from ../node_modules/react-native/third-party-podspecs/Folly.podspec
Fetching podspec for glog from ../node_modules/react-native/third-party-podspecs/glog.podspec
[!] CocoaPods could not find compatible versions for pod "FlipperKit/FlipperKitReactPlugin":
In snapshot (Podfile.lock):
FlipperKit/FlipperKitReactPlugin (= 0.54.0, ~> 0.54.0)

In Podfile:
FlipperKit/FlipperKitReactPlugin (~> 0.54.0)

None of your spec sources contain a spec satisfying the dependencies: FlipperKit/FlipperKitReactPlugin (~> 0.54.0), FlipperKit/FlipperKitReactPlugin (= 0.54.0, ~> 0.54.0).

You have either:

  • out-of-date source repos which you can update with pod repo update or with pod install --repo-update.
  • mistyped the name or version.
  • not added the source repo that hosts the Podspec to your Podfile.

Aborting run
An unexpected error was encountered. Please report it as a bug:
CocoaPodsError: The command pod install failed
└─ Cause: Error: pod exited with non-zero code: 31
at CocoaPodsPackageManager._installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:85286)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async CocoaPodsPackageManager.installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84649)
at async runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109680)
at async /Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109766 {
code: 'COMMAND_FAILED',
cause: Error: pod exited with non-zero code: 31
at ChildProcess.h (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:1073)
at Object.onceWrapper (events.js:422:26)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
...
at Object.spawnAsync as default
at CocoaPodsPackageManager._runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:86068)
at CocoaPodsPackageManager._installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84933)
at CocoaPodsPackageManager.installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84660)
at runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109688)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async /Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109766 {
pid: 18399,
output: [
'',
'\x1B[33m[!] The version of CocoaPods used to generate the lockfile (1.10.0) is higher than the version of the current executable (1.9.3). Incompatibility issues may arise.\x1B[0m\n'
],
stdout: '',
stderr: '\x1B[33m[!] The version of CocoaPods used to generate the lockfile (1.10.0) is higher than the version of the current executable (1.9.3). Incompatibility issues may arise.\x1B[0m\n',
status: 31,
signal: null
},
isPackageManagerError: true
}

Collapse
handipriyono profile image
Handi Priyono Author

Hi @appi2393 , please re-read the article , since i have updated that,
Thanks

Collapse
appi2393 profile image
Apurva Jain
npx: installed 1 in 1.666s
Scanning for pods...
1.9.3
> pod install
Auto-linking React Native modules for target `reactNativeBoilerplate`: RNCAsyncStorage, RNCMaskedView, RNGestureHandler, RNReanimated, RNScreens, RNVectorIcons, and react-native-safe-area-context
Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
Fetching podspec for `Folly` from `../node_modules/react-native/third-party-podspecs/Folly.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
[!] CocoaPods could not find compatible versions for pod "FlipperKit/FlipperKitReactPlugin":
  In snapshot (Podfile.lock):
    FlipperKit/FlipperKitReactPlugin (= 0.54.0, ~> 0.54.0)

  In Podfile:
    FlipperKit/FlipperKitReactPlugin (~> 0.54.0)

None of your spec sources contain a spec satisfying the dependencies: `FlipperKit/FlipperKitReactPlugin (~> 0.54.0), FlipperKit/FlipperKitReactPlugin (= 0.54.0, ~> 0.54.0)`.

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

Aborting run
An unexpected error was encountered. Please report it as a bug:
CocoaPodsError: The command `pod install` failed
└─ Cause: Error: pod exited with non-zero code: 31
    at CocoaPodsPackageManager._installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:85286)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async CocoaPodsPackageManager.installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84649)
    at async runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109680)
    at async /Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109766 {
  code: 'COMMAND_FAILED',
  cause: Error: pod exited with non-zero code: 31
      at ChildProcess.h (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:1073)
      at Object.onceWrapper (events.js:422:26)
      at ChildProcess.emit (events.js:315:20)
      at maybeClose (internal/child_process.js:1048:16)
      at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
      ...
      at Object.spawnAsync [as default] (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:558)
      at CocoaPodsPackageManager._runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:86068)
      at CocoaPodsPackageManager._installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84933)
      at CocoaPodsPackageManager.installAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:84660)
      at runAsync (/Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109688)
      at processTicksAndRejections (internal/process/task_queues.js:93:5)
      at async /Users/apurvajain/.npm/_npx/18304/lib/node_modules/pod-install/build/index.js:2:109766 {
    pid: 18399,
    output: [
      '',
      '\x1B[33m[!] The version of CocoaPods used to generate the lockfile (1.10.0) is higher than the version of the current executable (1.9.3). Incompatibility issues may arise.\x1B[0m\n'
    ],
    stdout: '',
    stderr: '\x1B[33m[!] The version of CocoaPods used to generate the lockfile (1.10.0) is higher than the version of the current executable (1.9.3). Incompatibility issues may arise.\x1B[0m\n',
    status: 31,
    signal: null
  },
  isPackageManagerError: true
}
Enter fullscreen mode Exit fullscreen mode
Collapse
handipriyono profile image
Handi Priyono Author

see updated article on how to solve that,

Collapse
nosykretts profile image
Fajar Andi Patappari

Wow. thank you @handipriyono