Getting Started
How it works
When you add components withrtl: true set in your components.json, the shadcn CLI automatically transforms classes and props to be RTL compatible:
- Physical positioning classes like
left-*andright-*are converted to logical equivalents likestart-*andend-*. - Directional props are updated to use logical values.
- Text alignment and spacing classes are adjusted accordingly.
- Supported icons are automatically flipped using
rtl:rotate-180.
Supported Styles
Automatic RTL transformation via the CLI is only available for projects created usingshadcn create with the new styles (base-nova, radix-nova, etc.).
For other styles, see the Migration Guide.
Font Recommendations
For the best RTL experience, we recommend using fonts that have proper support for your target language. Noto is a great font family for this and it pairs well with Inter and Geist.Animations
The CLI also handles animation classes, automatically transforming physical directional animations to their logical equivalents. For example,slide-in-from-right becomes slide-in-from-end.
This ensures animations like dropdowns, popovers, and tooltips animate in the correct direction based on the document’s text direction.
There is a known issue with the
tw-animate-css library where the logical slide utilities are not working as expected. For now, make sure you pass in the dir prop to portal elements.showLineNumbers
showLineNumbers