Most developers install packages because a tutorial said so, a colleague recommended it, or it solves a specific error — and never revisit the decision. This Guide explores the intentionality behind our frontend stack.
We built the frontend for Unyrise Tech with this exact stack. Every package was a deliberate choice. This is the guide we wish existed when we were making those choices — what each tool does, why it exists, and critically, what we'd swap out if we started today.
Core Runtime
reactRuntimeReact is a JavaScript library for building user interfaces through components — reusable, self-contained pieces of UI that manage their own state and render based on data.
Under the hood, React maintains a Virtual DOM — a lightweight in-memory representation of the actual DOM. When state changes, React diffs the old virtual tree against the new one and applies only the minimal set of real DOM operations needed.
react-domRuntimeThe browser renderer for React. It handles the heavy lifting of talking to the DOM. This separation allows React to be used on any platform, while react-dom stays specialized for the web environment.
react-router-domv7 · RoutingClient-side routing for React. Without it, every URL change would trigger a full page reload. React Router intercepts navigation, renders the matching component, and updates the browser's history — all without leaving the page.
Build Tooling
viteBuild ToolVite is a build tool and development server. Its key innovation: it doesn't bundle your code during development. Instead, it serves files as native ES Modules over HTTP.
@vitejs/plugin-reactPluginAdds JSX transform and Fast Refresh support to Vite. It uses SWC (Rust-based) by default for lightning-fast compilation times during development.
Styling
tailwindcssv4 · StylingTailwind is a utility-first CSS framework. V4 moves configuration entirely into your CSS file using CSS variables and @theme blocks.
@tailwindcss/vitePluginDedicated Vite plugin for Tailwind v4. It integrates directly into the build pipeline, making PostCSS configuration unnecessary and build times significantly faster.
State & Data
@reduxjs/toolkitStateThe official, opinionated way to write Redux. It replaces the old boilerplate-heavy patterns with a clean, focused API.
RTK QueryData FetchingA powerful data fetching and caching tool. It eliminates the need for manual useEffect fetching and loading state management.
Animation
gsapAnimationThe industry standard for complex web animations and timelines. Perfect for orchestrating multi-step sequences that require absolute precision.
motionDeclarativeDeclarative animation library for React. Excellent for layout transitions, gestures like drag/hover, and simple entrance effects.
lenisSmooth scrollAdds buttery-smooth scrolling to the browser. It integrates perfectly with GSAP ScrollTrigger for premium scroll experiences.
3D / WebGL
three3D EngineThe bedrock of 3D on the web. It handles the complex WebGL math and GPU calls through an intuitive JavaScript API.
react-three-fiberReact for ThreeA React renderer for Three.js. It allows you to build 3D scenes using JSX components instead of imperative manual code.
dreiHelpersA vast library of helpers for R3F — from camera controls to complex shader materials and environment maps.
SEO & Deployment
react-helmet-asyncSEOLets you manage your document head tags dynamically within React. Essential for per-page SEO titles and meta descriptions.
puppeteerSSGUsed in our build pipeline to pre-render our React pages into static HTML, ensuring maximum search engine visibility and performance.
Icons & Utilities
lucide-reactIconsClean, consistent, and tree-shakeable SVG icons. Every icon is a React component, making styling and integration seamless.
Industry Alternatives
The technology landscape evolves quickly. Here's what we see being used in Different environments today.
| Category | Ours | Startup | Enterprise | Recommend |
|---|---|---|---|---|
| Build Tool | Vite | Vite | Webpack 5 / Turbopack | Vite |
| Styling | Tailwind CSS v4 | Tailwind CSS | CSS Modules / Emotion | Tailwind CSS |
| State (Client) | Redux Toolkit | Zustand | Redux Toolkit | Zustand for small, RTK for large |
| State (Server) | RTK Query | TanStack Query | RTK Query / Apollo | TanStack Query |
| Animation | GSAP + Motion | Motion (Framer) | GSAP | Both — different jobs |
| 3D / WebGL | Three.js + R3F | Spline embed | Three.js + R3F | R3F + Drei |
| SEO | Helmet + Puppeteer SSG | Next.js / Astro | Next.js | Next.js if content-heavy |
| Icons | Lucide + React Icons | Lucide | Custom SVG system | Lucide |
| Routing | React Router v7 | React Router / TanStack Router | React Router | TanStack Router for new projects |
The Bottom Line
No package in this stack is there by accident. Every choice has a reason, every reason has a trade-off. The goal isn't to use every tool available — it's to pick one thing per category, understand it deeply, and build something real with it.
If you're starting a new project today: use Vite + Tailwind v4 without question, reach for Zustand before Redux if your state is simple, use TanStack Query instead of RTK Query if you're not committed to Redux, and don't add 3D unless it genuinely serves your users.
We're building Unyrise Tech with this stack. Follow our blog as we publish more on state management, rendering strategies, and what big tech companies actually use internally.

