Giter Club home page Giter Club logo

fyi's Introduction

expo.fyi

tl;dr: it's a tool to link people to markdown files in https://github.com/expo/fyi with a concise and pretty link. For example, https://expo.fyi/bundle-identifier

What is it?

This website is a useful URL shortener that redirects users to a markdown file on the https://github.com/expo/fyi repository. For example, https://expo.fyi/bundle-identifier will redirect the user to https://github.com/expo/fyi/blob/master/bundle-identifier.md.

It is useful to remove any friction to create a shareable link to a persistent explanation of some piece of knowledge that is useful to developers using Expo tools.

Why might I want to use this?

Imagine that you're working on Expo CLI and want to add more context on some terminology that you are using in a prompt to the user. Maybe you need to ask them for a "bundle identifier". You want to make sure that the user has easy access to more information about what that means, but you don't want to inline a whole explanation of it and crowd the interface. At the same time, you can't be bothered to create a docs page for this, or maybe the existing docs page doesn't provide the most relevant context for the situation the user is in. That's understandable. So instead let's just create an FYI!

How do I create an FYI?

FYI

  • You can add any arbitrary string like this-does-not-exist to the URL and it will just bring you to the GitHub 404 pages: https://expo.fyi/this-does-not-exist. You probably do not want to do this, so instead create a file and link to it, and don't delete the file if it's linked to from somewhere already.
  • If you go to https://expo.fyi it will just redirect you to the GitHub repo.
  • You can create your own domain like this by cloning https://github.com/expo/expo-fyi — a small service that you can deploy to, for example, Vercel or Netlify. Customize the URLs it uses in index.js.

fyi's People

Contributors

ajsmth avatar aleqsio avatar amandeepmittal avatar barthap avatar brentvatne avatar bycedric avatar cruzach avatar doougui avatar dsokal avatar esamelson avatar evanbacon avatar gregfenton avatar ide avatar jonsamp avatar kadikraman avatar kbrandwijk avatar keith-kurak avatar kudo avatar lukmccall avatar m-salamon avatar medyahyejoud avatar miigaarino avatar mmazzarolo avatar pcowgill avatar pweisensee avatar quinlanj avatar sjchmiela avatar tcdavis avatar wkozyra95 avatar wschurman 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

fyi's Issues

Set-NetFirewallHyperVVMSetting is not recognized.

I expect to have traffic fowarding from the WSL VM after writing the following command:

Set-NetFirewallHyperVVMSetting -Name ‘{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}’ -DefaultOutboundAction Allow

But this is what I got:
image

I am runninng WSL2 Ubuntu 22.04 on Windows 10

Expo build failure Plugin with id 'maven' not found

hi all
When I want to build my project to android but failure , first issue is stated Plugin with id 'maven' not found.
I checked from Internet and found some solutions, either one is stated to change maven-publish.
still failure but the log message still is same , Plugin with id 'maven' not found.

Can anyone help me how to solve it? please give me some advise, thanks

Here is the log message:
[stderr] FAILURE: Build completed with 2 failures.
[stderr] 1: Task failed with an exception.
[stderr] -----------
[stderr] * Where:
[stderr] Build file '/home/expo/workingdir/build/node_modules/@unimodules/core/android/build.gradle' line: 3
[stderr] * What went wrong:
[stderr] A problem occurred evaluating project ':unimodules-core'.
[stderr] > Plugin with id 'maven' not found.
[stderr] * Try:
[stderr] > Run with --stacktrace option to get the stack trace.
[stderr] > Run with --info or --debug option to get more log output.
[stderr] > Run with --scan to get full insights.
[stderr] ==============================================================================

my eas build is getting failed in "Run gradlew"

while giving "eas build -p android" it is getting failed as:

Error: Gradle build failed with unknown error.

my system config is:

expo-env-info 1.0.5 environment info:
System:
OS: Windows 10 10.0.22621
Binaries:
Node: 16.13.1 - C:\Program Files\nodejs\node.EXE
Yarn: 1.22.17 - ~\AppData\Roaming\npm\yarn.CMD
npm: 8.1.2 - C:\Program Files\nodejs\npm.CMD
npmPackages:
expo: ^48.0.0 => 48.0.9
react: 18.2.0 => 18.2.0
react-dom: 18.2.0 => 18.2.0
react-native: 0.71.4 => 0.71.4
react-native-web: ~0.18.11 => 0.18.12
Expo Workflow: managed

Redirect URL

How can I set this format to Google redirect URIs?
scheme://expo-development-client/?url=manifestUrl

image

Because. only HTTP and HTTPS allowed

EAS IOS build getting stuck

All my IOS builds it's getting stuck and before to fisnish will stop with timeout

Waiting in queue
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | starting in about 130 minutes...

No matching version found for expo@~43.0.0.

From document:

Do you want to integrate Expo modules in a React Native project without Unimodules? Add the "expo": "~43.0.0" dependency in package.json first.

I get the following error:

No matching version found for expo@~43.0.0.

Is migration in bare project possible at this moment?

key creation step is outdated

The "create key" button under the options column no longer exists.
Instead, you should use the "Manage keys" options, and create the key in the following page.

ios app submit failed for AppIcon using eas submit

I am trying to submit my iOS app and I am getting this error:

Your iOS app icon is missing or is an invalid format. The icon must be a 1024x1024 PNG image with no transparency.
Please check your icon image and icon configuration in app.json.
Learn more: https://docs.expo.dev/guides/app-icons/
[stderr] [!] Error uploading ipa file: 
[stderr]  [Transporter Error Output]: ERROR ITMS-90713: Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle 'com.lab.app'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/current/#/dev10510b1f7.
[stderr] [Transporter Error Output]: ERROR ITMS-90022: Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0. To support older versions of iOS, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface
[stderr] [Transporter Error Output]: ERROR ITMS-90704: Missing App Icon. An app icon measuring 1024 by 1024 pixels in PNG format must be included in the Asset Catalog of apps built for iOS, iPadOS, or watchOS. Without this icon, apps cannot be submitted for review. For details, see https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/.
[stderr] \nERROR ITMS-90704: Missing App Icon. An app icon measuring 1024 by 1024 pixels in PNG format must be included in the Asset Catalog of apps built for iOS, iPadOS, or watchOS. Without this icon, apps cannot be submitted for review. For details, see https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/. entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface
[stderr] [Transporter Error Output]: The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.
fastlane pilot failedfastlane exited with non-zero code: 1

I am using eas build, and eas build.

Checked:

  1. Icon is not transparent
  2. It is 1024x1024
  3. Format is .png
  4. Icon is showing in Expo go
  5. It's configured in app.json like: "expo": { ... "icon": "./assets/icon.png",
  6. the icon is in the right folder
  7. since I am using expo prebuild, I made sure that the icon is also in ios/app/Images.xcassets\AppIcon.appiconset
  8. I have same icon with other names like: AppIcon.png which is the default name by ios, and AppIcon1024x1024.png which matches the name in offical Expo repo
  9. I added <key>CFBundleIconName</key> <string>AppIcon</string> to ios/app/info.Plist

Possible causes?

  1. I am using expo prebuild. However, when if I delete ios folder and try to generate it again using expo prebuild, it DOES NOT generate. not sure why. the only reason why I do have ios folder is because I started a new expo project using expo init --template bare-minimum. I have tried everything to get ``iosfolder generated but no success. **BUT**, when I edited files in the folder like addingCFBundleVersion
    19` and `PRODUCT_BUNDLE_IDENTIFIER = com.lab.app;` and it did actually reflect on the build.

  2. My app name includes - like I have in package.json: "name": "app-name". But when I created it using expo init --template bare-minimum, it removed the - so folders in ios are named: appname & `appname.xcodeproj.

Firebase warning

I'm in the process of upgrading from Firebase 9 to Firebase 10 and have been using the following setup described in the documentation without any hiccups, but when I upgraded to version 10.0.3 I'm seeing the following warning when running my application and when running my jest test suite.

Note: I have removed the persistence manager logic described here as it seems to no longer be necessary in version 10+, but the warning message below seems contradictory to what Firebase is specifying in their latest release notes.

For my project configuration I'm using the last version of expo (49.0.8). Perhaps this needs to go on the Firebase repo, but I figured other Expo users may encounter this and I haven't seen a solution yet on any of their threads. Do you have any recommendations @jacobhq @keith-kurak @amandeepmittal (adding you all since you all updated the document)?

Screenshot 2023-08-23 at 8 27 36 AM

Cannot add task 'bundleDebugJsAndAssets' as a task with that name already exists.

After manually Migrating to Expo modules in bare workflow.

I am having Cannot add task 'bundleDebugJsAndAssets' as a task with that name already exists. while running expo run:android

› Building app...
Configuration on demand is an incubating feature.

> Configure project :app
WARNING: BuildType(debug): resValue 'react_native_dev_server_port' value is being replaced: 8081 -> 8081
WARNING: BuildType(debug): resValue 'react_native_inspector_proxy_port' value is being replaced: 8081 -> 8081
WARNING: BuildType(release): resValue 'react_native_dev_server_port' value is being replaced: 8081 -> 8081
WARNING: BuildType(release): resValue 'react_native_inspector_proxy_port' value is being replaced: 8081 -> 8081

FAILURE: Build failed with an exception.

* Where:
Script '/Users/ngima/Projects/Endometriose/endo-app/node_modules/react-native/react.gradle' line: 126

* What went wrong:
A problem occurred configuring project ':app'.
> Cannot add task 'bundleDebugJsAndAssets' as a task with that name already exists.

* 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 17s
/Users/ngima/Projects/Endometriose/endo-app/android/gradlew exited with non-zero code: 1
Error: /Users/ngima/Projects/Endometriose/endo-app/android/gradlew exited with non-zero code: 1
    at ChildProcess.completionListener (/usr/local/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:65:13)
    at Object.onceWrapper (events.js:483:26)
    at ChildProcess.emit (events.js:376:20)
    at maybeClose (internal/child_process.js:1055:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
    ...
    at spawnAsync (/usr/local/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:26:19)
    at spawnGradleAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/spawnGradleAsync.ts:83:18)
    at assembleAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/spawnGradleAsync.ts:57:16)
    at actionAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/runAndroid.ts:143:9)

/app/build.gradle

apply plugin: "com.android.application"

import com.android.build.OutputFile

/**
 * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
 * and bundleReleaseJsAndAssets).
 * These basically call `react-native bundle` with the correct arguments during the Android build
 * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
 * bundle directly from the development server. Below you can see all the possible configurations
 * and their defaults. If you decide to add a configuration block, make sure to add it before the
 * `apply from: "../../node_modules/react-native/react.gradle"` line.
 *
 * project.ext.react = [
 *   // the name of the generated asset file containing your JS bundle
 *   bundleAssetName: "index.android.bundle",
 *
 *   // the entry file for bundle generation. If none specified and
 *   // "index.android.js" exists, it will be used. Otherwise "index.js" is
 *   // default. Can be overridden with ENTRY_FILE environment variable.
 *   entryFile: "index.android.js",
 *
 *   // https://reactnative.dev/docs/performance#enable-the-ram-format
 *   bundleCommand: "ram-bundle",
 *
 *   // whether to bundle JS and assets in debug mode
 *   bundleInDebug: false,
 *
 *   // whether to bundle JS and assets in release mode
 *   bundleInRelease: true,
 *
 *   // whether to bundle JS and assets in another build variant (if configured).
 *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
 *   // The configuration property can be in the following formats
 *   //         'bundleIn${productFlavor}${buildType}'
 *   //         'bundleIn${buildType}'
 *   // bundleInFreeDebug: true,
 *   // bundleInPaidRelease: true,
 *   // bundleInBeta: true,
 *
 *   // whether to disable dev mode in custom build variants (by default only disabled in release)
 *   // for example: to disable dev mode in the staging build type (if configured)
 *   devDisabledInStaging: true,
 *   // The configuration property can be in the following formats
 *   //         'devDisabledIn${productFlavor}${buildType}'
 *   //         'devDisabledIn${buildType}'
 *
 *   // the root of your project, i.e. where "package.json" lives
 *   root: "../../",
 *
 *   // where to put the JS bundle asset in debug mode
 *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
 *
 *   // where to put the JS bundle asset in release mode
 *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in debug mode
 *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in release mode
 *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
 *
 *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
 *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
 *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
 *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
 *   // for example, you might want to remove it from here.
 *   inputExcludes: ["android/**", "ios/**"],
 *
 *   // override which node gets called and with what additional arguments
 *   nodeExecutableAndArgs: ["node"],
 *
 *   // supply additional arguments to the packager
 *   extraPackagerArgs: []
 * ]
 */

project.ext.react = [
        enableHermes         : (findProperty('expo.jsEngine') ?: "jsc") == "hermes",
        cliPath              : new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/cli.js",
        hermesCommand        : new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/%OS-BIN%/hermesc",
        composeSourceMapsPath: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/scripts/compose-source-maps.js",
]

apply from: "../../node_modules/react-native/react.gradle"
apply from: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../sentry.gradle")
apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle"
apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle"
apply from: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../react.gradle")

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

/**
 * The preferred build flavor of JavaScriptCore.
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US.  Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'

/**
 * Whether to enable the Hermes VM.
 *
 * This should be set on project.ext.react and mirrored here.  If it is not set
 * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
 * and the benefits of using Hermes will therefore be sharply reduced.
 */
def enableHermes = project.ext.react.get("enableHermes", false);

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId 'app.endometriose.android'
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 163
        versionName "1.1.63"
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }

    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // https://developer.android.com/studio/build/configure-apk-splits.html
            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }

        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    //noinspection GradleDynamicVersion
    implementation "com.facebook.react:react-native:+"  // From node_modules


    def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
    def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
    def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true";

    // If your app supports Android versions before Ice Cream Sandwich (API level 14)
    // All fresco packages should use the same version
    if (isGifEnabled || isWebpEnabled) {
        implementation 'com.facebook.fresco:fresco:2.0.0'
        implementation 'com.facebook.fresco:imagepipeline-okhttp3:2.0.0'
    }

    if (isGifEnabled) {
        // For animated gif support
        implementation 'com.facebook.fresco:animated-gif:2.0.0'
    }

    if (isWebpEnabled) {
        // For webp support
        implementation 'com.facebook.fresco:webpsupport:2.0.0'
        if (isWebpAnimatedEnabled) {
            // Animated webp support
            implementation 'com.facebook.fresco:animated-webp:2.0.0'
        }
    }

    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
        exclude group: 'com.facebook.fbjni'
    }
    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group: 'com.facebook.flipper'
        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    }
    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group: 'com.facebook.flipper'
    }

    if (enableHermes) {
        debugImplementation files(new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute(null, rootDir).text.trim(), "../android/hermes-debug.aar"))
        releaseImplementation files(new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute(null, rootDir).text.trim(), "../android/hermes-release.aar"))
    } else {
        implementation jscFlavor
    }
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
applyNativeModulesAppBuildGradle(project)

Directory URL redirection

It would be great if the redirection logic could handle http://expo.fyi/bundle-identifier/ the same as http://expo.fyi/bundle-identifier. I'm afraid developers copying/retyping the URL from the warning message may sometimes append the / suffix automatically.

At the moment, a request to …/ URL times out instead of either redirecting to the appropriate article or showing a helpful error message.

Npm start problem

I have this problem when i run npm start

I am a begginer coding and i was creating a create-react-app by watching a tutorial all was alright but i don't know why but i can't run the command npm start it gives me error here is what it says i tried my best.

`PS C:\Users\User\OneDrive\Documents\react\react-app> npm start
npm ERR!
npm ERR! Did you mean one of these?
npm ERR!     npm star # Mark your favorite packages
npm ERR!     npm stars # View packages marked as favorites
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR!   npm run

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\User\AppData\Local\npm-cache\_logs\2022-08-22T15_25_54_912Z-debug-0.log`

Here is the pakage.json

Captura de pantalla (38)

Here is a problem screenshot, it can be more usefull
problem screenshot

here is my node and npm version:

  • node: v18.6.0
  • npm: v8.13.2

can anyone help me to fix it please.

Update whats-in-the-sdk to mention EAS builds

The page https://github.com/expo/fyi/blob/main/whats-in-the-sdk.md contains this text

We can't include each and every native module out there because that would make for an extremely heavy toolbox (i.e. large binary size and maintenance cost). Instead, we only include native modules that we believe satisfy a wide range of needs for a large majority of developers. If you need a specific tool that isn't provided in the Expo toolbox, then you can always use the bare workflow and add any native module you'd like to your project, while still enjoying most of the benefits that Expo provides.

This text is a bit confusing, especially for people who are only starting with Expo since it recommended using bare for native code however this constraint was relaxed thanks to EAS build system and https://docs.expo.dev/development/introduction/

Does the copy in the fyi needs an update or is it correct?

Build error when running Android if BasePackageList.java is not deleted in Migrating to Expo modules

On migrating from expo-sdk42 to expo-sdk43 (react-native-unimodules->expo-modules)
https://github.com/expo/fyi/blob/main/expo-modules-migration.md

I didn't see this mentioned in the official instructions.
BasePackageList.java, which is originally referenced by MainApplication.java, must be deleted.
If you don't remove BasePackageList.java that is originally referenced in MainApplication.java, the react-native-unimodules related files used there will cause an error when building.

If this change is only local to me, please ignore it.
Thank you very much for your development.

Expo Go, ios simulator and @react-native-firebase/analytics conflict. Your JavaScript code tried to access a native module that doesn't exist.

Hello, I migrated from expo-firebase-analytics to @react-native-firebase/analytics. Now if I am running the ios simulator I catch an error:


If you're trying to use a module that is not supported in Expo Go, you need to create a development build of your app. See https://docs.expo.dev/development/introduction/ for more info.
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:95:17 in reportException
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:141:19 in handleException
at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:39 in handleError
at node_modules/expo/build/errors/ExpoErrorManager.js:25:19 in errorHandler
at node_modules/expo/build/errors/ExpoErrorManager.js:30:24 in <anonymous>
at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError
at node_modules/metro-runtime/src/polyfills/require.js:237:40 in guardedLoadModule
at http://192.168.0.42:19000/node_modules/expo/AppEntry.bundle?platform=ios&dev=true&hot=false&strict=false&minify=false:null in global code

As far as i know @react-native-firebase/analytics does not support expo go.
When I execute expo start --ios my app fails on import time at string: import analytics from "@react-native-firebase/analytics";.
App runs on simulator only if this string is commented.
The only option i see is to wrap import to a function like this:
async function logEvent(){ if(!Device.isDevice) return; import analytics from "@react-native-firebase/analytics"; await analytics().logEvent('EVENT'); }
But imports are allowed only on the top level.
So, how should I organise my codebase to use ios simuator and at the same time have @react-native-firebase/analytics for production?

Gradle build failed with unknown error (using eas build for Android)

My project builds fine with "expo build:android -t app-bundle", but fails with "eas build". The error is "Gradle build failed with unknown error. Please see logs for the "Run gradlew" phase." The log has no information. My eas.json is:
{
"build": {
"production": {
"env": {
"EAS_NO_VCS": "1"
}
}
}
}

The main reason that I'm trying to use the eas build, is because android no longer likes the result from the expo build. It gives me the error message: "Your app com.andiamoplaces.andiamotravelapp version code 9 includes SDK com.segment.analytics.android:analytics, 4.8.2 or an SDK that one of your libraries depends on", android also complains about SDK com.segment.analytics.android:analytics, 4.9.4. I upgraded from SDK 44 to SDK 45 but the problem did not go away, so I tried the eas build and it doesn't work, so now I'm stuck. I could use the expo build until August 9, 2022, but after that, google may not accept my app or even shut it down.

"Unhandled JS Exception: TypeError: null is not an object (evaluating '(n=t.NativeModules.UMReactNativeEventEmitter).addProxiedListener')

I migrated my app from react-native-unimodules to Expo by following this guide -- https://github.com/expo/fyi/blob/main/expo-modules-migration.md

App is getting crashed while trying to install codepush updates. Here is the crash message form Xcode,

Screenshot 2022-10-28 at 6 03 36 PM

Here is the Crash report from Firebase Crashlytics,

Fatal Exception: RCTFatalException: Unhandled JS Exception: TypeError: null is not an object (evaluating '(n=t.NativeModules.UMReactNativeEventEmitter).addProxiedListener')
Unhandled JS Exception: TypeError: null is not an object (evaluating '(n=t.NativeModules.UMReactNativeEventEmitter).addProxiedListener'), stack: <unknown>@1077:728 value@148:830 value@1076:568 <unknown>@1480:2694 v@2:1473 <unknown>@1090:3543 v@2:1473 <unknown>@1014:1107 v@2:1473 <unknown>@768:237 v@2:1473 <unknown>@758:228 v@2:1473 <unknown>@410:384 v@2:1473 <unknown>@6:169 v@2:1473 d@2:875 global code@1586:3

RCTAssert.m - Line 166
RCTFormatError + 166

Here are few important points to notice,

  1. Release Mode --> App crashes while trying to install codepush updates.

  2. Debug Mode -- > There is no crash while trying to install codepush updates.

This crash is occurring apparently after I migrated from react-native-unimodules to Expo.

🤖 Android build failed: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.

✖ Build failed

🤖 Android build failed:
Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.

....
[stderr] Note: /home/expo/workingdir/build/node_modules/@react-native-async-storage/async-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java uses or overrides a deprecated API.
[stderr] Note: Recompile with -Xlint:deprecation for details.
[stderr] Note: /home/expo/workingdir/build/node_modules/@react-native-async-storage/async-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStoragePackage.java uses unchecked or unsafe operations.
[stderr] Note: Recompile with -Xlint:unchecked for details.

......

[stderr] Note: /home/expo/workingdir/build/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
[stderr] Note: Recompile with -Xlint:deprecation for details.
[stderr] Note: Some input files use unchecked or unsafe operations.
[stderr] Note: Recompile with -Xlint:unchecked for details.

......

[stderr] Note: Some input files use or override a deprecated API.
[stderr] Note: Recompile with -Xlint:deprecation for details.
[stderr] Note: /home/expo/workingdir/build/node_modules/react-native-webview/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java uses unchecked or unsafe operations.
[stderr] Note: Recompile with -Xlint:unchecked for details.

.....

[stderr] Note: Some input files use or override a deprecated API.
[stderr] Note: Recompile with -Xlint:deprecation for details.
[stderr] Note: Some input files use unchecked or unsafe operations.
[stderr] Note: Recompile with -Xlint:unchecked for details.
.....
[stderr] FAILURE: Build completed with 2 failures.
[stderr] 1: Task failed with an exception.
[stderr] -----------
[stderr] * What went wrong:
[stderr] Execution failed for task ':app:mergeReleaseResources'.
[stderr] > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
[stderr] > Android resource compilation failed
[stderr] ERROR:/home/expo/workingdir/build/android/app/build/generated/res/react/release/drawable-mdpi/assets_images_library.png: AAPT: error: file failed to compile.
[stderr]
[stderr] * Try:
[stderr] > Run with --stacktrace option to get the stack trace.
[stderr] > Run with --info or --debug option to get more log output.
[stderr] > Run with --scan to get full insights.
[stderr] ==============================================================================
[stderr] 2: Task failed with an exception.
[stderr] -----------
[stderr] * What went wrong:
[stderr] java.lang.StackOverflowError (no error message)
[stderr] * Try:
[stderr] > Run with --stacktrace option to get the stack trace.
[stderr] > Run with --info or --debug option to get more log output.
[stderr] > Run with --scan to get full insights.
[stderr] ==============================================================================
[stderr] * Get more help at https://help.gradle.org
[stderr] BUILD FAILED in 4m 15s

Error: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.

First Android Submission fyi is outdated and unclear.

The instructions for https://github.com/expo/fyi/blob/main/first-android-submission.md are outdated. The dashboard no longer has an "Initial setup" section so the screenshots and instructions should be updated to reflect this change. The instructions on step 4 and 5 are contradictory as well so it is unclear what to do next. Step 4 says "You don't need to set them now, come back and do this later" but step 5 says "You'll need to go through all steps to fill the application details. Note: This step is important otherwise, you will have some errors related to the application information when you want to publish your application." I am confused why step 4 says I don't need to enter the information if step 5 says it's important that I must. There are also two step 5's.

https://expo.fyi/start from running expo start links to nothing

After running npx expo start, one of the messages is this:

› Scan the QR code above to open the project in a development build. Learn more

Clicking the "learn more" link brings me to https://expo.fyi/start which gives me a 404.

Expo CLI version: 0.10.11

creating-google-service-account.md is out of date

I'm not sure where the problem lies exactly (I've been back and forth with Google support for about a week now trying to get to the bottom of it), but there seems to be some problem with this tutorial. After starting from a blank slate and following each step, at step 8 (Return to the API access page on the Google Play Console and ensure it shows your new service account. Click on Grant access for the newly added service account.), the service account does not appear.

hermesCommand in 'Migrating to Expo modules' broken for React Native 0.69.x

When upgrading to Expo 46 and React Native 0.69.5 the hermesCommand in android/app/build.gradle file broke our Android build. This hermesCommand is in the Migrating to Expo Modules doc.

This issue was masked by expo-updates complaining about 'No launchable update was found', so the app would crash on launch. When I removed expo-updates from the project it was instead throwing the error com.facebook.jni.CppException: Compiling JS failed: Wrong bytecode version. Expected 85 but got 84.

Now that I was able to find this issue, I found this related issue and was able to fix it:
facebook/react-native#34114

This happened because the Bare Workflow upgrade notes say to "Apply any relevant changes from the React Native Upgrade Helper" however the stock React Native android/app/build.gradle file does not override the hermesCommand, only Expo's version of android/app/build.gradle does.

Perhaps some kind of 'Expo Upgrade Helper' would be useful, to make it obvious how the supporting files should change, so tweaks like this one don't get missed. It's cumbersome to create fresh projects using create-expo-app and compare the files manually.

Instead of

hermesCommand: new File(["node", "--print", "require.resolve('hermes-engine/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/%OS-BIN%/hermesc",

it should be

hermesCommand: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc",

This is what's now in android/app/build.gradle when you run npx create-expo-app -t bare-minimum.

Why is service worker at src/service-worker.js? instead of TLD?

https://github.com/expo/fyi/blob/main/enabling-web-service-workers.md and associated example https://github.com/expo/examples/tree/cfb044b07385773fac2247be968cc5c0b13be8bf/with-workbox both put the service-worker.js file in src/.... does this interfere with the service worker's scope and control as defined here? https://developer.chrome.com/docs/workbox/service-worker-lifecycle/#control-and-scope? I think the end goal is for the service worker to have dominion over the entire app.

More generally, what is this 'src/' directory? In any case, my app/ directory (which is the app root containing e.g. webpack-config) doesn't already contain a src/ directory yet (just top level code including App.tsx)... I'm wondering if the 'src/' directory is a magic directory from the perspective of webpack or something?

Thanks!

Step 8 won't work for me

I followed the steps verbatim, twice, and I cannot refresh and see my service account. I am stuck on step 8.

Android build error

image

I have no idea what this error is. I've tried SDK 46,47, and now 48. I always receive this error using eas build. I've tried many solutions on the internet but with no success. Someone can help me?

Unsure what is a global object

I have multiple imports

import React from "react";

import { createStackNavigator } from "react-navigation-stack";
import { createBottomTabNavigator } from "react-navigation-tabs";
import { createDrawerNavigator } from "react-navigation-drawer";
import { createAppContainer } from "react-navigation";

import { Ionicons } from "@expo/vector-icons";

import CategoriesScreen from "../screens/CategoriesScreen";
import CategoryMealsScreen from "../screens/CategoryMealsScreen";
import MealDetailScreen from "../screens/MealDetailScreen";
import FavioritesScreen from "../screens/FavioritesScreen";
import FiltersScreen from "../screens/FiltersScreen";

import Colors from "../constants/Colors";

This is where my problem comes from as whenever I go onto a new screen it pops up again.
Can you tell me what to change
If you need me to send the rest of the code tell me.

Applying the migrating recommandation does not work, reproducable and simple example

Hello,

I am trying to apply the directives from here. I am working on Windows and my Target IOS is Android.

Here is what I have done:

npx react-native init BareAwesomeProjectBis --version 0.64

Then I went in package.json but I did not see any react-native-unimodules

Then, since I don't think I have Expo (my goal was actually not to use Expo), I went on with:

npm install expo

But it showed a message :

"Unable to validate configuration." 
Property 'expo' in `app.json` for project at path C:\Users\aymer\Desktop\BareAwesomeProjectBis is not an object. Please make sure `app.json` includes a managed Expo app config like thi
s: {"expo":{"name":"My app","slug":"my-app","sdkVersion":"..."}}
Updating your app.json to account for breaking changes (if applicable)...

But I did not see any change in my app.json, so I updated it myself like this:

{
  "expo": {
    "sdkVersion": "43.0.0"
  },
  "name": "BareAwesomeProjectBis",
  "displayName": "BareAwesomeProjectBis"
}

But then when I ran:

expo upgrade 43

I got:

? What would you like your Android package name to be? » Uncaught Error Error: EPERM: operation not permitted, rename 'C:\Users\aymer\.expo\state.json.2919037473' -> 'C:\Users\aymer\.e
xpo\state.json'

As you can see, I did nothing crazy...

Help would be much appreciated!

Thanks

Enable Apple Pay Payment Processing in EAS build

Hi
I am trying to enable Apple pay in my expo app with EAS build.

I have enabled Apple Pay capabilities in developer account along with marchantiid and certificate for payment processing.

image

And when i run the eas build command i.e. eas build --profile development --platform ios m getting following output

image

where Apple Pay payment Processing is getting disabled

Am I missing any step or is there any extra configuration needs to be done from Apple Developer site?

Thank you

WSL info page does not explain dev-builds, only Expo Go

This info page: https://github.com/expo/fyi/blob/main/wsl.md only describes how to set up for Expo Go / expo start.

The link form the main documentation however specifies that if we want to test using dev-build or expo go:

WSL 2 typically requires additional configuration to set up your development environment for testing code on a device using a [development build](https://docs.expo.dev/develop/development-builds/introduction) or Expo Go. 
Learn more about [configuring WSL 2 for Expo development](https://expo.fyi/wsl).

dev-builds in WSL are terrible and almost impossible to even set up and I have lost days on this.

Edit
If anyone is interested in a guide to set up WSL to build dev-builds in but execute them on virtual devices on the windows side in a reproducible fashion, check out this article i wrote after spending many days working this issue: guide

How to patch expo module build.gradle file for a managed expo workflow?

Gradle 8 Migration for Custom Expo Modules
https://github.com/expo/fyi/blob/main/expo-modules-gradle8-migration.md#error-task-current-target-is-17-and-compilereleasekotlin-task-current-target-is-11-jvm-target-compatibility-should-be-set-to-the-same-java-version

It says that you have to patch the build.gradle file of the expo module but am I supposed to edit it from node_modules?

An example would be expo-splash-screen

* What went wrong:
A problem occurred evaluating project ':expo-splash-screen'.
> Could not set unknown property 'classifier' for task ':expo-splash-screen:androidSourcesJar' of type org.gradle.api.tasks.bundling.Jar.

This issue only happens for Android and not iOS.

Add service worker for expo web?

I'd like to know how to create a service worker for the web part of the project. I build the web part using expo and I needed to eject the native parts of the project.

I'm trying to add FCM messaging to the web. I already added it to native part.

I've found this topic: https://github.com/expo/fyi/blob/master/enabling-web-service-workers.md
But even though the title says "enable service workers" it only shows how to enable workbox-specific plugin that expo comes bundled with.

Also -- It would surely work if I'd simply be able to add JS files to some kind of static assets directory (let's say web/public/file.js). All I want to have is have a service worker JS file with replaced env variables.
Firebase library should ensure that the service worker gets activated. So I should be good if I'd simply have a JS file that has needed authentification details added to it.

I'd like to also know how to eject the web from expo workflow. I know it's nice to have it but I simply want to add a static file to the project and there is no way to do it. There is no tutorial for it.

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.