A step-by-step guide for Rokt teams adopting Aquarium as their UI component library.
Aquarium is Rokt's shared React component library built on Ant Design. It provides:
- 76+ production-ready components — from buttons to complex data tables
- Rokt design tokens — consistent colors, spacing, typography across products
- Storybook documentation — live examples and API references at mparticle.github.io/aquarium
- AI-native development — Claude Code skills, LLM setup prompts, and Figma-to-code workflows built in
Using Aquarium instead of raw Ant Design or ad hoc components means fixes propagate everywhere, onboarding is faster, and AI tools generate Rokt-standard code instead of generic patterns.
npm install @mparticle/aquarium antd@6 dayjs@1Add the CSS reset in your app entry point:
import 'antd/dist/reset.css'Aquarium is designed for AI-assisted development. Set up your tools to default to Aquarium components instead of raw HTML or generic libraries.
If your project uses Claude Code, add this to your project's CLAUDE.md:
## UI Components
Use `@mparticle/aquarium` for all UI components. Do NOT import directly from `antd`.
- Components: `import { Button, Table, Select } from '@mparticle/aquarium'`
- Design tokens: `import { PaddingLg, ColorPrimary } from '@mparticle/aquarium/dist/style'`
- Icons: `import { RoktPauseCircle } from '@mparticle/aquarium'` for Rokt icons
- Layout: Use `<Flex>`, `<Center>`, `<Space>` instead of `<div>` with inline styles
- Reference: https://mparticle.github.io/aquarium/Add the same guidance to your .cursor/rules/ directory so Cursor AI generates Aquarium imports.
For any AI tool, paste the contents of LLM_SETUP_PROMPT.md into your project context. This teaches the model about Aquarium's API surface and conventions.
If your project already imports from antd directly, migrate incrementally:
- import { Button, Table } from 'antd'
+ import { Button, Table } from '@mparticle/aquarium'Most Aquarium components are thin wrappers around Ant Design with Rokt theming applied, so the API is the same. Check Storybook for any Aquarium-specific props.
| Instead of | Use |
|---|---|
<div style={{ display: 'flex' }}> |
<Flex> |
<div style={{ display: 'flex', justifyContent: 'center' }}> |
<Center> |
padding: '24px' |
PaddingLg from design tokens |
color: '#3600d1' |
ColorPrimary from design tokens |
| Custom modal wrapper | <DeleteConfirmModal> or <ErrorModal> |
If Aquarium doesn't have a component you need:
- Check first — browse Storybook and Ant Design docs to see if an existing component can be configured for your use case
- Open a request — Component Request on GitHub Issues
- Include context — Figma link, use case, and which product needs it
Requests are triaged automatically and prioritized by impact across teams.
- GChat: Join the internal Aquarium space for weekly updates
- GitHub Issues: Request components, report bugs, ask questions
- Storybook: Browse docs for API references and live examples
Yes, antd is a peer dependency. But prefer Aquarium's wrapped version when available — it includes Rokt theming and design tokens. If you need a component Aquarium doesn't wrap yet, use antd directly and open a request so it can be added.
See CONTRIBUTING.md. The fastest path is:
/implement-ticket <JIRA-ID>
This uses Claude Code to handle branching, implementation, testing, and PR creation end-to-end.
Mark your Component Request as "Blocking — can't ship without it" and note your timeline. Adoption blockers get priority triage.