Unyrise TechUNYRISE TECH
Explore all articles
React
18 min read

The Complete Frontend Package Guide: What Every Tool in a Modern React Stack Actually Does

We built a production React + Vite frontend with 25+ dependencies. Here's what every single package does, why we chose it, and what we'd replace it with.

Unyrise Team

Unyrise Team

2026-03-24

The Complete Frontend Package Guide: What Every Tool in a Modern React Stack Actually Does
When you scaffold a React + Vite project and install 20+ dependencies, do you actually know what each one does?

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.

Our stack at a glance
React 19 + Vite 7 · Redux Toolkit + RTK Query · Tailwind CSS v4 · GSAP + Motion + Lenis · Three.js + R3F + Drei · react-helmet-async + Puppeteer SSG
01

Core Runtime

reactRuntime

React 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-domRuntime

The 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 · Routing

Client-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.

// React Router v7 — data loader pattern
export async function loader({ params }) {
  return fetchBlogPost(params.slug);
}

export default function BlogPost() {
  const post = useLoaderData(); 
  return <article>{post.content}</article>;
}
02

Build Tooling

viteBuild Tool

Vite 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.

Vite 7 uses the new Environment API which allows running client and server code in the same Vite process.
@vitejs/plugin-reactPlugin

Adds JSX transform and Fast Refresh support to Vite. It uses SWC (Rust-based) by default for lightning-fast compilation times during development.

03

Styling

tailwindcssv4 · Styling

Tailwind is a utility-first CSS framework. V4 moves configuration entirely into your CSS file using CSS variables and @theme blocks.

/* Tailwind v4 config — in your CSS file */
@import "tailwindcss";

@theme {
  --color-brand: #06b6d4;
  --font-display: "Syne", sans-serif;
  --radius-xl: 1rem;
}
@tailwindcss/vitePlugin

Dedicated Vite plugin for Tailwind v4. It integrates directly into the build pipeline, making PostCSS configuration unnecessary and build times significantly faster.

04

State & Data

The separation of state
There are two fundamentally different kinds of state — client stateand server state. We use Redux Toolkit for client state and RTK Query for everything related to fetching and caching.
@reduxjs/toolkitState

The official, opinionated way to write Redux. It replaces the old boilerplate-heavy patterns with a clean, focused API.

const authSlice = createSlice({
  name: 'auth',
  initialState: { user: null },
  reducers: {
    logout: (state) => { state.user = null; },
  }
});
RTK QueryData Fetching

A powerful data fetching and caching tool. It eliminates the need for manual useEffect fetching and loading state management.

// Use auto-generated hooks
const { data, isLoading } = useGetBlogsQuery();
05

Animation

gsapAnimation

The industry standard for complex web animations and timelines. Perfect for orchestrating multi-step sequences that require absolute precision.

motionDeclarative

Declarative animation library for React. Excellent for layout transitions, gestures like drag/hover, and simple entrance effects.

lenisSmooth scroll

Adds buttery-smooth scrolling to the browser. It integrates perfectly with GSAP ScrollTrigger for premium scroll experiences.

06

3D / WebGL

three3D Engine

The bedrock of 3D on the web. It handles the complex WebGL math and GPU calls through an intuitive JavaScript API.

react-three-fiberReact for Three

A React renderer for Three.js. It allows you to build 3D scenes using JSX components instead of imperative manual code.

dreiHelpers

A vast library of helpers for R3F — from camera controls to complex shader materials and environment maps.

07

SEO & Deployment

react-helmet-asyncSEO

Lets you manage your document head tags dynamically within React. Essential for per-page SEO titles and meta descriptions.

puppeteerSSG

Used in our build pipeline to pre-render our React pages into static HTML, ensuring maximum search engine visibility and performance.

08

Icons & Utilities

lucide-reactIcons

Clean, 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.

CategoryOursStartupEnterpriseRecommend
Build ToolViteViteWebpack 5 / TurbopackVite
StylingTailwind CSS v4Tailwind CSSCSS Modules / EmotionTailwind CSS
State (Client)Redux ToolkitZustandRedux ToolkitZustand for small, RTK for large
State (Server)RTK QueryTanStack QueryRTK Query / ApolloTanStack Query
AnimationGSAP + MotionMotion (Framer)GSAPBoth — different jobs
3D / WebGLThree.js + R3FSpline embedThree.js + R3FR3F + Drei
SEOHelmet + Puppeteer SSGNext.js / AstroNext.jsNext.js if content-heavy
IconsLucide + React IconsLucideCustom SVG systemLucide
RoutingReact Router v7React Router / TanStack RouterReact RouterTanStack 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.

Subscribe to our newsletter

Get the latest insights on engineering, design, and company updates delivered directly to your inbox. No spam.

More Articles

See All