BidiKit
🌐RTL-first · Arabic ready · Zero config

Every website,
in every direction.

BidiKit makes your React and Next.js app automatically mirror itself for Arabic, Hebrew, Persian, and Urdu — layouts, icons, spacing, and all.

LTR Active
Language: English
document.dir = "ltr"
html[lang] = "en"

Live Interaction

See it flip in real time

Switch the language above. Every component below automatically adapts — no code changes needed.

⇄ BidiKit
  • Features
  • Demo
  • Docs
AH
Ahmed Hassan

The navbar automatically reverses order in RTL — logo moves to the right, user account to the left, navigation links maintain correct reading order.


Zero Manual Work

What BidiKit does automatically

Switch to Arabic above and watch all of these activate instantly:

document.dir = "ltr"
html lang attribute
Flex direction reversed
margin-start / margin-end
text-align: start
Arrow icons mirrored
Arabic font loaded
border-inline-start

Built-in Component

Language Switcher — 3 variants + headless

All variants are live. Click them — they all control the same language state.

Pill toggle<LanguageSwitcher />
Dropdownvariant="dropdown" display="flag+native"
Minimalvariant="minimal" display="flag+code"
Headless custom<LanguageSwitcherRoot>

In React: import { LanguageSwitcher, LanguageSwitcherRoot } from @bidikit/react


What's Included

Everything you need for RTL

🔄

Auto Direction Engine

Sets document.dir, html lang, CSS variables, and class names the moment you call setLanguage().

📝

Translation API

Nested keys, interpolation, pluralization, fallback languages, and lazy loading built in.

🪞

Icon Mirroring

Arrows, chevrons, and back icons automatically flip. Hearts and stars stay put.

🎨

Tailwind Plugin

ms-, me-, ps-, pe-, rounded-s, border-e, text-start — write once, both directions.

Next.js SSR

Middleware, server provider, generateBidiMetadata — correct lang and dir before first paint.

🖥️

CLI Tools

npx @bidikit/cli init — scaffold translations, sync missing keys, lint, extract from source.

🌐

Language Switcher

<LanguageSwitcher /> drop-in pill, dropdown, or minimal. Or use LanguageSwitcherRoot for a fully custom design.


420M+
Arabic speakers on the web
7
npm packages, zero config
11
RTL languages supported
0
manual dir="" attributes needed