<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Expo</title>
    <description>The latest articles on Forem by Expo (@expo).</description>
    <link>https://forem.com/expo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1976%2F8bb1f9fb-fc24-4843-b7fa-acaa1b5d6167.png</url>
      <title>Forem: Expo</title>
      <link>https://forem.com/expo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/expo"/>
    <language>en</language>
    <item>
      <title>Introducing EAS Hosting: Simplified deployment for modern React apps</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Tue, 14 Jan 2025 15:40:31 +0000</pubDate>
      <link>https://forem.com/expo/introducing-eas-hosting-simplified-deployment-for-modern-react-apps-olh</link>
      <guid>https://forem.com/expo/introducing-eas-hosting-simplified-deployment-for-modern-react-apps-olh</guid>
      <description>&lt;p&gt;From weather apps, and commerce websites, to AI-powered chat apps, most modern applications today need reliable servers. That's why today we're introducing &lt;strong&gt;EAS Hosting&lt;/strong&gt; for instantly deploying and scaling universal API routes, React websites, and more!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge of Universal App Deployment
&lt;/h2&gt;

&lt;p&gt;Many massive companies such as Netflix, Meta, and Apple use server-driven UI in their native apps. But building a server-driven application is extremely challenging and simply out of reach for most developers. Our goal with &lt;strong&gt;Expo Router&lt;/strong&gt; has been to solve this problem and enable anyone to build and scale world-class server-driven apps for Android, iOS, and web using the same codebase.&lt;/p&gt;

&lt;p&gt;To this end, we've introduced &lt;a href="https://docs.expo.dev/router/reference/api-routes/" rel="noopener noreferrer"&gt;API Routes&lt;/a&gt; that can be used to create server endpoints for your app, &lt;a href="https://docs.expo.dev/guides/environment-variables/" rel="noopener noreferrer"&gt;secure environment variables&lt;/a&gt;, and static generation for web pages, all building toward &lt;a href="https://docs.expo.dev/guides/server-components/" rel="noopener noreferrer"&gt;universal React Server Components&lt;/a&gt;. While all these features work great on a local dev server, deployment has become more challenging.&lt;/p&gt;

&lt;p&gt;There are many full-stack problems to consider when building a modern application. We've historically recommended deploying Expo websites and universal API routes to traditional hosting services that are focused only on websites. But hosting services for websites traditionally don’t integrate with the problems native apps face.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New versions of your servers may need to be deployed while new versions of your native app are being published to app stores.&lt;/li&gt;
&lt;li&gt;Different versions of your native app may need to have their requests routed to different versions of your server.&lt;/li&gt;
&lt;li&gt;Observability of servers for critical metrics, such as feature adoption by platform, becomes more important for Expo native apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With &lt;strong&gt;EAS Hosting&lt;/strong&gt;, in conjunction with &lt;strong&gt;EAS Workflows&lt;/strong&gt;, we’re providing an end-to-end deployment solution that just works across all platforms, and stays working as you scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Get Started with EAS Hosting
&lt;/h2&gt;

&lt;p&gt;First, ensure you’re using the latest version of &lt;strong&gt;EAS CLI&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; eas-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then simply bundle your app with Expo CLI, deploy your website and server code worldwide with a single EAS command, and get a preview URL immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx expo &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; web
eas deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! Your website and API routes are now live with a beautiful .expo.app URL that you can share with anyone. (For an example Expo web deployment, visit: &lt;a href="https://bacon.expo.app" rel="noopener noreferrer"&gt;https://bacon.expo.app&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Add environment variables to your .env file, and these will securely reside on the server-side for use in API routes and React Server Functions, keeping them out of your client code.&lt;/p&gt;

&lt;p&gt;By visiting the EAS dashboard, you can monitor your deployments and see helpful telemetry. Server errors are automatically aggregated and can be linked to for triaging!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5m2czen2kvf78892t8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5m2czen2kvf78892t8w.png" alt="Image description" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a comprehensive video demonstration of EAS Hosting that covers deployment, assigning aliases, using API routes, looking up request logs, managing environment variables, and automating deployments with Workflows:&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/NaKsfWciJLo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>reactjsdevelopment</category>
      <category>reactnative</category>
      <category>react</category>
    </item>
    <item>
      <title>Fingerprint your native runtime with @expo/fingerprint</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Tue, 06 Feb 2024 23:47:00 +0000</pubDate>
      <link>https://forem.com/expo/fingerprint-your-native-runtime-with-expofingerprint-13hb</link>
      <guid>https://forem.com/expo/fingerprint-your-native-runtime-with-expofingerprint-13hb</guid>
      <description>&lt;p&gt;At Expo, we’re always looking to find systematic solutions to problems that developers encounter when building apps with React Native. There’s a set of time-consuming questions related to the native project runtime that comes up again and again, and up until now, there hasn’t been a good systematic approach to answering them.&lt;/p&gt;

&lt;p&gt;The questions go something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does a pull request include native code changes and need to initiate a new build for testing?&lt;/li&gt;
&lt;li&gt;Is my update compatible with the runtime in my production app? Or will it crash the app?&lt;/li&gt;
&lt;li&gt;Does a project require a development build, or can I experiment with it in Expo Go?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these issues may seem quite different initially, on closer examination they all come down to one key problem: "Given a project, can we deterministically generate a hash, identity, or fingerprint that represents its unique native characteristics?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet @expo/fingerprint
&lt;/h2&gt;

&lt;p&gt;Now, by running &lt;code&gt;npx @expo/fingerprint@latest /path/to/yourProject&lt;/code&gt;, you can get a full picture of your project's native setup. &lt;code&gt;@expo/fingerprint&lt;/code&gt; also comes with an API, so you can integrate this tool programmatically into your own projects.&lt;/p&gt;

&lt;p&gt;We think this is a massive milestone for the whole React Native ecosystem and it's already unlocking some super interesting use cases that are not immediately obvious. Krzysztof Magiera is using it to make startup of his RN IDE plugin for vscode much faster.&lt;/p&gt;

&lt;p&gt;Here’s an example of what the fingerprint looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "sources": [
    {
      "type": "file",
      "filePath": "app.json",
      "reasons": ["expoConfig"],
      "hash": "378083de0c6e6bb6caf8fb72df658b0b26fb29ef"
    },
    {
      "type": "file",
      "filePath": "eas.json",
      "reasons": ["easBuild"],
      "hash": "f723802b6ea916d1a6c4767b2299cc81ddb22eb4"
    },
    {
      "type": "dir",
      "filePath": "node_modules/expo",
      "reasons": ["expoAutolinkingIos", "expoAutolinkingAndroid", "bareRncliAutolinking"],
      "hash": "1faee4057fa943300905750b51c3b0cbf05f4b0d"
    }
  ],
  "hash": "bf8a3b08935f056270b1688333b02f1ef5fa25bf"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Developers can represent the entire native state of their project with a single, succinct hash value, which is immensely valuable for easily detecting native changes. But there are several other important considerations that we accounted for in order to maximize the usefulness in various use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt;: we’ve tried to make this tool as fast as possible so you can run it often, and we’ll continue to push on that to make it even faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Precision&lt;/strong&gt;: we should only consider aspects of the project that are actually relevant (it can’t just be a hash of the entire project and all of the .DS_Store and .swp files or the value would not be useful).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support for diffing&lt;/strong&gt;: You should be able to compare fingerprints to determine what’s different between them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customizability&lt;/strong&gt;: The API exposes some options that you can use to customize for your workflows — most notably, you can either add extra files to hashing or exclude files. We also read the .fingerprintignore file from your project root, which works similarly to .gitignore.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try out @expo/fingerprint 🪄
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;@expo/fingerprint&lt;/code&gt; fully supports projects made with Expo CLI and also works with any bare React Native apps, whether they use Expo tools or not. Follow these steps to see it in action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate a fingerprint JSON file: &lt;code&gt;run npx @expo/fingerprint@latest /path/to/yourProject &amp;gt; fingerprint.json&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change your native runtime: one easy way to do this is to install an npm package with native dependencies, for example: &lt;code&gt;npx expo install expo-camera&lt;/code&gt; or &lt;code&gt;npm install react-native-vision-camera&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Diff the fingerprint: run &lt;code&gt;npx @expo/fingerprint@latest /path/to/yourProject fingerprint.json&lt;/code&gt;. Notice that it will identify what changed, for example if you installed expo-camera, you will see something like this:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
  {
    "type": "dir",
    "filePath": "../../node_modules/expo-camera/android",
    "reasons": [
      "expoAutolinkingAndroid"
    ],
    "hash": "7682b28ed4ef8356faa5d9ad5b71e76e53198375"
  },
  {
    "type": "dir",
    "filePath": "../../node_modules/expo-camera/ios",
    "reasons": [
      "expoAutolinkingIos"
    ],
    "hash": "a80c2b1abb73157b772a8d0a351920465894bb0d"
  },
    // the rest is redacted for brevity
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use this API programmatically with the &lt;code&gt;Fingerprint.diffFingerprintChangesAsync(fingerprint, projectRoot)&lt;/code&gt; function.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next: collect feedback and refine workflows
&lt;/h2&gt;

&lt;p&gt;We think &lt;code&gt;@expo/fingerprint&lt;/code&gt; is really going to help with automating decisions like when you can safely send out updates and analyzing your team's pull-requests to rebuild the native app only when it’s really needed.&lt;/p&gt;

&lt;p&gt;Even though this is the first time we’re publicly talking about &lt;code&gt;@expo/fingerprint&lt;/code&gt;, we’ve already had some early adopters who have opened PRs / issues to help make the tool better accommodate their projects.&lt;/p&gt;

&lt;p&gt;We also know that the tool’s built-in opinions might not be perfect for every project. We want help from the community to test this tool thoroughly, and one way that we’ve made it very easy to do so is with our GitHub Actions integration, which is available now! (Blog post on github actions coming soon.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Using @expo/fingerprint with EAS
&lt;/h2&gt;

&lt;p&gt;In the future, we plan to build first-class integration for &lt;code&gt;@expo/fingerprint&lt;/code&gt; into EAS services. You can use &lt;code&gt;@expo/fingerprint&lt;/code&gt; in your EAS projects today by generating your fingerprint with the CLI and populating your runtimeVersion field with it, then comparing that value with the value generated at the time when you would like to do an update or build. If you use GitHub Actions to kick off your builds and updates, then may also want to use the GitHub Actions integration!&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>javascript</category>
      <category>programming</category>
      <category>native</category>
    </item>
    <item>
      <title>Expo SDK 50 Release 🚀</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Thu, 18 Jan 2024 23:38:27 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-50-release-do</link>
      <guid>https://forem.com/expo/expo-sdk-50-release-do</guid>
      <description>&lt;p&gt;Today we’re announcing the release of Expo SDK 50. &lt;/p&gt;

&lt;p&gt;SDK 50 is a very chunky and ambitious release that includes React Native 0.73. Thank you to all the contributors and to everyone who helped with beta testing.&lt;/p&gt;

&lt;p&gt;Learn more in the &lt;a href="https://expo.dev/changelog"&gt;full article on the Expo Changelog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And please join our &lt;a href="https://www.youtube.com/live/cKFSVUo3AnI?si=RY5xZ4n6rmxgtNmH"&gt;live stream on January 31st&lt;/a&gt; at 10:30am PT for a walkthrough of what’s new. &lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>expo</category>
      <category>universalapps</category>
    </item>
    <item>
      <title>Introducing EAS</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Wed, 10 Nov 2021 22:23:13 +0000</pubDate>
      <link>https://forem.com/expo/introducing-eas-c63</link>
      <guid>https://forem.com/expo/introducing-eas-c63</guid>
      <description>&lt;p&gt;&lt;em&gt;EAS stands for Expo Application Services, the fastest way to get your Expo app from development to the app stores.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Over the last few months, we've been previewing two new services: EAS Build and EAS Submit, the first services available from Expo Application Services (EAS).&lt;/p&gt;

&lt;p&gt;Today, we're happy to announce that EAS is moving out of preview and into general availability!&lt;/p&gt;

&lt;h1&gt;
  
  
  What is EAS?
&lt;/h1&gt;

&lt;p&gt;Expo is our open-source project: &lt;a href="https://blog.expo.dev/exponent-is-free-as-in-and-as-in-1d6d948a60dc"&gt;it will always be both open source and free&lt;/a&gt; - forever!&lt;/p&gt;

&lt;p&gt;Expo Application Services (EAS) are our hosted cloud services built for both Expo and React Native. With EAS Build and Submit, we make it faster and easier for you to get your app from development into the app stores.&lt;/p&gt;

&lt;p&gt;To learn more about EAS, head over to &lt;a href="http://expo.dev/eas"&gt;expo.dev/eas&lt;/a&gt; or check out our &lt;a href="https://docs.expo.dev/eas/"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  EAS Build and Submit
&lt;/h1&gt;

&lt;p&gt;EAS Build takes everything good about the classic Expo build service (&lt;code&gt;expo build:[android|ios]&lt;/code&gt;) and &lt;a href="https://blog.expo.dev/expo-managed-workflow-in-2021-5b887bbf7dbb"&gt;leaves all of its limitations behind&lt;/a&gt;. EAS Build raises the ceiling on what's possible with Expo managed workflow apps by adding support for &lt;a href="https://blog.expo.dev/expo-managed-workflow-in-2021-d1c9b68aa10"&gt;custom native code&lt;/a&gt; and for building "&lt;a href="https://blog.expo.dev/introducing-custom-development-clients-5a2c79a9ddf8"&gt;Development clients&lt;/a&gt;" in the cloud. The service works great with both managed and bare Expo apps, or any React Native app you throw at it. You can also &lt;a href="https://docs.expo.dev/build-reference/local-builds/"&gt;run it locally or on your own infrastructure&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can build your app with EAS Build and automatically submit to app stores with EAS Submit in minutes or less, thanks to &lt;a href="https://docs.expo.io/app-signing/managed-credentials/"&gt;automatically managed app signing credentials&lt;/a&gt;, &lt;a href="https://docs.expo.dev/build/automating-submissions/"&gt;automatic submissions&lt;/a&gt;, and defaults that &lt;em&gt;just work&lt;/em&gt; for most Expo and React Native apps.&lt;/p&gt;

&lt;p&gt;Internal distribution makes it easy to share test builds with colleagues and friends using &lt;a href="https://expo.canny.io/feature-requests/p/iosbuild-with-adhoc-provision-profile"&gt;ad hoc provisioning&lt;/a&gt; or &lt;a href="https://developer.apple.com/programs/enterprise/"&gt;enterprise provisioning&lt;/a&gt; on iOS and APK side-loading on Android.&lt;/p&gt;

&lt;p&gt;Everything works great &lt;a href="https://docs.expo.dev/accounts/account-types/"&gt;for your entire team&lt;/a&gt; out of the box and can be &lt;a href="https://docs.expo.dev/build/building-on-ci/"&gt;integrated into your existing CI/CD workflows&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  New EAS plans
&lt;/h1&gt;

&lt;p&gt;With our EAS General Availability release, we are introducing three new plans: &lt;a href="https://expo.dev/pricing"&gt;Free, Production, and Enterprise&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All our EAS services are now available under the &lt;a href="https://expo.dev/pricing"&gt;Free&lt;/a&gt; plan, which is a great option for pre-revenue startups and proofs-of-concept, as well as hobby and student projects.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://expo.dev/pricing"&gt;Production&lt;/a&gt; plan is for any commercial app in production generating more than $1,500 per month in revenue, or any team using EAS in a serious way. With the Production plan, you get priority for your builds, additional build concurrencies, and access to add-ons as well as to the Expo Professionals forum. The Production plan is $99/month.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://expo.dev/pricing"&gt;Enterprise&lt;/a&gt; plan is for teams that want to work closely with Expo on their apps. Enterprise plans include more of everything in the Production plan and gives access to add-on features like SLAs and dedicated support.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Folks currently on the EAS Priority plan will be able to stay on that plan until they're ready to switch!&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Enterprise support add-on
&lt;/h1&gt;

&lt;p&gt;We often get requests for additional levels of support and are happy to announce our Enterprise Support plan that's now available as an add-on to our Enterprise plan. &lt;/p&gt;

&lt;p&gt;With Enterprise Support you'll get direct access to the Expo team for questions and troubleshooting via a dedicated Slack channel. To learn more, check out our &lt;a href="https://www.expo.dev/eas/enterprise-support"&gt;Enterprise Support page&lt;/a&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  Get started with EAS - free!
&lt;/h1&gt;

&lt;p&gt;All Expo accounts get access to the free EAS plan, so everyone can now try out EAS Build and Submit. &lt;/p&gt;

&lt;p&gt;To learn more, look at &lt;a href="https://docs.expo.dev/build/setup/"&gt;creating your first build&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Thank you!
&lt;/h1&gt;

&lt;p&gt;We want to extend a huge thank you to all the developers who participated in the preview and provided feedback for EAS Build and Submit. That feedback was a tremendous resource whether it was helping to track down a tricky bug, uncovering new use cases, or suggesting new improvements and functionality.&lt;/p&gt;

&lt;p&gt;In total, developers participating in the EAS preview period built over 100,000 successful builds of their apps - with over 80,000 app store submissions! Hats off to all our preview developers!&lt;/p&gt;

&lt;p&gt;Of course, just because we're out of the preview period, &lt;a href="https://docs.expo.dev/build-reference/limitations/"&gt;that doesn't mean we're done&lt;/a&gt;! We'll continue to add great new features and services - so please stay tuned and keep that feedback coming in!&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>reactnative</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>Expo SDK 41</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Fri, 23 Apr 2021 23:02:17 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-41-1f2j</link>
      <guid>https://forem.com/expo/expo-sdk-41-1f2j</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdqsbfehonsots7vahff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdqsbfehonsots7vahff.png" alt="Stylized number 41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today we're announcing the release of &lt;strong&gt;Expo SDK 41&lt;/strong&gt;. SDK 41 includes React Native 0.63, the same version as in SDK 40. Thank you to everyone that [helped with beta testing[(&lt;a href="https://blog.expo.io/expo-sdk-41-beta-is-now-available-958edcd78991" rel="noopener noreferrer"&gt;https://blog.expo.io/expo-sdk-41-beta-is-now-available-958edcd78991&lt;/a&gt;). (&lt;em&gt;Curious why we didn't include the recently released React Native 0.64? &lt;a href="https://expo.fyi/react-native-releases" rel="noopener noreferrer"&gt;Learn more&lt;/a&gt;.&lt;/em&gt;)&lt;/p&gt;

&lt;h1&gt;
  
  
  ⚡️ Highlights
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android apps now target Android R (11 / SDK 30)&lt;/strong&gt;. This comes with some significant changes for location permissions, media library (related to &lt;a href="https://android-doc.github.io/guide/topics/providers/document-provider.html" rel="noopener noreferrer"&gt;StorageAccessFramework&lt;/a&gt;), and constants. Please note that these changes also impact SDK &amp;lt;= 40 projects in Expo Go, but they will not impact SDK &amp;lt;= 40 standalone apps. Refer to &lt;a href="https://expo.fyi/android-r" rel="noopener noreferrer"&gt;expo.fyi/android-r&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The recommended version of react-native-reanimated has been updated to v2&lt;/strong&gt;. If you would like to use v2 features in your app, you need to add the &lt;a href="https://docs.swmansion.com/react-native-reanimated/docs/installation/#babel-plugin" rel="noopener noreferrer"&gt;Reanimated v2 Babel plugin&lt;/a&gt;. You can continue to use v1 features (eg: those used by React Navigation v5) without adding the new Babel plugin. Please note that if you use the new features from v2, you will not be able to use remote JS debugging in your app! If you use v2 APIs, JS debugging is only possible using Flipper and Hermes, which are not yet fully supported in the managed workflow. (&lt;em&gt;We plan to investigate integrating Hermes during the next SDK cycle, but we don't currently expect to have it ready for SDK 42.&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;lottie-react-native has been updated to the latest version (3.5.0)&lt;/strong&gt;. Your existing animations should continue to work as before, but if you encounter any issues please &lt;a href="https://github.com/expo/expo/issues" rel="noopener noreferrer"&gt;file an issue&lt;/a&gt; and share the animation file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The new version of react-native-screens (v3) "enables screens" by default&lt;/strong&gt;. If you encounter any related issues, you can report the issue and opt out with &lt;code&gt;enableScreens(false)&lt;/code&gt;. Be sure to update to the latest v4 patch release of React Navigation if you use v4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improvements were made across the SDK to ensure compatibility with EAS Build&lt;/strong&gt;. A big part of this SDK has been making the necessary underlying changes to support EAS Build for managed projects. You can now use EAS Build with Expo managed apps to reduce the size of your standalone apps by up to 10x! &lt;a href="https://blog.expo.io/eas-build-april-preview-update-ebd7dff9dd25" rel="noopener noreferrer"&gt;Learn more about the latest EAS Build updates&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The expo package is now 93% smaller in production and better than ever&lt;/strong&gt;. We've simplified the experience so the &lt;code&gt;.expo&lt;/code&gt; extension is no longer needed (and so we removed it), and neither is the &lt;code&gt;--target bare|managed&lt;/code&gt; flag - updates will run in either context provided the native runtime is compatible. We've improved consistency across the managed and bare workflow, removed legacy code, and improved tree-shaking on the package using &lt;code&gt;@expo/metro-config&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To see the full list of new features and fixes, refer to the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🏡 Expo Go
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;We changed sign in to use &lt;code&gt;expo-web-browser&lt;/code&gt; so we can leverage our &lt;a href="https://blog.expo.io/four-new-security-features-to-protect-your-expo-apps-cdf3e409a1b0" rel="noopener noreferrer"&gt;existing web auth flow with two-factor-authentication&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You can now see &lt;a href="https://blog.expo.io/expo-organizations-a-simpler-way-to-work-as-a-team-5dc244f0efcb" rel="noopener noreferrer"&gt;teams and organizations&lt;/a&gt; that you are a part of in the &lt;em&gt;Profile&lt;/em&gt; tab, and their associated projects show up in your recent projects below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwie90orw7gnupg8pq5u8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwie90orw7gnupg8pq5u8.png" alt="Accounts &amp;amp; Organizations screenshot on mobile phones"&gt;&lt;/a&gt;Notice the "Accounts &amp;amp; Organizations" section and the shared "Recent Projects" list below it.&lt;/p&gt;

&lt;h1&gt;
  
  
  🌐 Expo CLI
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integrated Developer Tools&lt;/strong&gt;: Open the developer menu, inspect elements, and monitor performance all from the CLI. Just run &lt;code&gt;expo start&lt;/code&gt; then press "m" to toggle the dev menu, and "shift+M" to toggle the performance monitor or element inspector across native apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/iZ8FwgDy2Ek"&gt;
&lt;/iframe&gt;It was either a heavily compressed but still 7mb gif or a YouTube video, so we went for the YouTube video.
&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Force Reloading&lt;/strong&gt;: Shaking your devices every few minutes can get exhausting! Now you can reload connected phones, tablets, simulators, and browsers all by pressing "r" in the Terminal UI. This works across iOS, Android, web, and on physical devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/wIH0OEmLgy8"&gt;
&lt;/iframe&gt;
&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatic TypeScript setup&lt;/strong&gt;: Setting up TypeScript can be a pain, so we've completely automated it! Just create a blank &lt;code&gt;tsconfig.json&lt;/code&gt; and run &lt;code&gt;expo start&lt;/code&gt;, we'll take care of the rest! Learn more: &lt;a href="https://docs.expo.io/guides/typescript/" rel="noopener noreferrer"&gt;"TypeScript" in the Expo docs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneum1v776b28igfd16j7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneum1v776b28igfd16j7.gif" alt="GIF of following the instructions in a terminal window"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vastly better errors&lt;/strong&gt;: No one likes errors - that's why in SDK 41 we've refined them to be as concise, and useful as possible! We only surface the most relevant stack traces and point to exactly where the error or warning is. We've also improved source maps, and muted generated code traces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmyabirypop0bk95ncma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmyabirypop0bk95ncma.png" alt="before and after screenshots of error log"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debug your config&lt;/strong&gt;: The new &lt;code&gt;expo config&lt;/code&gt; command enables you to view the evaluated results of &lt;code&gt;app.config.js&lt;/code&gt; or &lt;code&gt;app.json&lt;/code&gt;. You can use &lt;code&gt;expo config --type public&lt;/code&gt; to see the app manifest used in &lt;code&gt;expo publish&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better interactions with Apple Store Connect from your terminal&lt;/strong&gt;: Faster, smarter authentication, better error handling, and - for the first time ever - get full insight into complex issues right from the console. Where other tools &lt;code&gt;401&lt;/code&gt;, Expo CLI gives you links to resolve issues in seconds. Need to update your payment or accept a contract? Resolve in a couple clicks, and get back to developing incredible (or at least "good") apps!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfyffordonfzzjrxbmb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfyffordonfzzjrxbmb9.png" alt="A terminal window showing information about a rejected request from App Store Connect due to an expired Developer Program membership."&gt;&lt;/a&gt;A terminal window showing information about a rejected request from App Store Connect due to an expired Developer Program membership.&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The --config is flag deprecated&lt;/strong&gt;. We suggest using &lt;code&gt;app.config.js&lt;/code&gt; instead. The &lt;code&gt;--config&lt;/code&gt; flag will continue to be supported for existing use cases for the foreseeable future, but it will not be supported in some situations in bare workflow projects, and it will also not be supported on EAS Build. Learn more: &lt;a href="https://expo.fyi/config-flag-migration" rel="noopener noreferrer"&gt;Migrating away from &lt;code&gt;--config&lt;/code&gt; in Expo CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The &lt;code&gt;--target flag&lt;/code&gt; is deprecated for SDK 41+&lt;/strong&gt;. This was used to provide slightly different behavior when in a managed or bare app environment, but it ended up being tricky to use because updates published with the &lt;code&gt;bare&lt;/code&gt; target could not run in Expo Go, and updates published with the &lt;code&gt;managed&lt;/code&gt; target could not run in a bare app. We now do any necessary adjustments to accommodate the environment at runtime, so an update bundle will work in either context, provided that the native runtime is compatible with the update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versioned Metro Config&lt;/strong&gt;: Rather than adding &lt;code&gt;@expo/metro-config&lt;/code&gt; to your &lt;code&gt;package.json&lt;/code&gt;, you can now import it through the expo package with the vendored &lt;code&gt;expo/metro-config&lt;/code&gt; import. This ensures that your project is always using a compatible version of the package. Learn More: &lt;a href="https://docs.expo.io/guides/customizing-metro/" rel="noopener noreferrer"&gt;Customizing Metro&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Introducing Config Plugins (beta)&lt;/strong&gt;: Config plugins are an important step towards making it possible for library authors to make their native modules part of the Expo ecosystem. This system is in beta, with a more stable release planned for SDK 42. Learn more: &lt;a href="https://docs.expo.io/guides/config-plugins/" rel="noopener noreferrer"&gt;Config Plugins&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🏗 Deprecations, renamings, and removals
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deprecated globals have been removed from the expo package&lt;/strong&gt;.As a result, &lt;code&gt;expo-linear-gradient&lt;/code&gt;, &lt;code&gt;expo-linking&lt;/code&gt;, &lt;code&gt;expo-location&lt;/code&gt;, &lt;code&gt;expo-permissions&lt;/code&gt;, and &lt;code&gt;expo-sqlite&lt;/code&gt; are no longer automatically installed in every project by default as dependencies of &lt;code&gt;expo&lt;/code&gt;. If you were depending on &lt;code&gt;global.expo.LinearGradient&lt;/code&gt; or similar, please install the respective package and import the API from there instead, eg: &lt;code&gt;import { LinearGradient } from 'expo-linear-gradient';&lt;/code&gt;. Refer to &lt;a href="http://expo.fyi/deprecated-globals" rel="noopener noreferrer"&gt;expo.fyi/deprecated-globals&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Files with the .expo.* extension (eg: MyComponent.expo.js) are no longer recognized as source files.&lt;/strong&gt; If your project source code or dependencies include any files with the &lt;code&gt;.expo.*&lt;/code&gt; extension, &lt;code&gt;expo-cli&lt;/code&gt; will let you know when you upgrade. Refer to &lt;a href="//expo.fyi/expo-extension-migration"&gt;expo.fyi/expo-extension-migration&lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbp1jqobz7hzu1t6kd0ll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbp1jqobz7hzu1t6kd0ll.png" alt="Terminal window showing a warning that projects with .expo.* file extensions are deprecated"&gt;&lt;/a&gt;We thought the .expo file extension was neat but it ended up not being necessary or particularly useful, and simplicity wins over neat things.&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;expo-permissions has been deprecated in favor of module-specific permissions methods.&lt;/strong&gt; You should migrate from using &lt;code&gt;Permissions.askAsync&lt;/code&gt; and &lt;code&gt;Permissions.getAsync&lt;/code&gt; to the permissions methods exported by modules that require the permissions. For example: you should replace calls to &lt;code&gt;Permissions.askAsync(Permissions.CAMERA)&lt;/code&gt; with &lt;code&gt;Camera.requestPermissionsAsync()&lt;/code&gt;. There shouldn't be two ways to do an identical thing in a single SDK, and so we picked our preferred approach and are consolidating around it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@react-native-community/async-storage&lt;/code&gt; is now &lt;code&gt;@react-native-async-storage/async-storage&lt;/code&gt;&lt;/strong&gt;. AsyncStorage is next in the packages that are gradually migrating out of the &lt;code&gt;@react-native-community&lt;/code&gt; scope on npm (&lt;a href="https://github.com/react-native-community/discussions-and-proposals/blob/master/partners/0001-organization-repository-policy.md" rel="noopener noreferrer"&gt;more context on why this is happening available here&lt;/a&gt;). We will take care of switching the packages in your dependencies in &lt;code&gt;package.json&lt;/code&gt; when you run &lt;code&gt;expo upgrade&lt;/code&gt;, but after that you will need to either manually update your imports in your source code, or run &lt;code&gt;npx expo-codemod sdk41-async-storage [your-source-directory]&lt;/code&gt; to update it automatically.
Along with this superficial change in package names comes a fix for an issue that occurs when ejecting your project; more information in &lt;a href="https://github.com/expo/expo/issues/8220" rel="noopener noreferrer"&gt;this issue&lt;/a&gt; and these &lt;a href="https://github.com/react-native-async-storage/async-storage/pull/563" rel="noopener noreferrer"&gt;pull&lt;/a&gt; &lt;a href="https://github.com/react-native-async-storage/async-storage/pull/559" rel="noopener noreferrer"&gt;requests&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@expo/metro-config&lt;/code&gt; is now vendored by the &lt;code&gt;expo&lt;/code&gt; package&lt;/strong&gt;. If your &lt;code&gt;metro.config.js&lt;/code&gt; uses &lt;code&gt;@expo/metro-config&lt;/code&gt;, you should switch over to importing it from the &lt;code&gt;expo&lt;/code&gt; package instead. Remove &lt;code&gt;@expo/metro-config&lt;/code&gt; from your &lt;code&gt;package.json&lt;/code&gt; dependencies and change your import in &lt;code&gt;metro.config.js&lt;/code&gt; from &lt;code&gt;@expo/metro-config&lt;/code&gt; to &lt;code&gt;expo/metro-config&lt;/code&gt;. Learn more: &lt;a href="https://docs.expo.io/guides/customizing-metro/" rel="noopener noreferrer"&gt;Customizing Metro&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Notifications API has been removed&lt;/strong&gt;.The legacy Notifications library (imported from the &lt;code&gt;expo&lt;/code&gt; package) has been deprecated since SDK 38, and is now fully removed in SDK 41. If you're still relying on this package, you should &lt;a href="https://github.com/expo/fyi/blob/master/LegacyNotifications-to-ExpoNotifications.md" rel="noopener noreferrer"&gt;upgrade to &lt;code&gt;expo-notifications&lt;/code&gt;&lt;/a&gt;, which has plenty of improvements and additional features. Learn more: &lt;a href="https://expo.fyi/LegacyNotifications-to-ExpoNotifications" rel="noopener noreferrer"&gt;How to migrate from Expo's LegacyNotifications to the new expo-notifications library&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;👋 iOS 10 support has been dropped - Expo SDK 41 supports iOS 11+&lt;/strong&gt;. More information on this from our &lt;a href="https://blog.expo.io/expo-sdk-40-is-now-available-d4d73e67da33" rel="noopener noreferrer"&gt;SDK 40 release notes&lt;/a&gt;:&lt;em&gt;iOS 10 is the last version of iOS that still supports 32-bit simulator builds (x86), and to keep Expo npm packages smaller, we plan to publish only 64-bit pre-build binaries for simulators (x64 and arm64). This has been past due - the last time we dropped an iOS version was over two years ago, when we dropped support for iOS 9 in September 2018. Apple no longer reports usage statistics for iOS 10 directly, but you can get a rough idea from reading the &lt;a href="https://developer.apple.com/support/app-store/" rel="noopener noreferrer"&gt;App Store - iOS and iPadOS usage table&lt;/a&gt; - 6% of all devices use iOS 11 or lower at the time of writing.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🟢 Node 10 support will be dropped soon from Expo CLI&lt;/strong&gt;.
It's not that we have anything against the number 10, but Node 10 is about to be replaced by Node 12 as the Maintenance LTS release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🧹 Dropped SDK 37; will drop SDK 38 next release&lt;/strong&gt;. We routinely drop SDK versions that have low usage in order to reduce the number of versions we need to support. This release sees the end of life for SDK 37. As usual, your standalone apps built with SDK 37 will continue to work; however, SDK 37 projects will no longer work within the latest version of Expo Go. If you want to re-run &lt;code&gt;expo build&lt;/code&gt;, then you'll need to upgrade from SDK 37, preferably to SDK 41 so you won't need to update again for a while (and also because each Expo version is better than the last!). &lt;strong&gt;Our next release is planned for June/July 2021 and, at that time, we'll be dropping support for SDK 38&lt;/strong&gt;. If your project is running on SDK 38, consider upgrading to a newer version in the coming months.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ➡️ Upgrading your app
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Managed workflow
&lt;/h2&gt;

&lt;p&gt;Here's how to upgrade your app to Expo SDK 41 from 40:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update to the latest version of Expo CLI: &lt;code&gt;npm i -g expo-cli&lt;/code&gt;. &lt;a href="mailto:expo-cli@4.4.1"&gt;expo-cli@4.4.1&lt;/a&gt; or greater is required.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory.&lt;/li&gt;
&lt;li&gt;If you are using &lt;code&gt;react-navigation&lt;/code&gt; v4, please be sure to update to the latest v4 patch release. This is required due to changes in the version of &lt;code&gt;react-native-screens&lt;/code&gt; included in SDK 41.&lt;/li&gt;
&lt;li&gt;Refer to the "Deprecations, renamings, and removals" section above for breaking changes that are most likely to impact your app.&lt;/li&gt;
&lt;li&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for all other breaking changes!&lt;/li&gt;
&lt;li&gt;Update the Expo app on your phones from the App Store / Google Play. expo-cli&lt;code&gt;will automatically update your apps in simulators if you delete the existing apps, or you can run&lt;/code&gt;expo client:install:ios&lt;code&gt;and&lt;/code&gt;expo client:install:android`.&lt;/li&gt;
&lt;li&gt;If you built a standalone app previously, &lt;a href="https://docs.expo.io/versions/latest/workflow/publishing/#limitations" rel="noopener noreferrer"&gt;remember&lt;/a&gt; that you'll need to create a new build in order to update the SDK version. Run &lt;code&gt;expo build:ios&lt;/code&gt; and/or &lt;code&gt;expo build:android&lt;/code&gt; when you are ready to do a new build for submission to stores.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bare workflow
&lt;/h2&gt;

&lt;p&gt;The Bare workflow lets you operate independently of the Expo SDK cycle, updating RN versions and versions of individual Expo packages however and whenever you want. However, if you do stick roughly to Expo SDK versions, these steps will help you to upgrade to Expo SDK 41 from 40:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the latest version of CocoaPods - 1.10.0 or greater is required.&lt;/li&gt;
&lt;li&gt;Update to the latest version of Expo CLI: &lt;code&gt;npm i -g expo-cli&lt;/code&gt;. &lt;a href="mailto:expo-cli@4.4.1"&gt;expo-cli@4.4.1&lt;/a&gt; or greater is required.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory.&lt;/li&gt;
&lt;li&gt;Update to &lt;code&gt;platform :ios, '11.0'&lt;/code&gt; in your Podfile.&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;compileSdkVersion&lt;/code&gt; and &lt;code&gt;targetSdkVersion&lt;/code&gt; to 30 in &lt;code&gt;android/build.gradle&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you are using &lt;code&gt;react-navigation&lt;/code&gt; v4, please be sure to update to the latest v4 patch release. This is required due to changes in the version of &lt;code&gt;react-native-screens&lt;/code&gt; included in SDK 41.&lt;/li&gt;
&lt;li&gt;Rebuild your native projects with &lt;code&gt;npm run ios&lt;/code&gt; and &lt;code&gt;npm run android&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for other breaking changes!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mobile</category>
      <category>reactnative</category>
      <category>ios</category>
      <category>android</category>
    </item>
    <item>
      <title>Expo SDK 41 beta is now available</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Tue, 30 Mar 2021 18:23:38 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-41-beta-is-now-available-11i1</link>
      <guid>https://forem.com/expo/expo-sdk-41-beta-is-now-available-11i1</guid>
      <description>&lt;p&gt;Learn about the changes, how to try it out, and how to give feedback&lt;/p&gt;

&lt;p&gt;The beta period will last approximately two weeks, and it is an opportunity for developers to ensure that the new release does not introduce any regressions for their particular system and app configurations.&lt;/p&gt;

&lt;p&gt;SDK 41 beta includes React Native 0.63, the same version as SDK 39 and 40. The full release notes won’t be available until the final release, but you can browse the changes in the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;expo/expo CHANGELOG&lt;/a&gt; to learn more about the scope of the release and any breaking changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notable changes to be aware of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@react-native-community/async-storage&lt;/code&gt; is now &lt;code&gt;@react-native-async-storage/async-storage&lt;/code&gt;. You &lt;strong&gt;must&lt;/strong&gt; change to the new package in SDK 41.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Files with the &lt;code&gt;.expo&lt;/code&gt; extension (eg: &lt;code&gt;MyComponent.expo.js&lt;/code&gt;) are no longer recognized as source files. If your project source code or dependencies include any files with the &lt;code&gt;.expo.&lt;/code&gt; extension, &lt;code&gt;expo-cli&lt;/code&gt; will let you know when you upgrade. Refer to &lt;a href="https://expo.fyi/expo-extension-migration" rel="noopener noreferrer"&gt;expo.fyi/expo-extension-migration&lt;/a&gt; for more information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;iOS 10 support has been dropped — Expo SDK 41 supports iOS 11+. One of the reasons for dropping iOS 10 was to reduce the size of prebuilt binaries for Expo packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node 10 support will be dropped soon from Expo CLI - it's not that we have anything against the number 10, but Node 10 is about to be replaced by Node 12 as the Maintenance LTS release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/expo/fyi/blob/master/deprecated-globals.md" rel="noopener noreferrer"&gt;Deprecated globals&lt;/a&gt; have been removed from the &lt;code&gt;expo&lt;/code&gt; package. &lt;code&gt;expo-linear-gradient&lt;/code&gt;, &lt;code&gt;expo-linking&lt;/code&gt;, &lt;code&gt;expo-location&lt;/code&gt;, &lt;code&gt;expo-permissions&lt;/code&gt;, and &lt;code&gt;expo-sqlite&lt;/code&gt; are no longer automatically installed in every project. If you were depending on &lt;code&gt;global.expo.LinearGradient&lt;/code&gt; or similar, please the respective package and import the API from there instead, eg: &lt;code&gt;import { LinearGradient } from 'expo-linear-gradient';&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;expo-permissions&lt;/code&gt; has been deprecated in favor of module-specific permissions methods, eg: &lt;code&gt;Permissions.askAsync(Permissions.CAMERA)&lt;/code&gt; ➡️ &lt;code&gt;Camera.requestPermissionsAsync()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Android apps now target Android R (11 / SDK 30). This comes with some significant changes for location permissions, media library (related to &lt;a href="https://android-doc.github.io/guide/topics/providers/document-provider.html" rel="noopener noreferrer"&gt;StorageAccessFramework&lt;/a&gt;), and constants. Please note that these changes also impact SDK &amp;lt;= 40 projects in Expo Go, but they will not impact SDK &amp;lt;= 40 standalone apps. Refer to &lt;a href="https://expo.fyi/android-r" rel="noopener noreferrer"&gt;expo.fyi/android-r&lt;/a&gt; for more information. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The recommended version of &lt;code&gt;react-native-reanimated&lt;/code&gt; has been updated to v2. If you would like to use v2 features in your app, you need to add the &lt;a href="https://docs.swmansion.com/react-native-reanimated/docs/installation/#babel-plugin" rel="noopener noreferrer"&gt;Babel plugin&lt;/a&gt;. You can continue to use v1 features (eg: those used by React Navigation v5) without adding the Babel plugin. Please note that if you use the new features from v2, you will not be able to use remote JS debugging in your app! This is only possible in v2 using Flipper, which is not yet fully supported in the managed workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The new version of &lt;code&gt;react-native-screens&lt;/code&gt; (v3) “enables screens” by default. If you encounter any related issues, you can report the issue and opt out with &lt;code&gt;enableScreens(false)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;lottie-react-native&lt;/code&gt; has been updated to the latest version! Your existing animations should continue to work as before, but if you encounter any issues please file an issue and share the animation file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Known regressions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Outstanding
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bitcode has been disabled on SDK 41 standalone apps for iOS, pending &lt;a href="https://github.com/facebook/facebook-ios-sdk/pull/1698" rel="noopener noreferrer"&gt;facebook/facebook-ios-sdk#1698&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resolved
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Textures in &lt;code&gt;expo-gl&lt;/code&gt; on Android are not currently working in published SDK 41 projects in Expo Go or standalone apps. &lt;a href="https://github.com/expo/expo/pull/12428" rel="noopener noreferrer"&gt;Related pull request&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;lottie-react-native crashes on iOS. &lt;a href="https://github.com/expo/expo/pull/12377" rel="noopener noreferrer"&gt;Related pull request&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to try out the beta release
&lt;/h2&gt;

&lt;p&gt;You will be able to opt in to using the SDK 41 beta by setting the EXPO_BETA environment variable to 1 (or some &lt;a href="https://www.npmjs.com/package/getenv/v/0.7.0#envboolishname-fallback" rel="noopener noreferrer"&gt;truthy value&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;On macOS and Linux, you can set this per command with &lt;code&gt;EXPO_BETA=1 expo &amp;lt;command&amp;gt;&lt;/code&gt;. On Windows, you can do the same with cross-env: &lt;code&gt;npx cross-env EXPO_BETA=1 expo &amp;lt;command&amp;gt;&lt;/code&gt;. Below we have listed in the commands in their more concise form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the latest version of expo-cli&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i -g expo-cli&lt;/code&gt; (SDK 41 requires &lt;a href="mailto:expo-cli@4.3.2"&gt;expo-cli@4.3.2&lt;/a&gt; or greater)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initialize a new project with SDK 41 beta&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;EXPO_BETA=1 expo init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upgrade an existing project&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;EXPO_BETA=1 expo upgrade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the latest Expo Go for iOS to your simulator:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;EXPO_BETA=1 expo client:install:ios&lt;/code&gt; outside of an Expo project or inside of an SDK 41 project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the latest Expo Go for iOS to your physical device&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Use this &lt;a href="https://testflight.apple.com/join/GZJxxfUU" rel="noopener noreferrer"&gt;TestFlight open beta link&lt;/a&gt; and follow the instructions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the latest Expo Go for Android&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;EXPO_BETA=1 expo client:install:android&lt;/code&gt; outside of an Expo project or inside of an SDK 41 project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running other CLI commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Other commands will work as expected without the &lt;code&gt;EXPO_BETA&lt;/code&gt; environment variable, including &lt;code&gt;build:{android,ios}&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the documentation by selecting it from the version selector in the API reference section&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbu81b2u6sz34bqvizfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbu81b2u6sz34bqvizfl.png" alt="Screen Shot 2021-03-30 at 9.29.07 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.expo.io/versions/v41.0.0" rel="noopener noreferrer"&gt;https://docs.expo.io/versions/v41.0.0&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  What to test
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Try ejecting your app and running it: &lt;code&gt;expo eject&lt;/code&gt;. Did it work without any changes? Perfect! No? Please report it on the &lt;a href="https://github.com/expo/expo/issues/12356" rel="noopener noreferrer"&gt;SDK 41 Beta Eject Issues Issue&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://expo.fyi/android-r" rel="noopener noreferrer"&gt;Media library and permissions changes made for Android R&lt;/a&gt; may impact your app. We'd appreciate your feedback on how they work for your app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did we miss updating the documentation somewhere? Let us know.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to report issues
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create an issue on &lt;a href="https://github.com/expo/expo/issues" rel="noopener noreferrer"&gt;https://github.com/expo/expo/issues&lt;/a&gt; and be sure to fill out the template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Figuring out the underlying causes of issues is super helpful.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Let us know that you are using the SDK 41 beta so we can prioritize the issue.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for helping us with testing the release, we look forward to shipping it soon! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Expo Application Services (EAS): Build and Submit</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Tue, 15 Dec 2020 19:31:09 +0000</pubDate>
      <link>https://forem.com/expo/expo-application-services-eas-build-and-submit-2hfj</link>
      <guid>https://forem.com/expo/expo-application-services-eas-build-and-submit-2hfj</guid>
      <description>&lt;p&gt;Today we're excited to announce the public preview of two brand new services: EAS Build and Submit. These are the first services available from Expo Application Services (EAS), our new cloud services.&lt;/p&gt;

&lt;h1&gt;
  
  
  EAS Build
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Feature Preview
&lt;/h2&gt;

&lt;p&gt;EAS Build is a new service that takes everything good about the Expo build service (&lt;code&gt;expo build:[ios|android]&lt;/code&gt;) and makes it available to all React Native apps. You can set your app up to build for distribution in minutes or even less, thanks to &lt;a href="https://docs.expo.io/app-signing/managed-credentials/" rel="noopener noreferrer"&gt;automatically managed app signing credentials&lt;/a&gt; and defaults that just work for most Expo and React Native apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm06ala26ysg6ltp6chfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm06ala26ysg6ltp6chfo.png" alt="1_Yfou6wa_fi05Ps8anXeJBA"&gt;&lt;/a&gt; &lt;/p&gt;
In this screenshot, we go from a brand new project to release build running on EAS Build in 30 seconds.



&lt;p&gt;We've also added support for "&lt;a href="https://docs.expo.io/build/internal-distribution/" rel="noopener noreferrer"&gt;internal distribution&lt;/a&gt;" - a feature that makes it easy for you to share test builds with colleagues and friends without going through an app store, by using &lt;a href="https://expo.canny.io/feature-requests/p/iosbuild-with-adhoc-provision-profile" rel="noopener noreferrer"&gt;ad hoc provisioning&lt;/a&gt; on iOS and standard APK side-loading on Android. Generating and updating the ad hoc provisioning profile can be handled entirely for you by EAS Build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F22m1eoil1iifs16s9teu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F22m1eoil1iifs16s9teu.png" alt="1_9sydz-IelPB7FDMBSgRpwg"&gt;&lt;/a&gt;&lt;/p&gt;
Easily share builds with your team using “internal distribution”.

 

&lt;p&gt;EAS Build &lt;em&gt;currently&lt;/em&gt; works best with bare React Native apps. If you use the Expo managed workflow and end up needing to move to the bare workflow, you can transition seamlessly to EAS Build - just run eas build instead of expo build after ejecting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coming later in 2021: full support for Expo managed workflow
&lt;/h2&gt;

&lt;p&gt;With EAS Build, you can include libraries with native code that aren't part of the Expo standard library. For many of you, the Expo managed workflow is nearly a perfect fit - except for that one piece of functionality you absolutely have to have in your app, but that isn't part of the Expo standard library (whether that's &lt;a href="https://expo.canny.io/feature-requests/p/in-app-purchases" rel="noopener noreferrer"&gt;IAP&lt;/a&gt; support, &lt;a href="https://expo.canny.io/feature-requests/p/webrtc" rel="noopener noreferrer"&gt;WebRTC&lt;/a&gt;, &lt;a href="https://expo.canny.io/feature-requests/p/bluetooth-api" rel="noopener noreferrer"&gt;Bluetooth&lt;/a&gt;, or &lt;a href="https://dev.toesoteric"&gt;something more esoteric&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;EAS Build will let you use any compatible library from GitHub or npm or that you write yourself, even if it has native code in it.&lt;/p&gt;

&lt;p&gt;EAS Build also lets you build smaller, stripped-down binaries that include only the code your application needs, which means a &lt;a href="https://github.com/expo/fyi/blob/master/managed-app-size.md" rel="noopener noreferrer"&gt;smaller install size for your users&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's already early support for Expo managed apps in EAS Build in the preview, but it's not quite ready for production yet. There's also a big missing piece: how do you get a new version of your Expo development client app that includes your bespoke native runtime? We're working on this, and we'll have answers for you in the coming months.&lt;/p&gt;

&lt;p&gt;These are some of the most common requests we hear from Expo developers today, so we're extremely excited to be close to getting a solution into your hands.&lt;/p&gt;

&lt;h1&gt;
  
  
  EAS Submit
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Feature Preview
&lt;/h2&gt;

&lt;p&gt;When you want to put your app into the App Store and Play Store, you can use a single command from your terminal or from CI to submit it.&lt;/p&gt;

&lt;p&gt;When you run &lt;code&gt;eas submit&lt;/code&gt;, your app binary will be uploaded to EAS and then submitted to the respective app store from there. This means fewer dependencies to install on your machine, and that you can submit your apps from your Windows, Linux, or macOS computer to any app store.&lt;/p&gt;

&lt;p&gt;We guide you through your first submission and try to make your nth submission as easy as possible by catching common mistakes and giving you guidance on how to resolve them. For example, if you're missing a privacy policy, &lt;a href="https://expo.fyi/missing-privacy-policy" rel="noopener noreferrer"&gt;we have an FYI for that&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Expo Application Services (EAS)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Expo&lt;/em&gt;&lt;/strong&gt; is the open source project, and &lt;strong&gt;&lt;em&gt;Expo Application Services&lt;/em&gt;&lt;/strong&gt; offers hosted cloud services built for both Expo and React Native.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You won't need EAS to use Expo&lt;/strong&gt;, which will always be open source and free. You can choose a different CI/CD service or use your own hardware.&lt;/p&gt;

&lt;p&gt;Likewise, &lt;strong&gt;you'll be able to take advantage of EAS with any React Native project, whether or not it uses Expo's open source tools&lt;/strong&gt;. EAS is designed for developers who specifically want their builds, updates and/or other parts of their app operations, development and collaboration workflows streamlined by a cloud service designed purposefully for and deeply integrated with React Native and Expo.&lt;/p&gt;

&lt;h1&gt;
  
  
  How does EAS relate to the Expo services that I'm already using for builds, updates, and notifications?
&lt;/h1&gt;

&lt;p&gt;We don't want to disrupt anyone who is counting on Expo services to make software, and so we'll continue to operate the existing build, update, and notification services indefinitely. So, if you're happy with the way you're using those services now, you don't need to do anything differently and you can continue using them.&lt;/p&gt;

&lt;p&gt;To reduce confusion with EAS versions of the services, we're going to start calling the existing free services the "Classic" Expo services. So, "Classic" Build, Updates, and Notifications.&lt;/p&gt;

&lt;p&gt;That said, EAS is where most of our investment and effort on the services side will go in the future, so you should expect to see each EAS service keep getting better, more powerful, and easier to use as time goes on. Keep an eye out for the EAS Update preview, launching in early 2021.&lt;/p&gt;

&lt;h1&gt;
  
  
  How much will EAS services cost to use?
&lt;/h1&gt;

&lt;p&gt;We'll always maintain a free tier that can meet the needs of individual and hobbyist developers building small apps. We'll announce further pricing details closer to the date when EAS services graduate from preview in 2021.&lt;/p&gt;

&lt;h1&gt;
  
  
  If I'm already an Expo Developer Services subscriber, how does this affect me?
&lt;/h1&gt;

&lt;p&gt;If you're currently paying for Expo Developer Services, we've automatically updated your plan to EAS Priority Plan. EAS Priority will have the same price point and feature set as your old Developer Services plan, plus preview access to EAS Build and Submit. You don't need to do anything: you'll be moved over automatically.&lt;/p&gt;

&lt;h1&gt;
  
  
  How can I try EAS Build and Submit right now?
&lt;/h1&gt;

&lt;p&gt;The previews of EAS Build and Submit are available to developers subscribed to the &lt;a href="https://expo.io/pricing" rel="noopener noreferrer"&gt;EAS Priority Plan&lt;/a&gt;. If you're not yet a subscriber, you can &lt;a href="https://expo.io/pricing" rel="noopener noreferrer"&gt;try it out for free for a month&lt;/a&gt;. If you want to try the preview services out but don't have access to a credit card, please reach out to us &lt;a href="https://www.twitter.com/expo" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt; and we can help you out.&lt;/p&gt;

&lt;p&gt;Once you're signed up, you can find everything that you need to know in the &lt;a href="https://docs.expo.io/eas" rel="noopener noreferrer"&gt;Feature Preview documentation&lt;/a&gt;. If you'd like to watch a quick video walkthrough of EAS Build and Submit, check out this YouTube video:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7E6zsRpfT4U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>mobile</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Expo SDK 40 is now available</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Wed, 09 Dec 2020 21:01:16 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-40-is-now-available-1in0</link>
      <guid>https://forem.com/expo/expo-sdk-40-is-now-available-1in0</guid>
      <description>&lt;p&gt;Today we’re announcing our fourth and final SDK release of 2020, Expo SDK 40. SDK 40 includes React Native 0.63, mostly the same version as SDK 39 but with some additional bugfixes cherry-picked on top 🍒. Thank you to everyone that &lt;a href="https://dev.to/expo/expo-sdk-40-beta-is-now-available-59gb"&gt;helped with beta testing&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡️ Highlights
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Updated icons and types for @expo/vector-icons
&lt;/h3&gt;

&lt;p&gt;@expo/vector-icons has been updated to track the latest icon sets from &lt;a href="mailto:react-native-vector-icons@7.1.0"&gt;react-native-vector-icons@7.1.0&lt;/a&gt; (the previously tracked version was 6.6.0). Updated icon sets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/templarian/MaterialDesign" rel="noopener noreferrer"&gt;MaterialCommunityIcons&lt;/a&gt; to 5.3.45,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/google/material-design-icons" rel="noopener noreferrer"&gt;MaterialIcons&lt;/a&gt; to 4.0.0, &lt;a href="https://github.com/FortAwesome/Font-Awesome" rel="noopener noreferrer"&gt;FontAwesome 5&lt;/a&gt; to 5.13.0, and&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/feathericons/feather" rel="noopener noreferrer"&gt;Feather&lt;/a&gt; to 4.28.0.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use the updated icon sets, please check your app to ensure that every icon that you use is still included.&lt;/p&gt;

&lt;p&gt;The update also improves the TypeScript types to add support for autocompletion and validation of the name prop on all icon families.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F49g35jfoyihe3ex2l8ku.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F49g35jfoyihe3ex2l8ku.gif" alt="Visual Studio Code autocompletion and validation of the name prop on an icon component"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Reanimated 2 release candidate available
&lt;/h3&gt;

&lt;p&gt;Now with more &lt;em&gt;bugfixes and improvements&lt;/em&gt;, the react-native-reanimated v2 release candidate is available in SDK 40! It’s also easier to install: just &lt;code&gt;yarn add react-native-reanimated@2.0.0-rc.0&lt;/code&gt; and add the Babel plugin, and you're good to go. &lt;a href="https://docs.expo.io/versions/v40.0.0/sdk/reanimated/" rel="noopener noreferrer"&gt;Learn more in the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background location is now an opt-in permission on Android
&lt;/h3&gt;

&lt;p&gt;Most users do not use this permission and it raises red flags during Play Store submission, so we’ve decided to make this permission opt-in rather than opt-out (it’s easier to fall into &lt;a href="https://blog.codinghorror.com/falling-into-the-pit-of-success/" rel="noopener noreferrer"&gt;the pit of success&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If you use background location features on Android, you’ll need to add &lt;code&gt;"ACCESS_BACKGROUND_LOCATION"&lt;/code&gt; to the list of permissions in &lt;code&gt;android.permissions&lt;/code&gt; in your app configuration file (app.json or app.config.js), if you haven't done so already. More context is available &lt;a href="https://github.com/expo/expo/pull/10989" rel="noopener noreferrer"&gt;in this pull request&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  @expo/dev-server is used in all apps SDK 40 and onward
&lt;/h3&gt;

&lt;p&gt;Expo CLI previously started a Metro dev server for transforming, bundling, and serving your app via @react-native-community/cli . We've now decoupled the configuration required to start a Metro server for React Native from React Native CLI and are able to start Metro directly using its public JavaScript API. This has a number of benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🚀 Publishing is faster! &lt;a href="https://twitter.com/ryanastelly/status/1293613865331294213" rel="noopener noreferrer"&gt;An early adopter reported a 33% improvement&lt;/a&gt;, and we’ve seen similar results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🐛 No more ENOSPC errors with expo publish on CI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔧 File extensions (&lt;code&gt;sourceExts&lt;/code&gt;) can now be customized in &lt;code&gt;metro.config.js&lt;/code&gt; rather than &lt;code&gt;packagerOpts.sourceExts&lt;/code&gt; in &lt;code&gt;app.config.js&lt;/code&gt; or app.json&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;😬 Running expo publish inside of a project with a running development server no longer kills the Metro process for the development server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/expo/expo-cli/issues/2322" rel="noopener noreferrer"&gt;A number of other issues were resolved&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run into any issues in SDK 40 and suspect this change may be related, you can revert back to using the old process by setting the environment variable &lt;code&gt;EXPO_USE_DEV_SERVER=0&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expo client &amp;amp; standalone apps are now built with Xcode 12
&lt;/h3&gt;

&lt;p&gt;We switched over expo build for SDK 37+ projects to be built with Xcode 12, and with SDK 40 the Expo client app is now built with Xcode 12 too. This resolves &lt;a href="https://github.com/expo/expo/issues/11126" rel="noopener noreferrer"&gt;a confusing inconsistency in between the client and standalone apps around the DateTimePicker UI&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Constants.manifest is now available in Bare workflow apps
&lt;/h3&gt;

&lt;p&gt;On our quest to continue eliminating any inconsistencies between the Managed and Bare workflow, &lt;code&gt;Constants.manifest&lt;/code&gt; is now available in Bare workflow apps initialized with expo init or through &lt;code&gt;expo eject&lt;/code&gt;. To add it to an an existing project, update to the latest version of expo-constants and &lt;a href="https://github.com/expo/expo/blob/1149d7611183243d178856de3e74f4e0f49e05ac/packages/expo-constants/README.md#optional-set-up-script-to-get-app-config" rel="noopener noreferrer"&gt;follow these instructions&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Direct control over entitlements in standalone apps
&lt;/h3&gt;

&lt;p&gt;You can now use the &lt;code&gt;ios.entitlements&lt;/code&gt; key to customize your app entitlements as needed. For example, you can &lt;a href="https://docs.expo.io/versions/v40.0.0/sdk/netinfo/#accessing-the-ssid" rel="noopener noreferrer"&gt;add the WiFi Info entitlement so that your standalone apps can access WiFi Network SSIDs&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improvements to expo-notifications
&lt;/h3&gt;

&lt;p&gt;This release fixes two long-standing bugs in expo-notifications: push tokens will no longer remain the same when restoring a device from a backup, &lt;em&gt;and&lt;/em&gt; listening for notification responses is much more consistent with the new &lt;a href="https://docs.expo.io/versions/v40.0.0/sdk/notifications/#uselastnotificationresponse-undefined--notificationresponse--null" rel="noopener noreferrer"&gt;useLastNotificationResponse&lt;/a&gt; hook! There are &lt;a href="https://github.com/expo/expo/blob/master/packages/expo-notifications/CHANGELOG.md#-bug-fixes-2" rel="noopener noreferrer"&gt;plenty of other bug fixes&lt;/a&gt;, as well as brand new features (like scheduling weekly notifications), but as always make sure to look through &lt;a href="https://github.com/expo/expo/blob/master/packages/expo-notifications/CHANGELOG.md#-breaking-changes-1" rel="noopener noreferrer"&gt;the breaking changes&lt;/a&gt; just in case they affect you. Thank you for all the high-quality bug reports that allow us to continually improve libraries like expo-notifications!&lt;/p&gt;

&lt;h2&gt;
  
  
  🍏 Apple App Store privacy update
&lt;/h2&gt;

&lt;p&gt;As of December 8, 2020, new app submissions and updates are required to provide information about their privacy practices in App Store Connect. See &lt;a href="https://developer.apple.com/app-store/app-privacy-details/" rel="noopener noreferrer"&gt;App privacy details on the App Store&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;For guidance, please refer to the &lt;a href="https://docs.expo.io/distribution/app-stores/#app-privacy-questions" rel="noopener noreferrer"&gt;Deploying to App Stores guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌐 Expo CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Expo CLI is now 10% smaller and installs ~12 seconds faster! We upstreamed improvements to our dependency on create-react-app, reducing it by ~63%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can now sync your Bare projects with your Expo config by re-running expo eject — we'll move to rename this command in upcoming versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved support for Simulators, Emulators, and unauthorized Android devices:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb9ln3rg0gyil06ekxmj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb9ln3rg0gyil06ekxmj5.png" alt="Terminal window showing an unauthorized device"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🍩 Snack improvements
&lt;/h2&gt;

&lt;p&gt;As of December, Snack has a new home 🏡 at the &lt;a href="https://github.com/expo/snack" rel="noopener noreferrer"&gt;expo/snack monorepo&lt;/a&gt;. The monorepo will make it easier for developers to find documentation, contribute, and report bugs. This’ll be your place to go when you want to integrate Snack examples in your documentation. It currently contains the documentation and the snack-sdk package, and other packages such as the website and "snackager" (the Snack packager) will be moved there as well.&lt;/p&gt;

&lt;p&gt;A new major version of the snack-sdk (v3) has been released to developers! It's faster, easier to use, comes with shiny new documentation and lots of tests. We've already battle-tested it on the &lt;a href="http://snack.expo.io" rel="noopener noreferrer"&gt;snack.expo.io&lt;/a&gt; website and snack-sdk@3 is now available on the new expo/snack monorepo. It supports SDK 40 and has smart dependency management (similar to expo install) to help with selecting compatible package versions.&lt;/p&gt;

&lt;p&gt;🏡 &lt;a href="https://github.com/expo/snack" rel="noopener noreferrer"&gt;Visit the new expo/snack monorepo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  A note about missing dependencies on Snack
&lt;/h3&gt;

&lt;p&gt;As of SDK 40, Snack requires that all used dependencies are added to package.json. This allows us to load a leaner runtime and provide faster and more accurate code completion. Any dependencies that are missing will be visible in the &lt;em&gt;Problems Panel&lt;/em&gt; and can be added or updated using the provided action. Some of these missing dependencies already showed a warning in SDK 39, but will now result in an error as of SDK 40.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗 Deprecations, renamings, and removals
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LegacyNotifications has been removed in favor of expo-notifications
&lt;/h3&gt;

&lt;p&gt;The legacy Notifications library (imported from the &lt;code&gt;expo&lt;/code&gt; package) has been deprecated since SDK 38, and will be removed in SDK 41. If you're still relying on this package, you should upgrade to the &lt;a href="https://docs.expo.io/versions/latest/sdk/notifications/" rel="noopener noreferrer"&gt;new expo-notifications library&lt;/a&gt;, which has plenty of improvements and shiny new features!&lt;/p&gt;

&lt;h3&gt;
  
  
  expo-random is now a peer dependency of expo-auth-session
&lt;/h3&gt;

&lt;p&gt;Starting with SDK 40, when you install expo-auth-session you will also need to install expo-random.&lt;/p&gt;

&lt;p&gt;If you use the latest version of expo-cli, &lt;code&gt;expo upgrade&lt;/code&gt; will handle installing expo-random for you if your project includes expo-auth-session in its dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;AppLoading&lt;/code&gt; has been extracted from the expo package
&lt;/h3&gt;

&lt;p&gt;If you use this component, you should run expo install expo-app-loading and import AppLoading from its own package: &lt;code&gt;import AppLoading from 'expo-app-loading';&lt;/code&gt;. This is part of an ongoing effort to make the expo package as lightweight as possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  @react-native-community/picker is now @react-native-picker/picker
&lt;/h3&gt;

&lt;p&gt;In September, the policy for the React Native Community organization was changed to focus on tooling and discussions to support the React Native ecosystem, and it is no longer is a host for libraries maintained by various React Native users (&lt;a href="https://github.com/react-native-community/discussions-and-proposals/issues/176#issuecomment-693569246" rel="noopener noreferrer"&gt;learn more here&lt;/a&gt;). As a result, libraries that were once part of the React Native Community are now rebranding under their own namespaces. This is the first of those renames that has impacted the Expo SDK, but we expect there to be more in the future.&lt;/p&gt;

&lt;p&gt;You can transition to the new package name by uninstalling @react-native-community/picker, then running &lt;code&gt;expo install @react-native-picker/picker&lt;/code&gt; and updating all of your imports accordingly in your app code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clipboard and CheckBox continue life in the Expo SDK
&lt;/h3&gt;

&lt;p&gt;As React Native &lt;a href="https://github.com/react-native-community/discussions-and-proposals/issues/6" rel="noopener noreferrer"&gt;continues to remove APIs in order to focus on its core functionality&lt;/a&gt;, &lt;code&gt;Clipboard&lt;/code&gt; and &lt;code&gt;CheckBox&lt;/code&gt; have been deprecated and slated for removal in the upcoming React Native 0.64 release. You can switch over to expo-clipboard and expo-checkbox today in preparation for their removal. These APIs are almost identical, but there are some slight differences in order to have them fit in with the rest of the Expo SDK, so please refer to the &lt;a href="https://docs.expo.io/versions/v40.0.0/sdk/clipboard/" rel="noopener noreferrer"&gt;expo-clipboard&lt;/a&gt; and &lt;a href="https://docs.expo.io/versions/v40.0.0/sdk/checkbox/" rel="noopener noreferrer"&gt;expo-checkbox&lt;/a&gt; documentation when switching.&lt;/p&gt;

&lt;h3&gt;
  
  
  Global APIs set by the expo package are now deprecated
&lt;/h3&gt;

&lt;p&gt;Expo has historically exported several APIs on the global &lt;code&gt;__expo&lt;/code&gt; and &lt;code&gt;Expo&lt;/code&gt; objects in order to make it easier for libraries to interoperate between Expo's Managed environments and Bare React Native projects. This isn't necessary anymore, and we've deprecated these globals and slated them for removal in SDK 41. &lt;a href="https://expo.fyi/deprecated-globals" rel="noopener noreferrer"&gt;Learn more on expo.fyi&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  👋 Dropping iOS 10 support in the near future
&lt;/h2&gt;

&lt;p&gt;iOS 10 is the last version of iOS that still supports 32-bit simulator builds (x86), and to keep Expo npm packages smaller, we plan to publish only 64-bit pre-build binaries for simulators (x64 and arm64). This has been past due — the last time we dropped an iOS version was over two years ago, when we dropped support for iOS 9 in September 2018. Apple no longer reports usage statistics for iOS 10 directly, but you can get a rough idea from reading the &lt;a href="https://developer.apple.com/support/app-store/" rel="noopener noreferrer"&gt;App Store — iOS and iPadOS usage table&lt;/a&gt; — 6% of all devices use iOS 11 or lower at the time of writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧹 Dropped SDK 36; will drop SDK 37 next release
&lt;/h2&gt;

&lt;p&gt;We routinely drop SDK versions that have low usage in order to reduce the number of versions we need to support. This release sees the end of life for SDK 36. As usual, your standalone apps built with SDK 36 will continue to work; however, SDK 36 projects will no longer work within the latest version of the Expo client. If you want to re-run expo build, then you’ll need to upgrade from SDK 36, preferably to SDK 40 so you won’t need to update again for a while (and also because each Expo version is better than the last!).&lt;/p&gt;

&lt;p&gt;Our next release is planned for March 2021 and, at that time, we’ll be dropping support for SDK 37. If your project is running on SDK 37, consider upgrading to a newer version in the coming months.&lt;/p&gt;

&lt;h2&gt;
  
  
  ➡️ Upgrading your app
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Managed workflow
&lt;/h3&gt;

&lt;p&gt;Here’s how to upgrade your app to Expo SDK 40 from 39:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory (requires the latest version of expo-cli, you can update with &lt;code&gt;npm i -g expo-cli&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you use &lt;code&gt;metro.config.js&lt;/code&gt; in your project, please ensure that you use &lt;code&gt;@expo/metro-config&lt;/code&gt; instead of the &lt;code&gt;metro-config&lt;/code&gt; package for getDefaultConfig. &lt;a href="https://docs.expo.io/guides/customizing-metro/" rel="noopener noreferrer"&gt;Learn more&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you are still using &lt;code&gt;react-navigation&lt;/code&gt; v4 along with &lt;code&gt;react-native-screens&lt;/code&gt;, please refer to &lt;a href="https://github.com/expo/expo/issues/11301" rel="noopener noreferrer"&gt;this comment&lt;/a&gt; to handle upgrade warnings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refer to the “Deprecations, renamings, and removals” section above for breaking changes that are most likely to impact your app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for all other breaking changes!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update the Expo app on your phones from the App Store / Google Play. expo-cli will automatically update your apps in simulators if you delete the existing apps, or you can run &lt;code&gt;expo client:install:ios&lt;/code&gt; and &lt;code&gt;expo client:install:android&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you built a standalone app previously, &lt;a href="https://docs.expo.io/versions/latest/workflow/publishing/#limitations" rel="noopener noreferrer"&gt;remember&lt;/a&gt; that you’ll need to create a new build in order to update the SDK version. Run &lt;code&gt;expo build:ios&lt;/code&gt; and/or &lt;code&gt;expo build:android&lt;/code&gt; when you are ready to do a new build for submission to stores.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bare workflow
&lt;/h3&gt;

&lt;p&gt;The Bare workflow lets you operate independently of the Expo SDK cycle, updating RN versions and versions of individual Expo packages however and whenever you want. However, if you &lt;em&gt;do&lt;/em&gt; stick roughly to Expo SDK versions, these steps will help you to upgrade to Expo SDK 40 from 39:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install the latest version of CocoaPods — &lt;strong&gt;1.10.0 or greater is required.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory (requires the latest version of expo-cli; you can update with &lt;code&gt;npm i -g expo-cli&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No additional upgrade steps are required to use react-native 0.63.4 from 0.63.3. (See the &lt;a href="https://react-native-community.github.io/upgrade-helper/?from=0.63.3&amp;amp;to=0.63.4" rel="noopener noreferrer"&gt;React Native upgrade helper&lt;/a&gt; for more detail.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rebuild your native projects with &lt;code&gt;yarn ios&lt;/code&gt; and &lt;code&gt;yarn android&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for other breaking changes!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Expo SDK 40 beta is now available</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Tue, 01 Dec 2020 00:53:33 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-40-beta-is-now-available-59gb</link>
      <guid>https://forem.com/expo/expo-sdk-40-beta-is-now-available-59gb</guid>
      <description>&lt;p&gt;&lt;em&gt;Learn about the changes, how to try it out, and how to give feedback.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.expo.io/coming-soon-beta-release-period-for-expo-sdk-965ab3bd177f?source=collection_home---6------0-----------------------" rel="noopener noreferrer"&gt;As promised&lt;/a&gt;, our first-ever beta SDK release is now available! The beta period will last approximately one week, and it is an opportunity for developers to ensure that the new release does not introduce any regressions for their particular system and app configurations.&lt;/p&gt;

&lt;p&gt;SDK 40 beta includes React Native 0.63, the same version as SDK 39. The full release notes won't be available until the final release, but you can browse the changes in the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;expo/expo CHANGELOG&lt;/a&gt; to learn more about the scope of the release and any breaking changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  A few changes to be aware of
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AppLoading&lt;/code&gt; has been removed from the &lt;code&gt;expo&lt;/code&gt; package. If you use it, you should &lt;code&gt;expo install expo-app-loading&lt;/code&gt; and import &lt;code&gt;AppLoading&lt;/code&gt; from its own package (possibly before first running your app with SDK 40 if you'd like to head off an error screen). Import it using &lt;code&gt;import AppLoading from 'expo-app-loading'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you use React Navigation and &lt;code&gt;react-native-screens&lt;/code&gt;, you will want to update to React Navigation v5 or silence the related warning from &lt;code&gt;react-native-screens&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you use background location features on Android, you will need to manually add &lt;code&gt;"ACCESS_BACKGROUND_LOCATION"&lt;/code&gt; to the list of permissions in  &lt;code&gt;android.permissions&lt;/code&gt; in your app configuration file (&lt;code&gt;app.json&lt;/code&gt; or &lt;code&gt;app.config.js&lt;/code&gt;) if you haven't done so already. Background location is now an opt-in permission on Android (&lt;a href="https://github.com/expo/expo/pull/10989" rel="noopener noreferrer"&gt;#10989&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@expo/vector-icons&lt;/code&gt; has been updated to track the latest icon sets from &lt;code&gt;react-native-vector-icons@7.1.0&lt;/code&gt; (the previously tracked version was &lt;code&gt;6.6.0&lt;/code&gt;). Updated icon sets: &lt;a href="https://github.com/templarian/MaterialDesign" rel="noopener noreferrer"&gt;MaterialCommunityIcons&lt;/a&gt; to 5.3.45, &lt;a href="https://github.com/google/material-design-icons" rel="noopener noreferrer"&gt;MaterialIcons&lt;/a&gt; to 4.0.0, &lt;a href="https://github.com/FortAwesome/Font-Awesome" rel="noopener noreferrer"&gt;FontAwesome 5&lt;/a&gt; to 5.13.0, and &lt;a href="https://github.com/feathericons/feather" rel="noopener noreferrer"&gt;Feather&lt;/a&gt; to 4.28.0.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to try out the beta release
&lt;/h2&gt;

&lt;p&gt;You will be able to opt in to using the SDK 40 beta by setting the &lt;code&gt;EXPO_BETA&lt;/code&gt; environment variable to &lt;code&gt;1&lt;/code&gt; (or some &lt;a href="https://www.npmjs.com/package/getenv/v/0.7.0#envboolishname-fallback" rel="noopener noreferrer"&gt;truthy value&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;On macOS and Linux, you can set this per command with &lt;code&gt;EXPO_BETA=1 expo &amp;lt;command&amp;gt;&lt;/code&gt;. On Windows, you can do the same with cross-env: &lt;code&gt;npx cross-env EXPO_BETA=1 expo &amp;lt;command&amp;gt;&lt;/code&gt;. Below we have listed in the commands in their more concise form.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install the latest version of expo-cli:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npm i -g expo-cli&lt;/code&gt; (SDK 40 requires &lt;code&gt;expo-cli@4.0.6&lt;/code&gt; or greater)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Initialize a new project with SDK 40 beta:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;EXPO_BETA=1 expo init&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Upgrade an existing project:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;EXPO_BETA=1 expo upgrade&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Install the latest Expo client app for iOS:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;To your simulator: &lt;code&gt;EXPO_BETA=1 expo client:install:ios&lt;/code&gt; outside of an Expo project or inside of an SDK 40 project&lt;/li&gt;
&lt;li&gt;To your physical device: use this &lt;a href="https://testflight.apple.com/join/GZJxxfUU" rel="noopener noreferrer"&gt;TestFlight open beta link&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Install the latest Expo client app for Android:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;EXPO_BETA=1 expo client:install:android&lt;/code&gt; outside of an Expo project or inside of an SDK 40 project.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Other commands will work as expected without the &lt;code&gt;EXPO_BETA&lt;/code&gt; environment variable, including &lt;code&gt;build:{android,ios}&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Use the beta release on Snack by adding a query parameter:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://snack.expo.io/?sdkVersion=40.0.0" rel="noopener noreferrer"&gt;http://snack.expo.io/?sdkVersion=40.0.0&lt;/a&gt;. Note that the in-browser simulators do not yet support SDK 40.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Read the documentation&lt;/strong&gt; by selecting it from the version selector in the API reference section (or &lt;a href="https://docs.expo.io/versions/v40.0.0" rel="noopener noreferrer"&gt;clicking here&lt;/a&gt;).&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jb3saiej02ihaitxqa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jb3saiej02ihaitxqa1.png" alt="Screenshot of Expo API documentation version picker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to report issues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create an issue on &lt;a href="https://github.com/expo/expo/issues" rel="noopener noreferrer"&gt;https://github.com/expo/expo/issues&lt;/a&gt; and be sure to fill out the template.&lt;/li&gt;
&lt;li&gt;Figuring out the underlying causes of issues is super helpful.&lt;/li&gt;
&lt;li&gt;Let us know that you are using the SDK 40 beta so we can prioritize the issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for helping us with testing the release, we look forward to shipping it soon! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Coming soon: Beta release period for Expo SDK</title>
      <dc:creator>Expo Team</dc:creator>
      <pubDate>Mon, 19 Oct 2020 18:59:16 +0000</pubDate>
      <link>https://forem.com/expo/coming-soon-beta-release-period-for-expo-sdk-4pdn</link>
      <guid>https://forem.com/expo/coming-soon-beta-release-period-for-expo-sdk-4pdn</guid>
      <description>&lt;p&gt;Beginning with SDK 40, we will be trying out an SDK beta release period for approximately one week before the final release. The beta release is an opportunity for developers to ensure that the new release does not introduce any regressions for their particular system and app configurations.&lt;/p&gt;

&lt;p&gt;This is no substitute for rigorous internal testing, but we can only cover so much of the surface area on our own. Expo tools run on an endless variety of configurations: Node and Node package managers, macOS/Windows/Linux, Android/iOS/web across different versions and vendors in emulators and on devices, standalone apps and Expo development clients, managed and bare workflows, third-party libraries and services, and so on.&lt;/p&gt;

&lt;p&gt;The process of releasing an SDK update after the initial release is time consuming, laborious, and potentially disruptive to developers already using the SDK for their projects. As a result, if a regression makes it into a final release we may in some cases have to delay shipping a non-critical fix until the following SDK release. If you encounter a regression during the beta release period, you can be confident that the Expo team will be available and focused on investigating, resolving, and shipping fixes during this time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How will I be able to opt-in to beta releases?
&lt;/h2&gt;

&lt;p&gt;At the time of publishing this article, there is no beta release active — we will announce beta releases on our blog (&lt;a href="https://blog.expo.io"&gt;Medium&lt;/a&gt; and &lt;a href="https://dev.to/expo"&gt;dev.to&lt;/a&gt;) and Twitter (&lt;a href="https://twitter.com/expo"&gt;@expo&lt;/a&gt;). Once a beta release is live, participating in the beta will involve the following changes from your typical workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  iOS and Android beta development clients
&lt;/h3&gt;

&lt;p&gt;You will be able to access an iOS client build for your device from a TestFlight Public Beta link and you will be able to install the updated client in your simulator by running expo client:install:ios --latest with the EXPO_BETA=1 environment variable set.&lt;/p&gt;

&lt;p&gt;The Expo client app for Android will be installable for both devices and emulators with expo client:install:android --latest and EXPO_BETA=1.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrading your project to the beta SDK
&lt;/h3&gt;

&lt;p&gt;Similarly, to upgrade your project you will run expo upgrade with the EXPO_BETA=1 environment variable set. Other expo-cli commands will work as expected without the environment variable or any other flags.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beta API documentation
&lt;/h3&gt;

&lt;p&gt;You will be able to access the API reference for the beta version from the version selector in the docs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mU_9zCbC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lfuo5wwuadr728lsgvu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mU_9zCbC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lfuo5wwuadr728lsgvu9.png" alt="Where you will be able to find the beta documentation when it is available."&gt;&lt;/a&gt;&lt;em&gt;Where you will be able to find the beta documentation when it is available.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We hope that you will help us to kick the tires on our new releases during the beta release period!&lt;/p&gt;

&lt;p&gt;You can read a more detailed description of our full release process in our open source &lt;a href="https://github.com/expo/expo/blob/master/guides/releasing/Release%20Workflow.md"&gt;Release Workflow document&lt;/a&gt; if you would like to learn more about what goes in to preparing and shipping each SDK release after all of the code has been written.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Expo SDK 39 is now available</title>
      <dc:creator>jess (she/her)</dc:creator>
      <pubDate>Mon, 21 Sep 2020 23:07:01 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-39-is-now-available-1lm8</link>
      <guid>https://forem.com/expo/expo-sdk-39-is-now-available-1lm8</guid>
      <description>&lt;p&gt;Today we're announcing our third release of 2020, &lt;strong&gt;Expo SDK 39&lt;/strong&gt;. SDK 39 brings tons of quality-of-life improvements across our entire suite of tools: the &lt;a href="https://expo.io/tools#client" rel="noopener noreferrer"&gt;Expo development clients&lt;/a&gt;, Expo &lt;a href="https://docs.expo.io/workflow/expo-cli/" rel="noopener noreferrer"&gt;CLI&lt;/a&gt;, &lt;a href="https://docs.expo.io/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;, and of course our &lt;a href="https://docs.expo.io/versions/latest/" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;. Read on for more details!&lt;/p&gt;

&lt;h3&gt;
  
  
  🐛 Known Regressions (Updated 03 Oct 2020)
&lt;/h3&gt;

&lt;p&gt;Significant known regressions that have been brought to our attention have been resolved. &lt;a href="https://github.com/expo/expo/issues/10464#issuecomment-703178030" rel="noopener noreferrer"&gt;Read more here&lt;/a&gt;, and thank you for bearing with us! &lt;/p&gt;

&lt;h1&gt;
  
  
  ⚡️ New SDK features
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Support for iOS 14, React Native 0.63 and React Native for Web 0.13!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SDK 39 is fully compatible with the newly released iOS 14&lt;/strong&gt;. Past apps built with SDK 38 also should work well on iOS 14 but we recommend staying up-to-date when you can.&lt;/li&gt;
&lt;li&gt;It also includes &lt;strong&gt;support for React Native 0.63&lt;/strong&gt;, letting you take advantage of features like the newly designed LogBox, Pressable component, and support for Native Colors. &lt;a href="https://reactnative.dev/blog/2020/07/06/version-0.63" rel="noopener noreferrer"&gt;Read more about React Native 0.63 here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Finally, &lt;strong&gt;SDK 39 jumps from v11 to v13 of web!&lt;/strong&gt; RNW 13 uses React 16.13.1, which will get rid of a bunch of warnings that developers were seeing on web related to lifecycle methods.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Interactive notifications in &lt;code&gt;expo-notifications&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;We’ve added support for notification categories (otherwise known as interactive notifications) to the new &lt;code&gt;expo-notifications&lt;/code&gt; library! Categories allow you to send notifications that your user can interact with without even opening your app, as well as take action based on &lt;em&gt;how&lt;/em&gt; they interacted with this notification. Here's an example of this in action on Android and iOS:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F960%2F1%2Aw1IfLkcN5kgHdCHwsFDt4g.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F960%2F1%2Aw1IfLkcN5kgHdCHwsFDt4g.gif" alt="Demonstration of interactive notification on an Android phone and iPhone, side by side"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this latest feature, &lt;code&gt;expo-notifications&lt;/code&gt; now has all the functionality (&lt;em&gt;and more!&lt;/em&gt;) of the legacy Notifications module, so we highly recommend transitioning. (That legacy module is still available in SDK 39, but will be removed in the near future.) To learn more, read through &lt;a href="https://docs.expo.io/versions/latest/sdk/notifications/" rel="noopener noreferrer"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  QR code scanning on web
&lt;/h3&gt;

&lt;p&gt;You can now scan QR codes from your web apps using &lt;code&gt;expo-camera&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1200%2F1%2AxlOA_DpLmZekHGQrqE71RA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1200%2F1%2AxlOA_DpLmZekHGQrqE71RA.gif" alt="Demonstration of someone using a phone to scan a QR code from the web app on a laptop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Google AuthSession
&lt;/h3&gt;

&lt;p&gt;Our universal authentication module, &lt;code&gt;expo-auth-session&lt;/code&gt;, now has built-in support for Google sign-in. Setup is much faster with far less code. &lt;a href="https://docs.expo.io/guides/authentication/#google" rel="noopener noreferrer"&gt;Learn more here.&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useAuthRequest&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;expo-auth-session/providers/google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promptAsync&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useAuthRequest&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;expoClientId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;iosClientId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;androidClientId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;webClientId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Screen capture listener in &lt;code&gt;expo-screen-capture&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In SDK 38, we added the &lt;code&gt;expo-screen-capture&lt;/code&gt; module, which allows you to prevent screenshots and screen recordings of your app. &lt;/p&gt;

&lt;p&gt;Sometimes you don't want to &lt;em&gt;prevent&lt;/em&gt; screenshots, but you &lt;em&gt;would&lt;/em&gt; like to perform some action when a user screenshots a particular screen (ahem, @Snapchat) — so in SDK 39 we’ve added &lt;code&gt;ScreenCapture.addScreenshotListener&lt;/code&gt; to allow developers to do just that.cal&lt;/p&gt;

&lt;p&gt;(Thanks to everyone who participates in our &lt;a href="https://expo.canny.io/feature-requests/p/detect-user-screenshots" rel="noopener noreferrer"&gt;feature requests&lt;/a&gt; to help us identify desired features like this one! 🙏 )&lt;/p&gt;

&lt;h3&gt;
  
  
  New Updates &amp;amp; SplashScreen modules in Managed workflow
&lt;/h3&gt;

&lt;p&gt;We've integrated the new &lt;code&gt;expo-updates&lt;/code&gt; and &lt;code&gt;expo-splash-screen&lt;/code&gt; unimodules into the Managed workflow. If you still import either the &lt;code&gt;Updates&lt;/code&gt; or the &lt;code&gt;SplashScreen&lt;/code&gt; module from the &lt;code&gt;expo&lt;/code&gt; package, you'll need to install the individual unimodules packages when you upgrade to SDK 39. &lt;/p&gt;

&lt;p&gt;One change this brings is that your &lt;code&gt;updates&lt;/code&gt; app.json configuration is &lt;strong&gt;now applied at build-time&lt;/strong&gt; rather than at runtime. We think this is more intuitive than trying to update configuration for over-the-air updates...over the air. Check out the &lt;a href="https://docs.expo.io/versions/latest/sdk/updates/" rel="noopener noreferrer"&gt;&lt;code&gt;Updates&lt;/code&gt; module documentation&lt;/a&gt; for a few other small API changes.&lt;/p&gt;

&lt;p&gt;Note that we do not yet support dark mode splash screens in the managed workflow (we're working on it!); for now, you'll need to stick with the bare workflow if you need this feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  New synchronous method in &lt;code&gt;expo-random&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;We've added a synchronous method, &lt;code&gt;Random.getRandomBytes()&lt;/code&gt;, to &lt;code&gt;expo-random&lt;/code&gt;. This enables polyfills for &lt;code&gt;crypto.getRandomValues()&lt;/code&gt;, such as &lt;a href="https://github.com/linusU/react-native-get-random-values/" rel="noopener noreferrer"&gt;react-native-get-random-values&lt;/a&gt;, to enable usage of packages like &lt;code&gt;uuid&lt;/code&gt; in managed apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experimental: &lt;code&gt;react-native-reanimated&lt;/code&gt; v2 alpha support
&lt;/h3&gt;

&lt;p&gt;The second major version of this library offers a much easier API, along with significantly improved performance characteristics. It requires some extra configuration that you must opt into in order to use; read more in our &lt;a href="https://docs.expo.io/versions/latest/sdk/reanimated/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alternatively, you can skip the manual configuration steps if you want to just create a new app with this configured already:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;crna&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;template&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;reanimated2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 We're still working on support for react-native-reanimated v2 alpha in Snack; this may be available in the coming weeks after this release.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  📱 Expo development client apps
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Synchronous app loads
&lt;/h3&gt;

&lt;p&gt;All projects now load synchronously in the iOS and Android Expo development clients! Previously, the loading behavior of published projects was based on their &lt;code&gt;updates&lt;/code&gt; configuration in app.json; this configuration now applies only to standalone apps. This means that when you're developing or testing your project or showing it to stakeholders, you'll always have the latest version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2ATEZDEWw2bGhupzmtR3IcJw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2ATEZDEWw2bGhupzmtR3IcJw.png" alt="Screenshot of Expo Go app showing a checking for updates status"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, we've added an indicator to the loading screen to give you more information about what's happening. (Don't worry, this won't show up in your standalone app!) And if you want to remove it in the Expo client, simply publish your project with &lt;code&gt;"developmentClient": { "silentLaunch": true }&lt;/code&gt; in your app.json.&lt;/p&gt;

&lt;h3&gt;
  
  
  New project details screen
&lt;/h3&gt;

&lt;p&gt;Long-press on projects to see more info about them. Pressing on a project that requires an unsupported SDK version will now open the details screen, rather than attempting to open the project and showing an error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F960%2F1%2ApqQtpgjaB7y8B4WVU0TiVw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F960%2F1%2ApqQtpgjaB7y8B4WVU0TiVw.gif" alt="Demonstration of interaction for project details screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Password autofill
&lt;/h3&gt;

&lt;p&gt;Sign in faster with autofill for passwords and usernames on iOS and Android.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AwiOI7Gl4XcpnHucXkx9RKA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AwiOI7Gl4XcpnHucXkx9RKA.png" alt="Screenshot of sign-in screen prompting password auto-fill on a phone"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SDK versions
&lt;/h3&gt;

&lt;p&gt;See what SDK version your projects are using and whether they need an update.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2A5dmCJ4wfqRtr_0dBVKDxqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2A5dmCJ4wfqRtr_0dBVKDxqw.png" alt="Screenshot of project list with SDK version info on each"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  📝 Docs improvements
&lt;/h1&gt;

&lt;p&gt;Our docs recently got a makeover! Most of the changes are subtle but we hope they will make your reading experience easier and more pleasant. They'll also feel more like part of the &lt;a href="http://expo.io" rel="noopener noreferrer"&gt;expo.io&lt;/a&gt; website. Be sure to &lt;a href="https://docs.expo.io" rel="noopener noreferrer"&gt;check them out&lt;/a&gt; as you're upgrading to SDK 39.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Adj45mrboHaZgF9PEzfxELA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Adj45mrboHaZgF9PEzfxELA.png" alt="Screenshot of an API page with right sidebar table-of-contents"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve also added a right sidebar to &lt;a href="https://docs.expo.io/guides/" rel="noopener noreferrer"&gt;Guides&lt;/a&gt; and &lt;a href="https://docs.expo.io/versions/latest/" rel="noopener noreferrer"&gt;API Reference&lt;/a&gt; to show the table-of-contents for those pages. If, like us, you find yourself jamming on ⌘/Ctrl+F to dig through reference docs, this’ll help you get a quick sense of the page as a whole, and jump straight to what you need. &lt;/p&gt;

&lt;h1&gt;
  
  
  🍩 Snack improvements
&lt;/h1&gt;

&lt;p&gt;Snack now checks all TypeScript and JavaScript files for lint errors.  You can easily see files that need your attention in the file explorer, or even jump directly to the error from the &lt;em&gt;Problems&lt;/em&gt; tab:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmlhqjr45dbk2t4dmmnqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmlhqjr45dbk2t4dmmnqv.png" alt="Demonstration of jumping to errors in a Snack project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🐛 Bug bash
&lt;/h1&gt;

&lt;p&gt;We celebrated SDK 38 by organizing an internal "bug bash" to take an extra-deep dive through the GitHub issues in both the Expo and Expo CLI repositories. Throughout the month of July, we addressed over 420 issues noticed and opened by all of you, and shaved more than 20% off the day-to-day issue counts. We want to thank everyone who opens high-quality issues to help make Expo better for us all. &lt;/p&gt;

&lt;p&gt;Some of the most notable changes surfacing from our bug bash come from &lt;code&gt;expo-av&lt;/code&gt;. Background audio on iOS is much more reliable, we improved stability and memory usage on both platforms, and addressed plenty of other bugs and edge cases. But there were many fixes across our entire SDK: almost every package was touched at least once! You can see the full list of changes in the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Android permissions
&lt;/h3&gt;

&lt;p&gt;We also did a full audit of how we handle native Android permissions as part of our bug bash. With the help of your feedback, we updated our &lt;a href="https://docs.expo.io/versions/latest/sdk/permissions/" rel="noopener noreferrer"&gt;permissions documentation&lt;/a&gt; to better communicate each module's required and optional permissions. We also added more context around the behavior of permissions on different platforms. If you still have questions, or are unsure about the permissions in your standalone app, don't hesitate to ask in our &lt;a href="https://forums.expo.io/" rel="noopener noreferrer"&gt;forums&lt;/a&gt;!&lt;/p&gt;

&lt;h1&gt;
  
  
  🌐 Expo CLI
&lt;/h1&gt;

&lt;p&gt;This version brings TONS of features and quality-of-life improvements across our entire CLI. Here are a few of the fun ones!&lt;/p&gt;

&lt;h3&gt;
  
  
  Programmatic access
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.expo.io/accounts/personal/#personal-access-tokens" rel="noopener noreferrer"&gt;Personal Access Tokens&lt;/a&gt; let you run any &lt;code&gt;expo&lt;/code&gt; action (other than signing in and out) in CI or scripts without sharing your personal credentials. You can generate distinct tokens for each service, monitor usage, and disable individual tokens in the unfortunate event that your credentials are compromised.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selecting devices
&lt;/h3&gt;

&lt;p&gt;You can now pick which device or simulator to run your app on.&lt;/p&gt;

&lt;p&gt;After running &lt;code&gt;expo start&lt;/code&gt;, press:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;shift+i&lt;/strong&gt; to select an iOS simulator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;shift+a&lt;/strong&gt; to select a connected Android device or emulator. You can also run your project on multiple Android devices at the same time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1fi43cq5pd0j1pqwlkqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1fi43cq5pd0j1pqwlkqm.png" alt="Demonstration of selecting simulator or emulator devices through Expo CLI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Apple Keychain support
&lt;/h3&gt;

&lt;p&gt;Now you can skip typing your Apple ID email every time you want to build or upload iOS apps! The Apple ID is suggested from the last email you entered—just press enter to use it again. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AKmjbwrZZEq4RdZFq9kTInw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AKmjbwrZZEq4RdZFq9kTInw.png" alt="Screenshot of CLI with Apple ID suggestion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MacOS users&lt;/strong&gt; can also use the native Keychain to autofill the password automatically when building, and uploading iOS apps. This can be disabled with &lt;code&gt;EXPO_NO_KEYCHAIN=true&lt;/code&gt;. &lt;a href="https://docs.expo.io/distribution/security/#keychain" rel="noopener noreferrer"&gt;Learn more here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AnMSoGHW7vag7lCNqFgQtsA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AnMSoGHW7vag7lCNqFgQtsA.png" alt="Screenshot of password autofill prompt in Expo CLI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Publish stats
&lt;/h3&gt;

&lt;p&gt;When publishing to Expo's hosting service (via &lt;code&gt;expo publish&lt;/code&gt;), you can now see the JavaScript bundle sizes for each platform. Smaller bundles means &lt;a href="https://expo.fyi/javascript-bundle-sizes" rel="noopener noreferrer"&gt;faster startup time&lt;/a&gt;. For a full size breakdown, use our &lt;a href="https://github.com/IjzerenHein/react-native-bundle-visualizer" rel="noopener noreferrer"&gt;bundle visualizer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Ap2ZCahun1sufNlNGcyrMXw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Ap2ZCahun1sufNlNGcyrMXw.png" alt="Screenshot of bundle sizes displaying during publish"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  New help menu
&lt;/h3&gt;

&lt;p&gt;Running &lt;code&gt;expo --help&lt;/code&gt; shows a newly redesigned menu:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AVANWk9b3g3zUUEtMa6p-pQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2AVANWk9b3g3zUUEtMa6p-pQ.png" alt="Screenshot of new help menu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Export public-url prompt
&lt;/h3&gt;

&lt;p&gt;Running &lt;code&gt;expo export&lt;/code&gt; will now prompt you for a &lt;code&gt;public-url&lt;/code&gt; if you didn't already provide one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Acr3lHhbTk1_YtG6RCxHSGw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1%2Acr3lHhbTk1_YtG6RCxHSGw.png" alt="Screenshot of Expo CLI prompting for a public URL"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Eject improvements
&lt;/h3&gt;

&lt;p&gt;We've been gradually rolling out improvements to &lt;code&gt;eject&lt;/code&gt;, and with SDK 39 nearly all of your config in app.json / app.config.js will be applied to the generated native projects when you run eject. Some of the recent improvements include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iOS and Android app icons and splash screens support.&lt;/li&gt;
&lt;li&gt;iOS locales and iPad support.&lt;/li&gt;
&lt;li&gt;Android backups.&lt;/li&gt;
&lt;li&gt;iOS and Android now have their bundle ID or package name added to the list of URI schemes. This mirrors how &lt;code&gt;expo build&lt;/code&gt; works, and makes authentication APIs easier to setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only property that is not yet applied automatically is iCloud entitlements, and you can enable this in Xcode.&lt;/p&gt;

&lt;h1&gt;
  
  
  ⚠️ Service workers on web are now opt-in
&lt;/h1&gt;

&lt;p&gt;Starting in SDK 39, offline support is no longer enabled by default in Expo's Webpack config. You can opt-in to offline support and service workers by customizing the Webpack config; &lt;a href="https://github.com/expo/fyi/blob/master/enabling-web-service-workers.md" rel="noopener noreferrer"&gt;more info here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  🧹 Dropping SDK 35, will drop SDK 36 next release
&lt;/h1&gt;

&lt;p&gt;We routinely drop SDK versions that have low usage in order to reduce the number of versions we need to support. This release sees the end of life for SDK 35. As usual, your standalone apps built with SDK 35 will continue to work; however, SDK 35 projects will no longer work within the latest version of the Expo client. If you want to re-run &lt;code&gt;expo build&lt;/code&gt;, then you’ll need to upgrade from SDK 35, preferably to SDK 39 so you won’t need to update again for a while (and also because each Expo version is better than the last!).&lt;/p&gt;

&lt;p&gt;Our next release is planned for December and, at that time, we’ll be dropping support for SDK 36. If your project is running on SDK 36, consider upgrading to a newer version in the coming months.&lt;/p&gt;

&lt;h1&gt;
  
  
  Upgrading your app
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Managed workflow
&lt;/h3&gt;

&lt;p&gt;Here’s how to upgrade your app to Expo SDK 39.0.0 from 38.0.0:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory (requires the latest version of &lt;code&gt;expo-cli&lt;/code&gt;, you can update with &lt;code&gt;npm i -g expo-cli&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;If you import the &lt;code&gt;SplashScreen&lt;/code&gt; or &lt;code&gt;Updates&lt;/code&gt; modules from the &lt;code&gt;expo&lt;/code&gt; package, install and import from the &lt;code&gt;expo-splash-screen&lt;/code&gt; / &lt;code&gt;expo-updates&lt;/code&gt; packages instead. (See the &lt;a href="https://docs.expo.io/versions/latest/sdk/updates/" rel="noopener noreferrer"&gt;Updates documentation&lt;/a&gt; for additional small API changes.)&lt;/li&gt;
&lt;li&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for other breaking changes!&lt;/li&gt;
&lt;li&gt;Note that there are two known issues with the iOS and Android development clients for SDK 39; one related to a &lt;a href="https://github.com/expo/expo/issues/10263" rel="noopener noreferrer"&gt;SplashScreen warning&lt;/a&gt; and one related to &lt;a href="https://github.com/expo/expo/issues/10264" rel="noopener noreferrer"&gt;reloading projects by pressing 'r' twice&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Update the Expo app on your phones from the App Store / Google Play. &lt;code&gt;expo-cli&lt;/code&gt; will automatically update your apps in simulators if you delete the existing apps, or you can run &lt;code&gt;expo client:install:ios&lt;/code&gt; and &lt;code&gt;expo client:install:android&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you built a standalone app previously, &lt;a href="https://docs.expo.io/versions/latest/workflow/publishing/#limitations" rel="noopener noreferrer"&gt;remember&lt;/a&gt; that you'll need to create a new build in order to update the SDK version. Run &lt;code&gt;expo build:ios&lt;/code&gt; and/or &lt;code&gt;expo build:android&lt;/code&gt; when you are ready to do a new build for submission to stores.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bare workflow
&lt;/h3&gt;

&lt;p&gt;The Bare workflow lets you operate independently of the Expo SDK cycle, updating RN versions and versions of individual Expo packages however and whenever you want. However, if you’re excited to go ahead and update everything right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory (requires the latest version of &lt;code&gt;expo-cli&lt;/code&gt;; you can update with &lt;code&gt;npm i -g expo-cli&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Before running your app again, you’ll also need to manually apply changes to your native projects in order to upgrade to RN 0.63.2. (See the &lt;a href="https://react-native-community.github.io/upgrade-helper/?from=0.62.2&amp;amp;to=0.63.2" rel="noopener noreferrer"&gt;React Native upgrade helper&lt;/a&gt; for more detail.) Once that’s done, run &lt;code&gt;npx pod-install&lt;/code&gt;, then rebuild your native projects with &lt;code&gt;yarn ios&lt;/code&gt; and &lt;code&gt;yarn android&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt; for other breaking changes!&lt;/li&gt;
&lt;li&gt;Warning: if you use any custom Babel configuration (e.g. &lt;code&gt;babel-plugin-module-resolver&lt;/code&gt;), you may encounter &lt;a href="https://github.com/facebook/react-native/pull/29477" rel="noopener noreferrer"&gt;this bug with React Native 0.62.2&lt;/a&gt;. The React Native team is aware of the issue and working on a 0.63.3 release that includes the fix. The workaround we recommend for now is to pull the diff from this pull request into your project using &lt;a href="https://www.npmjs.com/package/patch-package" rel="noopener noreferrer"&gt;patch-package&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🗣  If you have general questions or comments, please share them in our &lt;a href="http://forums.expo.io" rel="noopener noreferrer"&gt;community forums&lt;/a&gt;! We also welcome &lt;a href="http://github.com/expo/expo/issues" rel="noopener noreferrer"&gt;issue reports&lt;/a&gt; (and, of course, &lt;a href="http://github.com/expo/expo/pulls" rel="noopener noreferrer"&gt;PRs&lt;/a&gt;) on Github.&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>android</category>
      <category>ios</category>
    </item>
    <item>
      <title>Expo SDK 38 is now available</title>
      <dc:creator>Eric Samelson</dc:creator>
      <pubDate>Thu, 25 Jun 2020 17:54:15 +0000</pubDate>
      <link>https://forem.com/expo/expo-sdk-38-is-now-available-5aa0</link>
      <guid>https://forem.com/expo/expo-sdk-38-is-now-available-5aa0</guid>
      <description>&lt;p&gt;Today, we're announcing our summer 2020 release, ☀️😎 &lt;strong&gt;Expo SDK 38 🍉☀️&lt;/strong&gt; ! SDK 38 continues both our focus on reliability and our investment in developer flexibility, as we work towards supporting fully customizable apps across Expo's entire suite of tools. Additionally, SDK 38 includes support for React Native 0.62, new and revamped templates, and a couple of useful new modules.&lt;/p&gt;

&lt;p&gt;SDK 38 is the second of four &lt;a href="https://dev.to/expo/expo-sdk-37-is-now-available-69g#time-based-releases"&gt;quarterly SDKs&lt;/a&gt; we plan to release this year. Read on for more details about what's included!&lt;/p&gt;

&lt;h1&gt;
  
  
  ⏰ New Notifications API in Managed workflow
&lt;/h1&gt;

&lt;p&gt;Earlier this year, we embarked on a complete rewrite of the Expo Notifications module. We're excited that the revamped API is now more predictable, lets you control your notifications more easily, and is 100% compatible with both the Bare and Managed workflows! Check out the documentation for the new &lt;code&gt;expo-notifications&lt;/code&gt; API &lt;a href="https://github.com/expo/expo/tree/master/packages/expo-notifications#api"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One change we especially love is how notifications are now handled consistently across platforms. &lt;strong&gt;Notification behavior now follows a simple rule of thumb:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the notification is triggered while the app is in background,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it's presented immediately&lt;/li&gt;
&lt;li&gt;the application is &lt;em&gt;not&lt;/em&gt; informed of this&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the notification is triggered while the app is in foreground,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the application not only receives immediate information about this, but…&lt;/li&gt;
&lt;li&gt;it can also decide at runtime whether to display a heads-up alert or play a sound!
(For more information see the &lt;a href="https://github.com/expo/expo/tree/master/packages/expo-notifications#setnotificationhandlerhandler-notificationhandler--null-void"&gt;Notification Handler documentation&lt;/a&gt;.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, in preparing this module within our 2020 commitment to time-based releases, we weren't able to include support for notification categories. We're working to land it ASAP in &lt;code&gt;expo-notifications&lt;/code&gt;, and then it'll be available in the Bare workflow immediately, so sit tight!&lt;/p&gt;

&lt;h3&gt;
  
  
  Migrating from the legacy Notifications API
&lt;/h3&gt;

&lt;p&gt;The legacy Notifications API (&lt;code&gt;import { Notifications } from 'expo';&lt;/code&gt;) remains in SDK 38 for compatibility purposes, but it is deprecated and we expect to remove it in an upcoming release.&lt;/p&gt;

&lt;p&gt;On Android, notifications can only be forwarded to one of the two APIs at a time, so you'll need to explicitly opt into the new API for now by setting &lt;code&gt;android.useNextNotificationsApi&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; in your app configuration. If the value is undefined or &lt;code&gt;false&lt;/code&gt;, push notifications will only be forwarded to the legacy notifications API on Android. On iOS, you can use the new API with no extra configuration.&lt;/p&gt;

&lt;h1&gt;
  
  
  🦋 Build-time Updates in Bare workflow
&lt;/h1&gt;

&lt;p&gt;With our last release, we introduced &lt;code&gt;expo-updates&lt;/code&gt;, a brand-new library that lets you use over-the-air updates in any React Native app. Check out &lt;a href="https://docs.expo.io/versions/latest/sdk/updates/"&gt;the documentation here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We recently released an updated version of this library, &lt;code&gt;expo-updates@0.2.x&lt;/code&gt;, which simplifies the workflow around updates in Bare workflow apps. Specifically, it introduces build-time updates, which means&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;release builds will create and embed a &lt;strong&gt;new update&lt;/strong&gt; from the JavaScript source on disk at build-time, rather than embedding your latest published update; and&lt;/li&gt;
&lt;li&gt;you no longer need to run &lt;code&gt;expo publish&lt;/code&gt; before creating a release build for the first time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more detail, including how to upgrade from &lt;code&gt;expo-updates@0.1.x&lt;/code&gt;, read &lt;a href="https://blog.expo.io/over-the-air-updates-from-expo-are-now-even-easier-to-use-376e2213fabf"&gt;this walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  ⚡️ Faster Tooling, Better Performance
&lt;/h1&gt;

&lt;p&gt;We're especially excited about some changes that have been in the works to make your development and bootstrapping experience even snappier!&lt;/p&gt;

&lt;p&gt;First, we're bringing back the fastest way to create a React Native app. The new and improved &lt;code&gt;create-react-native-app&lt;/code&gt; now has support for web along with iOS and Android, includes OTA updates out of the box, has 25+ templates you can choose from, and zero dependencies! Read more &lt;a href="https://github.com/expo/create-react-native-app/blob/master/README.md"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additionally, if you choose to use the more powerful features of &lt;code&gt;expo-cli&lt;/code&gt; instead, you'll notice it's a lot faster to install; we've decreased the overall disk space usage by as much as 2.6x. And if you bootstrap a new SDK 38 project, the footprint of its &lt;code&gt;node_modules&lt;/code&gt; will be 13% smaller than a comparable SDK 37 project.&lt;/p&gt;

&lt;p&gt;The performance of these packages has been improved, too; we're shipping transpiled JS rather than JSX, and have dropped prop-types in favor of TypeScript, both of which bring faster compilation times.&lt;/p&gt;

&lt;h1&gt;
  
  
  💡 Revamped tabs template: simpler, dark mode support, TypeScript
&lt;/h1&gt;

&lt;p&gt;We rebuilt the tabs template in TypeScript,  removing all the fluff and focusing on the essentials needed to set developers out on a good path building their apps. We also built in dark mode support, because we've found that it's a lot easier if you think about it from the start rather than retrofitting it later on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I6-yRg1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p0x0hpbwqapb8vvrh576.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I6-yRg1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p0x0hpbwqapb8vvrh576.png" alt="The new and improved tabs template on iOS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iOS is pictured above, but as always the template works just as well on the other platforms Expo supports: Android and Web.&lt;/p&gt;

&lt;h1&gt;
  
  
  ✨ New Features
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Fonts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screen Capture&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status Bar&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linking&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slider&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Picker&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reimagined Authentication
&lt;/h3&gt;

&lt;p&gt;We’ve completely rewritten &lt;code&gt;expo-auth-session&lt;/code&gt; with primitives like Expo WebBrowser and Crypto. This &lt;strong&gt;reduces app size&lt;/strong&gt; and decreases the need for native rebuilds since it can be used with many different providers. We can also update constantly between SDK releases with bug fixes and feature additions! You can check out our &lt;a href="https://docs.expo.io/guides/authentication/"&gt;guides for 15+ different providers&lt;/a&gt; which we update frequently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Fonts
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOl5p3Dr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/expo/google-fonts/master/gifs/title.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOl5p3Dr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/expo/google-fonts/master/gifs/title.gif" alt="https://raw.githubusercontent.com/expo/google-fonts/master/gifs/title.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;@expo-google-fonts&lt;/code&gt; packages for Expo allow you to easily use any of 991 fonts (and their variants) from &lt;a href="https://fonts.google.com/"&gt;fonts.google.com&lt;/a&gt; in your Expo app.&lt;/p&gt;

&lt;p&gt;These packages and all these fonts work across web, iOS and Android, and are free to use and open source. Read more detail &lt;a href="https://dev.to/expo/expo-google-fonts-is-released-4g58"&gt;here&lt;/a&gt; and in &lt;a href="https://docs.expo.io/guides/using-custom-fonts/#using-a-google-font"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Screen Capture module
&lt;/h3&gt;

&lt;p&gt;To give developers more power over the security of their apps, we added the &lt;code&gt;expo-screen-capture&lt;/code&gt; module, which will allow you to hide your app's content when a user is screen recording or taking screen shots; this is particularly useful if a screen displays sensitive information. For references, examples, and limitations, check out &lt;a href="https://docs.expo.io/versions/latest/sdk/screen-capture/"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Status Bar module
&lt;/h3&gt;

&lt;p&gt;We've also created an &lt;code&gt;expo-status-bar&lt;/code&gt; module with a few important improvements over React Native's built-in StatusBar API. This new module sets the status bar to &lt;code&gt;translucent&lt;/code&gt; by default on Android, and it also supports light and dark mode through the &lt;code&gt;style="auto"&lt;/code&gt; and &lt;code&gt;style="inverted"&lt;/code&gt; props. We have added &lt;code&gt;expo-status-bar&lt;/code&gt; to every project template in &lt;code&gt;expo-cli&lt;/code&gt;. Read &lt;a href="https://docs.expo.io/versions/latest/sdk/status-bar/"&gt;the documentation&lt;/a&gt; and also check out the updated &lt;a href="https://docs.expo.io/guides/configuring-statusbar/"&gt;"Configuring the Status Bar" guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved Linking
&lt;/h3&gt;

&lt;p&gt;The new &lt;code&gt;expo-linking&lt;/code&gt; package makes it easier than ever to create deep links that work in both managed and bare workflow projects, and integrates smoothly with React Navigation v5 and our Auth Session APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Third-Party Modules
&lt;/h3&gt;

&lt;p&gt;Modules are extracted from React Native all the time to improve performance. To keep the runtime up to date, we've improved performance and added web support to some of the extracted packages to make them compatible with the Expo ecosystem.&lt;/p&gt;

&lt;p&gt;The following packages are now available in the Expo client:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@react-native-community/slider&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@react-native-community/picker&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@react-native-community/async-storage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@react-native-community/segmented-control&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally,  you can now use &lt;code&gt;@react-native-community/async-storage&lt;/code&gt; in Managed workflow apps. This change is backwards-compatible, so you don't need to update to SDK 38 to start using it. This doesn't add any new features or improvements, but it does help you integrate more easily with other libraries that assume you use &lt;code&gt;@react-native-community/async-storage&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These packages are not fully maintained by Expo so test coverage, TypeScript support, and web compatibility may vary. We'll continue to use only the most stable versions of packages.&lt;/p&gt;

&lt;h1&gt;
  
  
  🛠 API improvements and additions
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Background downloads and uploads with &lt;code&gt;expo-file-system&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Downloading external resources can be a difficult task with a lot of corner cases, such as handling when the application is moved to the background. To help with this, &lt;code&gt;expo-file-system&lt;/code&gt; now supports background downloads, which won't be canceled when the user switches between different applications or when your device loses connection to the Internet. We've also added a new method that natively handles file uploads. For more information, check out &lt;a href="https://docs.expo.io/versions/latest/sdk/filesystem/"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New &lt;code&gt;android.softwareKeyboardLayoutMode&lt;/code&gt; app.json key
&lt;/h3&gt;

&lt;p&gt;One tricky part of building forms in mobile apps is that developers need to ensure that the on-screen "software keyboard" doesn't obscure the focused form element. Android lets you pick how you want this to be handled: you can resize the entire window so nothing will be drawn under the keyboard, or you can pan the window so the content is not underneath it. The native property that lets you control this is &lt;code&gt;android:windowSoftInputMode&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;In the past, all Expo apps have been configured to use the &lt;code&gt;resize&lt;/code&gt; mode, but some developers have found this to be problematic for their apps because UI elements such as tab bars will be pushed up above the keyboard when it is enabled. If you would prefer to use the &lt;code&gt;pan&lt;/code&gt; mode, you can now set the layout mode directly with &lt;code&gt;android.softwareKeyboardLayoutMode&lt;/code&gt; in your app configuration. Find the key in &lt;a href="https://docs.expo.io/workflow/configuration/#android"&gt;the "android" section of "Configuration with app.json"&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New &lt;code&gt;android.allowBackup&lt;/code&gt; app.json key
&lt;/h3&gt;

&lt;p&gt;Another security improvement we incorporated into this release is allowing developers to disable &lt;a href="https://developer.android.com/guide/topics/data/autobackup"&gt;Android's Auto Backup feature&lt;/a&gt;. For Expo apps built with previous SDKs, your users' app data would be automatically backed up to their Google Drive. This will remain the default in SDK 38 (as it is in Android native apps), but if your app deals with sensitive information then you may want to set this field to &lt;code&gt;false&lt;/code&gt; in your app configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  React Native 0.62
&lt;/h3&gt;

&lt;p&gt;SDK 38 includes many of the new features and improvements that are part of React Native 0.62, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dark mode support with the &lt;code&gt;Appearance&lt;/code&gt; module and the &lt;code&gt;useColorScheme&lt;/code&gt; hook (note that these APIs do not support web, so you may want to use &lt;code&gt;react-native-appearance&lt;/code&gt; if that's important for your app);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility improvements&lt;/strong&gt;, including new props like &lt;code&gt;accessibilityValue&lt;/code&gt; and events like &lt;code&gt;onSlidingComplete&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactjs.org/blog/2019/08/15/new-react-devtools.html"&gt;Significant improvements to React DevTools&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;an optional &lt;strong&gt;new LogBox&lt;/strong&gt; error and warning experience;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and lots more! Check out the React Native &lt;a href="https://github.com/react-native-community/releases/blob/master/CHANGELOG.md"&gt;changelog&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p&gt;Flipper is currently unsupported in the Managed workflow. If you want to use Flipper, you'll need to use the Bare workflow for now (but you can still use all your &lt;a href="https://docs.expo.io/introduction/managed-vs-bare/"&gt;favorite Expo modules in the Bare workflow&lt;/a&gt;!).&lt;/p&gt;

&lt;h3&gt;
  
  
  Other fixes and improvements
&lt;/h3&gt;

&lt;p&gt;There are lots of other changes included in this release! Check out the full list on our &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  🧹 Dropping SDK 34; will drop SDK 35 next release
&lt;/h1&gt;

&lt;p&gt;We routinely drop SDK versions that have low usage in order to reduce the number of versions that we need to support. This release sees the end of life for SDK 34. As usual, your standalone apps built with SDK 34 will continue to work; however, SDK 34 projects will no longer work within the latest version of the Expo client. If you want to re-run &lt;code&gt;expo build&lt;/code&gt;, then you’ll need to upgrade from SDK 34, preferably to SDK 38 so you won’t need to update again for a while (and also because each Expo version is better than the last!).&lt;/p&gt;

&lt;p&gt;Our next release is planned for September and we will be dropping support for SDK 35 at that time. If your project is running on SDK 35, consider upgrading to a newer version in the coming months.&lt;/p&gt;

&lt;h3&gt;
  
  
  AR removed
&lt;/h3&gt;

&lt;p&gt;The AR module, which exposes the iOS ARKit library, has been experimental its entire lifetime and is not widely used. Rather than continue to maintain this library, we’ve decided to focus our limited resources elsewhere. Accordingly, the AR module has been removed from &lt;strong&gt;all SDK versions&lt;/strong&gt; in the iOS Expo client version 2.16.0. Read more &lt;a href="https://expo.fyi/deprecating-ar"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  🌟 ExpoKit → Bare workflow
&lt;/h1&gt;

&lt;p&gt;In December, we shared our plans to spend 2020 making major investments to increasing your flexibility in customizing your apps with native code whenever and however you want. And in March, we announced that &lt;strong&gt;the Bare workflow now fully replaces ExpoKit&lt;/strong&gt;. We’ve reached or exceeded feature parity between the Bare and ExpoKit workflows, and so we deprecated ExpoKit with SDK37, and we no longer support ejecting to ExpoKit in new projects.&lt;/p&gt;

&lt;p&gt;As planned, SDK 38 will be the last release of ExpoKit. After SDK 38, your ExpoKit apps in the App Store and Play Store will continue to run indefinitely, but you'll need to migrate to the Bare or Managed workflows in order to get bugfixes and new features in Expo modules.&lt;/p&gt;

&lt;p&gt;Read more details, including a guide for migrating ExpoKit projects to the Bare workflow, in &lt;a href="https://dev.to/expo/time-to-start-using-expo-s-bare-workflow-expokit-is-now-deprecated-51ih"&gt;this blog post&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  ⬆️ Upgrading your app
&lt;/h1&gt;

&lt;p&gt;Here’s how to upgrade your app to Expo SDK 38.0.0 from 37.0.0:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;expo upgrade&lt;/code&gt; in your project directory (requires the latest version of &lt;code&gt;expo-cli&lt;/code&gt;, you can update with &lt;code&gt;npm i -g expo-cli&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Make sure to check the &lt;a href="https://github.com/expo/expo/blob/master/CHANGELOG.md"&gt;changelog&lt;/a&gt; for other breaking changes!&lt;/li&gt;
&lt;li&gt;Update the Expo app on your phones from the App Store / Google Play. &lt;code&gt;expo-cli&lt;/code&gt; will automatically update your apps in simulators if you delete the existing apps, or you can run &lt;code&gt;expo client:install:ios&lt;/code&gt; and &lt;code&gt;expo client:install:android&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you built a standalone app previously, &lt;a href="https://docs.expo.io/versions/latest/workflow/publishing/#limitations"&gt;remember&lt;/a&gt; that you'll need to create a new build in order to update the SDK version. Run &lt;code&gt;expo build:ios&lt;/code&gt; and/or &lt;code&gt;expo build:android&lt;/code&gt; when you are ready to do a new build for submission to stores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: React Native 0.62 &lt;a href="https://github.com/facebook/react-native/issues/28558"&gt;introduced a new warning&lt;/a&gt; when using the &lt;code&gt;Animated&lt;/code&gt; API for animations. You’ll now need to specify &lt;code&gt;useNativeDriver:true&lt;/code&gt; or &lt;code&gt;useNativeDriver:false&lt;/code&gt; for all your Animated animations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating ExpoKit to SDK 38
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Follow the &lt;a href="https://docs.expo.io/versions/latest/expokit/expokit"&gt;instructions&lt;/a&gt; given in the docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Please remember that SDK 38 will be the final update to ExpoKit.&lt;/strong&gt; To read more, including our recommendations for migrating, see &lt;a href="https://blog.expo.io/time-to-start-using-expos-bare-workflow-expokit-now-deprecated-d6052890c18b"&gt;this blog post&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🗣  If you have general questions or comments, please share them in our &lt;a href="http://forums.expo.io"&gt;community forums&lt;/a&gt;! We also welcome &lt;a href="http://github.com/expo/expo/issues"&gt;issue reports&lt;/a&gt; (and, of course, &lt;a href="http://github.com/expo/expo/pulls"&gt;PRs&lt;/a&gt;) on Github.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>expo</category>
      <category>news</category>
    </item>
  </channel>
</rss>
