v0.1 · open source · MIT
The 404
component library.
A small, opinionated set of handcrafted not-found pages for React, Vue, and Vanilla JS. Drop one in, theme it, ship it. No purple-gradient clichés, no AI-slop.
- Templates
- 4 / growing
- Frameworks
- 3
- Bundle (gzip)
- ~6 kB
Featured · Apollo404
running- Templates
- 4 / growing
- Frameworks
- 3
- Bundle (gzip)
- ~6 kB
fig. 01 — Apollo 404, rendered live
01 — what you get
Library-grade ergonomics. Without the ceremony.
Drop-in components
One import per template. Sensible props. No setup wizards, no providers, no ‘just install these 12 packages first’.
React · Vue · Vanilla
Three first-class entry points. Same prop API, same behavior, same bundle budget. Pick the one you ship.
Tree-shakeable ESM
Subpath imports per framework. Only the template you use lands in your bundle — typically under 6 kB gzipped.
Accessible by default
Real headings, focusable controls, prefers-reduced-motion respected, screen-reader-friendly status messages.
Themeable via tokens
Each template exposes CSS variables for color, type, and timing. Override one value, restyle the whole template.
Easter eggs included
Every template ships with small ungated delights — a key combo, a click sequence, a hidden console message.
02 — the catalogue
Four shipping today. More on the bench.
Aurora 404
Slow gradient sweep · low-poly mountains
03 — quick start
Three steps. Three frameworks.
Install once. Import the template you want. Hand it to your router's 404 boundary. That's it.
- 01
Install
npm i @kripa006/404-ui - 02
Import
Pull a template from the framework subpath that matches your stack.
- 03
Ship
Render it from your router's catch-all route. Theme via CSS variables.
$ npm i @kripa006/404-ui Or — pnpm add @kripa006/404-ui · yarn add @kripa006/404-ui
// 1. Import
import { Space404 } from "@kripa006/404-ui/react";
import "@kripa006/404-ui/styles.css";
// 2. Render it
export default function NotFoundPage() {
return (
<Space404
title="404"
headline="OFF-NOMINAL TRAJECTORY DETECTED"
subtitle="The page you requested drifted outside the envelope."
buttonText="RE-VECTOR TO BASE"
missionId="APOLLO · LM-404"
onButtonClick={() => (window.location.href = "/")}
/>
);
} 04 — the thinking
A 404 is the last page a user ever asks for. Make it count.
Design-forward
Each template has a point of view. No generic purple gradients. No stock emoji astronauts.
Framework-honest
React, Vue, and Vanilla get first-class treatment. Same API surface, same behavior, same bundle budget.
Hidden delights
Every template ships with small, ungated easter eggs. Reward the users who linger — they're the ones who remember.
Ship it
Your next 404 is one import away.
Four templates today. More on the way. Open an issue if you want one specific to your app — contributions welcome.