Permix

Comparison

Comparison with other libraries

Overview

Permix is a library that provides a way to manage permissions in your application. It is designed to be used with React, Vue, etc. But not only Permix can manage permissions, there are other libraries that can do the same thing.

Comparison

FeaturePermixCASL
Type-safe✅ Native✅ Via external type
Saving rules✅ Via template✅ Via AppAbility
Hydration✅ Native⚠️ Via custom implementation
Entity✅ Depends on props of a passed object⚠️ Class-based yes, but object-based via external function
Events
Simple DX✅ Create instance, use built-in integrations❌ In CASL you need to manage a lot of stuff manually (type-safe, hydration, etc.)
Modernity✅ Uses modern updates and features of each lib and framework❌ CASL was created a long time ago and hasn't updated the core
Size2.64 kB gzip (core) [react 0.86 kB, vue 0.87 kB, solid 0.82 kB, next 1.00 kB, tanstack-start 2.05 kB, svelte ~2.17 kB, …]6.17 kB min+gzip (core) [@casl/react 0.62 kB]

Sizes are hard numbers from published builds — see Bundle size. Bracketed values are integration adapters imported on top of core.

Bundle size

All figures are gzip. Measured on 2026-06-02 from production builds.

Permix

Built with pnpm run build in the permix package (tsdown for all entries except Svelte).

EntrygzipNotes
permix (core)2.64 kBdist/core/index.mjs (7.96 kB raw)
permix/react0.86 kBadapter
permix/vue0.87 kBadapter
permix/solid0.82 kBadapter
permix/svelte~2.17 kBadapter (dist/svelte/, svelte-package build)
permix/next1.00 kBadapter
permix/tanstack-start2.05 kBadapter
permix/node0.95 kBadapter
permix/server1.10 kBadapter
permix/express0.91 kBadapter
permix/hono0.88 kBadapter
permix/fastify1.04 kBadapter
permix/elysia0.88 kBadapter
permix/trpc0.96 kBadapter
permix/orpc0.92 kBadapter
permix/effect1.28 kBadapter
permix/drizzle0.89 kBadapter
permix/drizzle/legacy0.83 kBadapter

Integration entries import ../core/index.mjs, so a typical app ships core + adapter (for example React ≈ 2.64 + 0.86 ≈ 3.50 kB gzip of published chunks before your bundler minifies further).

CASL (@casl/ability@7.0.0, @casl/react@7.0.0)

EntrygzipNotes
@casl/ability (core)6.17 kBminified + gzip, esbuild bundle of createMongoAbility([])
@casl/react0.62 kBpublished dist/esm/index.mjs only (adapter; ability loaded separately)

CASL core figure reflects what most apps ship after bundling and minification, not a single prebuilt file on disk.

On this page