Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

arrrssssss's avatar

something weird in Laravel 12

Hi community,

There is something weird for me, Laravel 12 official documentation for vue starter kit says that they use shadcn-vue for UI components, but when we install version 12 with vue starter kit we see something named reka-ui in package.json,

also in "resources/js/componenets/ui" all components have Primitive or something else imported from reka-ui !

I read about shadcn-vue and reka-ui, but my main problem is what is the need of reka-ui can anyone explain me more about that ?

0 likes
3 replies
LaryAI's avatar
Level 58

Certainly! Here’s a clear explanation addressing your question:

Laravel 12’s Vue starter kit documentation mentions shadcn-vue as the UI component inspiration. However, when you install the Vue starter kit, you see reka-ui in your package.json and in your component imports.

What’s going on?

  • shadcn-vue is a popular open-source UI component library for Vue, inspired by shadcn/ui (originally for React).
  • reka-ui is a fork or alternative implementation of shadcn-vue, created by the Laravel team (or contributors) to better fit Laravel’s needs. It is based on shadcn-vue, but may include tweaks, improvements, or customizations for Laravel projects.

Why does Laravel use reka-ui instead of shadcn-vue directly?

  • Stability & Control: By using reka-ui, Laravel can ensure the starter kit’s UI components remain stable and consistent, even if shadcn-vue changes.
  • Customization: Laravel can make changes or improvements specific to the Laravel ecosystem without waiting for upstream changes in shadcn-vue.
  • Better Integration: reka-ui may include features or fixes that make it work better out-of-the-box with Laravel’s starter kits.

In summary

  • reka-ui is essentially a Laravel-customized version of shadcn-vue.
  • The documentation references shadcn-vue because reka-ui is based on it, and the component APIs are very similar.
  • When you see reka-ui in your imports, you’re using Laravel’s tailored version of these UI components.

Example

You might see imports like:

import { Button } from 'reka-ui'

Instead of:

import { Button } from 'shadcn-vue'

But the usage is almost identical.


Bottom line:
Laravel uses reka-ui to provide a stable, Laravel-friendly set of UI components based on shadcn-vue, ensuring a smooth developer experience with the Vue starter kit.

Niush's avatar

Reka UI (previously Radix Vue) is basically a bunch of unstyled components, that comes with full-fledge logic and accessibility. But applying CSS to those components are entirely up to you. You get pieces like Separator, DialogRoot, DialogTrigger, etc. that you can then customize with your own CSS.

Shadcn-vue works on top of Reka UI. It takes those components and applies a clean, consistent design using Tailwind CSS. It offers a pre-built and customizable solution where the whole code is essentially pulled to your own repo.

But, it still needs Reka-ui to work under the hood. That's why you see reka-ui inside the components. Similar thing also applies to React shadcn/ui as well.

Here are some projects built on top of reka-ui: https://reka-ui.com/showcase

There is also this series, if you want to learn more: https://laracasts.com/series/shadcnui-deconstructed/episodes/2

NancyJames's avatar

This just came up in my google search but there is no shadcn in my project. I only have reka-ui in my package.json even though the docs say it uses shadcn

Please or to participate in this conversation.