React Developer Roadmap

README in Chinese

README in Japanese

README in Korean

README in Portuguese (Brazil)

README in Russian

README in Spanish

Roadmap to becoming a React developer in 2019:

Below you can find a chart demonstrating the paths that you can take and the libraries that you would want to learn to become a React developer. I made this chart as a tip for everyone who asks me, "What should I learn next as a React developer?"

Disclaimer

The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hip and trendy does not always mean best suited for the job

Roadmap

Roadmap

Resources

  1. Basics
    1. HTML
      • Learn the basics of HTML
      • Make a few pages as an exercise
    2. CSS
      • Learn the basics of CSS
      • Style pages from previous step
      • Build a page with grid and flexbox
    3. JS Basics
      • Get familiar with the syntax
      • Learn basic operations on DOM
      • Learn mechanisms typical for JS (Hoisting, Event Bubbling, Prototyping)
      • Make some AJAX (XHR) calls
      • Learn new features (ECMA Script 6+)
      • Additionally, get familiar with the jQuery library
  2. General Development Skills
    1. Learn GIT, create a few repositories on GitHub, share your code with other people
    2. Know HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS)
    3. Don't be afraid of using Google, Power Searching with Google
    4. Get familiar with terminal, configure your shell (bash, zsh, fish)
    5. Read a few books about algorithms and data structures
    6. Read a few books about design patterns
  3. Learn React on official website or complete some courses
  4. Get familiar with tools that you will be using
    1. Package Managers
    2. Task Runners
  5. Styling
    1. CSS Preprocessor
    2. CSS Frameworks
    3. CSS Architecture
    4. CSS in JS
  6. State Management
    1. Component State/Context API
    2. Redux
      1. Async actions (Side Effects)
      2. Helpers
      3. Data persistence
      4. Redux Form
    3. MobX
  7. Type Checkers
  8. Form Helpers
  9. Routing
  10. API Clients
    1. REST
    2. GraphQL
  11. Utility Libraries
  12. Testing
    1. Unit Testing
    2. End to End Testing
    3. Integration Testing
  13. Internationalization
  14. Server Side Rendering
  15. Static Site Generator
  16. Backend Framework Integration
  17. Mobile
  18. Desktop
  19. Virtual Reality

Wrap Up

If you think the roadmap can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to star this repository to revisit.

Contribution

The roadmap is built using Draw.io. Project file can be found at /src directory. To modify it, open draw.io, click Open Existing Diagram and choose xml file with project. It will open the roadmap for you. Update it, upload and update the images in readme and create a PR (export as png).

  • Open a pull request with improvements
  • Discuss ideas in issues
  • Spread the word

License

License: CC BY-NC-SA 4.0

adam-golab/react-developer-roadmap

{
"props": {
"initialPayload": {
"allShortcutsEnabled": false,
"path": "/",
"repo": {
"id": 137583435,
"defaultBranch": "master",
"name": "react-developer-roadmap",
"ownerLogin": "adam-golab",
"currentUserCanPush": false,
"isFork": false,
"isEmpty": false,
"createdAt": "2018-06-16T13:40:50.000Z",
"ownerAvatar": "https://avatars.githubusercontent.com/u/20810956?v=4",
"public": true,
"private": false,
"isOrgOwned": false
},
"currentUser": null,
"refInfo": {
"name": "master",
"listCacheKey": "v0:1562182136.0",
"canEdit": false,
"refType": "branch",
"currentOid": "6f5f7cf24711637e2ad3f9d6b001cfa19e9e7e92"
},
"tree": {
"items": [
{
"name": "src",
"path": "src",
"contentType": "directory"
},
{
"name": "translations",
"path": "translations",
"contentType": "directory"
},
{
"name": ".gitignore",
"path": ".gitignore",
"contentType": "file"
},
{
"name": "LICENSE",
"path": "LICENSE",
"contentType": "file"
},
{
"name": "PULL_REQUEST_TEMPLATE.md",
"path": "PULL_REQUEST_TEMPLATE.md",
"contentType": "file"
},
{
"name": "README-CN.md",
"path": "README-CN.md",
"contentType": "file"
},
{
"name": "README-ES.md",
"path": "README-ES.md",
"contentType": "file"
},
{
"name": "README-JA.md",
"path": "README-JA.md",
"contentType": "file"
},
{
"name": "README-KO.md",
"path": "README-KO.md",
"contentType": "file"
},
{
"name": "README-PTBR.md",
"path": "README-PTBR.md",
"contentType": "file"
},
{
"name": "README-RU.md",
"path": "README-RU.md",
"contentType": "file"
},
{
"name": "README.md",
"path": "README.md",
"contentType": "file"
},
{
"name": "roadmap-cn.png",
"path": "roadmap-cn.png",
"contentType": "file"
},
{
"name": "roadmap-es.png",
"path": "roadmap-es.png",
"contentType": "file"
},
{
"name": "roadmap-ja.png",
"path": "roadmap-ja.png",
"contentType": "file"
},
{
"name": "roadmap-ko.png",
"path": "roadmap-ko.png",
"contentType": "file"
},
{
"name": "roadmap-ptbr.png",
"path": "roadmap-ptbr.png",
"contentType": "file"
},
{
"name": "roadmap-ru.png",
"path": "roadmap-ru.png",
"contentType": "file"
},
{
"name": "roadmap.png",
"path": "roadmap.png",
"contentType": "file"
}
],
"templateDirectorySuggestionUrl": null,
"readme": null,
"totalCount": 19,
"showBranchInfobar": false
},
"fileTree": null,
"fileTreeProcessingTime": null,
"foldersToFetch": [],
"treeExpanded": false,
"symbolsExpanded": false,
"isOverview": true,
"overview": {
"banners": {
"shouldRecommendReadme": false,
"isPersonalRepo": false,
"showUseActionBanner": false,
"actionSlug": null,
"actionId": null,
"showProtectBranchBanner": false,
"publishBannersInfo": {
"dismissActionNoticePath": "/settings/dismiss-notice/publish_action_from_repo",
"releasePath": "/adam-golab/react-developer-roadmap/releases/new?marketplace=true",
"showPublishActionBanner": false
},
"interactionLimitBanner": null,
"showInvitationBanner": false,
"inviterName": null
},
"codeButton": {
"contactPath": "/contact",
"isEnterprise": false,
"local": {
"protocolInfo": {
"httpAvailable": true,
"sshAvailable": null,
"httpUrl": "https://github.com/adam-golab/react-developer-roadmap.git",
"showCloneWarning": null,
"sshUrl": null,
"sshCertificatesRequired": null,
"sshCertificatesAvailable": null,
"ghCliUrl": "gh repo clone adam-golab/react-developer-roadmap",
"defaultProtocol": "http",
"newSshKeyUrl": "/settings/ssh/new",
"setProtocolPath": "/users/set_protocol"
},
"platformInfo": {
"cloneUrl": "https://desktop.github.com",
"showVisualStudioCloneButton": false,
"visualStudioCloneUrl": "https://windows.github.com",
"showXcodeCloneButton": false,
"xcodeCloneUrl": "https://developer.apple.com",
"zipballUrl": "/adam-golab/react-developer-roadmap/archive/refs/heads/master.zip"
}
},
"newCodespacePath": "/codespaces/new?hide_repo_select=true&repo=137583435"
},
"popovers": {
"rename": null,
"renamedParentRepo": null
},
"commitCount": "92",
"overviewFiles": [
{
"displayName": "README.md",
"repoName": "react-developer-roadmap",
"refName": "master",
"path": "README.md",
"preferredFileType": "readme",
"tabName": "README",
"richText": "<article class=\"markdown-body entry-content container-lg\" itemprop=\"text\"><div class=\"markdown-heading\" dir=\"auto\"><h1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">React Developer Roadmap</h1><a id=\"user-content-react-developer-roadmap\" class=\"anchor\" aria-label=\"Permalink: React Developer Roadmap\" href=\"#react-developer-roadmap\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-CN.md\">README in Chinese</a></p>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-JA.md\">README in Japanese</a></p>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-KO.md\">README in Korean</a></p>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-PTBR.md\">README in Portuguese (Brazil)</a></p>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-RU.md\">README in Russian</a></p>\n<p dir=\"auto\"><a href=\"/adam-golab/react-developer-roadmap/blob/master/README-ES.md\">README in Spanish</a></p>\n<blockquote>\n<p dir=\"auto\">Roadmap to becoming a React developer in 2019:</p>\n</blockquote>\n<p dir=\"auto\">Below you can find a chart demonstrating the paths that you can take and the libraries that you would want to learn to become a React developer. I made this chart as a tip for everyone who asks me, \"What should I learn next as a React developer?\"</p>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Disclaimer</h2><a id=\"user-content-disclaimer\" class=\"anchor\" aria-label=\"Permalink: Disclaimer\" href=\"#disclaimer\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<blockquote>\n<p dir=\"auto\">The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hip and trendy does not always mean best suited for the job</p>\n</blockquote>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Roadmap</h2><a id=\"user-content-roadmap\" class=\"anchor\" aria-label=\"Permalink: Roadmap\" href=\"#roadmap\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"/adam-golab/react-developer-roadmap/blob/master/roadmap.png\"><img src=\"/adam-golab/react-developer-roadmap/raw/master/roadmap.png\" alt=\"Roadmap\" style=\"max-width: 100%;\"></a></p>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Resources</h2><a id=\"user-content-resources\" class=\"anchor\" aria-label=\"Permalink: Resources\" href=\"#resources\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ol dir=\"auto\">\n<li>Basics\n<ol dir=\"auto\">\n<li>HTML\n<ul dir=\"auto\">\n<li>Learn the basics of HTML</li>\n<li>Make a few pages as an exercise</li>\n</ul>\n</li>\n<li>CSS\n<ul dir=\"auto\">\n<li>Learn the basics of CSS</li>\n<li>Style pages from previous step</li>\n<li>Build a page with grid and flexbox</li>\n</ul>\n</li>\n<li>JS Basics\n<ul dir=\"auto\">\n<li>Get familiar with the syntax</li>\n<li>Learn basic operations on DOM</li>\n<li>Learn mechanisms typical for JS (Hoisting, Event Bubbling, Prototyping)</li>\n<li>Make some AJAX (XHR) calls</li>\n<li>Learn new features (ECMA Script 6+)</li>\n<li>Additionally, get familiar with the jQuery library</li>\n</ul>\n</li>\n</ol>\n</li>\n<li>General Development Skills\n<ol dir=\"auto\">\n<li>Learn GIT, create a few repositories on GitHub, share your code with other people</li>\n<li>Know HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS)</li>\n<li>Don't be afraid of using Google, <a href=\"http://www.powersearchingwithgoogle.com/\" rel=\"nofollow\">Power Searching with Google</a></li>\n<li>Get familiar with terminal, configure your shell (bash, zsh, fish)</li>\n<li>Read a few books about algorithms and data structures</li>\n<li>Read a few books about design patterns</li>\n</ol>\n</li>\n<li>Learn React on <a href=\"https://reactjs.org/tutorial/tutorial.html\" rel=\"nofollow\">official website</a> or complete some <a href=\"https://egghead.io/courses/the-beginner-s-guide-to-react\" rel=\"nofollow\">courses</a></li>\n<li>Get familiar with tools that you will be using\n<ol dir=\"auto\">\n<li>Package Managers\n<ul dir=\"auto\">\n<li><a href=\"https://www.npmjs.com/\" rel=\"nofollow\">npm</a></li>\n<li><a href=\"https://yarnpkg.com/lang/en/\" rel=\"nofollow\">yarn</a></li>\n<li><a href=\"https://pnpm.js.org/\" rel=\"nofollow\">pnpm</a></li>\n</ul>\n</li>\n<li>Task Runners\n<ul dir=\"auto\">\n<li><a href=\"https://docs.npmjs.com/misc/scripts\" rel=\"nofollow\">npm scripts</a></li>\n<li><a href=\"https://gulpjs.com/\" rel=\"nofollow\">gulp</a></li>\n</ul>\n</li>\n</ol>\n<ul dir=\"auto\">\n<li><a href=\"https://webpack.js.org/\" rel=\"nofollow\">Webpack</a></li>\n<li><a href=\"https://rollupjs.org/guide/en\" rel=\"nofollow\">Rollup</a></li>\n<li><a href=\"https://parceljs.org/\" rel=\"nofollow\">Parcel</a></li>\n</ul>\n</li>\n<li>Styling\n<ol dir=\"auto\">\n<li>CSS Preprocessor\n<ul dir=\"auto\">\n<li><a href=\"https://sass-lang.com/\" rel=\"nofollow\">Sass/CSS</a></li>\n<li><a href=\"https://postcss.org/\" rel=\"nofollow\">PostCSS</a></li>\n<li><a href=\"http://lesscss.org/\" rel=\"nofollow\">Less</a></li>\n<li><a href=\"http://stylus-lang.com/\" rel=\"nofollow\">Stylus</a></li>\n</ul>\n</li>\n<li>CSS Frameworks\n<ul dir=\"auto\">\n<li><a href=\"https://getbootstrap.com/\" rel=\"nofollow\">Bootstrap</a></li>\n<li><a href=\"https://materializecss.com/\" rel=\"nofollow\">Materialize</a>, <a href=\"https://material-ui.com/\" rel=\"nofollow\">Material UI</a>, <a href=\"https://getmdl.io/\" rel=\"nofollow\">Material Design Lite</a></li>\n<li><a href=\"https://bulma.io/\" rel=\"nofollow\">Bulma</a></li>\n<li><a href=\"https://semantic-ui.com/\" rel=\"nofollow\">Semantic UI</a></li>\n</ul>\n</li>\n<li>CSS Architecture\n<ul dir=\"auto\">\n<li><a href=\"http://getbem.com/\" rel=\"nofollow\">BEM</a></li>\n<li><a href=\"https://github.com/css-modules/css-modules\">CSS Modules</a></li>\n<li><a href=\"https://acss.io/\" rel=\"nofollow\">Atomic</a></li>\n<li><a href=\"https://github.com/stubbornella/oocss/wiki\">OOCSS</a></li>\n<li><a href=\"https://smacss.com/\" rel=\"nofollow\">SMACSS</a></li>\n<li><a href=\"https://suitcss.github.io/\" rel=\"nofollow\">SUITCSS</a></li>\n</ul>\n</li>\n<li>CSS in JS\n<ul dir=\"auto\">\n<li><a href=\"https://www.styled-components.com/\" rel=\"nofollow\">Styled Components</a></li>\n<li><a href=\"https://formidable.com/open-source/radium/\" rel=\"nofollow\">Radium</a></li>\n<li><a href=\"https://emotion.sh/\" rel=\"nofollow\">Emotion</a></li>\n<li><a href=\"http://cssinjs.org/\" rel=\"nofollow\">JSS</a></li>\n<li><a href=\"https://github.com/Khan/aphrodite\">Aphrodite</a></li>\n</ul>\n</li>\n</ol>\n</li>\n<li>State Management\n<ol dir=\"auto\">\n<li><a href=\"https://reactjs.org/docs/faq-state.html\" rel=\"nofollow\">Component State</a>/<a href=\"https://reactjs.org/docs/context.html\" rel=\"nofollow\">Context API</a></li>\n<li><a href=\"https://redux.js.org/\" rel=\"nofollow\">Redux</a>\n<ol dir=\"auto\">\n<li>Async actions (Side Effects)\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/reduxjs/redux-thunk\">Redux Thunk</a></li>\n<li><a href=\"https://github.com/Lukasz-pluszczewski/redux-better-promise\">Redux Better Promise</a></li>\n<li><a href=\"https://redux-saga.js.org/\" rel=\"nofollow\">Redux Saga</a></li>\n<li><a href=\"https://redux-observable.js.org\" rel=\"nofollow\">Redux Observable</a></li>\n</ul>\n</li>\n<li>Helpers\n<ul dir=\"auto\">\n<li><a href=\"https://rematch.gitbooks.io/rematch/\" rel=\"nofollow\">Rematch</a></li>\n<li><a href=\"https://github.com/reduxjs/reselect\">Reselect</a></li>\n</ul>\n</li>\n<li>Data persistence\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/rt2zz/redux-persist\">Redux Persist</a></li>\n<li><a href=\"https://github.com/adam-golab/redux-phoenix\">Redux Phoenix</a></li>\n</ul>\n</li>\n<li><a href=\"https://redux-form.com\" rel=\"nofollow\">Redux Form</a></li>\n</ol>\n</li>\n<li><a href=\"https://mobx.js.org/\" rel=\"nofollow\">MobX</a></li>\n</ol>\n</li>\n<li>Type Checkers\n<ul dir=\"auto\">\n<li><a href=\"https://reactjs.org/docs/typechecking-with-proptypes.html\" rel=\"nofollow\">PropTypes</a></li>\n<li><a href=\"https://www.typescriptlang.org/\" rel=\"nofollow\">TypeScript</a></li>\n<li><a href=\"https://flow.org/en/\" rel=\"nofollow\">Flow</a></li>\n</ul>\n</li>\n<li>Form Helpers\n<ul dir=\"auto\">\n<li><a href=\"https://redux-form.com\" rel=\"nofollow\">Redux Form</a></li>\n<li><a href=\"https://github.com/jaredpalmer/formik\">Formik</a></li>\n<li><a href=\"https://github.com/formsy/formsy-react\">Formsy</a></li>\n<li><a href=\"https://github.com/final-form/final-form\">Final Form</a></li>\n</ul>\n</li>\n<li>Routing\n<ul dir=\"auto\">\n<li><a href=\"https://reacttraining.com/react-router/\" rel=\"nofollow\">React-Router</a></li>\n<li><a href=\"https://router5.js.org/\" rel=\"nofollow\">Router5</a></li>\n<li><a href=\"https://github.com/faceyspacey/redux-first-router\">Redux-First Router</a></li>\n<li><a href=\"https://reach.tech/router/\" rel=\"nofollow\">Reach Router</a></li>\n</ul>\n</li>\n<li>API Clients\n<ol dir=\"auto\">\n<li>REST\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\" rel=\"nofollow\">Fetch</a></li>\n<li><a href=\"https://visionmedia.github.io/superagent/\" rel=\"nofollow\">SuperAgent</a></li>\n<li><a href=\"https://github.com/axios/axios\">axios</a></li>\n</ul>\n</li>\n<li>GraphQL\n<ul dir=\"auto\">\n<li><a href=\"https://www.apollographql.com/docs/react/\" rel=\"nofollow\">Apollo</a></li>\n<li><a href=\"https://facebook.github.io/relay/\" rel=\"nofollow\">Relay</a></li>\n<li><a href=\"https://github.com/FormidableLabs/urql\">urql</a></li>\n</ul>\n</li>\n</ol>\n</li>\n<li>Utility Libraries\n<ul dir=\"auto\">\n<li><a href=\"https://lodash.com/\" rel=\"nofollow\">Lodash</a></li>\n<li><a href=\"https://momentjs.com/\" rel=\"nofollow\">Moment</a></li>\n<li><a href=\"https://github.com/JedWatson/classnames\">classnames</a></li>\n<li><a href=\"http://numeraljs.com/\" rel=\"nofollow\">Numeral</a></li>\n<li><a href=\"http://reactivex.io/\" rel=\"nofollow\">RxJS</a></li>\n<li><a href=\"https://facebook.github.io/immutable-js/\" rel=\"nofollow\">ImmutableJS</a></li>\n<li><a href=\"https://ramdajs.com/\" rel=\"nofollow\">Ramda</a></li>\n</ul>\n</li>\n<li>Testing\n<ol dir=\"auto\">\n<li>Unit Testing\n<ul dir=\"auto\">\n<li><a href=\"https://facebook.github.io/jest/\" rel=\"nofollow\">Jest</a></li>\n<li><a href=\"http://airbnb.io/enzyme/\" rel=\"nofollow\">Enzyme</a></li>\n<li><a href=\"http://sinonjs.org/\" rel=\"nofollow\">Sinon</a></li>\n<li><a href=\"https://mochajs.org/\" rel=\"nofollow\">Mocha</a></li>\n<li><a href=\"http://www.chaijs.com/\" rel=\"nofollow\">Chai</a></li>\n<li><a href=\"https://github.com/avajs/ava\">AVA</a></li>\n<li><a href=\"https://github.com/substack/tape\">Tape</a></li>\n</ul>\n</li>\n<li>End to End Testing\n<ul dir=\"auto\">\n<li><a href=\"https://www.seleniumhq.org/\" rel=\"nofollow\">Selenium</a>, <a href=\"http://webdriver.io/\" rel=\"nofollow\">Webdriver</a></li>\n<li><a href=\"https://cypress.io/\" rel=\"nofollow\">Cypress</a></li>\n<li><a href=\"https://pptr.dev/\" rel=\"nofollow\">Puppeteer</a></li>\n<li><a href=\"https://github.com/cucumber/cucumber-js\">Cucumber.js</a></li>\n<li><a href=\"http://nightwatchjs.org/\" rel=\"nofollow\">Nightwatch.js</a></li>\n</ul>\n</li>\n<li>Integration Testing\n<ul dir=\"auto\">\n<li><a href=\"https://karma-runner.github.io/\" rel=\"nofollow\">Karma</a></li>\n</ul>\n</li>\n</ol>\n</li>\n<li>Internationalization\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/yahoo/react-intl\">React Intl</a></li>\n<li><a href=\"https://react.i18next.com/\" rel=\"nofollow\">React i18next</a></li>\n</ul>\n</li>\n<li>Server Side Rendering\n<ul dir=\"auto\">\n<li><a href=\"https://nextjs.org/\" rel=\"nofollow\">Next.js</a></li>\n<li><a href=\"https://github.com/jaredpalmer/after.js\">After.js</a></li>\n<li><a href=\"https://github.com/alidcastano/rogue.js\">Rogue</a></li>\n</ul>\n</li>\n<li>Static Site Generator\n<ul dir=\"auto\">\n<li><a href=\"https://www.gatsbyjs.org/\" rel=\"nofollow\">Gatsby</a></li>\n</ul>\n</li>\n<li>Backend Framework Integration\n<ul dir=\"auto\">\n<li><a href=\"https://shakacode.gitbooks.io/react-on-rails/content/\" rel=\"nofollow\">React on Rails</a></li>\n</ul>\n</li>\n<li>Mobile\n<ul dir=\"auto\">\n<li><a href=\"https://facebook.github.io/react-native/\" rel=\"nofollow\">React Native</a></li>\n<li><a href=\"https://cordova.apache.org/\" rel=\"nofollow\">Cordova</a>/<a href=\"https://phonegap.com/\" rel=\"nofollow\">Phonegap</a></li>\n</ul>\n</li>\n<li>Desktop\n<ul dir=\"auto\">\n<li><a href=\"https://proton-native.js.org/\" rel=\"nofollow\">Proton Native</a></li>\n<li><a href=\"https://electronjs.org/\" rel=\"nofollow\">Electron</a></li>\n<li><a href=\"https://github.com/Microsoft/react-native-windows\">React Native Windows</a></li>\n</ul>\n</li>\n<li>Virtual Reality\n<ul dir=\"auto\">\n<li><a href=\"https://facebook.github.io/react-360/\" rel=\"nofollow\">React 360</a></li>\n</ul>\n</li>\n</ol>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Wrap Up</h2><a id=\"user-content-wrap-up\" class=\"anchor\" aria-label=\"Permalink: Wrap Up\" href=\"#wrap-up\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\">If you think the roadmap can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to star this repository to revisit.</p>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Contribution</h2><a id=\"user-content-contribution\" class=\"anchor\" aria-label=\"Permalink: Contribution\" href=\"#contribution\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\">The roadmap is built using <a href=\"https://www.draw.io/\" rel=\"nofollow\">Draw.io</a>. Project file can be found at <code>/src</code> directory. To modify it, open draw.io, click <strong>Open Existing Diagram</strong> and choose <code>xml</code> file with project. It will open the roadmap for you. Update it, upload and update the images in readme and create a PR (export as png).</p>\n<ul dir=\"auto\">\n<li>Open a pull request with improvements</li>\n<li>Discuss ideas in issues</li>\n<li>Spread the word</li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">License</h2><a id=\"user-content-license\" class=\"anchor\" aria-label=\"Permalink: License\" href=\"#license\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\"><a href=\"https://creativecommons.org/licenses/by-nc-sa/4.0/\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/5254836b4c2097cdf9b882f21a089aa7c06f73b990d36efb5dac7ac41cd764cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d434325323042592d2d4e432d2d5341253230342e302d6c69676874677265792e737667\" alt=\"License: CC BY-NC-SA 4.0\" data-canonical-src=\"https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg\" style=\"max-width: 100%;\"></a></p>\n</article>",
"loaded": true,
"timedOut": false,
"errorMessage": null,
"headerInfo": {
"toc": [
{
"level": 1,
"text": "React Developer Roadmap",
"anchor": "react-developer-roadmap",
"htmlText": "React Developer Roadmap"
},
{
"level": 2,
"text": "Disclaimer",
"anchor": "disclaimer",
"htmlText": "Disclaimer"
},
{
"level": 2,
"text": "Roadmap",
"anchor": "roadmap",
"htmlText": "Roadmap"
},
{
"level": 2,
"text": "Resources",
"anchor": "resources",
"htmlText": "Resources"
},
{
"level": 2,
"text": "Wrap Up",
"anchor": "wrap-up",
"htmlText": "Wrap Up"
},
{
"level": 2,
"text": "Contribution",
"anchor": "contribution",
"htmlText": "Contribution"
},
{
"level": 2,
"text": "License",
"anchor": "license",
"htmlText": "License"
}
],
"siteNavLoginPath": "/login?return_to=https%3A%2F%2Fgithub.com%2Fadam-golab%2Freact-developer-roadmap"
}
},
{
"displayName": "LICENSE",
"repoName": "react-developer-roadmap",
"refName": "master",
"path": "LICENSE",
"preferredFileType": "license",
"tabName": "License",
"richText": null,
"loaded": false,
"timedOut": false,
"errorMessage": null,
"headerInfo": {
"toc": null,
"siteNavLoginPath": "/login?return_to=https%3A%2F%2Fgithub.com%2Fadam-golab%2Freact-developer-roadmap"
}
}
],
"overviewFilesProcessingTime": 0
}
},
"appPayload": {
"helpUrl": "https://docs.github.com",
"findFileWorkerPath": "/assets-cdn/worker/find-file-worker-1583894afd38.js",
"findInFileWorkerPath": "/assets-cdn/worker/find-in-file-worker-3a63a487027b.js",
"githubDevUrl": null,
"enabled_features": {
"code_nav_ui_events": false,
"overview_shared_code_dropdown_button": false,
"react_blob_overlay": false,
"copilot_conversational_ux_embedding_update": false,
"copilot_smell_icebreaker_ux": true,
"copilot_workspace": false
}
}
}
}
{
"accept-ranges": "bytes",
"cache-control": "max-age=0, private, must-revalidate",
"content-encoding": "gzip",
"content-security-policy": "default-src 'none'; base-uri 'self'; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com api.githubcopilot.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com/v1/engines/github-completion/completions proxy.enterprise.githubcopilot.com/v1/engines/github-completion/completions *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/",
"content-type": "text/html; charset=utf-8",
"date": "Sat, 27 Jul 2024 02:57:40 GMT",
"etag": "2c01780de6c18b73f500d9e69f8199e9",
"referrer-policy": "no-referrer-when-downgrade",
"server": "GitHub.com",
"set-cookie": "logged_in=no; Path=/; Domain=github.com; Expires=Sun, 27 Jul 2025 02:57:40 GMT; HttpOnly; Secure; SameSite=Lax",
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"transfer-encoding": "chunked",
"vary": "X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With",
"x-content-type-options": "nosniff",
"x-frame-options": "deny",
"x-github-request-id": "B6BC:136572:2047F34:2B4017F:66A46224",
"x-xss-protection": "0"
}