React95: Windows 95 Components for React, Installed from npm
A React components library with Win95 UI
At a glance
- What is it?
- React95 is a React component library that reproduces the Windows 95 interface, split into core, icons, clippy, design and gatsby-theme packages. It is a styling choice for retro interfaces, not a general purpose design system, and its recent release activity sits in @react95/core.
- Who is it for?
- Adopt React95 when the Windows 95 look is the product: portfolios, retro demos, joke sites, a 95Recipes style app. Do not adopt it as a general purpose design system for a business application, because the visual language is fixed and the README documents no theming escape hatch.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 2, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What React95 actually solves, and for whom
React95 exists for one visual target: the Windows 95 user interface. The README states plainly that it is a component library inspired by the Windows 95 UI design. That sentence is also the scope. If you want a button that looks like a beveled 1995 button, a menu bar, a window frame or a taskbar, React95 gives you those as React components instead of a pile of hand written CSS. If you want a neutral component library you can restyle into your company palette, this is the wrong starting point, because the whole value is the fixed look.
The audience follows from that. The README lists real sites built with it: 95Recipes, several personal websites and portfolios, a wedding website, a base64 to PDF tool, and the Ideal Labs website. Those are small, self contained front ends where the retro desktop metaphor is the point rather than a skin over a data heavy app. The repository also carries a Figma design kit, so a designer can work in the same visual language before an engineer writes a component. The project describes itself as a Fun side project of the year award winner, which tells you how the maintainers frame it: a serious library, but born from affection for an old operating system.
The package split: core, icons, clippy, design and gatsby-theme
React95 is not one package. The README presents a table of five, and the distinction matters when you decide what to install. @react95/core holds the components. @react95/icons holds the icon set. @react95/clippy is the animated assistant agent shown in the README as a GIF, a separate concern from layout components. @react95/design is the design kit. @react95/gatsby-theme is a Gatsby integration that lives in a different repository, React95/gatsby-theme, rather than in this one.
The monorepo is a Yarn workspace: the root package.json declares workspaces as packages/*, sets npmClient to yarn, and is marked private. The root devDependencies show the build and test stack, including nx 22.7.1, vitest, TypeScript 5.3.3, React 18 and eslint. Two scripts are worth knowing because they describe how the maintainers work. The dev script runs yarn nx storybook @react95/core, so Storybook is the development surface for the components. The dev:explorer script runs yarn workspace @react95/explorer develop, an explorer app inside the workspace.
The practical consequence of the split is that the icons do not arrive with the components. If you install only @react95/core and reference an icon, you are missing a package. The recent releases also show the split in action: @react95/[email protected], @react95/[email protected] and @react95/[email protected] were all published on 2026-09-02, the same day as the last push to master.
Installing @react95/core and rendering a first component
The README does not print an install command inline; the npm badge in the header points at the @react95/core package page, which is where the published package lives. Installation is therefore the ordinary npm route for a scoped package. Run it in your React project:
npm install @react95/coreIf you also want the icon set, install it separately, because the README treats it as its own package:
npm install @react95/iconsFrom there you import components from the package and render them like any other React component. The README shows the library in use through screenshots rather than a copy paste snippet, so the exact import path for a given component is something to confirm against the package's own documentation rather than guess from this page. What the README does confirm is the shape of the workflow: components from @react95/core, icons from @react95/icons, and a design kit in Figma if you want to draw the screens first.
If you would rather start from a scaffolded app, the project publishes two Create React App templates, @react95/cra-template and @react95/cra-template-typescript, both at version 0.2.4 as of 2026-09-02. Those are the fastest path to a running example, since they arrive with the wiring already done. They are also tied to Create React App, which is a narrower starting point than adding the package to an existing Vite or Next.js project.
Where React95 stops being the right tool
The limitation is the same fact as the strength. The components are built to look like Windows 95, and the README does not document a theming layer, a token system you can retarget, or a way to opt out of the beveled borders and grey panels. If your product needs a modern visual identity, you are fighting the library on every screen. That is not a defect; it is what the library is for.
A second constraint is the release surface. The packages are versioned independently, and the recent releases show @react95/core at 9.x while the two CRA templates sit at 0.2.x. Mixing a template and a core version, or assuming the icons track core's version number, is a reasonable way to end up with mismatched pieces. Pin what you install.
A third point is maintenance, stated factually rather than as a judgement: the last push to master was on 2026-09-02, and the most recent releases carry the same date. The repository is not archived. Beyond that, the README does not document a support policy, a deprecation window or a rollback procedure, so anyone depending on this in production should read the release notes for each package rather than assume a cadence.
Finally, consider the audience of the metaphor. A Windows 95 desktop is charming on a portfolio and confusing on a checkout flow. Users who never used the original operating system read the bevels as decoration, not as affordance, and the visual cues that make the library fun do not carry the meaning they carried in 1995.
React95 against shadcn/ui and the Windows 98 lookalikes
The natural comparison is shadcn/ui, which appears in the related searches as Shadcn windows 95, and the comparison is instructive because the two take opposite approaches. shadcn/ui copies component source into your repository so you own and edit it, and its default styling is neutral and meant to be themed. React95 ships as an npm dependency with an opinionated retro appearance and no documented theming layer. With shadcn/ui you spend time building the 95 look yourself, but you keep full control of the markup. With React95 you get the look immediately and accept the library's decisions.
The other cluster of searches is about Windows 98 in React. React95 is a Windows 95 library; the README makes no claim about Windows 98 support or a separate 98 theme. Anyone searching for a Windows 98 component set should treat React95 as a starting point and verify what it actually renders before assuming the later shell is covered. The same caution applies to searches for React95 Windows 7: nothing in the README describes a Windows 7 mode. The library targets one era.
If your goal is a full desktop environment rather than components, note that React95 gives you the pieces, not the window manager. The README's own examples are websites that use the components to build an interface, not virtual machines. For emulating an entire operating system in the browser, a components library is the wrong layer.
Licence and the cost of keeping up
The repository metadata reports the licence as NOASSERTION, which means the automated classifier could not map the LICENSE file at the repository root to a known identifier. The README does not state a licence either. Before shipping anything built on React95, open that LICENSE file and read it, and if the terms matter to your organisation, get them reviewed properly rather than inferring from the project's friendly tone. This is a factual gap, not a warning about the maintainers.
Upgrade cost is shaped by the package split. Because @react95/core, @react95/icons, @react95/clippy and the two CRA templates are published independently, an upgrade is per package, and the version numbers do not move together. A CRA template at 0.2.4 and a core at 9.8.4 are not evidence of a problem; they are separate products with separate release histories. Pin exact versions in your lockfile and read the release notes for the package you are bumping.
The monorepo tooling is another cost if you contribute rather than consume. The root package.json shows nx, vitest, husky, commitizen and an eslint setup, and the README points contributors at CONTRIBUTING.md. That is a normal modern monorepo, but it is not a five minute setup, and the Storybook based dev script means component work happens through Storybook rather than a standalone demo app. The Gatsby theme is maintained in a separate repository, so a fix there is not a fix here.
Editorial conclusion
Adopt React95 when the Windows 95 look is the product: portfolios, retro demos, joke sites, a 95Recipes style app. Do not adopt it as a general purpose design system for a business application, because the visual language is fixed and the README documents no theming escape hatch. Before committing, check the LICENSE file at the repository root, confirm which of the five packages you actually need, and verify that @react95/core on npm matches the version you plan to pin.
Frequently asked questions
How do I install React95 in a React project?
Install the package you need from npm, for example npm install @react95/core for the components and npm install @react95/icons for the icon set, since the README presents them as separate packages. The project also publishes @react95/cra-template and @react95/cra-template-typescript if you want a scaffolded starting point.
Is React95 the same as a Windows 98 or Windows 7 component library?
No. The README describes React95 as a component library inspired by the Windows 95 UI design, and it does not document a Windows 98 or Windows 7 theme. Treat it as a single era library.
What is the difference between React95 and shadcn/ui?
React95 ships as npm packages with a fixed Windows 95 appearance, while shadcn/ui is a copy in component approach with neutral default styling meant to be themed. The README does not document a theming layer for React95, so the retro look is the point rather than a starting point.
Can I use React95 on Windows 11?
React95 is a browser side React component library, so the operating system you develop on is not part of its requirements. Nothing in the README ties the library to a specific host OS.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/react95-react95)