Skip to content

docs: add v1.0 migration guide (Radix/Ariakit -> Base UI)#734

Merged
rohanchkrabrty merged 4 commits intomainfrom
feat-migration-doc
Apr 9, 2026
Merged

docs: add v1.0 migration guide (Radix/Ariakit -> Base UI)#734
rohanchkrabrty merged 4 commits intomainfrom
feat-migration-doc

Conversation

@rohanchkrabrty
Copy link
Copy Markdown
Contributor

Summary

  • Add comprehensive migration guide covering all breaking changes from the Radix UI / Ariakit release to the Base UI-based v1.0.0
  • Document cross-cutting changes: asChildrender, callback signature updates, data attribute renames, CSS variable renames
  • Cover all 23 components with breaking changes including before/after code examples
  • Include find-and-replace table for automated migration and a step-by-step checklist
  • Document new components (AlertDialog, Collapsible, ContextMenu, Drawer, Menu, Menubar, Meter, NumberField, PreviewCard, Progress, Toggle, Toolbar)

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
apsara Ready Ready Preview, Comment Apr 9, 2026 7:23am

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 9, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d1cfab87-941a-453c-bbc4-6b8867155738

📥 Commits

Reviewing files that changed from the base of the PR and between 77ebf72 and 0f4110d.

📒 Files selected for processing (1)
  • docs/V1-migration.md

📝 Walkthrough

Walkthrough

Added docs/V1-migration.md, a migration guide for upgrading to Apsara v1.0.0 (Base UI) from the previous Radix UI/Ariakit-based release. It states prerequisites (React 19; internal package switch to @base-ui/*; continued use of @radix-ui/react-icons), lists cross-cutting breaking changes (replace asChild with render; many callbacks accept an optional eventDetails; attribute renames like data-statedata-open/data-closed; CSS variable renames/removals), provides per-component migration steps across many components, enumerates new and removed exports with replacements, and includes a step-by-step migration checklist.

Suggested reviewers

  • rohilsurana
  • paanSinghCoder
  • rsbh
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding a v1.0 migration guide for the major library transition from Radix UI/Ariakit to Base UI.
Description check ✅ Passed The description is directly related to the changeset, providing detailed context about the migration guide including cross-cutting changes, component coverage, examples, and new components.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
docs/V1-migration.md (2)

730-730: Fix table formatting in Removed Exports.

The link format in this table row is inconsistent with the rows above. The pattern should match other entries.

✨ Proposed fix for consistency
-| `RadioItem` | `Radio` | See Radio |
+| `RadioItem` | `Radio` | See [Radio](`#radio`) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/V1-migration.md` at line 730, The table row under "Removed Exports" uses
inconsistent link/formatting for RadioItem -> Radio; update the row to match the
pattern used by other entries by making the first column code-formatted
`RadioItem`, the second column code-formatted `Radio`, and the third column a
markdown inline link to the Radio section (e.g., [Radio](`#radio`)) so the row
follows the same three-column pattern as other entries in the Removed Exports
table.

736-736: Document CSS import order requirement earlier in the guide.

This checklist item mentions updating CSS import order (normalize.css before style.css), but this requirement isn't explained in the Prerequisites or Cross-Cutting Changes sections. Consider adding a dedicated section explaining why this order matters and what issues might occur if it's incorrect.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/V1-migration.md` at line 736, Add a short explanatory subsection earlier
in the guide (e.g., under Prerequisites or Cross-Cutting Changes) that documents
the CSS import order requirement: state that normalize.css must be imported
before style.css, explain briefly that normalize.css resets/normalizes browser
defaults and must come first so project styles in style.css can override
defaults, and list the potential issues when reversed (unexpected layout, broken
base styles, specificity/override surprises) along with a quick example reminder
to update imports in main CSS/JS entry points.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/V1-migration.md`:
- Line 54: Remove the malformed TOC table row that references `RadioItem` and
`Radio` (the line "- [| `RadioItem` | `Radio` | See Radio
|](`#-radioitem--radio--see-radio-`)" ), as it belongs to the "Removed Exports"
table rather than the document TOC; delete that line from the Table of Contents
so only actual section headings are listed and ensure no other table rows are
accidentally included as TOC entries.
- Around line 225-231: The code block showing the Checkbox example is missing
the closing triple backticks and the section separator before the next section;
update the snippet around Checkbox.Group / Checkbox / setSelected to add the
closing ``` after the example and insert the separator `---` (and the following
"### Combobox" heading) before the next code block so the docs render correctly.

---

Nitpick comments:
In `@docs/V1-migration.md`:
- Line 730: The table row under "Removed Exports" uses inconsistent
link/formatting for RadioItem -> Radio; update the row to match the pattern used
by other entries by making the first column code-formatted `RadioItem`, the
second column code-formatted `Radio`, and the third column a markdown inline
link to the Radio section (e.g., [Radio](`#radio`)) so the row follows the same
three-column pattern as other entries in the Removed Exports table.
- Line 736: Add a short explanatory subsection earlier in the guide (e.g., under
Prerequisites or Cross-Cutting Changes) that documents the CSS import order
requirement: state that normalize.css must be imported before style.css, explain
briefly that normalize.css resets/normalizes browser defaults and must come
first so project styles in style.css can override defaults, and list the
potential issues when reversed (unexpected layout, broken base styles,
specificity/override surprises) along with a quick example reminder to update
imports in main CSS/JS entry points.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 85bae522-4e84-40b8-ab3d-3d0b23acc59b

📥 Commits

Reviewing files that changed from the base of the PR and between 11e124d and a696241.

📒 Files selected for processing (1)
  • docs/V1-migration.md

- [New Features](#new-features-9)
- [New Components](#new-components)
- [Removed Exports](#removed-exports)
- [| `RadioItem` | `Radio` | See Radio |](#-radioitem--radio--see-radio-)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove malformed TOC entry.

This line appears to be a table row that was mistakenly included in the Table of Contents. TOC entries should only reference section headings, not table rows from the "Removed Exports" section.

🧹 Proposed fix
-- [| `RadioItem` | `Radio` | See Radio |](`#-radioitem--radio--see-radio-`)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- [| `RadioItem` | `Radio` | See Radio |](#-radioitem--radio--see-radio-)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/V1-migration.md` at line 54, Remove the malformed TOC table row that
references `RadioItem` and `Radio` (the line "- [| `RadioItem` | `Radio` | See
Radio |](`#-radioitem--radio--see-radio-`)" ), as it belongs to the "Removed
Exports" table rather than the document TOC; delete that line from the Table of
Contents so only actual section headings are listed and ensure no other table
rows are accidentally included as TOC entries.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
docs/V1-migration.md (1)

56-56: ⚠️ Potential issue | 🟡 Minor

Remove malformed TOC entry for a table row.

Line 56 is not a section heading link; it’s a table row from “Removed Exports” and produces an invalid fragment.

🧹 Proposed fix
-  - [| `RadioItem` | `Radio` | See Radio |](`#-radioitem--radio--see-radio-`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/V1-migration.md` at line 56, The TOC contains a malformed entry created
from a table row ("RadioItem" / "Radio") which produces an invalid fragment;
remove the offending TOC line referring to `RadioItem` and `Radio` (the "- [|
`RadioItem` | `Radio` | See Radio |](`#-radioitem--radio--see-radio-`)" entry) or
replace it with a proper section link that points to an actual heading (e.g.,
link to the "Radio" section) so the table row no longer appears as a broken TOC
item.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/V1-migration.md`:
- Around line 726-733: The Markdown table ending with the row mapping
`RadioItem` -> `Radio` needs a blank line before the following horizontal rule
(`---`) to satisfy markdownlint; insert a single empty line between the end of
the table and the `---` horizontal rule so the table is properly terminated and
the document renders correctly.

---

Duplicate comments:
In `@docs/V1-migration.md`:
- Line 56: The TOC contains a malformed entry created from a table row
("RadioItem" / "Radio") which produces an invalid fragment; remove the offending
TOC line referring to `RadioItem` and `Radio` (the "- [| `RadioItem` | `Radio` |
See Radio |](`#-radioitem--radio--see-radio-`)" entry) or replace it with a proper
section link that points to an actual heading (e.g., link to the "Radio"
section) so the table row no longer appears as a broken TOC item.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4a92859b-e5ec-4cff-ade4-2230c2cb8846

📥 Commits

Reviewing files that changed from the base of the PR and between a696241 and 77ebf72.

📒 Files selected for processing (1)
  • docs/V1-migration.md

Comment on lines +726 to +733
| Old Export | Replacement | Notes |
|-----------|-------------|-------|
| `DropdownMenu` | `Menu` | See [DropdownMenu -> Menu](#dropdownmenu---menu) |
| `Sheet` | `Drawer` | See [Sheet -> Drawer](#sheet---drawer) |
| `ToastContainer` | `Toast.Provider` | See [Toast](#toast) |
| `toast` (function) | `toastManager` (object) | See [Toast](#toast) |
| `RadioItem` | `Radio` | See [Radio](#radio) |
---
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a blank line after the table for valid Markdown structure.

Add an empty line between the table ending at Line 732 and the horizontal rule at Line 733 to satisfy markdownlint and avoid renderer inconsistencies.

📝 Proposed fix
 | `ToastContainer` | `Toast.Provider` | See [Toast](`#toast`) |
 | `toast` (function) | `toastManager` (object) | See [Toast](`#toast`) |
 | `RadioItem` | `Radio` | See [Radio](`#radio`) |
+
 ---
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| Old Export | Replacement | Notes |
|-----------|-------------|-------|
| `DropdownMenu` | `Menu` | See [DropdownMenu -> Menu](#dropdownmenu---menu) |
| `Sheet` | `Drawer` | See [Sheet -> Drawer](#sheet---drawer) |
| `ToastContainer` | `Toast.Provider` | See [Toast](#toast) |
| `toast` (function) | `toastManager` (object) | See [Toast](#toast) |
| `RadioItem` | `Radio` | See [Radio](#radio) |
---
| Old Export | Replacement | Notes |
|-----------|-------------|-------|
| `DropdownMenu` | `Menu` | See [DropdownMenu -> Menu](`#dropdownmenu---menu`) |
| `Sheet` | `Drawer` | See [Sheet -> Drawer](`#sheet---drawer`) |
| `ToastContainer` | `Toast.Provider` | See [Toast](`#toast`) |
| `toast` (function) | `toastManager` (object) | See [Toast](`#toast`) |
| `RadioItem` | `Radio` | See [Radio](`#radio`) |
---
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 732-732: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/V1-migration.md` around lines 726 - 733, The Markdown table ending with
the row mapping `RadioItem` -> `Radio` needs a blank line before the following
horizontal rule (`---`) to satisfy markdownlint; insert a single empty line
between the end of the table and the `---` horizontal rule so the table is
properly terminated and the document renders correctly.

@rohanchkrabrty rohanchkrabrty merged commit 20be4ef into main Apr 9, 2026
3 of 4 checks passed
@rohanchkrabrty rohanchkrabrty deleted the feat-migration-doc branch April 9, 2026 07:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants