callstack / react-native-paper

Material Design for React Native (Android & iOS)
https://reactnativepaper.com
MIT License
12.5k stars 2.05k forks source link

"What do you dislike about React Native Paper?" November 2019 Edition #1489

Open Trancever opened 4 years ago

Trancever commented 4 years ago

We, the React Native Paper core team, would like to get a current list of all the things that people are having problems with when using React Native Paper. This is first time we are running this community feedback gathering initiative, but we are planning to do it cyclically - twice a year. We hope this will help us better understand our users and prioritize the work for the upcoming 2020 year.

Please reply with all the issues that you are having with React Native Paper. Keep your descriptions short and ideally link to other places with more context. Feel free to mention not just technical things but rather any issue that can be ascribed to the React Native Paper project.

If something has been mentioned already, please use the upvote/emoji buttons instead of repeating the same thing so that it's easier to see how many people care about each issue. Please make one comment per topic so that people can upvote just one thing at a time.

Hypothetical Example:

Some of the animations are not native

That would be really nice if js based animations (e.g. Checkbox or RadioButton) were replaced with native ones. Please consider reimplementing animations with reanimated for better performance.

Simple template with header (feel free to copy and paste)

## Header

### Content
CarpeNecopinum commented 4 years ago

Minor gripe: Some components that are added by react-native-paper already exist in regular react-native, but with a different interface (e.g. Button having a title prop vs. accepting children). Would be cool if both had a more similar interface (or at least some overlap) so switching between them would be easier.

yckbilly1929 commented 4 years ago

Possibility to customize appbar title

I would really like to know if we could customize the title, e.g. render an icon, render colorful title, etc.

mschipperheyn commented 4 years ago

I would like to easily add an icon component to a Snackbar. Turns out it's not easy, bc the children are wrapped in a Text. Snackbar should prob be optional leftComponent, optional rightComponent (action or something else), text.

Trancever commented 4 years ago

I would like to easily add an icon component to a Snackbar. Turns out it's not easy, bc the children are wrapped in a Text. Snackbar should prob be optional leftComponent, optional rightComponent (action or something else), text.

@mschipperheyn This is breaking MD Guidelines actually, and that's why it's not supported.

vicary commented 4 years ago

Swipeable List Actions

Content

It is a common design and material design itself recommends it. Currently workaround is to wrap List.Item in an animated view with gesture responders, it is also very complicated to style. Would really like react native paper to support this one.

Trancever commented 4 years ago

Swipeable List Actions

Content

It is a common design and material design itself recommends it. Currently workaround is to wrap List.Item in an animated view with gesture responders, it is also very complicated to style. Would really like react native paper to support this one.

We recommend using Swipeable component that is provided by react-native-gesture-handler. It is very performant and provides native feeling.

kopax commented 4 years ago

I can confirm the Swipeable from react-native-gesture-handler is the best available swipeable component available at the moment. We have still found that the iOS version is having some unpredictable swipe jump, it is still faster and better than https://github.com/jemise111/react-native-swipe-list-view.

vicary commented 4 years ago

Thanks for the alternative, the native approach from react-native-gesture-handler/Swipeable is really performant. But then I, for one, would not try to mix two component packages in one project before I have deep understandings on both (which I don't).

If react native paper is not planning for a solution, it could really embed Swipeable or recommend this one in the docs.

pke commented 4 years ago

Remove circular dependencies

Content

Circular dependencies can cause all kind of problems and are usually a sign of sub-optimal component design. Just to disable the yellow box warning is a bad way to solve the problem. I am willing to invest time to remove those dependencies by getting #1851 approved in helping to fix the "docs problem".

mschipperheyn commented 4 years ago

@Trancever the thing that makes it so hard to customize react-native-paper is exactly that. MD is considered a hard limitation, unlike e.g. @material-ui, which considers it a starting point. react-native-paper is good but incredibly frustrating to work with sometimes. So many things are not customizable in any way bc it's not MD. IMHO it should be possible to have a look and feel completely different from MD easily. You could say: then don't use react-native-paper. But I use a UI lib for its quality, structure, completeness, themeability and customizability. And honestly, in RN, there aren't any options that score high on all. RNP scores high on the first three, ok on themeability and poor on customizability. I hope the direction is to score high on all. That's a choice obviously but it would be good to know.

mccarthydanielle commented 4 years ago

@Trancever I am unable to pass in the small property when using FAB.Group. I'd like to be able to make all FABs in my stack smaller, including the first button that opens up the stack.

vicary commented 4 years ago

Provider affects layout

Content

People usually expects Providers to be completely transparent in layouts, where all its children works as if the provider itself doesn't exist.

Given a flexbox parent, here is an example.

https://snack.expo.io/@vicary/rnpaper.provider-breaks-layouts

DSgogini commented 4 years ago

It would be great to have tabs component in React Native Paper.

SanchitB23 commented 4 years ago

When I use TextInput, and use the error boolean, It's outlines and highlights red and that's great but sometimes, the label and placeholder are overlapping and and looks bad for a UI photo_2020-07-03_22-23-44

mccarthydanielle commented 3 years ago

When I use the portal component I no longer have access to my React Context Providers

methodbox commented 3 years ago

My primary dislike is that you don’t work any of your GitHub issues or even bother responding to most of them.

It makes the use of this actual issue to ask what we dislike rather ironic, don’t you think?

Edit: Before you downvote my comment, take a look at their issues. Before you tell me to contribute, take a look at pending PRs that have been ignored for months.

ghost commented 3 years ago

I don't like and use it. Especially because there are no examples and no documentation for datatable. It's faster to create a table with Views.

RichardLindhout commented 3 years ago

@methodbox I don't disagree with your feedback primarily but with the wording of it and especially this sentence.

It makes the use of this actual issue to ask what we dislike rather ironic, don’t you think?

I still thinks it's cool they gather feedback and even listened to some of the points made! Also bugfixes are mostly going through and some of the PR's are out of the strategy of the library (too much customization or too much props which will harm the library in the long way because there are too many options to look out for)

When you have a quality PR or bugfix they did fix it in days in my experience or my PR was not good enough or out of scope for this library.

methodbox commented 3 years ago

@methodbox I don't disagree with your feedback primarily but with the wording of it and especially this sentence.

It makes the use of this actual issue to ask what we dislike rather ironic, don’t you think?

I still thinks it's cool they gather feedback and even listened to some of the points made! Also bugfixes are mostly going through and some of the PR's are out of the strategy of the library (too much customization or too much props which will harm the library in the long way because there are too many options to look out for)

When you have a quality PR or bugfix they did fix it in days in my experience or my PR was not good enough or out of scope for this library.

Okay, but maybe just reply and say that instead of doing nothing?

kamui545 commented 3 years ago

Agreed, it would be nice to give Github Issues some love. Also, the github-actions bot is not helping about that:

Screen Shot 2020-07-22 at 10 50 43
Sampath-Lokuge commented 3 years ago

Can we have simple flexbox grid system? Like this https://github.com/GeekyAnts/react-native-easy-grid But it seems where this library is not maintaining anymore. So we would like to have it from you. Any thoughts?

gregfenton commented 3 years ago

Make Web a first-class citizen

The instructions for Using on the Web are burdensome and seem risky (muck around with webpack and babel??!!). And it isn't clear to me if this could be done with an Expo project?

Suggestions:

  1. make configuration for web (react-native-web?) much more streamlined
  2. get RNP to be natively supported by Expo, specifically in the Managed Workflow scenario (it likely works today, as is, with the bare workflow
methodbox commented 3 years ago

Make Web a first-class citizen

The instructions for Using on the Web are burdensome and seem risky (muck around with webpack and babel??!!). And it isn't clear to me if this could be done with an Expo project?

Suggestions:

  1. make configuration for web (react-native-web?) much more streamlined
  2. get RNP to be natively supported by Expo

Not sure I agree with this being on the devs to make any different, but maybe take an entirely different approach if they really want to support web. A lot of this configuration is due in part to Webpack (it's just necessary to tell it how to use the module(s)) and part the fact that you're using a library designed to be used with React Native on the web. A different approach would change this, but this approach isn't too uncommon in the React Native lib world.

Maybe the solution would be a separate package entirely for the web. It seems it might be possible to just move the components into a web-appropriate package, or export them in a way that would allow just importing react-paper instead of react-native-paper - in other words, separate concerns.

Last, getting something "natively" supported by Expo isn't exactly an option, but really isn't necessary anymore, either. Expo went "modular" with all of their bits and pieces a while ago and it's possible to leverage Expo with non-Expo libraries. If you're referring to making it work with Expo's Managed Workflow - that's really on Expo.

gregfenton commented 3 years ago

I, the "user", am laying out a concern I have with RNP not treating a platform ("Web") as a first class citizen, and that as a user coming from a valid paradigm (Expo) that I am facing some challenges. How RNP decides to react - in terms of accepting the concern and if so then the engineering approach to resolving it - I leave to the RNP team/community to address. (I'll happily contribute some my time if I can be of service).

the fact that you're using a library designed to be used with React Native on the web

RNP's own website touts its use for "iOS + Andoid + Web". Additionally, it is clear that some in the RN community are actively pushing to expand RN to include Web.

Yes, I am specifically thinking about the Expo Managed Workflow - I will update my problem description accordingly. The Expo team might be the ones needed to get RNP adopted. If the RNP community is looking to expand the "market" to include Expo MW developers, then it likely would be best for the RNP community to at least bring that up with Expo, no?

RichardLindhout commented 3 years ago

I think it's more the build tooling that is too complicated than react-native-paper. We need to have more defaults and easy tooling which I tried to create with (https://github.com/web-ridge/create-react-native-web-application)

Where we use the create-react-app on the web and some low level stuff to make react-native-web working / other modules with this config https://github.com/web-ridge/create-react-native-web-application/blob/main/dist/template/config-overrides.js

satya164 commented 3 years ago

I, the "user", am laying out a concern I have with RNP not treating a platform ("Web") as a first class citizen, and that as a user coming from a valid paradigm (Expo) that I am facing some challenges. How RNP decides to react - in terms of accepting the concern and if so then the engineering approach to resolving it - I leave to the RNP team/community to address. (I'll happily contribute some my time if I can be of service).

It's not about RNP not treating Web as a first class citizen, Paper has specific components such as TouchableRipple with a completely different implementation for Web, in order for Web to have good support.

Any project you're going to use with Webpack (RNP or not) needs extra configuration. It's sad, but that's how web tooling is. There are many things RNP already does to reduce the steps, such as precompiling code so Babel won't be needed - but other libraries in the ecosystem don't do it so you need to configure Babel, it's not because of RNP. You also need to configure Webpack for your own code, all the steps you see in documentation is just normal Webpack configuration for Web projects, there aren't anything special for RNP (except Babel, which is again for third party libs, not RNP).

So how can we remove the Babel config? Convince react-native-vector-icons to precompile it's code, and any other libs that need extra Babel config. Or, don't use Webpack and use Metro for Web (which might be worse because there's no docs for that).

RichardLindhout commented 3 years ago

I would like to see a Date and Time Picker Component in this library, which will be compatible on both ios and android platform. It will be very helpful.

@ravics09 I'm working on this, will probably be published as a separate package first!

https://github.com/callstack/react-native-paper/issues/2118

RichardLindhout commented 3 years ago

I would like to see a Date and Time Picker Component in this library, which will be compatible on both ios and android platform. It will be very helpful.

First version is released: https://github.com/web-ridge/react-native-paper-dates

RichardLindhout commented 3 years ago

I think we can greatly improve React Native Paper on the web if we could add support for hover and focus state. I've created some issues to discuss this:

React Native Paper: https://github.com/callstack/react-native-paper/issues/2142 React Native Web: https://github.com/necolas/react-native-web/issues/1708

karthikveeraj commented 3 years ago
RichardLindhout commented 3 years ago

@karthikveeraj I'm working on date and time picker, https://github.com/callstack/react-native-paper/issues/2118. My goal is to implement all specs of the material design: https://material.io/components/time-pickers#specs.

jstansbe commented 3 years ago

Correct me if i'm wrong... but it seems like some of the proposed components fall outside the owners/contributes goals:

Trancever mentions this:

We don't really want to implement all possible cases in this lib. We want to provide building blocks that users can use to build more complex UI.

I propose the creation of a library, "react-native-paper-plus" that uses react-native-paper as "building blocks" for the creation of composite components and other key components:

I'm open to start this if I can get one other person to help - with the blessing of rnp team of course!

vicary commented 3 years ago

@jstansbe Nice idea. That's somewhat similar to @material-ui/lab, only this will never goes into the core.

But -plus always rings paid plans in my head. If this is meant to be a community effort, I suggest naming it -userland, -community, or at least -components to stay neutral.

kendallroth commented 3 years ago

TL;DR: Excellent library, could benefit from additional component compilation examples.

I would strongly second the suggestion by @jstansbe as well, although I also see a potential problem with -plus (👍 for -community). One thing I have noticed in this library is that there are a lot of issues where a component is requested but then closed because an alternative exists or a theoretical compilation of existing components is given, etc.

To be clear, I have nothing against this, but an "example components" library to show how these building blocks can be compiled together would be excellent. I know I have been frustrated on occasion because an issue was closed without an example being given, other than a vague reference to existing components. For someone not overly familiar with the library, it may be quite challenging to guess at the necessary combinations to create what they may think is a basic component. Again, I do not think creating every combination in the core library is feasible or even necessarily beneficial, but see this as a potential opening for a community initiative to provide examples, etc.

P.S. IMO a picker (select) component is an integral part of any UI library, and would advocate for its addition here or a promoted alternative (similar to the date picker recommendation).

P.P.S. @jstansbe would you be able to provide a snippet example showing your component from menu + input?

RichardLindhout commented 3 years ago

I think the Popover, Select, Menu component should be better implemented in the core library.

For the date-pickers I rather keep them in my own organisation for now since I can get some followers / marketing for my company and faster development and less rules.

RichardLindhout commented 3 years ago

One extra point what I dislike about React Native Paper are the extreme strong rules for the format of the git commits (husky) which got in me trouble when I did want to contribute a little while back.

jvidalv commented 3 years ago

It would be amazing to have props hint in WebStorm.

I don't know why intellisense is not working for React Native Paper, but sure it would be a big thing for us, developers using WebStorm, so we don't need to go to the docs each time we forget a prop name/options.

If someone can point my to the right direction, I could try to implement/fix it myself.

joeyfigaro commented 3 years ago

Custom Icons

I'm currently trying to use @iconscout/react-native-unicons by passing a custom Unicon component to settings on an icon key as outlined in the docs. It'd be great if I could remove react-native-vector-icons from my project after migrating completely to unicons. Every time my pods are updated, I have to go into xcode and remove the duplicated font families that it adds to the project.

guillaumevincent commented 3 years ago

https://callstack.github.io/react-native-paper/checkbox-ios.html The unchecked checkbox is really confusing on iOS. Having no border on the checkbox make it very difficult to see.

See #https://github.com/lesspass/lesspass/issues/553 for an example

edit: A workaround is to use the Android version of the checkbox something like: <Checkbox.Android />

flipflopapp commented 3 years ago

Being able to use modifiers in Theme.

<View flex padding-page>
        <Text heading marginB-s4>My Screen</Text>

They seem to make styles more reusable.

Long story: I started with native-base in my game halfchess (probably because they were available as default in a boilerplate I was using). I really liked their modifier approach in themes also (though its not without issues/pains, esp in case of nested components). However now I want to launch halfchess on fb messenger (instant games). Using modifiers is better for my usecase, because I will be more easily able to maintain my application across web and native.

But I think it offers one more big advantage, the views don't get too tightly coupled with the UI library. No harm in having that flexibility as an end user.

In short, theming support with modifier is the second thing I am looking at (the first being build stability and no weird cross-platform issues).

kamui545 commented 3 years ago

Being able to use modifiers in Theme.

I do agree on this one, it would be nice to have something like that to stay consistent when templating. I quite like the approach of https://magnus-ui.com/

louiechristie commented 3 years ago

Easier installation of example app

Content

For greater adoption of React Native Paper I think the Example React Native Paper app needs to be easier to install and run. It's too hard for beginners.

In my experience the snack example linked to from the documentation is often broken, as it is now.

Also there is no standard Expo published app online (this is a different concept to a Snack.) So I created one here for myself: https://expo.io/@louiechristie/react-native-paper-example

To create the React Native Paper example Expo app locally you need to run an unusual yarn bootstrap command that is in the /example/ subdirectory README.md documentation (but not the root README.md) and is easily missed.

The code is hard to follow and learn from (to do with dependencies) because it is doing something a bit too clever with metro.config.js for beginners to understand. It would be easier if it was in a stand alone repo (or yarn workspace mono repo perhaps?)

It would be great if a Snack, and, Expo published app, were created automatically with each release - by adding this to the continuous integration pipeline.

I myself @louiechristie might be willing to collaborate on this, and on improving the React Native Paper developer experience for beginners.

RichardLindhout commented 3 years ago

I agree with all of your points would be even nicer if we could have the app in the Play and App store with something like Fastlane! (like Flutter Gallery has)

The code is hard to follow and learn from (to do with dependencies) because it is doing something a bit too clever with metro.config.js for beginners to understand. It would be easier if it was in a stand alone repo (or yarn workspace mono repo perhaps?)

This is needed for developers as we can edit library code and see changes immediately, but perhaps beginners don't even look at the metro.config file? It would be nice if we could have some alternative which was both easy for developers as for users who copy the example directory but I don't think it's possible yet.

LRNZ09 commented 3 years ago

Still no standard bottom sheet component https://material.io/components/sheets-bottom#standard-bottom-sheet

ravi-poonia commented 3 years ago

It would be great if we can pass separate theme for a individual screen..something like withTheme(Screen, customScreenTheme)

And all the child components used in this component use the provided theme instead of the global one

RichardLindhout commented 3 years ago

React Native Paper Dates 0.2.1 is here!

ezgif-4-0904a1b67ad7

https://github.com/web-ridge/react-native-paper-dates

Demo: https://www.reactnativepaperdates.com/

louiechristie commented 3 years ago

I agree with all of your points would be even nicer if we could have the [Example] app in the Play and App store with something like Fastlane! (like Flutter Gallery has)

@RichardLindhout I agree! Also it would be nice if there was a web build online generated by the CI like this one I made https://keen-haibt-fc92ef.netlify.app/ but with user friendly urls for the different pages.

Angelk90 commented 3 years ago

1254

ibovegar commented 3 years ago

Make it possible to change fontSize

Add fontSize to theme object

This enables me to define the fontSize used through all components. Varying font sizes is an issue when using custom fonts. E.g. Google Inter is a bit bigger than Google Roboto. The difference is subtle but annoying, e.g. the Title in List.Item is too big. By changing the fontStyle property I can compensate without wrapping React Native Paper in my own component with style overrides.

kamui545 commented 3 years ago

I noticed something that bothers me on my last PR I opened.

There is no way for me to see what is failing on CircleCI without giving them access to all my repos + organisations (they require me to login to see the details, very sad).

Is there any plan about switching to Github Actions or anything else?

Click to see screenshot Screen Shot 2020-12-16 at 21 02 44