reopt designreopt design
DocsExploreToolsPricingBuilder
Start
Overview
Build & Operate
Debugging Guide
Usage Playbook
Bridge Integration
Oopt-devtool
reopt designreopt design

A design system for the AI era

  • Docs
  • Pricing
  • Releases
  • GitHub
  • Terms of Service
  • Privacy Policy

© 2026 reopt-ai. All rights reserved.

Build & Operate
  1. Docs
  2. /
  3. Build & Operate
  4. /
  5. Bridge Integration

Bridge Integration

각 opt 모듈은 page-local hook으로 snapshot을 등록하고, opt-devtool는 이를 하나의 overlay registry로 합칩니다.

reopt design · Updated Jun 26, 2026

개요Debugging GuideUsage PlaybookBridge Integration

1. Bridge contract

bridge hook은 ` inspect ` 콜백을 반환하고, 화면은 그 콜백을 각 엔진/provider의 `inspect` prop에 그대로 전달합니다. overlay 쪽은 hook이 mount될 때 자동으로 탭을 등록합니다. `opt-editor`와 `brandapp-sdk` bridge는 각각 전용 상단 탭에 연결됩니다.

모듈Hook주요 snapshot
opt-datagriduseDataGridDevtoolBridgeactiveCell, selection, editingCell, overlayOpen, visibleRegion, history, draftError
opt-editoruseEditorDevtoolBridgemode, specVersion, selectedBlockIds/types, rootCount, elementCount, undo/redo, lastChangedIds, focusTarget, externalStreaming, feature flags
brandapp-sdkuseBrandappDevtoolBridgebrandappId, masked clientId, env presence, auth/EAV/AI status, route wiring, schema hash
opt-shelluseShellDevtoolBridgemanifest, density, contentWidth, navigationMode, stateBoundary, adapter chrome

2. DataGrid 연결

tsx
"use client";

import { DataGrid } from "@reopt-ai/opt-datagrid";
import { useDataGridDevtoolBridge } from "@reopt-ai/opt-devtool/datagrid";

export function AccountsGrid() {
  const { inspect } = useDataGridDevtoolBridge({
    id: "accounts-grid",
    label: "Accounts Grid",
  });

  return (
    <DataGrid
      rows={rows}
      columns={columns}
      getRowId={(row) => row.id}
      inspect={inspect}
    />
  );
}

3. Editor 연결

tsx
"use client";

import { Editor, useEditorStream } from "@reopt-ai/opt-editor";
import { useEditorDevtoolBridge } from "@reopt-ai/opt-devtool/editor";

export function ArticleEditor() {
  const stream = useEditorStream(store);
  const { inspect } = useEditorDevtoolBridge({
    id: "article-editor",
    label: "Article Editor",
    streamStatus: stream.status,
  });

  return (
    <Editor
      store={store}
      catalog={catalog}
      mode="edit"
      inspect={inspect}
    />
  );
}

4. Brandapp SDK 연결

tsx
"use client";

import { useBrandappDevtoolBridge } from "@reopt-ai/opt-devtool/brandapp";
import type { BrandappDevtoolSnapshot } from "@reopt-ai/opt-devtool/brandapp";

export function BrandappIntegrationDebug({
  snapshot,
}: {
  snapshot: BrandappDevtoolSnapshot;
}) {
  useBrandappDevtoolBridge({
    id: "brandapp",
    label: "Brandapp",
    snapshot,
  });

  return null;
}

5. Harness 연결

tsx
"use client";

import { ShellProvider } from "@reopt-ai/opt-shell";
import { useShellDevtoolBridge } from "@reopt-ai/opt-devtool/harness";

export function InspectableBuilderHarness({
  children,
}: {
  children: React.ReactNode;
}) {
  const { inspect } = useShellDevtoolBridge({
    id: "builder-harness",
    label: "Builder Harness",
  });

  return (
    <ShellProvider manifest={builderHarness} inspect={inspect}>
      {children}
    </ShellProvider>
  );
}
PreviousUsage Playbook개발 중 opt-devtool overlay에서 어떤 탭과 snapshot을 확인해야 하는지 상황별 활용 루틴을 정리합니다.Build & Operate
Go to Usage Playbook