Giter Site home page Giter Site logo

obytes / react-native-template-obytes Goto Github PK

View Code? Open in Web Editor NEW
1.6K 32.0 250.0 23.42 MB

πŸ“± A template for your next React Native project: Expo, PNPM, TypeScript, TailwindCSS, Husky, EAS, GitHub Actions, Env Vars, expo-router, react-query, react-hook-form.

Home Page: https://starter.obytes.com

License: MIT License

JavaScript 13.98% TypeScript 77.59% Objective-C 0.21% Ruby 2.11% Shell 1.09% Objective-C++ 1.78% Swift 0.07% C 0.07% Kotlin 3.05% CSS 0.04%
react-native template typescript react-native-template react react-native-boilerplate boilerplate starter-template react-navigation android

react-native-template-obytes's Introduction

React Native Template Obytes

React Native Template Obytes

expo react-native GitHub Repo stars GitHub commit activity (branch) GitHub issues GitHub closed issues

πŸ“± A template for your next React Native project πŸš€, Made with developer experience and performance first: Expo, TypeScript, TailwindCSS, Husky, Lint-Staged, expo-router, react-query, react-hook-form, I18n.

Overview

As a team of experienced developers at Obytes Mobile Tribe, we have spent years refining our approach to building high-quality React Native applications. Our starter kit is based on the best practices and tools that we have found to be most effective in our projects.

This starter kit has been thoroughly tested and proven successful in multiple projects over the past four years. It is regularly used by our team on a daily basis and has helped us deliver great results for our clients.

While our starter kit is heavily influenced by our own opinions and experiences, we have carefully selected the included solutions to address common challenges and meet the needs of the majority of use cases. We believe it offers a streamlined and efficient approach to building React Native apps, and we are confident that it can help others achieve their project goals as well.

πŸš€ Motivation

Our goal with this starter kit was to streamline the process of building React Native apps, both for our team and for our clients. We wanted to create a resource that would allow us to create high-quality apps faster and with less effort; while ensuring that all of our projects adhere to the same code standards and architectural principles.

The benefits of using this starter kit are numerous. It helps our team easily switch between projects, as we can rely on a consistent foundation of code. It also allows us to focus on the business logic of each project rather than getting bogged down in boilerplate code. And, because it promotes consistency across projects, it makes it easier to maintain and scale our apps, as well as share code between teams.

Overall, our starter kit is designed to facilitate efficient and effective app development, helping us to bring the best possible products to our clients

✍️ Philosophy

When creating this starter kit, we had several guiding principles in mind::

  • πŸš€ Production-ready: We wanted to ensure that this starter was ready for real-world use, providing a solid foundation for building production-grade apps.
  • πŸ₯· Developer experience and productivity: Our focus was on creating a starter that would enhance the developer experience and increase productivity.
  • 🧩 Minimal code and dependencies: We aimed to keep the codebase and dependencies as small as possible.
  • πŸ’ͺ Well-maintained third-party libraries: We included only well-maintained and reliable third-party libraries, to provide stability and support for our projects.

⭐ Key Features

  • βœ… The latest version of Expo SDK, Along with the Custom Dev client, you can leverage the best of the Expo ecosystem and maintain full control over your app.
  • πŸŽ‰ TypeScript for type checking, to help you catch bugs and improve code quality.
  • πŸ’… A minimal UI kit built with TailwindCSS, With the most common components you should have in your app.
  • βš™οΈ Support for multiple environments builds, including Production, Staging, and Development, using Expo configuration.
  • 🦊 Husky for Git Hooks, to automate your git hooks and enforce code standards.
  • πŸ’‘ A clean project structure with Absolute Imports, to make it easier to navigate and manage your code.
  • 🚫 Lint-staged for running Eslint and TypeScript checks on Git staged files, to ensure that your code is always up to standards.
  • πŸ—‚ VSCode recommended extensions, settings, and snippets to enhance the developer experience.
  • β˜‚οΈ Pre-installed Expo Router with examples, to provide a comprehensive navigation solution for your app.
  • πŸ’« An auth flow with Zustand and react-native-mmkv as a storage solution to save sensitive data.
  • πŸ›  +10 workflows for building, releasing, testing and distributing your app using Github action.
  • πŸ”₯ React Query and axios for fetching data, to help you build efficient and performant apps.
  • 🧡 A good approach for handling forms with react-hook-form and zod for validation + keyboard handling.
  • 🎯 Localization with i18next, along with Eslint for validation.
  • Unit testing with Jest and React Testing Library setup to help you write tests for your app.

✍️ Documentation

πŸ˜‰ Why Expo?

Expo is a powerful tool for building React Native apps, offering a range of features and benefits that can help developers create high-quality apps more efficiently. One question we often receive from the community is why we choose to use Expo instead of the React Native CLI.

In the past, our team used the React Native CLI for our starter kit. However, we found that using Expo presented several advantages. In particular, the introduction of the Custom dev client feature allowed us to take advantage of the Expo ecosystem and utilize native libraries without the need for ejecting the app. This has greatly simplified our development process and enabled us to focus on the business logic of our projects.

Additionally, we have found that using Expo has made it easier to upgrade our apps to new versions, eliminating the issues we previously encountered when using the React Native CLI.

Overall, we believe that Expo offers numerous benefits for building React Native apps and is a valuable tool for any developer. The real question may be, why not use Expo?

πŸ€” Is this starter for you?

If you are planning to build a React Native app and are looking for a strong foundation, well-designed architecture, and a positive developer experience, then this starter kit is an excellent resource to consider. It offers a comprehensive set of best practices and tools that have been tested and proven effective in multiple projects.

Even if you are not sure that using a starter kit is the right choice for your project, you can still benefit from this resource. You can explore the starter kit and draw inspiration from the solutions it provides for common challenges faced by React Native developers. This can be a helpful way to discover good practices and find effective solutions for your own app development process.

Overall, whether you choose to use this starter kit as is or simply take some ideas from it, we believe it offers valuable insights and resources for anyone looking to build a high-quality React Native app.

πŸ§‘β€πŸ’» Stay up to date

We are committed to continually improving our starter kit and providing the best possible resources for building React Native apps. To that end, we regularly add new features and fix any bugs that are discovered.

If you want to stay up to date with the latest developments in our starter kit, you can either watch the repository or hit the "star" button. This will allow you to receive notifications whenever new updates are available.

We value the feedback and contributions of our users, and we encourage you to let us know if you have any suggestions for improving our starter kit. We are always looking for ways to make it even more effective and useful for our community. So, please do not hesitate to reach out and share your thoughts with us.

πŸ’Ž Libraries used

Contributors

This starter is maintained by Obytes mobile tribe team and we welcome new contributors to join us in improving it. If you are interested in getting involved in the project, please don't hesitate to open an issue or submit a pull request.

In addition to maintaining this starter kit, we are also available to work on custom projects and help you build your dream app. If you are looking for experienced and reliable developers to bring your app vision to life, please visit our website at obytes.com/contact to get in touch with us. We would be happy to discuss your project in more detail and explore how we can help you achieve your goals.

πŸ”₯ How to contribute?

Thank you for your interest in contributing to our project. Your involvement is greatly appreciated and we welcome your contributions. Here are some ways you can help us improve this project:

  1. Show your support for the project by giving it a 🌟 on Github. This helps us increase visibility and attract more contributors.
  2. Share your thoughts and ideas with us by opening an issue. If you have any suggestions or feedback about any aspect of the project, we are always eager to hear from you and have a discussion.
  3. If you have any questions about the project, please don't hesitate to ask. Simply open an issue and our team will do our best to provide a helpful and informative response.
  4. If you encounter a bug or typo while using the starter kit or reading the documentation, we would be grateful if you could bring it to our attention. You can open an issue to report the issue, or even better, submit a pull request with a fix.

We value the input and contributions of our community and look forward to working with you to improve this project.

❓ FAQ

If you have any questions about the starter and want answers, please check out the Discussions page.

πŸ”– License

This project is MIT licensed.

react-native-template-obytes's People

Contributors

0x10ayoub avatar cristianfigueredo avatar elenabitire avatar flexbox avatar github-actions[bot] avatar gleidsondaniel avatar hamzamekk avatar louis-genestier avatar luizprsjr avatar nilsandresen avatar onurusluca avatar pkcarreno avatar remotenode avatar sergeimeza avatar shaquibimdad avatar siarheipashkevich avatar sihamben avatar yjose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-template-obytes's Issues

How to upgrade template

Hi
I've started the template by doing (as suggested)
npx react-native init MyApp --template https://github.com/obytes/react-native-template-obytes

With the latest release published recently
1.5.1 Release

How could I update my project with the latest changes? Of course git pull, git fetch won't work because I didn't clone the repository

Thanks

release production version on Bitrise

How can we release production version on Bitrise? I have added an env variable with APP_ENV key and production value, but it is still releasing development version.

react-native-make is archived

Hi!

You have a really nice template here, I think I'll use it for the next project :) I was checking the dependecies and looks like react-native-make is no longer maintained. I'm not sure what's going on at Bamlab, they even have a deprecation notice for an other package of theirs, stating they're migrating that packages capabilites to react-native-make.

I use fastlane for app icons, but since SVGs are already part of this template, you might want to take a look at this package.

Core could not be found within the project or in these directories:

Hello,

I'm trying to import the Homepage screen into app.js but give me the following error inside: " \template\src\screens\Home\index.tsx"

[Error: undefined Unable to resolve module core from D:\Develop\myApp\template\src\screens\Home\index.tsx: core could not be found within the project or in these directories:
node_modules
2 | import {Button, Screen, showErrorMessage, Text, View} from 'ui';
3 | import {API_URL} from '@env';

4 | import {translate, useAuth} from 'core';
| ^
5 | import {useTasks} from 'api';
6 | import {ActivityIndicator} from 'react-native';
7 |]

Why happen that?

Thanks,

Simone

none-commit env variables handling

Summary:

Interested in hearing how people are using env variables with the eas.json setup.
This setup makes it so that you should add sensitive information to your file. For all of you envirionments.
Preferably one would not want to commit these files, using react-native-dotenv for example.
But process.env variables can't really be used in the eas.json

How do you solve this?

Permission denied

Summary:

Steps to reproduce:

Node.js v18.14.0

Expected behavior:

Additional notes:

image
image

Tasks

  • Task 1
  • Task 2
  • Task 3

Validation Library - zod instead of yup

Wondering if this project would be open to using zod instead of yup as the underlying validation library. Benefits would include

  1. first class typescript support
// extract the inferred type like this
type Dog = z.infer<typeof Dog>;
  1. less verbose object/type syntax
// all properties are required by default
const Dog = z.object({
  name: z.string(),
  age: z.number(),
});

this in conjunction with https://github.com/react-hook-form/resolvers#zod would result in a less verbose FormData definition for react-hook-form by utilizing the z.infer method.

import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';

// don't need a .shape here
const schema = z.object({
  // don't need to specify a required here
  email: z.string().email(),
  password: z.string().min(6),
});

export const Login = () => {
  const { signIn } = useAuth();

  // don't need to redefine the schemas types as TypeScript manually
  type FormData = z.infer<typeof schema>

  const { handleSubmit, control } = useForm<FormData>({
    resolver: zodResolver(schema),
  });

I can make a PR if this is something you are interested in.

Zustand shallow

Summary:

Hi guys, i am wondering why you didn't use zustand shallow for getting state in your custom selector.
Pleas can you explain to us why.

pnpm android: problem occurred configuring project ':expo-modules-core'

Summary:

I am having a problem installing the mobile app on my android phone with pnpm android command.
I have the android sdk installed with commandline tools: ndk 23.1.7779620 build tools 33 and aplatfom tools 33
I have specified the location of android sdk with local.properties file like this
sdk.dir = C:\Program Files\Android\SDK\tools\build-tools\33.0.2

Steps to reproduce:

npx create-obytes-app@latest app
pnpm android # ensure android device is attached and debugging turned on

Expected behavior:

`> [email protected] android C:\Users\dantey\Desktop\workspace\fitnestx

expo run:android

β€Ί Building app...
Configuration on demand is an incubating feature.

Configure project :app
?? Applying gradle plugin 'expo-dev-launcher-gradle-plugin' ([email protected])

Configure project :expo-application
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-constants
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-dev-client
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-dev-launcher
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-dev-menu
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-dev-menu-interface
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-eas-client
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-file-system
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-font
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-image
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-json-utils
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-keep-awake
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-localization
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-manifests
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

Configure project :expo-modules-core
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL.

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.

  • Where:
    Script 'C:\Users\dantey\Desktop\workspace\fitnestx\node_modules\expo-modules-autolinking\scripts\android\autolinking_implementation.gradle' line: 326

  • What went wrong:
    A problem occurred evaluating project ':expo'.

A problem occurred configuring project ':expo-modules-core'.
Failed to notify project evaluation listener.
> The filename, directory name, or volume label syntax is incorrect
> Could not get unknown property 'release' for SoftwareComponentInternal set of type org.gradle.api.internal.component.DefaultSoftwareComponentContainer.

  • Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.

  • What went wrong:
    A problem occurred configuring project ':expo'.

compileSdkVersion is not specified. Please add it to build.gradle

  • Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
==============================================================================

BUILD FAILED in 53s
10 actionable tasks: 10 up-to-date
Error: C:\Users\dantey\Desktop\workspace\fitnestx\android\gradlew.bat exited with non-zero code: 1
Error: C:\Users\dantey\Desktop\workspace\fitnestx\android\gradlew.bat exited with non-zero code: 1
at ChildProcess.completionListener (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:52:23)
at Object.onceWrapper (node:events:628:26)
at ChildProcess.emit (node:events:513:28)
at ChildProcess.cp.emit (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\node_modules\cross-spawn\lib\enoent.js:34:29)
at maybeClose (node:internal/child_process:1100:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)
...
at Object.spawnAsync [as default] (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:17:21)
at spawnGradleAsync (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:72:46)
at Object.assembleAsync (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:52:18)
at runAndroidAsync (C:\Users\dantey\Desktop\workspace\fitnestx\node_modules@expo\cli\build\src\run\android\runAndroidAsync.js:31:24)
 ELIFECYCLE  Command failed with exit code 1.`

Additional notes:

I will appreciate quick help on this. Am not sure if am lacking in something or its a bug

Tasks

  • Task 1
  • Task 2
  • Task 3

set focus on first input In long forms with validation errors

Summary:

Consider a long form that has many fields. I want to focus to the first input when we have validation errors. How can I achieve this? I used setFocus from react hook form like this but it is not working:

  React.useEffect(() => {
    const firstError = Object.keys(errors).reduce((field, a) => {
      return errors[field] ? field : a;
    }, null);

    if (firstError) {
      setFocus(firstError);
    }
  }, [errors, setFocus]);

Steps to reproduce:

Create a screen with a large number of inputs (with validations) so that the page scrolls:

import { zodResolver } from '@hookform/resolvers/zod';
import React from 'react';
import type { SubmitHandler } from 'react-hook-form';
import { useForm } from 'react-hook-form';
import * as z from 'zod';

import { Button, ControlledInput, ScrollView, Text, View } from '@/ui';

const schema = z.object({
  f: z.string({
    required_error: 'f is required',
  }),
  l: z.string({
    required_error: 'l is required',
  }),
  email: z
    .string({
      required_error: 'Email is required',
    })
    .email('Invalid email format'),
  password: z
    .string({
      required_error: 'Password is required',
    })
    .min(6, 'Password must be at least 6 characters'),
});

export type FormType = z.infer<typeof schema>;

export type LoginFormProps = {
  onSubmit?: SubmitHandler<FormType>;
};

export const Login = ({ onSubmit = () => {} }: LoginFormProps) => {
  const {
    handleSubmit,
    control,
    setFocus,
    formState: { errors },
  } = useForm<FormType>({
    resolver: zodResolver(schema),
  });

  React.useEffect(() => {
    const firstError = Object.keys(errors).reduce((field, a) => {
      return errors[field] ? field : a;
    }, null);

    if (firstError) {
      setFocus(firstError);
    }
  }, [errors, setFocus]);

  return (
    <View className="flex-1 justify-center p-4">
      <ScrollView>
        <Text testID="form-title" variant="h1" className="pb-6 text-center">
          Sign In
        </Text>

        <ControlledInput
          testID="f-input"
          control={control}
          name="f"
          label="f"
        />

        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>
        <Text>test</Text>

        <ControlledInput
          testID="l-input"
          control={control}
          name="l"
          label="l"
        />
        <ControlledInput
          testID="email-input"
          control={control}
          name="email"
          label="Email"
        />
        <ControlledInput
          testID="password-input"
          control={control}
          name="password"
          label="Password"
          placeholder="***"
          secureTextEntry={true}
        />

        <Button
          testID="login-button"
          label="Login"
          onPress={handleSubmit(onSubmit)}
          variant="primary"
        />
      </ScrollView>
    </View>
  );
};

Expected behavior:

Setting focus on the first input with validation error In long forms that scroll the screen

Error when importing the android project in Android Studio Bumblebee | 2021.1.1

Problem

After importing the android folder in Android Studio, gradle starts the import process, but fails and rises the exception : org.gradle.api.GradleScriptException

Logs


:ReactNative:Running '[node, -e, console.log(require('react-native/cli').bin);]' command failed.

FAILURE: Build failed with an exception.

* Where:
Script '/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/native_modules.gradle' line: 197

* What went wrong:
A problem occurred evaluating script.
> Cannot run program "node" (in directory "/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/android"): error=2, No such file or directory

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating script.
	at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
	at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
	at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
	at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyScript(DefaultObjectConfigurationAction.java:156)
	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$000(DefaultObjectConfigurationAction.java:43)
	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$1.run(DefaultObjectConfigurationAction.java:76)
	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:190)
	at org.gradle.groovy.scripts.DefaultScript.apply(DefaultScript.java:128)
	at org.gradle.api.Script$apply.callCurrent(Unknown Source)
	at settings_dzobagufg0clpsgkc220dpsb0.run(/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/android/settings.gradle:2)
	at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
	at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
	at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
	at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
	at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.applySettingsScript(ScriptEvaluatingSettingsProcessor.java:74)
	at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.process(ScriptEvaluatingSettingsProcessor.java:67)
	at org.gradle.initialization.SettingsEvaluatedCallbackFiringSettingsProcessor.process(SettingsEvaluatedCallbackFiringSettingsProcessor.java:34)
	at org.gradle.initialization.RootBuildCacheControllerSettingsProcessor.process(RootBuildCacheControllerSettingsProcessor.java:47)
	at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(BuildOperationSettingsProcessor.java:50)
	at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(BuildOperationSettingsProcessor.java:47)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
	at org.gradle.initialization.BuildOperationSettingsProcessor.process(BuildOperationSettingsProcessor.java:47)
	at org.gradle.initialization.DefaultSettingsLoader.findSettingsAndLoadIfAppropriate(DefaultSettingsLoader.java:119)
	at org.gradle.initialization.DefaultSettingsLoader.findAndLoadSettings(DefaultSettingsLoader.java:56)
	at org.gradle.initialization.SettingsAttachingSettingsLoader.findAndLoadSettings(SettingsAttachingSettingsLoader.java:35)
	at org.gradle.internal.composite.CommandLineIncludedBuildSettingsLoader.findAndLoadSettings(CommandLineIncludedBuildSettingsLoader.java:34)
	at org.gradle.internal.composite.ChildBuildRegisteringSettingsLoader.findAndLoadSettings(ChildBuildRegisteringSettingsLoader.java:48)
	at org.gradle.internal.composite.CompositeBuildSettingsLoader.findAndLoadSettings(CompositeBuildSettingsLoader.java:35)
	at org.gradle.initialization.InitScriptHandlingSettingsLoader.findAndLoadSettings(InitScriptHandlingSettingsLoader.java:34)
	at org.gradle.initialization.GradlePropertiesHandlingSettingsLoader.findAndLoadSettings(GradlePropertiesHandlingSettingsLoader.java:39)
	at org.gradle.initialization.DefaultSettingsPreparer.prepareSettings(DefaultSettingsPreparer.java:31)
	at org.gradle.initialization.BuildOperationFiringSettingsPreparer$LoadBuild.doLoadBuild(BuildOperationFiringSettingsPreparer.java:62)
	at org.gradle.initialization.BuildOperationFiringSettingsPreparer$LoadBuild.run(BuildOperationFiringSettingsPreparer.java:57)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.initialization.BuildOperationFiringSettingsPreparer.prepareSettings(BuildOperationFiringSettingsPreparer.java:45)
	at org.gradle.initialization.VintageBuildModelController.prepareSettings(VintageBuildModelController.java:90)
	at org.gradle.initialization.VintageBuildModelController.doBuildStages(VintageBuildModelController.java:73)
	at org.gradle.initialization.VintageBuildModelController.prepareToScheduleTasks(VintageBuildModelController.java:64)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$prepareToScheduleTasks$0(DefaultBuildLifecycleController.java:104)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$withModelOrThrow$5(DefaultBuildLifecycleController.java:142)
	at org.gradle.internal.build.DefaultBuildLifecycleController.withModel(DefaultBuildLifecycleController.java:157)
	at org.gradle.internal.build.DefaultBuildLifecycleController.withModelOrThrow(DefaultBuildLifecycleController.java:140)
	at org.gradle.internal.build.DefaultBuildLifecycleController.prepareToScheduleTasks(DefaultBuildLifecycleController.java:102)
	at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.scheduleRequestedTasks(DefaultBuildTreeWorkPreparer.java:33)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$doScheduleAndRunTasks$1(DefaultBuildTreeLifecycleController.java:83)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewTaskGraph(DefaultIncludedBuildTaskGraph.java:94)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.doScheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:82)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$0(DefaultBuildTreeLifecycleController.java:71)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:104)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel(DefaultBuildTreeLifecycleController.java:69)
	at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:56)
	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:53)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:47)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:91)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:154)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:56)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:56)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:38)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:38)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
	at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.lambda$execute$0(BuildSessionLifecycleBuildActionExecuter.java:56)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: java.io.IOException: Cannot run program "node" (in directory "/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/android"): error=2, No such file or directory
	at java_lang_Runtime$exec$0.call(Unknown Source)
	at ReactNativeModules.getCommandOutput(/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/native_modules.gradle:197)
	at ReactNativeModules$getCommandOutput$0.callCurrent(Unknown Source)
	at ReactNativeModules.getReactNativeConfig(/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/native_modules.gradle:241)
	at ReactNativeModules$getReactNativeConfig.callCurrent(Unknown Source)
	at ReactNativeModules.<init>(/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/native_modules.gradle:84)
	at native_modules_87ekvo5vq0sbr329t4wcemzt4.run(/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/native_modules.gradle:306)
	at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
	... 168 more
Caused by: java.io.IOException: error=2, No such file or directory
	... 176 more


* Get more help at https://help.gradle.org

BUILD FAILED in 952ms

Android Studio version : Bumblebee | 2021.1.1
Installed Android SDK : Android API 32

Cant create app with this template

Summary:

unable to npx create-obytes-app@latest MyApp, it shows the error attached below

Steps to reproduce:

npx create-obytes-app@latest MyApp

Expected behavior:

Additional notes:

image

App build fails

Summary:

Every time the app build fails for the first time but after reloading few times it works.

err

Steps to reproduce:

pnpm android
press a

Expected behavior:

Additional notes:

Tasks

  • Task 1
  • Task 2
  • Task 3

Environment variable issues

Summary:

I setup a new app, but got this error about .env
Error I get when launching The package at "node_modules/dotenv/lib/main.js" attempted to import the Node standard library module "fs".

Steps to reproduce:

Basic install with npx.

Expected behavior:

No issues.

Additional notes:

Tasks

  • Task 1
  • Task 2
  • Task 3

Error when starting a new project in Windows

Summary:

When I start a clean project and run pnpm android it always throws error

Steps to reproduce:

  1. Make npx create-obytes-app@latest MyApp.
  2. Enter the MyApp folder
  3. Execute pnpm android.
Error Log

❯ pnpm android

> churup@0.0.1 android C:\Users\pedro\Churup
> expo run:android

β€Ί Opening emulator MyAvd
β€Ί Building app...
Configuration on demand is an incubating feature.

> Configure project :app
 ??  Applying gradle plugin 'expo-dev-launcher-gradle-plugin' (expo-dev-launcher@2.2.1)

> Configure project :expo-application
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-constants
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-dev-client
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-dev-launcher
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-dev-menu
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-dev-menu-interface
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-eas-client
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-file-system
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-font
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-image
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-json-utils
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-keep-awake
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-localization
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-manifests
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-modules-core
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-splash-screen
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-structured-headers
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-system-ui
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-updates
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo-updates-interface
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :expo

Using expo modules
  - expo-application (5.1.1)
  - expo-constants (14.2.1)
  - expo-dev-client (2.2.1)
  - expo-dev-launcher (2.2.1)
  - expo-dev-menu (2.2.0)
  - expo-eas-client (0.5.1)
  - expo-file-system (15.2.2)
  - expo-font (11.1.1)
  - expo-image (1.0.1)
  - expo-json-utils (0.5.1)
  - expo-keep-awake (12.0.1)
  - expo-localization (14.1.1)
  - expo-manifests (0.5.2)
  - expo-modules-core (1.2.7)
  - expo-splash-screen (0.18.2)
  - expo-structured-headers (3.1.1)
  - expo-system-ui (2.2.1)
  - expo-updates (0.16.4)

WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL.

> Configure project :react-native-reanimated
AAR for react-native-reanimated has been found
C:\Users\pedro\Churup\node_modules\react-native-reanimated\android\react-native-reanimated-71-hermes.aar

The Kotlin Gradle plugin was loaded multiple times in different subprojects, which is not supported and may break the build.
This might happen in subprojects that apply the Kotlin plugins with the Gradle 'plugins { ... }' DSL if they specify explicit versions, even if the versions are equal.
Please add the Kotlin plugin to the common parent project or the root project, then remove the versions in the subprojects.
If the parent project does not need the plugin, add 'apply false' to the plugin line.
See: https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
The Kotlin plugin was loaded in the following projects: ':expo', ':expo-modules-core'

The Kotlin Gradle plugin was loaded multiple times in different subprojects, which is not supported and may break the build.
This might happen in subprojects that apply the Kotlin plugins with the Gradle 'plugins { ... }' DSL if they specify explicit versions, even if the versions are equal.
Please add the Kotlin plugin to the common parent project or the root project, then remove the versions in the subprojects.
If the parent project does not need the plugin, add 'apply false' to the plugin line.
See: https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
The Kotlin plugin was loaded in the following projects: ':react-native-gesture-handler', ':react-native-screens'

> Task :expo-constants:createDebugExpoConfig FAILED
Execution optimizations have been disabled for task ':expo-constants:createDebugExpoConfig' to ensure correctness due to the following reasons:
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:compileDebugAidl' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:compileDebugRenderscript' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:compileDebugShaders' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:generateDebugBuildConfig' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:generateDebugResValues' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:javaPreCompileDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:mapDebugSourceSetPaths' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:mergeDebugNativeDebugMetadata' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
  - Gradle detected a problem with the following location: 'C:\Users\pedro\Churup\android'. Reason: Task ':expo-constants:createDebugExpoConfig' uses this output of task ':app:mergeDebugShaders' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem.
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[Error: ENOENT: no such file or directory, open 'C:\Users\pedro\Churup\android\fonts\open-sans\open-sans-128-white\open-sans-128-white.fnt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\Users\\pedro\\Churup\\android\\fonts\\open-sans\\open-sans-128-white\\open-sans-128-white.fnt'
}

Node.js v18.14.2

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':expo-constants:createDebugExpoConfig'.
> Process 'command 'cmd'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
java.lang.StackOverflowError (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings

Execution optimizations have been disabled for 1 invalid unit(s) of work during this build to ensure correctness.
Please consult deprecation warnings for more details.

BUILD FAILED in 37s
78 actionable tasks: 13 executed, 65 from cache
Error: C:\Users\pedro\Churup\android\gradlew.bat exited with non-zero code: 1
Error: C:\Users\pedro\Churup\android\gradlew.bat exited with non-zero code: 1
    at ChildProcess.completionListener (C:\Users\pedro\Churup\node_modules\@expo\cli\node_modules\@expo\spawn-async\build\spawnAsync.js:52:23)
    at Object.onceWrapper (node:events:628:26)
    at ChildProcess.emit (node:events:513:28)
    at cp.emit (C:\Users\pedro\Churup\node_modules\cross-spawn\lib\enoent.js:34:29)
    at maybeClose (node:internal/child_process:1091:16)
    at ChildProcess._handle.onexit (node:internal/child_process:302:5)
    ...
    at Object.spawnAsync [as default] (C:\Users\pedro\Churup\node_modules\@expo\cli\node_modules\@expo\spawn-async\build\spawnAsync.js:17:21)
    at spawnGradleAsync (C:\Users\pedro\Churup\node_modules\@expo\cli\build\src\start\platforms\android\gradle.js:72:46)
    at Object.assembleAsync (C:\Users\pedro\Churup\node_modules\@expo\cli\build\src\start\platforms\android\gradle.js:52:18)
    at runAndroidAsync (C:\Users\pedro\Churup\node_modules\@expo\cli\build\src\run\android\runAndroidAsync.js:31:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 ELIFECYCLE  Command failed with exit code 1.

Expected behavior:

Should start the demo app in the emulator

Additional notes:

I did several tests to discard that it is an error on my end

  1. Clean node_modules and pnpm-lock.yaml, and also run pnpm store prune.
  2. Change the project path to discard an error in the path string.
  3. Clone the repo and run pnpm install and pnpm android and I got the same error, so it is not a problem with the create-obytes-app cli.

also, I don't really understand why it throws this error:

[Error: ENOENT: no such file or directory, open 'C:\Users\pedro\Churup\android\fonts\open-sans\open-sans-128-white\open-sans-128-white.fnt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\Users\\pedro\\Churup\\android\\fonts\\open-sans\\open-sans-128-white\\open-sans-128-white.fnt'
}

I'm still trying to figure out where the problem is coming from

I should also mention that running a project from version 3.3.1 with the same steps works fine.

Tasks

  • Task 1
  • Task 2
  • Task 3

How is the workflow when compiling the app with `react-native-version`?

Hi!,

I have been seeing in the CI/CD guides that np is used in conjunction with react-native-version, in the guide it uses np but there is no mention of react-native-version afterwards, I don't get much information for the use of these two libraries together, it would help me if you could explain how these two work together

Thanks

Error while trying to run template

Hi
I've got an error while trying to run the template. Its kinda weird because I can run other projects fine, etc.

Log

yarn run v1.22.17
$ react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1033 file(s) to forward-jetify. Using 6 workers...
info JS server already running.
info Installing the app...

> Configure project :react-native-mmkv
MMKV: node_modules/ found at: /home/reactnative/obytes/template/node_modules

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':react-native-mmkv'.
> com.android.builder.errors.EvalIssueException: NDK at /home/enrique/Android/Sdk/ndk/21.4.7075529 did not have a source.properties file

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':react-native-mmkv'.
> com.android.builder.errors.EvalIssueException: NDK at /home/enrique/Android/Sdk/ndk/21.4.7075529 did not have a source.properties file

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4s

    at makeError (/home/enrique/reactnative/obytes/template/node_modules/execa/index.js:174:9)
    at /home/enrique/reactnative/obytes/template/node_modules/execa/index.js:278:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async runOnAllDevices (/home/enrique/reactnative/obytes/template/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:106:5)
    at async Command.handleAction (/home/enrique/reactnative/obytes/template/node_modules/@react-native-community/cli/build/index.js:192:9)
info Run CLI with --verbose flag for more details.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

React-native info

info Fetching system and libraries information...
System:
    OS: Linux 5.4 elementary OS 5.1.7 Hera
    CPU: (6) x64 Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz
    Memory: 512.02 MB / 15.50 GB
    Shell: 4.4.20 - /bin/bash
  Binaries:
    Node: 16.13.2 - /usr/bin/node
    Yarn: 1.22.17 - /usr/bin/yarn
    npm: 8.3.1 - /usr/bin/npm
    Watchman: Not Found
  SDKs:
    Android SDK:
      Android NDK: 22.1.7171670
  IDEs:
    Android Studio: AI-203.7717.56.2031.7784292
  Languages:
    Java: 11.0.13 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.2 => 17.0.2 
    react-native: 0.67.1 => 0.67.1 
  npmGlobalPackages:
    *react-native*: Not Found

Thanks for any tip you can give me

screen content overlap with header on android

Summary:

if a screen have a header, the top content of the screen is going behind the header on Android.

Steps to reproduce:

run the app on android and going to a screen with header.

Expected behavior:

content of the screen should not going behind the header on Android.

Additional notes:

if the react-navigation package updated, issue will be fixed.

new app run error

β€Ί Building app...
Configuration on demand is an incubating feature.
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^

[Error: ENOENT: no such file or directory, open './assets/icon.png'] {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: './assets/icon.png',
methodName: 'constructor'
}

FAILURE: Build failed with an exception.

unable to run the project after following the instructions on docs

java -version
openjdk version "11.0.16.1" 2022-08-12 LTS
OpenJDK Runtime Environment Microsoft-40648 (build 11.0.16.1+1-LTS)
OpenJDK 64-Bit Server VM Microsoft-40648 (build 11.0.16.1+1-LTS, mixed mode)

gradle -version


Gradle 8.4

Build time: 2023-10-04 20:52:13 UTC
Revision: e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f

Kotlin: 1.9.10
Groovy: 3.0.17
Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM: 11.0.16.1 (Microsoft 11.0.16.1+1-LTS)
OS: Windows 10 10.0 amd64


error:

C:\Users\react\testing\MyApp>pnpm android

[email protected] android C:\Users\react\testing\MyApp
cross-env EXPO_NO_DOTENV=1 expo run:android

β€Ί Building app...
Configuration on demand is an incubating feature.

Configure project :app
?? Applying gradle plugin 'expo-dev-launcher-gradle-plugin' ([email protected])

FAILURE: Build failed with an exception.

  • What went wrong:
    Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.

Could not determine the dependencies of null.
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\Users\react\testing\MyApp\android\local.properties'.

  • Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

BUILD FAILED in 50s
10 actionable tasks: 10 up-to-date
Error: C:\Users\react\testing\MyApp\android\gradlew.bat exited with non-zero code: 1
Error: C:\Users\react\testing\MyApp\android\gradlew.bat exited with non-zero code: 1
at ChildProcess.completionListener (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:52:23)
at Object.onceWrapper (node:events:628:26)
at ChildProcess.emit (node:events:513:28)
at cp.emit (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules\cross-spawn\lib\enoent.js:34:29)
at maybeClose (node:internal/child_process:1091:16)
at ChildProcess._handle.onexit (node:internal/child_process:302:5)
...
at Object.spawnAsync [as default] (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:17:21)
at spawnGradleAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:72:46)
at Object.assembleAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:52:18)
at runAndroidAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\run\android\runAndroidAsync.js:36:24)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 ELIFECYCLE  Command failed with exit code 1.

C:\Users\react\testing\MyApp> cd android && rm -R .gradle && cd app && rm -R build
'rm' is not recognized as an internal or external command,
operable program or batch file.

'EXPO_NO_DOTENV' is not recognized as an internal or external command

Summary:

Can not start example base project. None of the scripts working, which starts with a variable like APP_ENV, EXPO_NO_DOTENV, etc.

`D:\Workspace\js\2023\test-obytes>pnpm android

[email protected] android D:\Workspace\js\2023\test-obytes
EXPO_NO_DOTENV=1 expo run:android

'EXPO_NO_DOTENV' is not recognized as an internal or external command,
operable program or batch file.
 ELIFECYCLE  Command failed with exit code 1.`

Steps to reproduce:

I followed the Create new app guide and ran into the issue.

Expected behavior:

The project runs on android device.

Additional notes:

I'm running this project in vscode on Windows.
nvm 1.1.10
node v18.16.1
pnpm v8.6.11

It looks like an environment issue, but don't know in which direction to go.
It would be really appreciated some help.
Kindly suggest!

yarn run web crashes with base installation

Summary:

Did a clean install. Node v16. yarn run web fails to load anything in browser, resulting in:

constants.js:85 Uncaught TypeError: Cannot read properties of undefined (reading 'out')
    at ./node_modules/@gorhom/bottom-sheet/lib/module/constants.js (constants.js:85:1)
    at __webpack_require__ (bootstrap:789:1)
    at fn (bootstrap:100:1)
    at ./node_modules/@gorhom/bottom-sheet/lib/module/hooks/useScrollable.js (useScrollable.js:1:1)
    at __webpack_require__ (bootstrap:789:1)

&

index.js:1 ./node_modules/react-native-reanimated/lib/index.web.js 5:9
Module parse failed: Unexpected token (5:9)
File was processed with these loaders:
 * ./node_modules/@expo/webpack-config/node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
| export * from "./reanimated1";
| export * from "./reanimated2";
> export * as default from "./Animated";

&

VM117:2 Uncaught ReferenceError: process is not defined
    at 4043 (<anonymous>:2:13168)
    at r (<anonymous>:2:306599)
    at 8048 (<anonymous>:2:9496)
    at r (<anonymous>:2:306599)
    at 8641 (<anonymous>:2:1379)
    at r (<anonymous>:2:306599)
    at <anonymous>:2:315627
    at <anonymous>:2:324225
    at <anonymous>:2:324229
    at e.onload (index.js:1:1)

Steps to reproduce:

yarn run web

Expected behavior:

Loading properly. Thank you!

Java Error - No idea

Summary:

I followed the exact steps, now after pnpm android, the emulator starts and while the app is starting I get this error.

Steps to reproduce:

Start everything on a new computer and try to start pnpm android

Expected behavior:

The app should start and show me the simple expo app.

Additional notes:

image
I downloaded Java 8 and 11 now I'm just going crazy because I'm doing all these Android Simulator things now for 3 hours

Tasks

  • Task 1
  • Task 2
  • Task 3

Can't enable Hermes

Summary:

Hey, first of all. Thanks for the template, it's great!

I have a couple of question that I'm not able to get around.

I'm trying to enable hermes via app.config.ts. But it's seems like it's not respected when I set it either a the root(jsEnginge="hermes") on under ios.jsEnginge="hermes".
It works on other project for me. Is there somehint about this projects setup that prevents it?

Steps to reproduce:

Add hermes setup to app.config.ts
rebuild with "npm run ios", for example.

Expected behavior:

Hermes is enabled

Checking process.env at runtime doesn't work

Summary:

This line won't work when using staging or production APP_ENV.
https://github.com/obytes/react-native-template-obytes/blob/master/config/config.js#L4

The reason is that we are checking process.env at runtime. One possible solution is to use the extra field
in the app config.
https://docs.expo.dev/guides/environment-variables/#using-the-extra-field

Steps to reproduce:

  1. Run yarn android:staging or yarn android:production.

  2. Check for APP_ENV:

import Config from "@config"

console.log(Config.APP_ENV)

Expected behavior:

console log should output staging or production but we get development instead.

Additional notes:

I will submit a pull request to address the issue.

Tasks

  • Edit config/index.ts
  • Edit app.config.ts

Not able to build to device

Summary:

Follwing the steps from the docs and trying to build to my connected device following this

When trying to build it only runs it on a simulator. And when I try to scan the barcode on my device it just says: "No usable data was found".
Am I missing some steps?

Steps to reproduce:

-Run new project
-install all dependencies
-connect phone to computer, connec them to the same network
-run yarn ios

  • scan barcode

Expected behavior:

Should be able to install app on device

Additional notes:

Tasks

  • Task 1
  • Task 2
  • Task 3

open app on real phone issues

Summary:

Hey guys,

I tried to open the app on my phone, but it doesnt work when using yarn start . So I tried using npx expo start instead.
when scanning the QR with the first method, nothing happens. When scanning the QR with the second method, I get errors with mmkv package.
image

Steps to reproduce:

Expected behavior:

to work on my phone

zod validation not working with ControlledSelect

Summary:

I want to use zod validation for ControlledSelect, but it's not working.

Steps to reproduce:

first creating schema:

const schema = z.object({
  gender: z.object(
    {
      label: z.string(),
      value: z.string(),
    },
    { required_error: 'gender is required' }
  ),
});

and then creating ControlledSelect component:

      <ControlledSelect
        control={control}
        name="gender"
        label="Gender"
        options={[
          { label: 'Male', value: 'm' },
          { label: 'Female', value: 'f' },
        ]}
      />

Expected behavior:

Expecting zod validation working for ControlledSelect

Error when executing npx react-native run-android

Problem description
After setting up a project using the template I tried to run the project using this command as suggested by the CLI
npx react-native run-android

Before that I launched the emulator in my machine

Logs

❯  npx react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1033 file(s) to forward-jetify. Using 16 workers...
info Starting JS server...
info Installing the app...
Starting a Gradle Daemon, 1 busy and 2 incompatible Daemons could not be reused, use --status for details

> Configure project :react-native-mmkv
MMKV: node_modules/ found at: /Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':react-native-mmkv'.
> com.android.builder.errors.EvalIssueException: NDK at /Users/mohamed/Library/Android/sdk/ndk/21.4.7075529 did not have a source.properties file

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 24s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':react-native-mmkv'.
> com.android.builder.errors.EvalIssueException: NDK at /Users/mohamed/Library/Android/sdk/ndk/21.4.7075529 did not have a source.properties file

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 24s

    at makeError (/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/execa/index.js:174:9)
    at /Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/execa/index.js:278:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async runOnAllDevices (/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:106:5)
    at async Command.handleAction (/Users/mohamed/Documents/Workspace/ReactNative/MyAppp/node_modules/@react-native-community/cli/build/index.js:192:9)
info Run CLI with --verbose flag for more details.

No Sign up button?

Hi, when I log in I can't see a Sign up button, only Log in: is it normal?

forwardRef ControlledInput

#forwardRef ControlledInput:

Hi @yjose thanks for great template, can you please tell me how to forwardRef ControlledInput which is used in the template.,

Failed to run project after building the custom dev client

Summary:

Failed to run project after building the custom dev client.
Tested with Expo Prebuild and EAS Build

Steps to reproduce:

  1. yarn install
  2. yarn android
  3. yarn start
  4. press a

Expected behavior:

Project runs without any runtime errors

Additional notes:

build_screenshot
SCR-20230314-p2k

project fails to run

Summary:

I cloned the latest code of the warehouse and followed the tutorials in the document to operate in sequence, but in the end it did not run successfully. The error message is as follows. What is the problem?

img_v2_8c3acecf-2530-41da-8cd7-3ab59f7bd0ag

Run Sussess!

Tasks

  • fix bug
  • test
  • release

App generation not proper

Executing npx react-native init MyApp --template https://github.com/obytes/react-native-template-obytes only clones the template and not actually generating a react native project. src folder is not added
Screenshot 2021-06-25 at 5 10 17 PM

Got issue ".git can't be found" on installation

yarn install
yarn install v1.22.10
[1/4] πŸ” Resolving packages...
success Already up-to-date.
$ husky install
/Users/hungnguyen/project/silenteer/prevention/mobile/mobile/node_modules/husky/lib/commands/install.js:20
throw new Error(".git can't be found");
^

Error: .git can't be found
at Object.install (/Users/hungnguyen/project/silenteer/prevention/mobile/mobile/node_modules/husky/lib/commands/install.js:20:15)
at Object. (/Users/hungnguyen/project/silenteer/prevention/mobile/mobile/node_modules/husky/lib/bin.js:51:19)
at Module._compile (internal/modules/cjs/loader.js:1256:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1277:10)
at Module.load (internal/modules/cjs/loader.js:1105:32)
at Function.Module._load (internal/modules/cjs/loader.js:967:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47

Screens without bottomtabbar

Summary:

I cant figure out how to create 1, 2, 3 screens that do not show bottom tabbar

Steps to reproduce:

clone the project

Expected behavior:

An screen routed that do not show the bottom tabbar

Additional notes:

Tasks

  • Task 1
  • Task 2
  • Task 3

Console Warning, Require cycle: src\navigation\index.tsx -> src\navigation\root-navigator.tsx -> src\screens\index.tsx -> src\screens\onboarding\index.tsx -> src\screens\onboarding\onboarding.tsx -> src\navigation\index.tsx

Summary:

Just pulled down the latest version: npx create-obytes-app@latest MyApp

Now when I run pnpm android I get the below error immediately:

Require cycle: src\navigation\index.tsx -> src\navigation\root-navigator.tsx -> src\screens\index.tsx -> src\screens\onboarding\index.tsx -> src\screens\onboarding\onboarding.tsx -> src\navigation\index.tsx

Steps to reproduce:

Running on Windows 10
npx create-obytes-app@latest MyApp
code .
pnpm android

Expected behavior:

Run the app without issues and warnings

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.