A set of components and utilities for rapid UI development https://ui.frappe.io
  • TypeScript 38.5%
  • Vue 36.1%
  • Markdown 19.1%
  • JavaScript 5.2%
  • CSS 1.1%
Find a file
2026-08-06 13:27:22 +00:00
.claude/commands
.github
.husky
cypress
docs
espresso-v2-design-tokens
experimental
frappe
icons
public
skills/frappe-ui
spec
src fix(data-fetching): keep a deleted doc from coming back through a cached read 2026-08-06 18:46:03 +05:30
tailwind
v1-release
vite
vitepress
.coderabbit.yaml
.git-blame-ignore-revs
.gitattributes
.gitignore
.nycrc.json
.postcssrc.js
.pre-commit-config.yaml
.prettierrc.json
.semgrep.yml
404.html
App.vue
auto-imports.d.ts
components.d.ts
CONTEXT.md
cypress.config.ts
experimental.ts
frappe-ui-square.png
frappe-ui.png
frappe-ui.svg
index.html
license.md
main.js
package.json chore(release): v1.0.0-beta.35 2026-08-06 13:27:22 +00:00
PHILOSOPHY.md
postcss.config.ts
readme.md
tailwind.config.js
tsconfig.app.json
tsconfig.base.json
tsconfig.json
tsconfig.node.json
vite.config.ts
vitest.config.ts
vitest.setup.ts
yarn.lock

Frappe UI

Rapidly build modern frontends for Frappe apps

NPM Downloads Screenshot 2024-12-12 at 5 27 58 PM

Frappe UI

Frappe UI provides a set of components and utilities for rapid UI development. Components are built using Vue 3 and Tailwind. Along with generic components like Button, Link, Dialog, etc., it also contains utilities for handling server-side data fetching, directives and utilities.

Motivation

In 2019, I began building Frappe Books which had a new design. This led to the creation of small reusable components like Button, Dialog, and Card. Moving on to Frappe Cloud in 2020, I reused and evolved these components in the Frappe Cloud UI. In 2022, while starting a new project, I decided to extract these components into a standalone package to avoid repeating the copy-paste process. This package is now being developed alongside the Gameplan, continually adding generic components and utilities for frontend development.

Under the Hood

  • TailwindCSS: Utility first CSS Framework to build design system based UI.
  • Headless UI: Unstyled and accessible UI components.
  • TipTap: ProseMirror based rich-text editor with a Vue API.
  • dayjs: Minimal javascript library for working with dates.

Usage

Requires Node >=20.19.0.

npm install frappe-ui
# or
yarn add frappe-ui

Now, import the FrappeUI plugin and components in your Vue app's main.js:

import { createApp } from 'vue'
import { FrappeUI } from 'frappe-ui'
import App from './App.vue'
import './index.css'

let app = createApp(App)
app.use(FrappeUI)
app.mount('#app')

In your tailwind.config.js file, include the frappe-ui preset:

module.exports = {
  presets: [
    require('frappe-ui/src/utils/tailwind.config')
  ],
  ...
}

Now, you can import needed components and start using it:

<template>
  <button>Click me</button>
</template>
<script>
  import { Button } from 'frappe-ui'
  export default {
    components: {
      Button,
    },
  }
</script>

Claude Code skill

For AI coding agents (Claude Code, Cursor, Codex, etc.), Frappe UI ships an agent skill that teaches the agent the library's conventions — semantic Tailwind tokens, the variant + theme color axes, the useCall data-fetching composable, common UI recipes, and anti-patterns to avoid.

Install with Vercel's skills CLI:

npx skills add https://github.com/frappe/frappe-ui/tree/main/skills/frappe-ui

The skill lives in skills/frappe-ui/ and is updated alongside the library.

Used By

Frappe UI is being used in a lot of products by Frappe.