React95
React95 is a React component library that recreates the Windows 95 user interface aesthetic with modern, themeable components built on styled-components. It provides classic widgets like menus, windows, buttons, and separators for building retro-styled web apps.
MITPermissive — free to use in commercial and proprietary software, with attribution.View license →
Production readiness
4/5- Actively maintainedNo commits in over a year
- No known vulnerabilitiesNo OSV advisories
- Clear, usable licenseMIT (permissive)
- Proven adoptionWidely used
- Has documentationDocumentation indexed
npm install react95Our analysis
A themeable React UI component library that faithfully reimagines the Windows 95 look and feel, built with styled-components and shipped with TypeScript types, fonts, and multiple themes.
When to use React95
Use it for nostalgia-driven portfolios, creative/marketing sites, hackathon projects, or any app where a distinctive retro desktop aesthetic is a feature rather than a drawback. The Storybook gallery and ThemeProvider setup make it quick to drop in.
When not to
Avoid it for conventional business/SaaS products or apps requiring modern accessibility-first, WCAG-compliant components — the deliberately dated visuals and limited component palette won't cover complex UI needs. Reach for Material UI, Chakra, or Radix-based libraries instead.
Strengths
- Highly polished, authentic Win95 recreation with attention to pixel-level detail
- Theme system via styled-components ThemeProvider lets you swap palettes (original and others)
- TypeScript support and a published Storybook for browsing components
- Bundles original fonts and a style reset for easy setup
- Has a React Native counterpart for cross-platform retro UIs
Trade-offs
- Niche aesthetic limits applicability to mainstream products
- Component set is smaller than full-featured design systems; lacks many modern widgets
- Hard dependency on styled-components, which adds runtime CSS-in-JS cost and is now a less-favored approach
- Accessibility was not a priority of 90s UI paradigms it emulates
- Maintenance is community/donation-driven around a small team
Maturity
Mature and popular (7k+ stars) with a dedicated community, Slack, sponsorship channels, and an active ecosystem including native and demo apps, though development pace and contributor base are modest and largely volunteer-funded.

Support
Getting Started
First, install component library and styled-components in your project directory:
# yarn
$ yarn add react95 styled-components
# npm
$ npm install react95 styled-components
Apply style reset, wrap your app with ThemeProvider with theme of your choice... and you are ready to go! 🚀
import React from 'react';
import { createGlobalStyle, ThemeProvider } from 'styled-components';
import { MenuList, MenuListItem, Separator, styleReset } from 'react95';
// pick a theme of your choice
import original from 'react95/dist/themes/original';
// original Windows95 font (optionally)
import ms_sans_serif from 'react95/dist/fonts/ms_sans_serif.woff2';
import ms_sans_serif_bold from 'react95/dist/fonts/ms_sans_serif_bold.woff2';
const GlobalStyles = createGlobalStyle`
${styleReset}
@font-face {
font-family: 'ms_sans_serif';
src: url('${ms_sans_serif}') format('woff2');
font-weight: 400;
font-style: normal
}
@font-face {
font-family: 'ms_sans_serif';
src: url('${ms_sans_serif_bold}') format('woff2');
font-weight: bold;
font-style: normal
}
body {
font-family: 'ms_sans_serif';
}
`;
const App = () => (
<div>
<GlobalStyles />
<ThemeProvider theme={original}>
<MenuList>
<MenuListItem>🎤 Sing</MenuListItem>
<MenuListItem>💃🏻 Dance</MenuListItem>
<Separator />
<MenuListItem disabled>😴 Sleep</MenuListItem>
</MenuList>
</ThemeProvider>
</div>
);
export default App;
Submit your project
Apps built with React95 will be featured on the official React95 website 🤟🏻
Contributing
Any help from UI / UX designers would be EXTREMELY appreciated. The challenge is to come up with new component designs / layouts that are broadly used in modern UIs, that weren't present back in 95.
If you want to help with the project, feel free to open pull requests and submit issues or component proposals. Let's bring this UI back to life ♥️