DEV Community

Expo SDK 38 is now available

Eric Samelson on June 25, 2020

Today, we're announcing our summer 2020 release, ☀️😎 Expo SDK 38 🍉☀️ ! SDK 38 continues both our focus on reliability and our investment in develop...
Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld • Edited

Missing in this post (for me):

  • It's now built against React 16.11 (React Native's update post also does a bad job at this)
  • Node 13 is no longer supported (expo-cli), upgrade to 14 (not that related, but important nonetheless)
  • It would be super helpful to have a list of updated native modules, as many of us were waiting for a specific fix to land. Here is the list as I use them (so not all of them) and I hope this helps someone:
module SDK 37 SDK 38
@react-native-community/masked-view 0.1.6 0.1.10
expo ~37.0.12 ^38.0.3
expo-linear-gradient ~8.1.0 ~8.2.1
expo-secure-store ~8.1.0 ~9.0.1
expo-splash-screen ^0.2.3 ~0.3.1
expo-web-browser ~8.2.1 ~8.3.1
react 16.9.0 16.11.0
react-dom 16.9.0 16.11.0
react-native-maps 0.26.1 0.27.1
react-native-reanimated ~1.7.1 ~1.9.0
react-native-safe-area-context 0.7.3 3.0.2
react-native-screens ~2.2.0 ~2.8.0
react-native-svg 11.0.1 12.1.0
react-native-webview 8.1.1 9.4.0

Additionally update your types:

module SDK 37 SDK 38
@types/react-native ~0.61.23 ~0.62.13
Collapse
 
brentvatne profile image
Brent Vatne

we started leaving this list out because the blog post becomes quite long, so we link to the changelog instead. also, we update everything automatically when you run expo upgrade, except for the types.. we should add that!

other points are useful too! thank you!

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld • Edited

Yep, expo upgrade finally worked smoothly (I had issues with 36 -> 37, 35 -> 36), so very happy with that. If this list was in the Changelog, that would work for me as well.

EDIT: expo upgrade upgraded react-native-screens to ~2.8.0, but it gave me a warning that it expected version range: ~2.9.0 - actual version installed: ~2.8.0. (expo install worked fine, just the upgrade).

The use case that's not covered if it's not listed anywhere is that quite a few times I've not added a module because there were issues with it (resolved upstream, waiting for next SDK) and I could then instantly see "ah it got bundled".

^^^

I'm just lazy ;)

Collapse
 
jineshshah36 profile image
Jinesh Shah

Why do you say node 13 is not suppprted? I looked in the repo and the engines field is set to > 6.x

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

Check out these lines in the expo-cli repo:

GitHub logo expo / expo-cli

Tools for creating, running, and deploying Universal Expo and React Native apps

Expo CLI

Tools for creating, running, and deploying Universal Expo and React Native apps

License: MIT Downloads
Circle CI

📚 Read the Documentation | Contributing to Expo CLI

Twitter: expo Medium: exposition


📚 Documentation

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

🗺 Project Layout

🏅 Badges

Let everyone know your app is universal with Expo!

runs with expo

runs with expo

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

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

👏 Contributing

If you like the Expo CLI and want to help make it better then check out our contributing guide! Also check out the Expo repo to work on the Expo docs, modules, and components in the…

Thread Thread
 
jineshshah36 profile image
Jinesh Shah

Gotcha thanks, and good to know

Collapse
 
codingpen profile image
@coding_pen

As for now it is not, the most stable node is v12.18.1

Thread Thread
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

No, it won't be supported, because uneven node versions never become LTS. The "less stable" (current) version of 14.x works fine with expo :)

Collapse
 
brodanoel profile image
Broda Noel • Edited

Awesome job!!!
Glad to read that the in-app-payment is not done yet, because I would cry of happiness, and 2020 is already too much intense to bear more sentiments.
Thanks you a lot!

Collapse
 
ajinkabeer profile image
Ajin Kabeer • Edited

Just bumped to SDK 38, the upgrade ran successfully but got this weird warning while starting it up.

Any info on this?

Unrecognized event: {"type":"client_log","level":"log","data":["Running \"main\" with {\"initialProps\":{\"exp\":{\"lastErrors\":[{\"isFatal\":true,\"errorMessage\":\"Packager is not running at http://192.168.100.68:80\",\"exceptionId\":-253679629},{\"isFatal\":true,\"errorMessage\":\"Packager is not running at http://192.168.100.68:80\",\"exceptionId\":-931577078}],\"initialUri\":\"exp://192.168.100.68:19000\",\"manifest\":{\"iconUrl\":\"http://192.168.100.68:19001/assets/./assets/icon.png\",\"version\":\

Collapse
 
ajinkabeer profile image
Ajin Kabeer • Edited

Fixed this warning by bumping the expo-cli version

Collapse
 
fernandobonfimandrade profile image
Fernando Bonfim Andrade

How to do that?
I'm newbie

Collapse
 
rafesley profile image
wes

Hi, sorry to bother.
I tried upgrading from sdk 37 to 38 and it worked fine, but whenever I run expo start I get this error:

Failed building JavaScript bundle.
SyntaxError: /Users/Wesley/projects/app/node_modules/react-native-safe-area-context/src/SafeArea.types.ts: Unexpected token, expected ";" (42:19)

  40 |   children?: React.ReactNode;
  41 |   mode?: 'padding' | 'margin';
> 42 |   edges?: readonly Edge[];
     |                    ^
  43 | };
  44 |

I followed the tutorial and updated the expo-cli before running expo upgrade. I tried doing it again but got the same error. Tried deleting node modules because I thought it could be some conflict with an older version but it didn't work either. I'm not sure what's wrong since this safe-area module is a dependency from the expo package and I don't use it anywhere else.

Collapse
 
oneuptim profile image
oneuptim

Did you ever get this resolved? Running into the same issue as well.

Collapse
 
oneuptim profile image
oneuptim • Edited

Update: Seems like a week or so after sdk 38 was released with react-native-safe-area-context v3.0.3 and by the time of updating, it's now v3.0.7 which might be why this is happening, a dev added readonly to the type def is what it seems from the repo, see here -> github.com/th3rdwave/react-native-...

Updating my node version to latest v14.0.5 (at the time of this writing) seems to solve this for me. In addition, I deleted node_modules, yarn.lock, cleared expo cache (yarn cache clean or npm cache clean) and reinstalled everything a fresh. Even after all this, there were some dependancies that weren't added by expo and all I needed to do after was expo add <dependency_name>, hope this helps.

Thread Thread
 
rafesley profile image
wes

Thank you so much! It worked for me as well =)

Thread Thread
 
oneuptim profile image
oneuptim

Happy to hear that :)

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

New Status Bar module

Wooo. But not possible to update the Android Navigation Bar. Can't wait to have that parity so that they can be in sync, as opposed to only one updating.

Excited to upgrade tho!

Collapse
 
brentvatne profile image
Brent Vatne

can you elaborate on this and point me to a relevant issue?

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

On Android, there are three ways the bottom bar can show up:

Without any bar

In this case, the user can only navigate using gestures, and specifically edge-gestures.

Screenshot of an Android App without a bottom navigation bar

With a bar, without buttons

In this case, the user can navigate using gestures, as well as gestures on that navbar. This matches iOS for the most part. Expo's current app.json allows you to style this bar, but fails to allow you to use transparent values (system insets on that bottom bar don't seem to be set). There is no way to style this bar declaritively, or imperatively without ejecting and adding another native module.

Screenshot of an Android App with a bottom navigation bar, without buttons

With a bar, with buttons

In this case, the user can NOT navigate using gestures, and must use the soft buttons on the screen. Expo's current app.json allows you to style this bar. IIRC witht his mode transparent values are never allowed. There is no way to style this bar declaritively, or imperatively without ejecting and adding another native module.

Screenshot of an Android App with a bottom navigation bar, without buttons


Thread Thread
 
brentvatne profile image
Brent Vatne

we should definitely add a native module for this :)

Thread Thread
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

If I could get the expo/expo repo running on my (windows) machine, I'd write it -- but I had a pretty weird experience (both review wise as well as set-up wise) the last time I tried to contribute. Instead, I'll promise to report bugs once you'll got to it ❤️

Collapse
 
meatboy profile image
Meat Boy

<3 Love those changes.

Collapse
 
mtsprojects profile image
mtsprojects • Edited

Console.log( "Hello World! from server");
Through the following error after upgrade:

Unrecognized event: {"type":"client_log","level":"log","data":["{\"msg\": \"'Hello World!' from server\"}"]}

Collapse
 
ajinkabeer profile image
Ajin Kabeer

I got the same warning. Did you find why it's happening?

Collapse
 
mtsprojects profile image
mtsprojects

A new update just released a few hours ago solve the problem.

Thread Thread
 
ajinkabeer profile image
Ajin Kabeer

Oh really? I just upgraded to SDK 38 just five minutes ago :(

Thread Thread
 
mtsprojects profile image
mtsprojects

npm install -g expo-cli

Collapse
 
codingpen profile image
@coding_pen

For those guys who are using expo SDK<38 .0 you may have some troubles when trying to run your app ...to solve this just upgrade/update your current expo SDK e.g36, 35 to the current expo (38.0)......

Collapse
 
khnh88204010 profile image
Khánh

Thank you for guidance

dienmayvienthong.com/

Collapse
 
mtsprojects profile image
mtsprojects • Edited

It looks there is a problem with react native animation after upgrade form 37:
Animated: useNativeDriver was not specified.

Collapse
 
brentvatne profile image
Brent Vatne

thanks for reminding us of this, we'll update this post to provide more context for people. this is a change that came in react-native 0.62, see this issue: github.com/facebook/react-native/i...

Collapse
 
mtsprojects profile image
mtsprojects

I added useReactNative and it seems working for me

Collapse
 
faheem121 profile image
Faheem Ahmed

Hi, This is Faheem Ahmed. Video cropping is not available in the expo for Android.
Are you guys working on that?
we always use third party packages for that after ejecting from the expo.
kindly help this is frustrating to leave expo.

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

Check the Feature Requests to see if yours is listed, or create it.

Collapse
 
rahimkadhar66 profile image
RahimKadhar66

I have upgraded my SDK to SDK38 using expo upgrade, but whenever i'm building my app using expo build: android i'm getting warning like "expo build will work only in managed workflow" and generating an APK/AAB file without my existing key. Everytime it is creating new keystore in which i'm unable to upload my app in playstore.

Tried by creating a new project, but facing the same issue. PFB, the warning I'm getting.

C:\Users\admin\NodeProject\bkp\good_one>expo build:android

⚠️  expo build:android currently only supports managed workflow apps.
If you proceed with this command, we can run the build for you but it will not include any custom native modules or changes that you have made to your local native projects.
Unless you are sure that you know what you are doing, we recommend aborting the build and doing a native release build through Android Studio.
? Would you like to proceed? (Y/n)

package.json :
{
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "expo": "~38.0.8",
    "expo-splash-screen": "^0.5.0",
    "expo-status-bar": "^1.0.2",
    "expo-updates": "~0.2.10",
    "react": "~16.11.0",
    "react-dom": "~16.11.0",
    "react-native": "~0.62.2",
    "react-native-gesture-handler": "~1.6.1",
    "react-native-reanimated": "~1.9.0",
    "react-native-screens": "~2.9.0",
    "react-native-unimodules": "~0.10.1",
    "react-native-web": "~0.11.7"
  },
  "devDependencies": {
    "@babel/core": "^7.8.6",
    "babel-jest": "~25.2.6",
    "jest": "~25.2.6",
    "react-test-renderer": "~16.11.0",
    "babel-preset-expo": "~8.1.0"
  },
  "private": true
}

Exo cli : latest (3.24.2)

Please shed some light, it would be helpful. Thanks.

Collapse
 
joaocmfnogueira profile image
joaocmfnogueira

I got the same warning. You figured out how to solve?

Collapse
 
ismaelbarry profile image
Ismael Bary

Hi all!

I'm running into an error when using "expo start". I'm getting the same output when running "expo diagnostics".

ERROR: Node.js v12.9.1 is no longer supported.

expo-cli supports following Node.js versions:

  • >=10.13.0 <11.0.0 (Maintenance LTS)
  • >=12.13.0 <13.0.0 (Active LTS)
  • >=14.0.0 <15.0.0 (Current Release)
Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

Upgrade your node. The error is pretty clear. You're on node 12.9, which is not inside the >= 12.13, < 13.0.0 range

Collapse
 
jonhassall profile image
Jonathan Hassall

Thank you

Collapse
 
newworldman profile image
BP

how do you check to see what Expo SDK you have? If you import other projects they may have a prior Expo SDK. Is there a cmd line version check for it?

Collapse
 
lukbaktsh profile image
lukBakTsh

You've done an amazingly good job! Thank you!

Collapse
 
faheem121 profile image
Faheem Ahmed

and in image editing option after image picker from the library or camera there is no typing tool can you guys working on that. it will be helpful.

Collapse
 
rohovdmytro profile image
Rohov Dmytro

Can I use latest react version? 16.13.1.

expo upgrade bumped that only to 16.11

Collapse
 
sleeplessbyte profile image
Derk-Jan Karrenbeld

No. You can use 16.11.