use-dom
Use when embedding web-only libraries or DOM content in React Native apps, including charts with recharts, syntax highlighting, rich text editors, or any…
Skill by bidah
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bidah-use-dom
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, ml, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/use-dom
What's inside
- Skill name
use-dom- Description
- Use when embedding web-only libraries or DOM content in React Native apps, including charts with recharts, syntax highlighting, rich text editors, or any component that requires a browser DOM
- License
- MIT
- Instructions
- 335 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# DOM Components in React Native ('use dom')
## Overview
The `'use dom'` directive lets you embed web code inside React Native apps. Components marked with `'use dom'` render in a native webview (WKWebView on iOS, WebView on Android), giving you access to the full browser DOM while keeping the rest of your app native.
**Core principle:** Use `'use dom'` as a bridge to web-only libraries that have no React Native equivalent. The DOM component runs in an isolated webview, communicating with your native app through serializable props.
## When to Use
- Rendering charts with web libraries (recharts, Chart.js, D3)
- Syntax highlighting code blocks (Prism, Shiki, highlight.js)
- Rich text editors (TipTap, Lexical, Quill)
- Embedding maps with web map libraries (Leaflet, Mapbox GL JS)
- Rendering complex HTML/CSS content (markdown, documentation)
- Using any npm package that depends on browser APIs (DOM, Canvas, WebGL)
### When NOT to Use
- Simple UI components (use React Native components)
- Performance-critical animations (use Reanimated)
- Components needing native device APIs (camera, sensors)
- Content that could be rendered with React Native `Text`/`View`
## Basic Usage
Add `'use dom'` as the first line of a component file:
```tsx
// components/WebChart.tsx
'use dom';
import { BarChart, Bar, XAxis, YAxis, Tooltip } from 'recharts';
type Props = {
data: Array<{ name: string; value: number }>;
dom?: import('expo/dom').DOMProps;
};
export default function WebChart({ data }: Props) {
return (
<BarChart width={350} height={250} data={data}>
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Bar dataKey="value" fill="#3b82f6" />
</BarChart>
);
}
```
Use it in your native React Native screen:
```tsx
// app/analytics.tsx
import WebChart from '../components/WebChart';
const chartData = [
{ name: 'Mon', value: 120 },
{ name: 'Tue', value: 250 },
{ name: 'Wed', value: 180 },
{ name: 'Thu', value: 310 },
{ name: 'Fri', value: 420 },
];
export default function AnalyticsScreen() {
return (
<View style={{ flex: 1, padding: 16 }}>
<Text style={{ fontSize: 20, fontWeight: 'bold', marginBottom: 16 }}>
Weekly Activity
</Text>
<WebChart data={chartData} />
</View>
);
}
```
## The DOMProps Type
Every `'use dom'` component receives an optional `dom` prop for controlling the webview:
```tsx
'use dom';
type Props = {
content: string;
dom?: import('expo/dom').DOMProps;
};
export default function MyDomComponent({ content }: Props) {
return <div>{content}</div>;
}
```
The `dom` prop is injected automatically by the framework. You do not pass it manually. Include it in the type definition so TypeScript knows about it.
### DOMProps Options
```tsx
// In your native component:
<WebChart
data={data}
dom={{
scrollEnabled: true, // Allow scrolling within the webview
matchContents: true, // Auto-size webview to content height
}}
/>
```
## Serializable Props Requirement
All props passed to `'use dom'` components must be JSON-serializable. The props cross a native-to-webview bridge.
### What Works
```tsx
// Primitives
<DomComponent count={42} />
<DomComponent label="hello" />From bidah/react-native-hifi, MIT.
More from bidah/react-native-hifi
- 0.501score
agent-device
bidah
Automates interactions for iOS simulators/devices and Android emulators/devices.
SkillDFreshness: D★ 30Claude Code +9 - 0.501score
react-native-brownfield-migration
Callstack
Provides an incremental adoption strategy to migrate native iOS or Android apps to React Native or Expo using @callstack/react-native-brownfield for initial…
SkillDFreshness: D★ 30Claude Code +9 - 0.498score
callstack-best-practices
Callstack
Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations.
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-api-routes
bidah
Use when building server-side API endpoints in Expo apps, handling backend logic, protecting credentials, connecting to databases, or deploying API routes…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
building-native-ui
bidah
Use when building user interfaces in React Native or Expo, implementing navigation, layouts, animations, native controls, modals, gesture handling, or styling…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-dev-client
bidah
Use when building custom development clients for Expo apps, integrating custom native modules, using Apple ecosystem features, third-party native SDKs, or…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-tailwind-setup
bidah
Use when setting up or using Tailwind CSS v4 with NativeWind v5 in React Native or Expo projects, configuring universal styling across iOS Android and web, or…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-ui-jetpack-compose
bidah
Use when building Android-specific UI components using Jetpack Compose views in Expo, implementing LazyColumn scrolling lists, or rendering XML vector…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-ui-swift-ui
bidah
Use when building iOS-specific UI components using SwiftUI views in Expo, embedding React Native views in SwiftUI with RNHostView, or implementing native iOS…
SkillDFreshness: D★ 30Claude Code +9 - 0.492score
software-mansion-best-practices
Software Mansion
Software Mansion's best practices for production React Native apps on the New Architecture.
SkillDFreshness: D★ 30Claude Code +9 - 0.487score
native-data-fetching
bidah
Use when implementing network requests, API calls, data caching, or offline support in React Native or Expo apps, including authentication token management…
SkillDFreshness: D★ 30Claude Code +9 - 0.476score
using-react-native-hifi
bidah
Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
SkillDFreshness: D★ 30Claude Code +9
Signals
- Stars
- 30
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Mar 12, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/bidah/react-native-hifi
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from bidah
- 0.501score
agent-device
bidah
Automates interactions for iOS simulators/devices and Android emulators/devices.
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
building-native-ui
bidah
Use when building user interfaces in React Native or Expo, implementing navigation, layouts, animations, native controls, modals, gesture handling, or styling…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-tailwind-setup
bidah
Use when setting up or using Tailwind CSS v4 with NativeWind v5 in React Native or Expo projects, configuring universal styling across iOS Android and web, or…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-api-routes
bidah
Use when building server-side API endpoints in Expo apps, handling backend logic, protecting credentials, connecting to databases, or deploying API routes…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-dev-client
bidah
Use when building custom development clients for Expo apps, integrating custom native modules, using Apple ecosystem features, third-party native SDKs, or…
SkillDFreshness: D★ 30Claude Code +9 - 0.496score
expo-ui-jetpack-compose
bidah
Use when building Android-specific UI components using Jetpack Compose views in Expo, implementing LazyColumn scrolling lists, or rendering XML vector…
SkillDFreshness: D★ 30Claude Code +9
Cite this page
use-dom skill. Agent Mart. https://agentmart.dev/skills/bidah-use-dom (last updated 2026-10-24)