Expo - An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.

Overview

expo sdk

Expo

Expo SDK version Forums Discord License: MIT Downloads

Try Expo in the Browser | Read the Documentation πŸ“š

Twitter: expo Medium: exposition


Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript. This repository is where the Expo client software is developed, and includes the client apps, modules, apps, and more. The Expo CLI repository contains the Expo development tools.

Click here to view the Expo Community Guidelines. Thank you for helping keep the Expo community open and welcoming!

πŸ“š Documentation

Learn about building and deploying universal apps in our official docs!

πŸ—Ί Project Layout

  • packages All the source code for the Unimodules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development Unimodules. You'll do most of your testing in here.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run expo start
  • react-native-lab This is our fork of react-native. We keep this very close to the upstream but sometimes need to add quick fixes locally before they can land.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • android contains the Android project.
  • home contains the JavaScript source code of the app.
  • ios contains the iOS project.
  • ios/Exponent.xcworkspace is the Xcode workspace. Always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • tools contains build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

πŸ… Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

πŸ‘ Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the Expo CLI repo to work on the Expo CLI, and various other universal development tools.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our forums, Discord or on Twitter @Expo.

πŸ’™ The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Comments
  • Bump npm-registry-fetch from 8.0.0 to 8.1.3 in /tools-public

    Bump npm-registry-fetch from 8.0.0 to 8.1.3 in /tools-public

    Bumps npm-registry-fetch from 8.0.0 to 8.1.3.

    Changelog

    Sourced from npm-registry-fetch's changelog.

    8.1.3 (2020-07-21)

    8.1.2 (2020-07-11)

    8.1.1 (2020-06-30)

    8.1.0 (2020-05-20)

    Features

    • add npm-command HTTP header (1bb4eb2)

    8.0.3 (2020-05-13)

    Bug Fixes

    • update minipass and make-fetch-happen to latest (3b6c5d0), closes #23

    8.0.2 (2020-05-04)

    Bug Fixes

    • update make-fetch-happen to 8.0.6 (226df2c)
    Commits
    • cb40d85 chore(release): 8.1.3
    • f7df083 chore: update minipass-fetch and make-fetch-happen
    • f53c713 chore(release): 8.1.2
    • 671c0c4 chore: update lru-cache and make-fetch-happen
    • 6cfc3c3 chore(release): 8.1.1
    • 18bf9b9 chore: remove auth data from logs (#29)
    • 09e540b chore(release): 8.1.0
    • 1bb4eb2 feat: add npm-command HTTP header
    • 022c909 chore(release): 8.0.3
    • 3b6c5d0 fix: update minipass and make-fetch-happen to latest
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 169
  • Expo-Facebook login won't redirect back to Expo Client app when using login with Facebook app

    Expo-Facebook login won't redirect back to Expo Client app when using login with Facebook app

    πŸ› Bug Report

    Environment

    Expo CLI 3.9.0 environment info: System: OS: macOS 10.14.5 Shell: 3.2.57 - /bin/bash Binaries: Node: 12.13.1 - ~/.nvm/versions/node/v12.13.1/bin/node Yarn: 1.19.2 - ~/.yarn/bin/yarn npm: 6.12.1 - ~/.nvm/versions/node/v12.13.1/bin/npm IDEs: Xcode: 11.0/11M337n - /usr/bin/xcodebuild npmPackages: expo: ^35.0.0 => 35.0.1 react: 16.8.3 => 16.8.3 react-native: https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz => 0.59.8 react-navigation: ^4.0.10 => 4.0.10 npmGlobalPackages: expo-cli: 3.9.0

    Expo Client on iOS device

    Steps to Reproduce

    I recently tried to add login with Facebook to my application. I just copied the logIn function from here https://docs.expo.io/versions/v35.0.0/sdk/facebook/

    When I run my app via Expo Client, and execute the logIn function it

    1. Redirects me to a page asking if I want to use the Facebook app for login or use phone or email
    2. If I use phone or email login works perfectly fine
    3. If I select Use Facebook App it takes me to the Facebook app, it says You have previously logged into [MY_APP] and then I pressContinuea white screen shows up with theCancelbutton on the top left. It never goes back to my app and never resolves this functionlogInWithReadPermissionsAsync`.

    Expected Behavior

    It should have gone back to the Expo Client app where my app was running and it should have resolved the promise and returned (type === 'success') { so I could use the token and called GraphQL Apis

    Actual Behavior

    A white screen shows up with the Cancel button on the top left. It never goes back to my app and never resolves this function logInWithReadPermissionsAsync.

    Reproducible Demo

     async logIn() {
            try {
                const {
                    type,
                    token,
                } = await Facebook.logInWithReadPermissionsAsync(`MY_APP_ID`, {
                    permissions: ['public_profile', 'email'],
                });
                if (type === 'success') {
                    // Get the user's name using Facebook's Graph API
                    const response = await fetch(`https://graph.facebook.com/me?access_token=${token}`);
                    Alert.alert('Logged in!', `Hi ${(await response.json()).name}!`);
                } else {
                    // type === 'cancel'
                    alert(`Facebook Login Cancel`);
                }
            } catch ({ message }) {
                alert(`Facebook Login Error: ${message}`);
            }
        }
    
        render() {
            return (
                <Button onPress={this.logIn}><Text>Login</Text></Button>
            )
        }```
    
    <!--
      Please share a project that reproduces the issue.
      There are two ways to do it:
    
        * Create a new app using https://snack.expo.io/ and try to reproduce the issue in it.
          This is useful if you roughly know where the problem is, or can’t share the real code.
    
        * Or, copy your app and remove things until you’re left with the minimal reproducible demo.
          This is useful for finding the root cause. You may then optionally create a Snack.
    
      This is a good guide to creating bug demos: https://stackoverflow.com/help/mcve
      Once you’re done, copy and paste the link to the Snack or a public GitHub repository below.
    
      (Even if your issue can only be reproduced in a standalone app, please include a Snack
      or GitHub repo we can use to build a standalone app!)
    -->
    
    <!--
      What happens if you skip this step?
    
      Someone will read your bug report, and maybe will be able to help you,
      but it’s unlikely that it will get much attention from the team. Eventually,
      the issue will likely get closed in favor of issues that have reproducible demos.
    
      Please remember that:
    
        * Issues without reproducible demos have a very low priority.
        * The person fixing the bug would have to do that anyway. Please be respectful of their time.
        * You might figure out the issues yourself as you work on extracting it.
    
      Thanks for helping us help you!
    -->
    
    needs more info Expo Go bug Facebook 
    opened by nnasiruddin 123
  • Document picker not working with publish iOS app

    Document picker not working with publish iOS app

    I am using DocumentPicker API to upload files. Its working well with android application, both with expo client and published apps. But for some reason, its not working with iOS platform. Do I need to define some permission or something??? I'm using sdk v20.0.0

    iOS Turtle 
    opened by maharjanaman 116
  • Bump terser from 4.8.0 to 4.8.1 in /android/ReactCommon/hermes/inspector/tools/msggen

    Bump terser from 4.8.0 to 4.8.1 in /android/ReactCommon/hermes/inspector/tools/msggen

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript bot: passed checks 
    opened by dependabot[bot] 110
  • [iOS][Facebook] Not redirecting back to app after Facebook.logInWithReadPermissionsAsync through facebook app

    [iOS][Facebook] Not redirecting back to app after Facebook.logInWithReadPermissionsAsync through facebook app

    πŸ› Bug Report

    Environment

    Expo CLI 3.2.3 environment info:
        System:
          OS: macOS 10.14.5
          Shell: 3.2.57 - /bin/bash
        Binaries:
          Node: 8.16.0 - ~/.nodebrew/current/bin/node
          Yarn: 1.16.0 - ~/.nodebrew/current/bin/yarn
          npm: 6.4.1 - ~/.nodebrew/current/bin/npm
          Watchman: 4.9.0 - /usr/local/bin/watchman
        IDEs:
          Android Studio: 3.4 AI-183.6156.11.34.5522156
          Xcode: 11.0/11A420a - /usr/bin/xcodebuild
        npmPackages:
          expo: ^35.0.0 => 35.0.0 
          react: 16.8.3 => 16.8.3 
          react-native: https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz => 0.59.8 
          react-navigation: ^3.11.0 => 3.11.0 
        npmGlobalPackages:
          expo-cli: 3.2.3
    

    iOS Standalone AND iOS Expo Client

    Steps to Reproduce

    Must be logged out of Facebook in the browser, but logged in in the Facebook app Facebook.logInWithReadPermissionsAsync, doesn’t come back to our app after flying to Facebook app. This may or may not occur.

    For now it only occurs on iOS standalone. It’s pretty strange because it’s quite strange behavior and it hurts user acquisition opportunities. This is fatal for our app.

    Expected Behavior

    After logging in with Facebook, you are redirected to our app and the login process is executed

    Actual Behavior

    Even after logging in on the Facebook app, it behaves like staying in the Facebook app. The only way to get back to our app is to cancel, and of course the login process will fail.

    Sample code

    import * as firebase from 'firebase';
    import * as Facebook from 'expo-facebook';
    
    const signinFacebook = async () => {
      try {
        const {
          type,
          token,
        } = await Facebook.logInWithReadPermissionsAsync(
          ENV.FACEBOOK_APP_ID,
          {
            permissions: ['public_profile', 'email'],
          },
        );
    
        if (type === 'success') {
          const credential = firebase.auth.FacebookAuthProvider.credential(token);
          return firebase.auth().signInWithCredential(credential).catch((error) => {
            throw error;
          });
        }
      } catch (error) {
        // ERROR
      }
    };
    
    iOS bug Facebook outdated 
    opened by 345ml 109
  • [unimodules][android][notifications] Event listener can miss `emit()` calls made soon after app launch

    [unimodules][android][notifications] Event listener can miss `emit()` calls made soon after app launch

    πŸ› Bug Report

    Summary of Issue

    If you call Notifications.addResponseReceivedListener in useEffect for example, the listener will not be triggered when opening an app from a completely killed state via a notification. This can also be demonstrated by adding a timeout to componentDidMount as shown here. Without 1 second timeout- events come through; with 1 second timeout- event's do not come through.

    I should note that the emit method is getting called in this case.

    Environment - output of expo diagnostics & the platform(s) you're targeting

    Reproducible Demo

    https://snack.expo.io/@charliecruzan/push-notifications

    Steps to Reproduce

    Need to run the app as a published experience or standalone app (or bare debug build) to see the behavior. Press "show notification" and kill the app, tap the notification, observe that response listener isn't triggered.

    Workaround

    The workaround (and possibly long-term solution) is to add the listener outside of any component, then it works as expected (presumably bc of how much sooner it's getting called?). I changed the docs to suggest this so fewer people run into this issue

    Android bug Notifications outdated 
    opened by cruzach 101
  • Android standalone app crashing on Android X

    Android standalone app crashing on Android X

    Hi expo team, I did update SDK yesterday. (35 to 36). Android build does not work on android x versions. The application gives error after splash screen. "Application keep stopping". and no error. I'm just getting unsafe lifecycle methods warning from GridList and Hyperlink packages.

    I uninstalled and tried these packages, but the problem persists. But there is a detail; The application opens smoothly on first installation. But if you close it through the task manager it won't open again.

    Expo CLI 3.11.1 environment info: System: OS: macOS 10.15.1 Shell: 5.7.1 - /bin/zsh Binaries: Node: 10.17.0 - /usr/local/opt/node@10/bin/node Yarn: 1.19.1 - /usr/local/bin/yarn npm: 6.11.3 - /usr/local/opt/node@10/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman IDEs: Android Studio: 3.5 AI-191.8026.42.35.5900203 Xcode: 11.1/11A1027 - /usr/bin/xcodebuild npmPackages: expo: ^36.0.0 => 36.0.0 react: 16.9.0 => 16.9.0 react-native: https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz => 0.61.4 react-navigation: ^4.0.10 => 4.0.10 npmGlobalPackages: expo-cli: 3.11.1

    Android bug 
    opened by serhanozcan 98
  • BackgroundFetch not running

    BackgroundFetch not running

    Environment

    Expo CLI 2.11.1 environment info:
        System:
          OS: macOS 10.14.3
          Shell: 5.3 - /bin/zsh
        Binaries:
          Node: 10.6.0 - /usr/local/bin/node
          Yarn: 1.12.3 - /usr/local/bin/yarn
          npm: 6.8.0 - /usr/local/bin/npm
          Watchman: 4.9.0 - /usr/local/bin/watchman
        IDEs:
          Xcode: 10.1/10B61 - /usr/bin/xcodebuild
        npmGlobalPackages:
          expo-cli: 2.11.1
    

    app's target - iOS, Standalone

    Steps to Reproduce

    1. Allow background fetch in app.json
    "ios": {
        "infoPlist": {
            "UIBackgroundModes": [
    		"location",
    		"fetch"
    	]
    
    1. define a task in App.js
    defineHealthTask = () => {
    		TaskManager.defineTask(taskName, async () => {
    			try {
    				await UserRemoteLogService.logWithTaskType("STEPS_TASK_RUNNING");
    				return BackgroundFetch.Result.NewData;
    			} catch (error) {
    			        return BackgroundFetch.Result.Failed;
    			}
    		});
    	};
    
    1. register task at some point of the apps running
    await UserRemoteLogService.logWithTaskType("STEPS_TASK_REGISTRATION_REQUESTED");
    	const pedometerAvailable = await Pedometer.isAvailableAsync();
    	const backGroundFetchStatus = await BackgroundFetch.getStatusAsync();
    	if (pedometerAvailable && BackgroundFetch.Status.Available === backGroundFetchStatus) {
    		await BackgroundFetch.registerTaskAsync(taskName, {
    			userBusinessId: user.businessId
    		});
    		UserRemoteLogService.logWithTaskType("STEPS_TASK_REGISTERED");
    	}
    
    1. set minimum interval for task in seconds BackgroundFetch.setMinimumIntervalAsync(60);

    Expected Behavior

    App should periodically call my server to log that the background task is running

    Actual Behavior

    Never see the background task run, although i do see the logs that show the background task was registered. The logging service i use has been used to show when location background task has run so this logging service should log if the task runs

    My main question is has anyone seen background fetch run? if so have i just configured it wrong?

    BackgroundFetch 
    opened by leighquince 97
  • Location:

    Location: "Location provider is unavailable. Make sure that location services are enabled."

    πŸ› Bug Report

    Environment

    Expo CLI 2.19.5 environment info: System: OS: macOS High Sierra 10.13.6 Shell: 3.2.57 - /bin/bash Binaries: Node: 10.15.1 - /usr/local/bin/node Yarn: 1.13.0 - /usr/local/bin/yarn npm: 6.4.1 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman IDEs: Android Studio: 3.1 AI-173.4670197 Xcode: 10.1/10B61 - /usr/bin/xcodebuild npmPackages: expo: ^34.0.1 => 34.0.3 react: 16.8.3 => 16.8.3 react-native: https://github.com/expo/react-native/archive/sdk-34.0.0.tar.gz => 0.59.8 react-navigation: ^3.11.1 => 3.11.1

    APP TARGET : ANDROID DEVICE (USING EXPO CLIENT APP). Using a VIVO Device running Android 6.0, the device has a SIM and is network enabled.

    Steps to Reproduce

       let { status } = await Permissions.askAsync(Permissions.LOCATION);
    
        if (status !== 'granted') {
          this.setState({
            errorMessage: 'Permission to access location was denied',
          });
          console.log("no permission");
        }
        else{
    
            console.log("working on location");
    
            let location = await Location.getCurrentPositionAsync({enableHighAccuracy:false});
    
           console.log('latitude is ' + location.coords.latitude.toString())
           console.log('longitude is ' + location.coords.longitude.toString())
    
    
        }
    

    Expected Behavior

      The location services should provide me with GPS coordinates.
    

    Actual Behavior

    The error is produced :

    "[Unhandled promise rejection: Error: Location provider is unavailable. Make sure that location services are enabled."

    This error repeatedly comes up even though location provider is already enabled (I can check it on my device settings screen).

     I used the straightforward way to obtain location as described above, and it works in most 
    cases - however, at times in the EXPO CLIENT APP running on Android, I get the error : 
    
     "Error: Location provider is unavailable. Make sure that location services are enabled."
    
      So I checked my device settings, and I can see that Location Services are already enabled, 
      and all permissions are also granted to the Expo app.
    
      I have gone through this solution as well: 
    
      https://github.com/expo/expo/issues/436#issuecomment-355829912
    
       But when I open the settings screen, it says my location services are already enabled. 
       However, the same error is produced again, saying location services on my device are 
       disabled.
    

    Reproducible Demo

    I'm sorry I don't have an app built for this (currently under time constraints) but the code I have shared above works in most cases, however at times, this error is produced.

    Android bug Location outdated 
    opened by aejaex 91
  • KeyboardAvoidingView does not work on standalone app [Android].

    KeyboardAvoidingView does not work on standalone app [Android].

    Hello.

    I have taken this code from a premium theme that i bought.

    <SafeAreaView style={styles.container}>
                    <NavHeader title={thread.name} {...{navigation}} />
                    <FlatList
                        inverted
                        data={messages}
                        keyExtractor={message => `${message.date}`}
                        renderItem={({ item }) => (
                            <Msg message={item} name={item.me ? name : thread.name} picture={thread.picture} />
                        )}
                    />
                    <KeyboardAvoidingView behavior={Platform.OS === "ios" ? "padding" : "height"}>
                        <View style={styles.footer}>
                            <TextInput
                                style={styles.input}
                                placeholder="Write a message"
                                value={this.state.message}
                                onChangeText={message => this.setState({ message })}
                                blurOnSubmit={false}
                                returnKeyType="send"
                                onSubmitEditing={this.send}
                                underlineColorAndroid="transparent"
                            />
                            <TouchableOpacity primary transparent onPress={this.send}>
                                <Text style={styles.btnText}>Send</Text>
                            </TouchableOpacity>
                        </View>
                    </KeyboardAvoidingView>
                </SafeAreaView>
    

    Its a chat View, it works perfect on Expo testing, but as soon as I build APK standalone it does not work, the keyboard will cover the whole screen.

    I have tried react-native-keyboard-aware-scroll-view but in order to use its needed to detach the app.

    I have searched the whole internet. I'm the only one suffering from this issue?

    Android outdated 
    opened by gerardo15 79
  • Upgrading to expo@44.0.0 breaks iOS build of amazon-cognito-identity-js

    Upgrading to [email protected] breaks iOS build of amazon-cognito-identity-js

    Summary

    I use [email protected] in my project as well as expo. I tried upgrading to [email protected], but the iOS build then fails with a lot of errors, e.g:

    error: duplicate interface definition for class 'RCTCallableJSModules'
    error: duplicate interface definition for class 'RCTViewRegistry'
    error: duplicate interface definition for class 'RCTBundleManager'
    error: conflicting types for 'RCTMakeError'
    

    Build log is attached: expo-44-build-error.txt

    This build error does not occur with [email protected]

    Managed or bare workflow? If you have ios/ or android/ directories in your project, the answer is bare!

    bare

    What platform(s) does this occur on?

    iOS

    SDK Version (managed workflow only)

    No response

    Environment

      Expo CLI 5.0.1 environment info:
        System:
          OS: macOS 12.0.1
          Shell: 5.8 - /bin/zsh
        Binaries:
          Node: 14.18.1 - ~/.nvm/versions/node/v14.18.1/bin/node
          npm: 6.14.15 - ~/.nvm/versions/node/v14.18.1/bin/npm
          Watchman: 2021.11.15.00 - /usr/local/bin/watchman
        Managers:
          CocoaPods: 1.11.2 - /usr/local/bin/pod
        SDKs:
          iOS SDK:
            Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
          Android SDK:
            API Levels: 23, 24, 26, 28, 29, 30
            Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.2, 31.0.0
            System Images: android-24 | Google Play Intel x86 Atom, android-29 | Intel x86 Atom_64, android-30 | Google Play Intel x86 Atom
        IDEs:
          Android Studio: 2020.3 AI-203.7717.56.2031.7621141
          Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
        npmPackages:
          expo: >=44.0.0-* <45.0.0 => 44.0.0 
          react: 17.0.2 => 17.0.2 
          react-native: 0.66.4 => 0.66.4 
        npmGlobalPackages:
          expo-cli: 5.0.1
        Expo Workflow: bare
    

    Reproducible demo

    I created a minimal reproducer here: https://github.com/schiller-manuel/expo-issue

    The project was created using these steps:

    1. npx react-native init ExpoIssue --template react-native-template-typescript
    2. npm install amazon-cognito-identity-js && npx pod-install
    3. npx install-expo-modules

    Run npm run ios to reproduce the build errors.

    stale Issue accepted 
    opened by schiller-manuel 72
  • [docs] In Contacts' PhoneNumber, the example countryCode doesn't match iOS values

    [docs] In Contacts' PhoneNumber, the example countryCode doesn't match iOS values

    Summary

    Hi Expo Team,

    I noticed in PhoneNumber that the countryCode example provide is +1 which seems to indicate that this field should be expected to yield the calling code for the associated phone number's presumed country. As it turns out, testing out the library on iOS I've thus far found that countryCode actually provides the country's ISO 3166-1 alpha-2 country code.

    As an example, if you create a contact with this Republic of the Congo phone number, you'll find that the library provides the countryCode 'cg' rather than +242

    Screen Shot 2023-01-07 at 8 10 15 PM

    Should the example maybe instead be us?

    Thanks!

    Link to the related docs page

    https://docs.expo.dev/versions/latest/sdk/contacts/#phonenumber

    Anything else?

    No response

    docs 
    opened by DBCintron 0
  • SDK 46: expo-linking needs access to the expo-constants manifest (app.json or app.config.js) to determine what URI scheme to use.

    SDK 46: expo-linking needs access to the expo-constants manifest (app.json or app.config.js) to determine what URI scheme to use.

    Summary

    expo-linking needs access to the expo-constants manifest (app.json or app.config js) to determine what URI scheme to use. Setup the manifest and rebuild: https://github.com/expo/expo/blob/main/packages/ expo-constants/README.md

    Below is a photo of the issue:

    IMG_BF08043DDE22-1

    ### Managed or bare workflow? If you have iOS/ or android/ directories in your project, the answer is bare!

    bare

    What platform(s) does this occur on?

    iOS

    My question

    It's unclear to me what this error is happening after upgrading from SDK 45 to 46. My scheme is already defined in my app.json file. Also, I've followed the link in the error, and I've set up the manifest correctly and rebuilt. Is this a bug?

    What platform(s) does this occur on?

    iOS

    What platform(s) does this occur on?

    iOS

    Environment

     expo-env-info 1.0.5 environment info:
        System:
          OS: macOS 13.1
          Shell: 3.2.57 - /bin/bash
        Binaries:
          Node: 19.3.0 - ~/projects/testing/node_modules/.bin/node
          npm: 7.20.5 - ~/projects/testing/node_modules/.bin/npm
          Watchman: 2023.01.02.00 - /usr/local/bin/watchman
        Managers:
          CocoaPods: 1.11.3 - /usr/local/bin/pod
        SDKs:
          iOS SDK:
            Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
        IDEs:
          Android Studio: 4.1 AI-201.8743.12.41.6953283
          Xcode: 14.2/14C18 - /usr/bin/xcodebuild
        npmPackages:
          expo: ^46.0.0 => 46.0.19 
          react: 18.0.0 => 18.0.0 
          react-dom: 18.0.0 => 18.0.0 
          react-native: 0.69.6 => 0.69.6 
          react-native-web: ~0.18.7 => 0.18.10 
          react-navigation: ^4.0.10 => 4.0.10 
          expo-linking: ~3.2.4
          expo-constants: ^14.0.2
          expo-updates: ~0.14.7
        Expo Workflow: bare
    

    Minimal reproducible example

    β™₯ expo-cli upgrade
    Your git working tree is clean
    To revert the changes after this command completes, you can run the following:
      git clean --force && git reset --hard
    βœ” You are currently using SDK 45.0.0. Would you like to update to the latest version, 47.0.0? … no
    
    βœ” Choose a SDK version to upgrade to: β€Ί 46.0.0
    
    
    βœ” Installed expo@^46.0.0
    βœ” Validated configuration.
    βœ” No additional changes necessary to app.json config.
    
    βœ” Updated known packages to compatible versions.
    βœ” Cleared packager cache.
    βœ” Validated project
    
    πŸ‘ Automated upgrade steps complete.
    ...but this doesn't mean everything is done yet!
    
    Please refer to the release notes for information on any further required steps to update and information about breaking changes:
    https://blog.expo.dev/expo-sdk-46-c2a1655f63f7
    
    β™₯ cd iOS && pod install
    
    needs review 
    opened by dochonglo 0
  • Add possible remedy for Hermes debugger problems

    Add possible remedy for Hermes debugger problems

    To clarify: the remedy works, just can't guarantee it works for everyone.

    Why

    Hermes troubleshooting steps helped to uncover the problem, but not solve it.

    Checklist

    • [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md).
    • [x] Conforms with the Documentation Writing Style Guide
    • [x] This diff will work correctly for expo prebuild & EAS Build (eg: updated a module plugin). (N/A)
    bot: passed checks 
    opened by Slapbox 0
  • Clearing cache and restarting project overwrites monorepo root tsconfig.json

    Clearing cache and restarting project overwrites monorepo root tsconfig.json

    See second comment first

    Summary

    All of our custom tsconfig.json configuration is overwritten.

    The CLI warns that the extends will be updated, but our configuration didn't extend anything and was overwritten completely with only:

    {
      "compilerOptions": {},
      "extends": "expo/tsconfig.base"
    }
    

    This isn't a critical issue since it should be spotted by users in their version control but it's quite unexpected.

    What platform(s) does this occur on?

    No response

    SDK Version

    SDK 47

    Environment

     expo-env-info 1.0.5 environment info:
        System:
          OS: Linux 5.15 Ubuntu 22.04.1 LTS 22.04.1 LTS (Jammy Jellyfish)
          Shell: 5.8.1 - /usr/bin/zsh
        Binaries:
          Node: 16.18.0 - ~/.nvm/versions/node/v16.18.0/bin/node
          Yarn: 1.22.19 - ~/.nvm/versions/node/v16.18.0/bin/yarn
          npm: 8.19.2 - ~/.nvm/versions/node/v16.18.0/bin/npm
          Watchman: 4.9.0 - /usr/bin/watchman
        SDKs:
          Android SDK:
            API Levels: 31, 32, 33
            Build Tools: 30.0.3, 31.0.0, 33.0.0
            System Images: android-31 | Google APIs Intel x86 Atom_64, android-31 | Google Play Intel x86 Atom_64
        npmGlobalPackages:
          eas-cli: 3.1.1
          expo-cli: 6.1.0
        Expo Workflow: managed
    

    Minimal reproducible example

    N/A

    needs review CLI 
    opened by Slapbox 1
  • [tools] Stop prebuilding packages on publish

    [tools] Stop prebuilding packages on publish

    Why

    Prebuilding native packages to make compilation faster was generally a good idea, but it turned out to bring more troubles than gains, especially when someone's Xcode version was not matching the one used by the publisher. Right now, since many of packages are in Swift, it no longer makes sense to prebuild them. We already disabled prebuilding for many packages, so this PR is just a sunset of that idea.

    How

    Removed prebuilding tasks from the publish pipeline

    Test Plan

    Not even necessary πŸ˜…

    bot: passed checks 
    opened by tsapeta 0
  • [docs]  Fix broken infrastructure link on EAS Build limitations page

    [docs] Fix broken infrastructure link on EAS Build limitations page

    Why

    Under the "Fixed memory and CPU limits on build worker servers" section the linked text "Server infrastructure reference" references a missing page.

    How

    Added a . to the start of the path to reference the current directory rather than the root of the docs.

    Test Plan

    Not tested locally but the change is trivial.

    To reproduce:

    1. Navigate to https://docs.expo.dev/build-reference/limitations/
    2. Click on "Server infrastructure reference" under the "Fixed memory and CPU limits on build worker servers" section
    3. Observe whether the browser navigates to a valid page.

    Checklist

    • [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md).
    • [x] Conforms with the Documentation Writing Style Guide
    • [x] This diff will work correctly for expo prebuild & EAS Build (eg: updated a module plugin).
    bot: passed checks 
    opened by mbaker3 0
Releases(ios/2.12.0)
Owner
Expo
Expo is a free and open-source platform for making universal native apps with React that run on Android, iOS, and the web.
Expo
CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device!

CodeBucket Description CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device! Keep

Dillon Buchanan 196 Dec 22, 2022
BaseConverter-iOS - The fast and easy way to convert numbers with tons of possibilities!

BaseConverter-iOS The fast and easy way to convert numbers with tons of possibilities! With BaseConverter, convert your numbers from and to: Decimal B

Groupe MINASTE 3 Feb 8, 2022
Dash-iOS - Dash gives your iPad and iPhone instant offline access to 200+ API documentation sets

Discontinued Dash for iOS was discontinued. Please check out Dash for macOS instead. Dash for iOS Dash gives your iPad and iPhone instant offline acce

Bogdan Popescu 7.1k Dec 29, 2022
Bitrise-iOS - Client iOS app for bitrise.io πŸš€

?? SwiftUI version is available as beta ?? Bitrise iOS Client app ?? Features βœ… App List GET /me/apps Shows last visited app page on launch βœ… Build Li

Toshihiro Suzuki 142 Dec 19, 2022
Charter - A Swift mailing list client for iPhone and iPad

Due to costs and lack of interest, I’ve had to take down the Charter service. If you’re interested in running your own copy, get in touch and I can se

Matthew Palmer 526 Dec 24, 2022
DevTool - A simple UI and powerful Mac OS application, Such as JSON-Formatting tool, JSON-to-model tool, AppIcon generator, Network-Request tool...

?? ?? ?? A simple UI and powerful Mac OS application. It is a collection of tools commonly used in my development work. Such as JSON-Formatting tool, JSON-to-model tool, AppIcon generator, Network-Request tool...

渠晓友 3 Dec 21, 2022
AppLove - View iOS app reviews in multiple selected territories with translation option.

App Love Note: Swift Version 2.2 currently, will update to Swift 3/XCode 8 after cocoapods are updated to Swift 3. Features View iOS Customer App Revi

Woodie Dovich 52 Nov 19, 2022
Awesome-ML - Discover, download, compile & launch different image processing & style transfer CoreML models on iOS.

⚠️ ⚠️ ⚠️ IMPORTANT: I'm no longer maintaining Awesome-ML. Awesome ML is an iOS app that is made to demonstrate different image processing CoreML model

eugene 171 Nov 8, 2022
DevSwitch - An iOS app for switching between countries on the App Store with ease.

Archived as of 24/04/2021. Apple has again broken the URLs required for storefront switching. I've decided to archive DevSwitch due to this. If Apple

Aaron Pearce 432 Jan 3, 2023
IOS - Unofficial app for Swift Evolution

EVOlution - iOS The goal of this project is for the version 1.0 was: bring to iOS the experience provided by Swift Evolution website. Now we are shift

EVOlution App 235 Dec 19, 2022
🦁 πŸƒ πŸ“± An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web

Matchimals.fun an animal matching puzzle card game ?? ?? ?? Download for iOS from the App Store ?? Download for Android from the Google Play Store ??

iGravity Studios 137 Nov 24, 2022
A replacement for as which runs in constant time instead of O(n) when the conformance is not satisfiedA replacement for as which runs in constant time instead of O(n) when the conformance is not satisfied

ZConform A replacement for as? which runs in constant time instead of O(n) when the conformance is not satisfied. How it works ZConform does a one-tim

Emerge Tools 20 Aug 4, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
🎈 Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

?? Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

Artem Moshnin 5 Apr 3, 2022
React-native-photo-editor - Photo editor using native modules for iOS and Android

?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, ZLImageEditor (iOS) and PhotoEditor (Android)

Baron Ha. 244 Jan 5, 2023
A weather app developed in React Native. It is the React Native version of SwiftWeather.

ReactNativeWeather A weather app developed in React Native. It is the React Native version of SwiftWeather How to run the app Install react-native If

Jake Lin 22 Jun 7, 2022
Vahesaroyan-react-native-bubble-select - React native bubble picker

@vahesaroyan/react-native-bubble-select React native bubble picker Installation

Vahe Saroyan 0 Jan 30, 2022
Next generation iOS and Android apps for Mattermost in React Native

Mattermost Mobile Minimum Server versions: Current ESR version (5.37.0) Supported iOS versions: 11+ Supported Android versions: 7.0+ Mattermost is an

Mattermost 1.7k Jan 1, 2023
Build native iOS, Android, and Web apps with Capacitor and Remix.run πŸ’Ώ

This repository holds production ready Capacitor templates for building native mobile applications using Remix. Using Capacitor, you can quickly build out a native mobile application for iOS and Android using web technology, such as Remix.

Ionic 70 Dec 30, 2022
React Native utility library around image and video files for getting metadata like MIME type, timestamp, duration, and dimensions. Works on iOS and Android using Java and Obj-C, instead of Node πŸš€.

Qeepsake React Native File Utils Extracts information from image and video files including MIME type, duration (video), dimensions, and timestamp. The

Qeepsake 12 Oct 19, 2022