~mid-2025 data
Front-End JavaScript Reference

The State of JS Libraries
in 2025

80+ libraries researched across 5 categories. All data is approximately mid-2025. Verify live stats at npmjs.com before making decisions.

By the Numbers
📦
80+
Libraries Covered
🗂️
5
Categories
⬇️
~200M
Combined Weekly npm Downloads
~1.4M
Combined GitHub Stars
Category Highlights
🏗️ Frameworks
15 libs
React 19 Compiler, Svelte 5 Runes, Vue 3.5 lazy hydration, Next.js 15 Turbopack stable, React Router v7 = Remix merger.
React ~27M/wk Next.js ~8.5M/wk
🧩 UI Components
20 libs
shadcn/ui copy-paste model dominates. Radix UI drives 20M+ downloads invisibly. Zero-runtime CSS replacing Emotion/styled-components.
MUI ~5M/wk DaisyUI ~1.8M/wk
🎨 CSS & Animation
16 libs
Tailwind v4 Oxide engine rewrites the game. GSAP went fully free. Framer Motion rebranded to motion. Anime.js v4 full ESM rewrite.
Tailwind ~11M/wk Motion ~4.5M/wk
🔄 State & Data
16 libs
Zustand v5 overtakes Redux in new projects. TanStack Query v5 major API changes. Recoil effectively dead — migrate to Jotai. tRPC surging.
RTK ~10M/wk Zustand ~5.5M/wk
🔧 Build & Utils
22 libs
Every new build tool is written in Rust/Go. Vite v6 Environment API. Rolldown is Vite's future bundler. Zod at 30M/wk. Biome replaces ESLint+Prettier.
esbuild ~78M/wk Zod ~30M/wk
🚨 Watch Out
Deprecated
Avoid for new projects: Recoil (use Jotai), Stitches (use Panda CSS), Moment.js (use date-fns / Luxon / Temporal).
Recoil: stalled Stitches: unmaintained
10 Defining Trends
01

Compilers Over Runtimes

React Compiler, Svelte 5 Runes, Vue Vapor, Million.js — compile-time optimization eliminates manual useMemo/useCallback. The framework does the work, not the developer.

02

Signals Everywhere

Angular Signals, Solid Signals, Svelte Runes, Vue Reactivity — fine-grained reactive primitives now dominate every major framework as an alternative to VDOM diffing.

03

Zero-Runtime CSS Wins

Runtime CSS-in-JS (Emotion, styled-components) is incompatible with React Server Components. Tailwind v4, vanilla-extract, Panda CSS, StyleX all generate static CSS at build time.

04

The Rust Toolchain is Complete

Turbopack, Rolldown, Rspack, Parcel core, Biome, Oxc — the entire build pipeline has been rewritten in Rust/Go. JS tools persist through ecosystem lock-in only.

05

Vite is the Platform

Vite v6 Environment API makes it the connective tissue that frameworks build on — not just a dev server. Rolldown will give it a fully Rust-native pipeline end-to-end.

06

Server/Client Blur

RSC, Server Actions, Astro Actions, TanStack Server Functions, Qwik resumability — the server/client boundary is managed by frameworks, not manually by developers.

07

The shadcn/ui Effect

Copy-paste over npm install went mainstream. AI coding tools (Cursor, v0.dev, Copilot) accelerate this — they generate components that the team owns and can modify freely.

08

Temporal API is Inevitable

Every date library author points to it as the successor to Date. Native V8/SpiderMonkey implementations were in active progress. Polyfill is production-ready today.

09

GSAP Went Free

The biggest animation story of 2024 — ScrollTrigger, SplitText, MorphSVG all became free for commercial use. GSAP 4.0 in beta. npm downloads surged significantly.

10

TypeScript Type Safety as Moat

TanStack Router/Form, tRPC, Conform — the new generation competes on how deeply types flow from database to UI without codegen. Zod at 30M downloads/week tells the story.

UI / Component Frameworks
React
v19.1
Meta's UI library. v19 brings the React Compiler (auto-memoization), Actions for async mutations, and Server Actions stable.
★ 230K ~27M/wk Active
Vue
v3.5
v3.5 "Tengen Toppa" adds reactive props destructure, lazy hydration strategies, useTemplateRef(), 56% memory reduction.
★ 47K ~4.5M/wk Active
Svelte
v5
Complete Runes rewrite. $state(), $derived(), $effect(), $props() replace implicit reactivity. Runes work in .svelte.ts files.
★ 80K ~1.3M/wk Active
Angular
v19
Signals stable, signal-based component APIs (input(), output()), new @if/@for control flow, deferrable views (@defer), Vite-powered dev server.
★ 96K ~3.8M/wk Active
Solid.js
v1.9
JSX with fine-grained DOM reactivity — no virtual DOM, components run once. Near-perfect benchmark scores. SolidStart 1.0 meta-framework stable.
★ 32K ~250K/wk Active
Lit
v3.2
Builds on native Web Components. ~5KB, framework-agnostic. v3 targets modern browsers, adds @lit/context, @lit/task, TC39 standard decorators.
★ 18K ~1.7M/wk Active
htmx
v2.0
Extends HTML with hx-get, hx-post, hx-swap. Server sends HTML fragments. Zero build step. Perfect for Django, Rails, Laravel backends.
★ 40K ~450K/wk Active
Alpine.js
v3.14
Declarative reactivity via HTML attributes. ~15KB, no build step. x-data, x-bind, x-on, x-teleport. Natural Laravel/Livewire pairing.
★ 28K ~375K/wk Active
Qwik
v1.9
Resumability instead of hydration. Serializes app state into HTML, resumes on interaction. Near-instant TTI regardless of app size. QwikCity for routing/SSR.
★ 21K ~125K/wk Active
React 19 — Key Changes

🤖 React Compiler

  • Auto-memoizes components and values at build time
  • useMemo, useCallback, memo() largely no longer needed
  • Babel/Vite plugin rewrites your code at compile time
  • Opt-in per file or globally

⚡ Actions API

  • useActionState — manage async mutation state
  • useFormStatus — pending/error/data from parent form
  • useOptimistic — optimistic UI without libraries
  • Server Actions stable — call server functions from client components

🪝 New Hooks & APIs

  • use(promise) — read a Promise inside render with Suspense
  • ref as a plain prop — no more forwardRef wrapper
  • Native <title>, <meta>, <link> hoisting — no react-helmet
  • preload(), preinit() resource hint APIs

🌊 Svelte 5 Runes

  • $state() — explicit reactive state
  • $derived() — computed values
  • $effect() — side effects
  • $props() / $bindable() — replaces export let
  • Runes work in .svelte.js — reactive logic outside components
  • {#snippet} / {@render} replaces slots
Meta-Frameworks
FrameworkVersionStarsDownloads/wkStackBest For
Next.js15.x~127K~8.5MReactRSC, SSR/SSG, e-commerce, Vercel
React Router v77.1.x~53K~15MReactRemix merger — library + framework modes
Nuxt 33.12.x~55K~1.7MVueVue SSR/SSG, full-stack Vue
Astro5.x~46K~900KAnyContent sites, islands architecture
SvelteKit2.x~19K~650KSvelteFull-stack Svelte, flexible deploy
TanStack Start1.x~6K~100KReact100% type-safe full-stack React
Qwik (QwikCity)1.9.x~21K~125KQwikResumability, instant TTI, e-commerce
Meta-Framework Highlights

⚡ Next.js 15

  • Turbopack dev stable — ~40–60% faster than Webpack
  • fetch() uncached by default (reversed v14 behavior)
  • after() — run code after response sent
  • connection() — explicit dynamic rendering opt-in
  • Full React 19 support

🌌 Astro 5

  • Content Layer API — loader-based, replaces Content Collections
  • Server Islands — static pages with server-rendered slots
  • Astro DB — first-party LibSQL/Turso database
  • Astro Actions — type-safe server functions with Zod
  • astro:env — typed environment variables

🔀 React Router v7

  • Remix v2 merged directly into React Router
  • Library mode (SPA) + Framework mode (SSR) in one package
  • Auto-generated TypeScript types for route data
  • SPA mode — client-only with file-based routing
  • Pre-rendering (SSG) via prerender config
Emerging Frameworks
Waku
0.21.x
Minimal RSC framework by the creator of Jotai/Zustand. Vite-based, learning-focused RSC primitive exposure.
★ 5KReact RSC
Analog.js
1.x
Angular's answer to Next.js — file-based routing, SSR/SSG, Vite-based, MDX support. Fills Angular's meta-framework gap.
★ 3KAngular
Million.js
3.x
Block-based VDOM drop-in for React. Compiler plugin rewrites components for 70% faster renders in benchmarks.
★ 16KReact Optimizer
Hono + HonoX
4.x
Ultra-fast edge-first web framework. HonoX adds file-based routing + JSX SSR. Cloudflare Workers / Bun native.
★ 20KEdge
ℹ️
The shadcn/ui EffectCopy-paste over npm install went mainstream. Libraries now compete on code quality and composability — developers own the code and modify it freely. AI tools like v0.dev and Cursor accelerate this model.
React — Styled Libraries
shadcn/ui
CLI v2.x
Copy-paste components built on Radix UI + Tailwind. You own the code. Registry system for community components.
★ 75K Copy-paste (no npm) Active
Material UI
v6.x
Google Material Design 3. v6 introduced Pigment CSS (zero-runtime) to replace Emotion. MUI X for advanced data grid, charts.
★ 93K ~5M/wk Active
Ant Design
v5.x
Enterprise-grade 80+ components. Design tokens with CSS variables. Strong in data-heavy admin UIs. Dominant in Asian enterprise market.
★ 92K ~1.8M/wk Active
Mantine
v7.x
100+ components + 50+ hooks. Dropped Emotion in v7 for CSS modules. Built-in form handling, notifications. Excellent DX.
★ 27K ~700K/wk Active
Chakra UI
v3.x
Rebuilt on Ark UI (state machine headless layer) + Panda CSS. Snippet system like shadcn/ui. v3 was a near-complete rewrite.
★ 38K ~800K/wk Active
PrimeReact
v10.x
90+ components including complex DataTable, TreeTable. Multiple themes + Theme Designer. PrimeTek ecosystem (Vue, Angular versions available).
★ 6.5K ~400K/wk Active
HeroUI
v2.x
Rebranded from NextUI (early 2025). Tailwind + React Aria for accessibility. Framer Motion animations built-in. Polished aesthetic for SaaS.
★ 22K ~350K/wk Active
React — Headless / Primitives
Radix UI
v1–2.x
The invisible backbone of shadcn/ui and dozens of other libraries. WAI-ARIA compliant. 20M+ combined downloads/week — understated influence.
★ 15K ~20M+/wk total Active
Headless UI
v2.x
By the Tailwind Labs team. Unstyled accessible components — Dialog, Combobox, Listbox, Menu, Popover, Tabs. Natural Tailwind CSS pairing.
★ 26K ~2M/wk Active
React Aria (Adobe)
v1.x
Gold standard for accessibility. Built-in i18n for 100+ locales, virtualization, WCAG 2.2 compliant. Powers Adobe's own products.
★ 12.5K ~2.5M/wk Active
TanStack Table
v8.x
Headless, framework-agnostic table. Sorting, filtering, grouping, pagination, virtualization. React, Vue, Solid, Svelte, Angular adapters.
★ 26K ~4.5M/wk Active
Ark UI
v3.x
State machine-based headless components (Zag.js). Powers Chakra UI v3. React, Vue, Solid adapters. 45+ components including Calendar, Color Picker.
★ 4K ~250K/wk Active
Vue Component Libraries
LibraryVersionStarsWeekly DLsNotes
Vuetifyv3.x~40K~800KMaterial Design, most complete Vue UI lib
PrimeVuev4.x~10K~550KUnstyled mode = competitive headless option
Element Plusv2.x~24K~550KDominant in Chinese enterprise Vue apps
Quasarv2.x~26K~300KCross-platform: web + mobile + Electron
Framework-Agnostic & CSS Kits
DaisyUI
v4.x
Tailwind plugin adding semantic component classes. 50+ components, 30+ built-in themes. Zero JS — pure CSS. Works with any framework.
★ 35K ~1.8M/wk Active
Flowbite
v2.x
Tailwind components with React/Vue/Svelte/Angular variants. Figma design kit. Flowbite Blocks: 400+ page sections. Pro tier available.
★ 8K ~350K/wk Active
🔥 Trending — Animation-Heavy Components

✨ Aceternity UI

  • Framer Motion + Tailwind + shadcn — copy-paste
  • Viral on social — hero sections, cards, backgrounds
  • Best for: marketing landing pages
  • Not utility — pure "wow factor" components

🪄 Magic UI

  • Animation-heavy shadcn registry extension
  • Animated counters, marquees, gradients, particles
  • Built on Framer Motion + Tailwind
  • Best for: SaaS product landing pages

📋 Origin UI

  • shadcn/ui extension focused on form components
  • Fills gaps in shadcn's form coverage
  • Radix UI + Tailwind CSS
  • Fast growing: 5K+ stars by mid-2025
⚠️
Runtime CSS-in-JS is in declineEmotion and styled-components are incompatible with React Server Components (RSC) — they require context and runtime injection. Both are in maintenance mode. For new projects, use Tailwind v4, vanilla-extract, or Panda CSS.
Styling Libraries
Tailwind CSS
v4.0
Complete rewrite using Oxide (Rust) engine. CSS-first config via @theme block. Zero config files. Lightning CSS bundled. Vite plugin first-class.
★ 84K ~11M/wk Active
vanilla-extract
~1.16
Zero-runtime CSS-in-TypeScript. Write styles in .css.ts files — extracted at build time. Full type safety, scoped class names. Sprinkles for atomic utilities.
★ 10K ~1.3M/wk Active
UnoCSS
~0.63
Atomic CSS engine with preset system. Attributify mode, pure CSS icons. Tailwind v4 compat preset added in 2025. Popular in Vue/Nuxt ecosystem.
★ 16K ~700K/wk Active
Panda CSS
~0.47
Build-time CSS with design tokens. Type-safe css(), cva(), styled() APIs compile to zero-runtime atomic CSS. Works with any framework.
★ 4.5K ~175K/wk Active
StyleX
~0.9
Meta's zero-runtime atomic CSS-in-JS. Compile-time extraction. Deterministic style merging (later styles always win). Powers facebook.com & instagram.com.
★ 8.5K ~70K/wk Active
Emotion
11.13.x
Runtime CSS-in-JS. High download count is driven by MUI dependency, not organic new adoption. RSC incompatible. In maintenance mode.
★ 17.5K ~11M/wk Maintenance
styled-components
6.1.x
Template literal CSS-in-JS. High downloads from legacy codebases. RSC incompatible due to runtime context injection. No major v7 planned.
★ 40K ~9M/wk Maintenance
Stitches
1.2.8
Last release was 2022. WorkOS team has stated it is not being maintained. Migrate to Panda CSS or vanilla-extract for new projects.
★ 7.8K ~230K/wk ⚠️ Unmaintained
Tailwind v4 — What Changed

🦀 Oxide Engine (Rust)

  • Complete rewrite using Rust — dramatically faster builds
  • Automatic content detection — no content array in config
  • Lightning CSS bundled for transforms and vendor prefixes
  • @import inlining built in, no separate PostCSS config

🎨 CSS-First Configuration

  • Design tokens live in @theme { } block in CSS
  • tailwind.config.js no longer needed for most cases
  • All tokens exposed as CSS custom properties by default
  • @tailwindcss/vite plugin ships as first-class integration
Animation Libraries
Motion (Framer)
v11.x
Rebranded from framer-motion to motion. Sub-paths: motion/react, motion/vue, motion/mini. Layout animations, scroll-linked, gestures.
★ 23K ~4.5M/wk Active
GSAP 3
3.12.x
Industry-standard animation engine. All plugins (ScrollTrigger, SplitText, MorphSVG, Flip) went FREE in 2024. GSAP 4.0 in beta with modernized API.
★ 20K ~1.7M/wk 🆓 Now Free
Anime.js
v4.0
Full ESM rewrite. New: scroll animations, Draggable, Timer/Ticker. Scopes for managing animations. v3 → v4 has breaking changes but is far more capable.
★ 50K ~600K/wk Active
Lottie / dotLottie
5.12.x
Renders After Effects animations. dotLottie (new binary format) is ~10x smaller than JSON. WASM-powered renderer in @lottiefiles/dotlottie-web.
★ 30K ~2.8M/wk Active
React Spring
9.7.x
Physics-based spring animations. useSpring, useSprings, useTrail, useTransition. React Native + React Three Fiber support.
★ 28K ~700K/wk Active
AutoAnimate
0.8.x
One-line add/remove/move animations. Attach a single ref to a parent — children animate automatically. ~2KB. React, Vue, Solid, Vanilla.
★ 13K ~175K/wk Active
Theatre.js
0.7.x
Visual keyframe editor (@theatre/studio) for complex orchestrated animations. Integrates with Three.js/R3F. Best for creative/3D web experiences.
★ 11K ~20K/wk Active
Animation Comparison
LibraryVersionStarsWeekly DLsBest ForFramework
Motion (Framer)11.x~23K~4.5MReact UI animations, layout, gesturesReact / Vue
GSAP 33.12.x~20K~1.7MComplex timelines, scroll effects (free!)Any
Anime.js4.0.x~50K~600KDOM/SVG/CSS animation, v4 scroll+dragAny
Lottie5.12.x~30K~2.8MAfter Effects renders, dotLottie formatAny
React Spring9.7.x~28K~700KPhysics springs, React Native, R3FReact
AutoAnimate0.8.x~13K~175KZero-config list/presence animationsAny
Theatre.js0.7.x~11K~20KVisual keyframe editor, 3D/WebGLAny
🚫
Recoil is effectively deadMeta has stopped active development. No v1.0 was ever released. Roadmap is stalled. Migrate to Jotai — it has the same atomic mental model but is actively maintained with a smaller footprint.
State Management
Redux Toolkit
2.5.x
Most-downloaded by volume (enterprise/legacy). createSlice, RTK Query, combineSlices for code-splitting, listener middleware. Immer v10 internally.
★ 10.5K ~10M/wk Active
Zustand
5.0.x
Best DX for new React projects. No provider needed. v5: requires React 18+, cleaner ESM/CJS, useShallow moved to separate import, improved slice pattern.
★ 47K ~5.5M/wk Active
Pinia
2.3.x
Official Vue state manager (replaced Vuex). Options + Composition API stores. Pinia 3 (preview) targets Vue Vapor — no virtual DOM, granular reactivity.
★ 13K ~3M/wk Active
Jotai
2.10.x
Atomic model — the active Recoil successor. ~3KB core. useAtomValue / useSetAtom for fine-grained re-renders. Rich utils ecosystem. Concurrent-safe.
★ 19K ~1.7M/wk Active
MobX
6.13.x
Observable-based reactive state. makeAutoObservable is idiomatic in v6. Proxy-based, no decorators required. mobx-react-lite for React. Great for domain models.
★ 27K ~1.7M/wk Active
XState
5.18.x
State machines + actor model. v5 is a major rewrite — actor-centric, setup() API, dramatically better TypeScript. Stately Studio visual editor.
★ 27K ~1.7M/wk Active
Valtio
2.1.x
Proxy-based mutable state — Immer-like ergonomics without Immer. useSnapshot for React. ~3KB. v2 requires React 18+, improved Map/Set/Date handling.
★ 9K ~800K/wk Active
Legend State
3.0.x
Observable + fine-grained reactivity. v3 rebuilt sync/persistence API (synced, syncedCrud). Supabase, Firebase, REST integrations. Best offline-first option.
★ 4K ~200K/wk Active
Nanostores
0.11.x
Framework-agnostic, ~265 bytes/store. atom, map, computed. Astro's official recommendation for cross-framework shared state in island architectures.
★ 4.5K ~325K/wk Active
Recoil
0.7.7
Meta's atomic state library — development has stopped. No v1.0 released. Community has migrated to Jotai. Do not start new projects with Recoil.
★ 19K ~500K/wk ⚠️ Dead
Data Fetching & Async
TanStack Query
v5.65
The standard for async server state. React, Vue, Solid, Svelte, Angular. v5 breaking: callbacks removed from useQuery, 'pending' replaces 'loading', useSuspenseQuery dedicated hook.
★ 43K ~7M/wk Active
SWR
2.3.x
Vercel's data fetching. Stale-While-Revalidate. v2 adds useSWRMutation, useSWRSubscription, preload API, optimistic UI built-in. ~4KB.
★ 30K ~3.5M/wk Active
tRPC
v11.1
End-to-end type safety between server and client — no codegen. v11: RSC server-side caller, @trpc/tanstack-react-query package. Default for Next.js + Prisma stacks.
★ 36K ~1.2M/wk Active
Apollo Client
3.12 / v4-preview
Full-featured GraphQL client. v4 preview: ESM-only, React 19 native, smaller bundle, createQueryPreloader for RSC. watchFragment + useFragment stable.
★ 19K ~3.5M/wk Active
urql
4.3.x
Lightweight, extensible GraphQL client. Exchange-based middleware. React, Vue, Svelte. v4: ESM-first, useSyncExternalStore, normalized cache via @urql/exchange-graphcache.
★ 8.5K ~500K/wk Active
Relay
18.x
Meta's compiler-based GraphQL client. Powers facebook.com. Rust compiler dramatically faster. Colocated fragments, normalized cache. RSC + streaming support.
★ 18.5K ~275K/wk Active
TanStack Query v5 — Breaking Changes

🚨 Removed from useQuery

  • onSuccess, onError, onSettled callbacks removed
  • Use useEffect or mutation callbacks instead
  • status: 'loading' renamed to status: 'pending'
  • keepPreviousData replaced with placeholderData={(prev) => prev}

✅ New in v5

  • useSuspenseQuery dedicated hook (replaces suspense option)
  • Simplified optimistic updates via variables on mutation
  • queryOptions() / mutationOptions() for reusable typed configs
  • Infinite queries require initialPageParam and getNextPageParam
🦀
The Rust Toolchain is CompleteTurbopack, Rolldown, Rspack, Parcel core, Biome, Oxc — every significant new build tool is written in Rust or Go. JavaScript tools persist through ecosystem lock-in only. The performance gap is 10–100x.
Build Tools & Bundlers
Vite
v6.2.x
The ecosystem hub. v6 Environment API enables SSR, edge, multi-runtime builds. ESM dev server, Rollup production builds, esbuild pre-bundling. Framework default everywhere.
★ 70K ~21M/wk Active
esbuild
0.23.x
Raw speed benchmark reference. 10–100x faster than Webpack. Used inside Vite for dep pre-bundling. Deliberately limited scope — no HMR, focused on pure build speed.
★ 38K ~78M/wk Active
Webpack 5
5.95.x
Still the most-downloaded bundler — legacy entrenchment. Module Federation (micro-frontends). Persistent filesystem cache. Broadest plugin/loader ecosystem.
★ 65K ~27M/wk Maintenance
Bun
1.2.x
All-in-one: runtime + bundler + package manager + test runner. Native TypeScript/JSX. Binary lockfile. 2–4x faster than Node. Cloudflare Workers support.
★ 75K ~2.5M/wk Active
Rspack
1.x
Webpack drop-in replacement in Rust. Battle-tested at ByteDance scale. Module Federation 2.0. Rsbuild is the higher-level tool on top. 5–10x faster than Webpack.
★ 10.5K ~1.7M/wk Active
Rolldown
0.13.x
Future production bundler inside Vite. Rollup-compatible API. Built on Oxc (Rust parser). 10–20x faster than Rollup. Pre-1.0 but being dogfooded in Vite nightly.
★ 10.5K ~75K/wk Pre-1.0
Parcel 2
2.13.x
Zero-config — point at an HTML file and it works. Parcel Macros for compile-time code execution. Content-hashed persistent cache. Best zero-config bundler.
★ 43K ~1.7M/wk Active
Biome
1.8.x
ESLint + Prettier replacement in one Rust binary. 200+ lint rules. Prettier-compatible formatter. 25–35x faster. JS/TS/JSX/CSS/JSON. Zero dependencies.
★ 16.5K ~3.5M/wk Active
Turbopack
Next.js 15
Rust incremental engine — recomputes only what changed. next dev --turbopack is stable. Up to 10x faster cold starts than Webpack. Next.js-only (not standalone).
★ 26K Via Next.js Active
Utility Libraries
es-toolkit
1.x
Modern Lodash replacement by Toss. es-toolkit/compat for drop-in Lodash migration. 97% smaller bundles per function. Precise TypeScript types. 2–3x faster than Lodash.
★ 7.5K ~2.5M/wk Active
Radash
12.1.x
TypeScript-first Lodash alternative. Key differentiator: async utilities — retry(3, fn), parallel(10, items, fn), series([fn1, fn2]). Readable, auditable source.
★ 4.7K ~600K/wk Active
date-fns
v3.6
Modular, tree-shakeable date utilities — 200+ pure functions. v3 is ESM-only. 80+ locales. date-fns-tz for timezone support. Most-downloaded date lib.
★ 35K ~19M/wk Active
Luxon
3.5.x
Wraps native Intl — no locale data to bundle. Immutable DateTimes. Unique Interval type. In maintenance mode — Temporal API is its successor.
★ 15K ~9M/wk Maintenance
Temporal API
TC39 Stage 3
Native JS — replaces Date entirely. Immutable, timezone-safe. ZonedDateTime, PlainDate, Duration. Polyfill: @js-temporal/polyfill. V8 implementation in progress.
★ 3.5K ~175K/wk (polyfill) Stage 3
Zod
v3.23
The ecosystem standard. Schema-as-source-of-truth. z.infer<typeof schema> gives TypeScript types from runtime schemas. Everywhere: tRPC, RHF, Drizzle, Next.js. v4 in beta: 100x faster.
★ 34K ~30M/wk Active
Valibot
0.35.x
Tree-shakeable — ~600 bytes per schema vs ~12KB for Zod. Functional pipe() API. Critical for edge functions where bundle size matters. Growing fast.
★ 6.5K ~2.5M/wk Active
ArkType
2.0.x
Schemas in TypeScript syntax strings with IDE IntelliSense. JIT-compiled validators. Significantly faster than Zod v3 on benchmarks. Unique but polarizing.
★ 5.5K ~600K/wk Active
Routing & Forms
LibraryVersionStarsWeekly DLsKey Differentiator
React Router v77.1.x~53K~15MRemix merger — library + SSR framework modes
TanStack Router1.x~8.5K~1.7M100% type-safe — params, search params, loaders all inferred
React Hook Form7.53.x~41K~11MUncontrolled inputs, minimal re-renders, resolver ecosystem
TanStack Form0.x~4.2K~300KFramework-agnostic, field-level type safety
Conform1.x~4.2K~400KProgressive enhancement — works without JS, Remix/RR7 native
Validation Comparison

🏆 Zod v3

  • 30M weekly downloads — ecosystem standard
  • z.infer<typeof schema> — TS types from runtime
  • Integrations everywhere: tRPC, RHF, Drizzle, Astro
  • v4 in beta: 100x faster parsing, 50% smaller bundle

⚡ Valibot

  • ~600 bytes per schema (vs ~12KB for Zod)
  • Tree-shakeable — only import what you use
  • Functional pipe(string(), email(), maxLength(50))
  • Best for edge functions and bundle-sensitive environments

🎯 ArkType

  • TypeScript syntax in strings: type({ age: "number > 0" })
  • IDE IntelliSense inside schema strings — unique
  • JIT-compiled: fastest raw validation of the three
  • Tradeoff: stringly-typed API is polarizing