naive-ui

Fairly complete Vue 3 UI component library — 90+ components with a TypeScript-first design and no dependency on legacy CSS frameworks.

naive-ui

Vue

Fairly complete Vue 3 UI component library — 90+ components with a TypeScript-first design and no dependency on legacy CSS frameworks.

Fit

Bundle (gzip)

421.7 kB

1.7 MB raw

Install size includes transitive dependencies. Bundle size is gzipped browser payload.

Freshness

The Problem

Finding a Vue 3 component library that is fully TypeScript-compatible, actively maintained, and doesn't require you to import a full CSS reset or fight specificity issues is surprisingly difficult.

What It Does

Naive UI provides 90+ components — data tables with virtual scrolling, date/time pickers, tree selectors, cascaders, and more — all written in TypeScript with full prop type inference. It uses CSS-in-JS via css-render so there's no global stylesheet to fight, and the theme system is token-based.

Installation

bash
npm install naive-ui

Usage Example

vue
<script setup lang="ts">
import { NButton, NDataTable, NSpace } from 'naive-ui';

const columns = [{ title: 'Name', key: 'name' }, { title: 'Age', key: 'age' }];
const data = [{ name: 'Alice', age: 30 }, { name: 'Bob', age: 25 }];
</script>

<template>
  <NSpace vertical>
    <NButton type="primary" @click="handleClick">Save</NButton>
    <NDataTable :columns="columns" :data="data" :bordered="false" />
  </NSpace>
</template>

Related packages