ScriptsApr 11, 2026·2 min read

Element Plus — Vue 3 UI Library by the Element Team

Element Plus is a Vue 3 UI library made by the Element team. 60+ components with desktop-first design, clean aesthetic, TypeScript support, and a huge Chinese developer community. The Vue 3 successor to Element UI.

TL;DR
Element Plus provides 60+ Vue 3 components with TypeScript support, clean design, and strong community.
§01

What it is

Element Plus is the Vue 3 successor to Element UI, built by the original Element team. It provides over 60 desktop-first components with a clean aesthetic, full TypeScript support, and tree-shakable imports for optimized bundle sizes.

The library targets frontend developers building admin dashboards, internal tools, and business applications with Vue 3. Its large Chinese developer community and comprehensive documentation make it one of the most adopted Vue component libraries worldwide.

§02

How it saves time or tokens

Element Plus eliminates the need to build common UI patterns from scratch. Pre-built components for tables, forms, dialogs, date pickers, and notifications let you ship features in hours instead of days. The consistent API design means learning one component teaches you the patterns for all others, reducing the ramp-up time for new team members.

§03

How to use

  1. Install Element Plus in your Vue 3 project using npm or yarn.
  2. Import components on demand or register globally, then use them in your templates.
  3. Customize the theme using CSS variables or the SCSS variable override system.
§04

Example

# Install Element Plus
npm install element-plus
<template>
  <el-button type='primary' @click='handleClick'>Submit</el-button>
  <el-table :data='tableData' stripe>
    <el-table-column prop='name' label='Name' />
    <el-table-column prop='status' label='Status' />
  </el-table>
</template>

<script setup lang='ts'>
import { ref } from 'vue'
const tableData = ref([
  { name: 'Project Alpha', status: 'Active' },
  { name: 'Project Beta', status: 'Pending' }
])
const handleClick = () => console.log('submitted')
</script>
§05

Related on TokRepo

§06

Common pitfalls

  • Importing the entire library instead of using tree-shaking, which inflates your bundle size significantly.
  • Mixing Element UI (Vue 2) documentation with Element Plus (Vue 3) API references, leading to broken code.
  • Neglecting to configure the locale provider for internationalization, resulting in Chinese-only date pickers and validation messages.

Frequently Asked Questions

Is Element Plus compatible with Vue 2?+

No. Element Plus is built exclusively for Vue 3. If you need Vue 2 support, use the original Element UI library. Migration guides are available in the official documentation.

How do I customize the Element Plus theme?+

You can override CSS variables in your global stylesheet or use SCSS variable overrides at build time. Element Plus exposes a comprehensive set of design tokens for colors, spacing, typography, and component-specific values.

Does Element Plus support tree-shaking?+

Yes. When using the on-demand import approach with unplugin-vue-components and unplugin-auto-import, only the components you actually use are included in your production bundle.

What is the difference between Element UI and Element Plus?+

Element Plus is the Vue 3 rewrite of Element UI. It uses the Composition API, provides full TypeScript type definitions, and includes modernized components. Element UI targets Vue 2 and is in maintenance mode.

Can I use Element Plus with Nuxt 3?+

Yes. There is a community Nuxt module for Element Plus that handles auto-imports and SSR compatibility. You can also configure it manually using Nuxt plugins.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets