amplify-js icon indicating copy to clipboard operation
amplify-js copied to clipboard

Expo Go and React Native Web support for V6 and future

Open BuildingFiles opened this issue 1 year ago • 33 comments

Is this related to a new or existing framework?

React Native, Web Components

Is this related to a new or existing API?

Both if by api you mean amplify-js as a whole

Is this related to another service?

Not outside of amplify

Describe the feature you'd like to request

I was told that this feature request had been created already by aws support. But I could not locate it. So I made one of my own.

According to recent conversations with support and the dev team in other tickets. Support for expo go, react-native web and expo web while it always has been and still is being maintained in Version 5. Will no longer be supported in Version 6 and newer.

Our production application runs primarily as a web app. We've spent many years developing and to it using react-native and expo on Amplify. We love using Amplify for this.

But I have been told that the reason support is being dropped for web is because it is "a lot of work". With no regard to how much work time and money it's going to cost us loyal customers of Amplify. Making us have to completely throw out the last 5 years of development for an entirely new web framework that you currently still support.

I respectfully request that you re include support for expo and react-native web and continue to include them as full stack options for Amplifys newest and future versions.

Describe the solution you'd like

Continued support for web in expo and react-native after version 5

Describe alternatives you've considered

I'm open to suggestion that don't require a complete rewrite of our application in another farmwork, so we can continue to offer our clients our web app.

Additional context

No response

Is this something that you'd be interested in working on?

  • [ ] 👋 I may be able to implement this feature request
  • [ ] ⚠️ This feature might incur a breaking change

BuildingFiles avatar Oct 12 '24 18:10 BuildingFiles

@BuildingFiles We are reviewing this with the team. If needed, would you be available to meet with us?

haverchuck avatar Oct 14 '24 15:10 haverchuck

We have been holding back on updating from v5 amplify because of the lack of support in this area.

rayelward avatar Oct 15 '24 15:10 rayelward

@BuildingFiles We are reviewing this with the team. If needed, would you be available to meet with us?

I am available if you need. I just got off a call with AWS support and some members of the development team as well.

BuildingFiles avatar Oct 15 '24 15:10 BuildingFiles

We have been holding back on updating from v5 amplify because of the lack of support in this area.

( Had to edit this, thought you were a member of Amplifys dev team when I first read your post :) )

Its a good call it seems like at the moment upgrading to v6 will require a lot of editing for any existing application, and even after that's all said and done it may not work due to the web support issues on their end.

BuildingFiles avatar Oct 15 '24 16:10 BuildingFiles

Waiting for a defined clear path to implementing Gen 2 AWS Auth for React Native - current documentation is extremely poor and confusing and mixes between Gen 1 which makes it difficult to work out.

Seano180 avatar Dec 02 '24 03:12 Seano180

Hi @Seano180 are you planning to use React Native Web?

Regarding Gen1 vs Gen2 documentation - Amplify JS library works the same between Gen1 and Gen2, the setup and category APIs have the same specifications. Please feel free to open an issue at https://github.com/aws-amplify/docs for any documentation improvement suggestions.

HuiSF avatar Dec 02 '24 15:12 HuiSF

Hi @Seano180 are you planning to use React Native Web?

Regarding Gen1 vs Gen2 documentation - Amplify JS library works the same between Gen1 and Gen2, the setup and category APIs have the same specifications. Please feel free to open an issue at https://github.com/aws-amplify/docs for any documentation improvement suggestions.

We have followed the Gen2 Auth documentation and still getting errors - Console error highlighting that it cannot find our backend environment when using "amplify pull"

Seano180 avatar Dec 02 '24 22:12 Seano180

Hi @Seano180 Sorry about the confusion.

amplify pull is Amplify CLI - not the library

The original Amplify CLI and the new Gen2 experience are focusing on the steps of setting up your backend resources. The JS library works with both original Amplify CLI and the new Gen 2 experience, but you cannot mix-use Amplify CLI and Gen2.

For react-native - you can follow the Gen2 documentation to set up your backend resource. Then regarding how to use the library APIs to implement your react-native App you can follow the Gen1 doc.

In addition, if you are not planning to develop with React Native Web or Expo Web, please feel free to open a new issue if you need further assistance. Thanks!

HuiSF avatar Dec 03 '24 18:12 HuiSF

Hi @Seano180 Sorry about the confusion.

amplify pull is Amplify CLI - not the library

The original Amplify CLI and the new Gen2 experience are focusing on the steps of setting up your backend resources. The JS library works with both original Amplify CLI and the new Gen 2 experience, but you cannot mix-use Amplify CLI and Gen2.

For react-native - you can follow the Gen2 documentation to set up your backend resource. Then regarding how to use the library APIs to implement your react-native App you can follow the Gen1 doc.

In addition, if you are not planning to develop with React Native Web or Expo Web, please feel free to open a new issue if you need further assistance. Thanks!

I managed to connect my back-end successfully and wrote a blog post on how to do it for those who might have similar issues.

I highlight some parts that aren't on the AWS documentation. Feel free to take a look.

Link: https://sean-sheridan.gitbook.io/blog/react-native/react-native-aws-auth

Thanks Sean

Seano180 avatar Dec 04 '24 02:12 Seano180

Is there any update on this? I'm looking to start a new project, and I was hoping to use React Native for Web with Expo and Amplify. What is the recommended approach to have a multi-platform React app until this done?

steinybot avatar Jan 04 '25 22:01 steinybot

Hi @steinybot

We do not have update yet. Please refer this comment: https://github.com/aws-amplify/amplify-js/issues/13918#issuecomment-2515305657 for our support policy for React Native web. Don't hesitate to thumb up this feature request, it will help us prioritize the feature requests.

AllanZhengYP avatar Jan 06 '25 17:01 AllanZhengYP

Hi @steinybot

We do not have update yet. Please refer this comment: #13918 (comment) for our support policy for React Native web. Don't hesitate to thumb up this feature request, it will help us prioritize the feature requests.

It needs to be rectified ASAP because Amplify Gen 2 for React Native is basically unusable.

Seano180 avatar Jan 06 '25 22:01 Seano180

Hi @steinybot We do not have update yet. Please refer this comment: #13918 (comment) for our support policy for React Native web. Don't hesitate to thumb up this feature request, it will help us prioritize the feature requests.

It needs to be rectified ASAP because Amplify Gen 2 for React Native is basically unusable.

Per my last conference call with Amplifies dev team. They assured me that they will be officially supporting react native - web with Gen 2 including all future versions and will maintain support for Gen 1. But no official time frame on when Gen 2 functionality will be added yet. Though they did assure me it would be, by the time Gen 1 support ends.

Currently they claim they support React-Native and Expo as Amplify always has. But for gen 2 you can't deploy to web using either, and if you want to deploy mobile apps you can't use expo go to do that now either. I'm sure there's other things not working as well. So they shadow dropped pretty much all support for expo, and more than half of react-natives functionality without so much as considering their paying users.

I strongly hope whoever was in charge of making these decisions has been transferred to the pet foods, or paper towels departments. Someplace far far away from anything programming related. They cut massive corners in development by flat out dropping support for the main usage of these libraries. Web + Native hardware!

BuildingFiles avatar Jan 07 '25 15:01 BuildingFiles

Hey @BuildingFiles and folks in the thread :wave: we're actively investigating issues related to feature parity between v5 and v6 of the library, which indirectly includes identifying and closing gaps with Expo Go support. Please use this issue to continue to document specific areas of trouble with Expo Go and Amplify.

We appreciate the detailed feedback on this issue. While we're working to address the concerns, I'd like to kindly remind everyone to review our community guidelines. This helps us maintain constructive discussions that lead us to resolve issues effectively.

josefaidt avatar Jan 07 '25 17:01 josefaidt

I've read this 3 times and it is unclear to me. I have a GEN1 V5 application w/ React Native - runs on iOS (natively), Android (natively) and Web. After reading this there seems to be a mix of comments related to Gen1 V5 vs. V6 and sprinkled in other comments about Gen2. I now want to create a new application that has iOS (native), Android (native) and Web. Are you saying that I cannot do that in Gen2 because it does not support Web (only native) for React Native? If that's the case, then there is clearly a significant problem for me given the main reason for using Amplify and React Native was to satisfy native and web. There seems to be a hint that the dev team will 'eventually' support React Native web for Gen 2 - but no timeframe. Is this correct? Gen2 does not support React Native web?

ggcespia avatar Jan 10 '25 22:01 ggcespia

I've read this 3 times and it is unclear to me. I have a GEN1 V5 application w/ React Native - runs on iOS (natively), Android (natively) and Web. After reading this there seems to be a mix of comments related to Gen1 V5 vs. V6 and sprinkled in other comments about Gen2. I now want to create a new application that has iOS (native), Android (native) and Web. Are you saying that I cannot do that in Gen2 because it does not support Web (only native) for React Native? If that's the case, then there is clearly a significant problem for me given the main reason for using Amplify and React Native was to satisfy native and web. There seems to be a hint that the dev team will 'eventually' support React Native web for Gen 2 - but no timeframe. Is this correct? Gen2 does not support React Native web?

We've been long time supporters and users of Amplify. I recommended aws and amplify to several friends. So, it feels very bad to say this.

I wouldn't start developing in react-native and Expo if you want to use them with their web functionality for amplify at this time. Also if you are starting a new mobile only app, make sure you're using V2.

They told Me they will be adding support for web in V2 and maintaining V1 support until V1 is shut down (no date for this was given, though they said it wouldn't be for a long time...). BUT they also would not guarantee that web would be supported in V2 by the time V1 is shut down.

So, you could develop in V1 with web support. Running the risk that when V1 ends you may not have a working web interface for your app if V2 isn't done in time. Not to mention the guaranteed headache of converting from V1 to V2. Which while somewhat similar has enough distinct changes to be a huge headache for any large apps to upgrade to. (I'm not looking forward to the experience of upgrading 5+ years worth of code in V1 to V2)

Their response to all this has been unreassuring. Their vague time frames and indefinite responses has not restored my confidence in them. If they had rolled back V2 until the issue was fixed the day it was found. Then I'd have full faith in them as a service still. Its going to take a lot to regain that trust now. Just the fact that V2 was created with little regards to how upgrading to it will impact us is enough to have shaken my trust in them. The fact that it also excludes core functionality of the frameworks its meant to support is just unbelievable to me.

I sincerely hope they fix this and I can go back to feeling confident in my choice to develop using Amplify.

BuildingFiles avatar Jan 14 '25 16:01 BuildingFiles

Hey @BuildingFiles and folks in the thread 👋 we're actively investigating issues related to feature parity between v5 and v6 of the library, which indirectly includes identifying and closing gaps with Expo Go support. Please use this issue to continue to document specific areas of trouble with Expo Go and Amplify.

We appreciate the detailed feedback on this issue. While we're working to address the concerns, I'd like to kindly remind everyone to review our community guidelines. This helps us maintain constructive discussions that lead us to resolve issues effectively.

Thank you, It's good to see some steps being taken towards fixing things. Also glad to see Expo Go is getting looked at. We have been using it to internally deploy alpha versions of our mobile app for testing, for several years now.

BuildingFiles avatar Jan 14 '25 16:01 BuildingFiles

Any updates on timeline ?

deouws avatar Jan 29 '25 23:01 deouws

@deouws, we don't have any updates at this time. As soon as we have any progress or updates, we'll be sure to leave a comment.

cwomack avatar Jan 30 '25 14:01 cwomack

I've been following this for a few weeks, and am optimistic about its outcome, but I would like to know a bit more.

Other OS projects I follow are great about outlining a roadmap for a heavy lift like this, and it would be great to see that on this request.

With a roadmap established, I'm sure some of us could accelerate this feature release, seeing it's quite a popular request.

charlieforward9 avatar Feb 02 '25 15:02 charlieforward9

Creating a new Amplify project (gen2) and was excited to try Expo + Web.

But based on this thread, I'm gauging I'd be walking on to a minefield, yes?

JUSTINMKAUFMAN avatar Feb 07 '25 16:02 JUSTINMKAUFMAN

I am still working in the MVP and really wanted to keep everything within AWS. However issues with amplify would force me to may end up moving to google. I feel defeated at times.

deouws avatar Feb 07 '25 18:02 deouws

Hi @deouws I don't have any updates yet for this. The "lot of issues" you mentioned are specifically related to React Native Web support, or is there anything else we can assist you with?

HuiSF avatar Feb 07 '25 18:02 HuiSF

Yes, it's mostly the web support. I just wanted to have the project within AWS including Authentication, DynamoDB and everything else. Amplify seemed like a great choice at beginning but over time I felt I should just try going back to S3/CloudFront or may be firebase. My MVP is only for Web. Thank you.

deouws avatar Feb 07 '25 19:02 deouws

Yes, it's mostly the web support. I just wanted to have the project within AWS including Authentication, DynamoDB and everything else. Amplify seemed like a great choice at beginning but over time I felt I should just try going back to S3/CloudFront or may be firebase. My MVP is only for Web. Thank you.

If your MVP is only for the web then why use React Native? Stick with normal React and you'll be fine.

steinybot avatar Feb 15 '25 20:02 steinybot

Has anybody seen this issue?

Image

React native + Nativewind in the form of React Native Reusables. The Sign in button is there only white and the button for Google looses styling. Does anybody know how to inject styles for this?

rafa-ochoa avatar Feb 19 '25 21:02 rafa-ochoa

Yes, it's mostly the web support. I just wanted to have the project within AWS including Authentication, DynamoDB and everything else. Amplify seemed like a great choice at beginning but over time I felt I should just try going back to S3/CloudFront or may be firebase. My MVP is only for Web. Thank you.

If your MVP is only for the web then why use React Native? Stick with normal React and you'll be fine.

Agree, it is currently only web but I was planning to get to iOS soon.

deouws avatar Feb 19 '25 21:02 deouws

Just so I understand the current state of things, per the Amplify docs, Expo Go with Amplify Gen 2 is not supported. Additionally, if wanting to use Expo Web, that is also not supported (the Amplify Docs point to this issue thread.)

However, if I have an Amplify Gen 2 React app already, and now want to build create a React Native (via Expo) mobile app, I can still uses Expo prebuild and either follow the guide on seperate frontend and backends or the guide on building a monorepo.

I get that having Expo Web would take this a lot easier, I'm just trying to see where things are at currently. Are my above assertions correct?

mtliendo avatar Apr 03 '25 12:04 mtliendo

Your assertion is correct. The setup you detail is the current supported method for sharing infrastructure across a native and web application. We do not provide official support for Expo Web but we will be evaluating whether to include something like this on our roadmap.

jjarvisp avatar Apr 03 '25 18:04 jjarvisp

Just so I understand the current state of things, per the Amplify docs, Expo Go with Amplify Gen 2 is not supported. Additionally, if wanting to use Expo Web, that is also not supported (the Amplify Docs point to this issue thread.)

However, if I have an Amplify Gen 2 React app already, and now want to build create a React Native (via Expo) mobile app, I can still uses Expo prebuild and either follow the guide on seperate frontend and backends or the guide on building a monorepo.

I get that having Expo Web would take this a lot easier, I'm just trying to see where things are at currently. Are my above assertions correct?

Yes, that is correct. However, I have been reassured many times now. That they will be implementing web and expo go for gen 2 in the near future, and developing in Gen 1 for now should be safe if you wish to use react-native.

BuildingFiles avatar Apr 04 '25 19:04 BuildingFiles