-
Notifications
You must be signed in to change notification settings - Fork 318
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
React Native PoC #3
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
We need a way to opt-into this for development
I didn't choose tailwind-rn because it's feature-ful or desirable. I chose it so I could copy/paste existing styles and see RN limitations
Closed
2 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Running it locally
Then use GUI to launch iOS simulator.
Approach
I attempted to only use
@aws-amplify/ui-react
and fork implementations where necessary via.native.ts?(x)
extension:primitives/index.natives.tsx
AmplifyProvider/index.tsx
Discoveries
Form Limitations
HTML
<form onChange onSubmit>
can handle all input events thanks to event bubbling. However, React Native does not have event bubbling.This requires registering and tracking each input separately. So far, the cleanest API I've seen for solving this is:
Styling Limitations
The existing
aws-amplify-react-native
library usestheme
for overriding theStylesheet
:Unlike CSS, React Native doesn't support cascading. Each element has to be styled separately with a
style
prop, often withStylesheet.create()
.This raises of how should we style each React Native component in the
Authenticator
with a defaulttheme
just as a customer would?.With the web implementation, we can rely on targeted CSS selectors (e.g.
[data-authenticator] [data-label]
) as part ofimport "@aws-amplify/ui/styles.css"
, but CSS is a noop in React Native.Code Re-use
Should React Native be published as
@aws-amplify/ui-react
or@aws-amplify/ui-react-native
?The
authMachine.ts
file is readily re-used, and all exports of@aws-amplify/ui-react
are re-exported under@aws-amplify/ui-react-native
.All React components are currently being re-used, with
.native.tsx
shadows fordefaultTheme
,primitives
, andAmplifyProvider
.Remaining Work