# Migration from v0.x to v1
Yeah, v1 has been released! Take advantage of 2 years worth of effort.
## FAQ ### Woah - the API is way different! Does that mean 1.0 is completely different, I'll have to learn the basics all over again, and migrating will be practically impossible? I'm glad you asked! The answer is no. The core concepts haven't changed. You will notice that the API provides more flexibility, but this has a cost – lower-level components that abstract less complexity. ### What motivated such a large change? Material UI was started [4 years ago](https://github.com/mui/material-ui/commit/28b768913b75752ecf9b6bb32766e27c241dbc46). The ecosystem has evolved a lot since then, we have also learned a lot. [@nathanmarks](https://github.com/nathanmarks/) started an ambitious task, rebuilding Material UI from the **ground-up** taking advantage of this knowledge to address long-standing issues. To name some of the major changes: - New styling solution using CSS-in-JS (better [customization](/material-ui/customization/how-to-customize/) power, better performance) - New theme handling (nesting, self-supporting, etc.) - Blazing fast documentation thanks to [Next.js](https://github.com/vercel/next.js) - Way better [test coverage](/material-ui/guides/testing/) (99%+, run on all the major browsers, [visual regression tests](https://app.argos-ci.com/mui/material-ui/builds)) - Full [server-side rendering](/material-ui/guides/server-rendering/) support - Wide range of [supported browsers](/material-ui/getting-started/supported-platforms/) ### Where should I start in a migration? 1. Start by installing the v1.x version of Material UI along side the v0.x version. With yarn: ```bash yarn add material-ui yarn add @material-ui/core ``` Or with npm: ```bash npm install material-ui npm install @material-ui/core ``` then ```js import FlatButton from 'material-ui/FlatButton'; // v0.x import Button from '@material-ui/core/Button'; // v1.x ``` 2. Run [the migration helper](https://github.com/mui/material-ui/tree/master/packages/mui-codemod) on your project. 3. `MuiThemeProvider` is optional for v1.x., but if you have a custom theme, you are free to use v0.x and v1.x versions of the component at the same time, like this: ```jsx import * as React from 'react'; import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles'; // v1.x import { MuiThemeProvider as V0MuiThemeProvider } from 'material-ui'; import getMuiTheme from 'material-ui/styles/getMuiTheme'; const theme = createMuiTheme({ /* theme for v1.x */ }); const themeV0 = getMuiTheme({ /* theme for v0.x */ }); function App() { return (