Pros and Cons of Using Styled Components in React
Yes, Styled-Components is easy, flexible, and amazing, but just like everything else, it has pros and cons. What are they? Let’s have a look!
Join the DZone community and get the full member experience.
Join For Free“Idea is great, but the app is very poor. UI is not at all user-friendly. I am deleting it right away.”
How disheartening it would be to see such a review on your app, which you made with blood and sweat. It is not a new discovery that a classy and user-friendly UI is necessary to complete your great idea into a successful app. Every developer knew this struggle until 2011, when Facebook first used React for its newsfeed. Or is there something else?
Before we dive deeper into styled-components, let us take a quick look at React.
What Is React?
React JS is an open-source JavaScript library built by Facebook. It is used to build elegant and responsive user interfaces/UI components. React is preferred by front-end developers as it works with components and efficiently renders with backend development libraries such as Java, Django, node.js, etc. Also, react renders any data changes without reloading the entire application code, which makes it faster, scalable, and more reliable.
As per a report by Statista, in 2022, React was the second most-used framework, with 42.62% of developers using it. Not just that, there are more than 10 million websites live with react as their development framework.
In react, your application can be developed by coding each part separately by treating them as a component. You can connect all these components together to make a sound UI. All of these components are reusable, which makes the UI designing part easier. A component is basically a JavaScript function that accepts an argument and passes a react element.
Now that we have gone through what React and components are, let’s understand styled-components and their pros and cons.
Styled Components
The styled component is a library built for React and React Native. It allows you to style your react components by writing actual CSS in it, giving developers the flexibility to use their CSS code on multiple projects. This also saves time and effort for the developers.
Styled Components utilizes tagged template literals to style react components, which removes the mapping between style and component. Meaning that when you are creating your styles, you are actually writing a normal react component, which has your styles attached to it.
Yes, the Styled components library is easy, flexible, and amazing, but just like everything else, it also has its pros and cons. What are they? Let’s see:
Pros of Styled-Components
Allows You to Write CSS Inside the Components
As mentioned earlier, styled-components literally let you write your actual CSS script in the component. By writing this script in components, you are making it flexible and reusable. This ultimately means that once you write a script in a component, if you ever want to use it again for the same project or any other project, it will be there forever.
Allows Type Checking
Since styled-components are React components, they also support type-checking, which helps developers catch mistakes early.
Supports Theming Out-Of-The-Box
Themes are a set of predefined graphics, colors, and styles. Styled components support out-of-the-box theming. It uses a wrapper component called ThemeProvider, which attaches the theme to all your other components that are wrapped within it.
Styled-Components Offers React Native Mobile Support
Styled components support both React and React Native. React Native helps you create apps with seamless user experiences. Using styled-components, you can create a similar-looking UI for both your website and app easily.
No-class Policy In Styled-Components
Styled components use props instead of class. No class basically means that you do not have to use “this” in your code, which helps in debugging and improves the overall readability of your script.
Supports Server Side Rendering
By using style components, you enable your stylesheet to be rendered on the server side. By enabling server-side rendering, your page can load faster, improving user experience. Not just that, when rendering server side, search engines can load and crawl the content faster and more efficiently, which is vital for SEO.
Cons of Styled-Components
It’s Not Framework Independent
In Styled components, you write your CSS in your actual script directly. But you can not separate this CSS from JavaScript. This means whenever you want to switch your actual script, you will have to rewrite the code all over again.
Poor Readability
Sometimes, it can be difficult to differentiate between styled-components and react components. Even though the names are written in formats such as header, and list item, you will never know if they are styled-components or react components until you go deeper and check for styles. You can solve this by writing your styling code in a separate JavaScript and then importing it into your react component. But still, it does not provide good readability to the code.
Styled Components Are Compiled at Run Time
For styled components, the browser downloads the CSS first and then deduces it using JavaScript before inserting it into a page. Unfortunately, this means a user must download all the JavaScript before opening the application, which hampers the performance of your application.
Extra Build Tools Are Required
To enjoy all the above-listed pros of styled-components, you have to add some extra plugins. These plugins are required to enable your styled components to be written separately, to enable server-side rendering, and more. Some such building tools are Babel plugin, Babel Macros, TypeScript Plugin, Stylelint, etc.
Mixing CSS Modules and Global CSS Classes Is Cumbersome
Global styling, such as header, body, HTML, divs, etc., is not component based. So using them with CSS modules gets difficult for larger applications. Furthermore, mixing these two requires a lot of wrapping and complex coding, which makes the styled component a rather difficult job.
Closing Words
Published at DZone with permission of Brian Gerstner. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments