Earlier, without exact, any URL starting with the concerned keyword would be loaded, as the matching process was done from top to down the route definitions. The now better, path matching algorithm, enables us to match a particular route match without the exact prop. With version 6, React Router has just become alot more awesome.
The component that should be rendered on matching a route can not be written as children of the Route component, but it takes a prop called element where we have to pass a JSX component for that to be rendered.
Now we use Routes to do the same thing instead of Switch. In the earlier version we could use Switch to wrap our routes. In v6, Switch in not exported from react-router-dom. So here are some of the changes you can make to upgrade an existing project from React Router v5 to v6. Not only that but the bundle size has been reduced by almost 58%. In V6, there has been a lot of under the hood changes, be it an enhanced path pattern matching algorithm or addition of new components. React Router runs anywhere React runs on the web, on the server with node.js, and on React Native.
React Router is a fully-featured client and server-side routing library for React, a JavaScript library for building user interfaces. React Router version 6 was released recently, and it is important for us to understand the changes as it is one of the most widely used react libraries out there.