Every great developer should be committed to open-source projects. It is useful for personal professional development, as well as for the technology ecosystem.
But how do you choose the right project for your spare time efforts? In this article, we will give a brief answer on how to choose a good open source project. Also, we will help to tell bad ones from good ones and give a selection of cool projects around React ecosystem.
To know what open source project you should invest your time in, you need to understand what makes it good.
Adding even a small feature to a project requires you to understand how the whole project/library/plugin operates. Therefore, point one: the project should have good documentation. All dependencies should be well described. Popular and good quality open source solutions always have good documentation. This can be a great sign of quality and support one can expect from the community.
The second thing worth paying attention to is whether work with issues is well organized. Look at the issues in general. How many critical issues are there in the project? How quickly do they close?
Another thing is how rules of committing are documented. Imagine the situation. You found a bug, you made a big effort to fix it, it caused you some pain, but your patch is not included in the commit because the rules are not clear enough.
Look into the community. It is one of the largest resources available for an open-source project. An active community always helps to move the project forward. Good open-source software always has a community of developers or active users who write code, detect and provide support to other users. Choosing software with sound community support will always help you in the future whenever you are stuck in fixing bugs. Good community support will always help you fix problems that might occur in the future.
When looking at projects on Github, look for people/packages with many stars, watchers, forks, contributors, etc. These visible cues of community support show that the community cares about that person, project, or action and many others will benefit from it.
Remember that the number of commits, issues, and pull requests (PRs) can be a signal of investment and commitment to a project.
Google trends can also be a good measure of the level of interest in projects or technologies.
Choose a project that will give you new knowledge. Do not choose a product that is too easy to change or debug. Find a project that you think will survive for long enough to keep what you have invested in. You also need to choose a project that will be useful to others.
You’d benefit more if you were a part of the project from the beginning so that you get to appreciate the full life cycle of a project: the idea, prototyping, design, testing, implementation.
A good way to find a project you will invest your knowledge and time in is to ask other people. There is a good chance you will get a good recommendation. Find a community that will help you grow and communicate politely.
You can also contribute to something that you use regularly or will use in the future. You might pay attention to the project your company uses.
The other approach is to create a new project of your own. If your goal is just to learn how to GitHub, or just gain some basic efficiency in programming – a self-initiated project will do that. You could make something small and simple just to exercise your open source experience, or put a lot of time into something larger and try to create something that involves other contributors. Don’t be afraid to initiate your own open-source projects.
In the last couple of years, React has risen to become a massively popular JavaScript library and developer ecosystem. Some of the free react templates can be found here.
Let’s look into the best React open-source projects. We have split this selection into several sections according to the purpose of the tools.
Note: Some (but not all) of these are MIT licensed.
React toolkit
The first section is the libraries that actually help to develop React apps.
Unstated
GitHub: https://github.com/jamiebuilds/unstated
GitHub Stars: 7.4k
Web-site: –
Contribution guide: No
Unstated is designed to build on top of the patterns already set out by React components and context.
Unstated builds upon three main ideas/components:
This library is the evolution of state management. It reduces complexity and stays within the boundaries of React. If you understand how context works, you will understand how this library works.
React Bootstrap
GitHub: https://github.com/react-bootstrap/react-bootstrap/
GitHub Stars: 17.7k
Web-site: https://react-bootstrap.github.io/
Contribution guide: Yes
React bootstrap replaces the Bootstrap javascript. Each component has been built from scratch as a true React component, without unwanted dependencies like jQuery.
By relying entirely on the Bootstrap stylesheet, React bootstrap simply works with the thousands of bootstrap themes you already love. Each component is implemented with accessibility in mind. The result is a set of accessible-by-default components, over what is possible from plain Bootstrap.
React-Bootstrap is a complete re-implementation of the Bootstrap components using React. It has no dependency on either bootstrap.js or jQuery.
User InterfaceReact Select
GitHub: https://github.com/JedWatson/react-select
Stars: 20.2k
Web-site: https://react-select.com/home
Contribution guide: Yes
React Select is a select control for React initially built for use in KeystoneJS.
React Select is funded by Thinkmill and Atlassian. It represents a new approach to developing powerful React.js components that work out of the box while being extremely customizable.
Features include:
The framework is very easy to customize.
Evergreen
GitHub: https://github.com/segmentio/evergreen
GitHub Stars: 9.6k
Web-site: –
Contribution guide: Yes
Evergreen is a UI-framework built on top of React by Segment.com.
Evergreen contains a set of polished React components that work out of the box. Those components are built on top of a React UI Primitive for endless composability. Evergreen features a UI design language for enterprise-grade web applications.
Core beliefs of Evergreen:
React spring
GitHub: https://github.com/react-spring/react-spring
GitHub Stars: 17.2k
Web-site: https://www.react-spring.io/
Contribution guide: No
React-spring is a spring-physics-based animation library. This library represents a modern approach to animation. It inherits animated powerful interpolations and performance, as well as react-motion ease of use.
React-spring is cross-platform, it supports the web, react-native, react-native-web, and practically any other platform. The size will ultimately depend on your build-chain and can decrease with tree-shaking. The library comes as an es-module compiled for evergreen browsers.
Material UI
GitHub: https://github.com/mui-org/material-ui
GitHub Stars: 58.2k
Web-site: https://material-ui.com/
Contribution guide: Yes
Material-UI is an open-source project that features React components implementing Google’s Material Design. With over 52000 stars on GitHub, Material-UI is one of the top user interface libraries for React out there.
The real power of Material-UI lies in its flexibility. For example, it gives three different ways to style your components.
Use hook-based api (makeStyles/useStyles)
Use styled-components api (styled(Component)({…stylesObject})
Use HoC (withStyles(styles)(Component)
Ant-design
GitHub: https://github.com/ant-design/ant-design
GitHub Stars: 60.5k
Web-site: https://ant.design/
Contribution guide: Yes
Ant Design is a React UI library that has dozens of easy-to-use components for building elegant user interfaces. It is created by the Alibaba group. This is the second most popular React UI library. Since it is an Asian product, its built-in ways of design thinking may not be suitable for European or Western products.
Storybook
GitHub: https://github.com/storybookjs/storybook
GitHub Stars: 49.2k
Web-site: https://storybook.js.org/
Contribution guide: Yes
Storybook is an open-source tool for developing UI components in isolation for React, Vue, and Angular.
Storybook runs outside of your app. This allows you to develop UI components in isolation, which can improve component reuse, testability, and development speed. You can build quickly without having to worry about application-specific dependencies.
The product comes with a lot of add-ons for component design, documentation, testing, interactivity and so on. Storybook’s easy-to-use API makes it easy to configure and extend in various ways.
The library was recognized by such companies as Atlassian, Airbnb and Lyft.
AppsSpectrum chat
GitHub: https://github.com/withspectrum/spectrum
GitHub Stars: 8.8k
Web-site: https://spectrum.chat/
Contribution guide: Yes
Spectrum is an open-source chat similar to Slack for curating communities. It has developed on top of React and now is a part of Github.
Conversations on Spectrum are real-time chats, just like your favorite messaging app. Every conversation gets a unique link to make it easy for people to discover, share, or save for later.
Draft.js
GitHub: https://github.com/facebook/draft-js
GitHub Stars: 18.2k
Web-site: https://draftjs.org/
Contribution guide: Yes
Draft.js is a framework for building rich text editors in React, powered by a universal model and taking over cross-browser differences.
Draft.js makes it easy to build any type of rich text input, whether you’re just looking to support a few inline text styles or building a complex text editor for composing long-form articles.
In Draft.js, everything is customizable – it consists of building blocks so that you have full control over the user interface.
The app fits seamlessly into React applications, covering the details of rendering, selection and input behavior with a familiar declarative API. The Draft.js model is built with immutable-js, offering an API with functional state updates and aggressively leveraging data persistence for scalable memory usage.
Developer toolsWatermelonDB
GitHub: https://github.com/Nozbe/WatermelonDB
GitHub Stars: 6.7k
Web-site: https://watermelondb.now.sh/
Contribution guide: Yes
WatermelonDB is a high-performance reactive database for powerful React and React Native apps.
It’s optimized for building complex applications in React, and the number one goal is real-world performance.
In WatermelonDB nothing is loaded unless requested. And since all querying is performed directly on the rock-solid SQLite database on a separate native thread, most queries resolve instantly.
But unlike using SQLite directly, Watermelon is fully observable. So whenever you change a record, all UI that depends on it will automatically re-render. For example, completing a task in a to-do app will re-render the task component, the list (to reorder), and all relevant task counters.
Starter KitsGatsby.js
GitHub: https://github.com/gatsbyjs/gatsby
GitHub Stars: 45k
Web-site: https://www.gatsbyjs.org/
Contribution guide: Yes
Gatsby is a free open-source modern site generator for React. Websites built on Gatsby are fully functional React apps so you can create dynamic web apps, from blogs to e-commerce sites and user dashboards. Gatsby sites are built using React and GraphQL.
The product can pull data from any source, whether it’s Markdown files, headless CMS like Contentful or WordPress, or a REST or GraphQL API. Gatsby sites don’t require servers so you can host your entire site on a CDN for a fraction of the cost of a server-rendered site.
Create react app
GitHub: https://github.com/facebook/create-react-app
GitHub Stars: 79.4k
Web-site: https://create-react-app.dev/
Contribution guide: Yes
Create react app is a starter kit that helps to start a React website without learning and configuring many build tools.
You don’t need to rebuild the whole application when developing. Instant reloads do all the work for you. Under the hood, Create react app use Webpack, Babel, ESLint, and other projects. If you need an advanced configuration, you can ”eject” from Create React App and edit their config files directly.
This is the most popular react project and starter tool across React ecosystem. It is supported by Facebook Open Source.
Other projectsReact Router
GitHub: https://github.com/ReactTraining/react-router
GitHub Stars: 40.8k
Web-site: https://reacttraining.com/react-router/
Contribution guide: Yes
React Router is a collection of navigational components that compose declaratively with your application. Whether you want to have bookmarkable URLs for your web app or a composable way to navigate in React Native, React Router works wherever React is rendering.
React MapGL
GitHub: https://github.com/visgl/react-map-gl
GitHub Stars: 5.4k
Website: –
Contribution guide: Yes
This library provides React components for MapboxGL. You can use markers, popups, and maps, as well as locate users and do other actions in Mapbox maps with the help of this small library.
Because most of Mapbox’s JS API functionality depends on the use of HTML5 canvases and WebGL, which React is not built to work with, this library provides convenient wrappers around initializing and (to some degree) tracking the state of a Mapbox WebGL map.
Formik
GitHub: https://github.com/jaredpalmer/formik
GitHub Stars: 22.5k
Web-site: https://jaredpalmer.com/formik/
Contribution guide: Yes
Formik takes care of the repetitive and annoying stuff – keeping track of values/errors/visited fields, taking care of validation, and handling submission – so you don’t have to.
By staying within the core React framework and away from magic, Formik makes debugging, testing and reasoning forms an easy breeze.
Formik does not use external state management libraries like Redux or MobX.
It’s really hard getting started, but once you get over the first contribution, making future contributions is much easier. It’s not all roses. The React open-source ecosystem gives a good chance to start up contributing to really a valuable project for you, your company and the world. If you have something to add, we will be very delighted to listen to your thoughts.
When you’ve found a project you’d like to contribute to, do a quick scan to make sure that the project is suitable for accepting contributions. Otherwise, your hard work may never get a response.
Here’s a handy checklist to evaluate whether a project is good for new contributors:
Next, look at the project’s issues:
Now do the same for the project’s pull requests:
Project is welcoming:
Previously published at https://flatlogic.com/blog/best-react-open-source-projects/