from the log
1/11/2026 · 7 min read
— Ali Buğatekin
In recent years, not only “good-looking” interfaces but also interfaces that are accessible to everyone have become a topic of discussion in web applications.
This change is not a coincidence; it has a serious impact on both the technical and business sides.
At exactly this point, an infrastructure that is mentioned more and more frequently in modern frontend projects comes forward: Radix UI.
Let’s think about the following interactions in a web application:
Most of the time, our check is this:
“Does it work with the mouse?”
But accessibility asks the following:
In most projects, the answer to these questions is no.
For a long time, accessibility was a “we will look at it later” topic.
But today:
in short:
Accessibility is no longer a UX detail, but a product requirement.
Writing a modal is not as simple as it looks.
For an accessible modal:
Each of these behaviors must be implemented correctly.
Radix UI solves the behavior layer of UI components:
But it does not do the following:
For this reason, Radix UI is a headless infrastructure.
1<Dialog.Trigger asChild>
2 <a href="/profile" className="text-blue-600 underline">
3 Open profile dialog
4 </a>
5</Dialog.Trigger>Here:
Result:
This is a fundamental solution to a major problem that UI libraries have had for years.
Today, many developers do not write Radix UI directly. But they use shadcn/ui.
shadcn/ui:
An example shadcn Button:
1<Button asChild>
2 <Link href="/dashboard">Dashboard</Link>
3</Button>Here:
This invisible infrastructure role is the main reason for the popularity of Radix UI.
Radix UI is the natural result of a period in which accessibility has become a core building block of web applications, not an extra.
Today, everyone who uses shadcn/ui is using the accessibility approach of Radix UI, whether they are aware of it or not.
share if you found this useful