It is no secret that 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.
What is a good open source project
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. A 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 which 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.
How to choose a project to commit to
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.
Best React open source projects
In the last couple of years, React has risen to become a massively popular JavaScript library and developer ecosystem. Let’s look into the best open source projects based on it. 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
Stars: 6649
Web-site: –
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:
- The container is a very simple class which is made to look just like React. It is a component with only state-related bits.
- Subscribe is how you pass the state from the Container to your Component. This will behave the same way the state behaves, i.e. when state changes, the components re-render, but you can also call methods on the Container.
- The Provider is where we will store all of our instances internally. The unstated Provider works similarly to the Redux or Apollo Provider: it uses context in a smooth way to extract the API into something very consumable by our 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/
Stars: 15711
Web-site: https://react-bootstrap.github.io/
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 Interface
React Select
GitHub: https://github.com/JedWatson/react-select
Stars: 16989
Web-site: https://react-select.com/home
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:
- Flexible approach to data with customizable functions
- Extensible styling API with emotion
- Component Injection API for complete control over the UI behavior
- Controllable state props and modular architecture
- Long-requested features like option groups, portal support, animation. The framework is very easy to customize.
Evergreen
GitHub: https://github.com/segmentio/evergreen
Stars: 8061
Web-site: https://evergreen.segment.com/
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:
- Evergreen is built on the belief that you can never predict all future requirements, only prepare for it. Instead of creating fixed configurations that work today, Evergreen promotes building systems that anticipate new and changing design requirements.
- Evergreen is built on the belief that things should work out of the box with smart defaults and offer full control when needed. For example, Evergreen implements most components on top of a Box primitive which allows for a lot of customization.
- Evergreen is built on the belief that using Evergreen and contributing to Evergreen should be a pleasant experience. We prioritize documentation and all the tools for solid developer experience. We advocate respect and inclusivity in our writings and interactions.
React spring
GitHub: https://github.com/react-spring/react-spring
Stars: 13488
Web-site: https://www.react-spring.io/
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
Stars: 48270
Web-site: https://material-ui.com/
Material-UI is an open-source project that features React components implementing Google’s Material Design. With over 35,000 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
Stars: 48076
Web-site: https://ant.design/
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
Stars: 39035
Web-site: https://storybook.js.org/
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.
Apps
Spectrum chat
GitHub: https://github.com/withspectrum/spectrum
Stars: 7011
Web-site: https://spectrum.chat/
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
Stars: 15937
Web-site: https://draftjs.org/
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 tools
WatermelonDB
GitHub: https://github.com/Nozbe/WatermelonDB
Stars: 5580
Web-site: https://watermelondb.now.sh/
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.
React devtools
GitHub: https://github.com/facebook/react-devtools
Stars: 10148
Web-site: –
React Developer Tools lets you inspect the React component hierarchy, including component props and state.
It exists both as a browser extension (for Chrome and Firefox) and as a standalone app (works with other environments including Safari, IE and React Native).
Starter Kits
Gatsby.js
GitHub: https://github.com/gatsbyjs/gatsby
Stars: 35902
Web-site: https://www.gatsbyjs.org/
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
Stars: 69088
Web-site: https://facebook.github.io/create-react-app/
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 projects
React Router
GitHub: https://github.com/ReactTraining/react-router
Stars: 36710
Web-site: https://reacttraining.com/react-router/
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/uber/react-map-gl
Stars: 4563
Web-site: https://uber.github.io/react-map-gl/#/
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
Stars: 16218
Web-site: https://jaredpalmer.com/formik/
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.
Recap and conclusion
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.
BONUS: A checklist before you contribute
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:
- Meets the definition of open source;
- Does it have a license? Usually, this is a file called LICENSE in the root of the repository;
- The project actively accepts contributions;
- Look at the commit activity on the master branch. When was the latest commit?
- How many contributors does the project have?
- How often do people commit? (On GitHub, you can find this by clicking “Commits” in the top bar.)
Next, look at the project’s issues:
- How many open issues are there?
- Do maintainers respond quickly to issues when they are opened?
- Is there an active discussion on the issues?
- Are the issues recent?
- Are issues getting closed? (On GitHub, click the “closed” tab on the Issues page to see closed issues.)
Now do the same for the project’s pull requests:
- How many open pull requests are there?
- Do maintainers respond quickly to pull requests when they are opened?
- Is there an active discussion on the pull requests?
- Are the pull requests recent?
- How recently were any pull requests merged? (On GitHub, click the “closed” tab on the Pull Requests page to see closed PRs.)
Project is welcoming:
- A project that is friendly and welcoming tells they will be receptive to new contributors;
- Do the maintainers respond helpfully to questions in issues?
- Are people friendly in the issues, discussion forum and chat (for example, IRC or Slack)?
- Do pull requests get reviewed?
- Do maintainers thank people for their contributions?
About Flatlogic
At Flatlogic we develop admin dashboard templates and React Native templates. We are listed among Top 20 Web Development companies from Belarus and Lithuania. During the last 6 years, we have successfully completed more than 30 big projects for small startups and large enterprises. As a team, we always have a deep desire to help our clients.
You might also like these articles:
Top Date Picker JavaScript Plugins and Libraries
Top React Native UI Component Kits
Top 6 Vue Admin Templates
Originally published at flatlogic.com — React, Angular, Vue, Bootstrap & React Native templates and themes.
Text source: Best React Open-Source Projects