Claude meets youwhere you work

Claude meets youwhere you work

Build on, grow with, or buy from the Claude ecosystem. Connect your favorite services or find partner solutions built on Claude.

Connect to Claude
View partners

Customize Claude for the best results

Connectors bring your apps and data into Claude to complete tasks. Plugins combine connectors and skills to complete workflows.

Browse connectors
Explore plugins

Bring your tools to Claude

Connect Slack, Google Workspace, Microsoft Office, and more.

Connect across products

Your tools can be connected to Claude Code, Cowork, and Claude on web, desktop, and mobile.

Built for enterprise

Admins control which tools each team can use, and what those tools can do.

logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo
logo

Claude works with your stack

No retrofitting required. Connect the tools you use everyday.

Explore connectors
Browse plugins

How teams use connectors

Turn designs into coded websites

Handing off designs to engineering takes time and leaves room for things to get lost in translation. Connect Figma to Claude and go from frame to responsive, production-ready code in one step.

$ claude "Fix the latest Sentry error and open a PR"

Claude claude-sonnet-4-6 · ~/projects/acme-web

● Fetching latest Sentry issues…

✔ sentry issues list --project acme-web --limit 1 --status unresolved

ISSUE-4821 TypeError: Cannot read properties of undefined (reading 'data')
Project: acme-web · Environment: production
First seen: 2026-06-15 22:14 UTC · Last seen: 2026-06-16 07:03 UTC
Events: 1,847 · Users affected: 312
Culprit: src/components/Dashboard/MetricsPanel.tsx line 94

● Fetching full stacktrace for ISSUE-4821…

TypeError: Cannot read properties of undefined (reading 'data')
at MetricsPanel.tsx:94:28 — processChartData(response)
at MetricsPanel.tsx:61:12 — useEffect(callback)
at react-dom/cjs/react-dom.development.js:22794

Most recent breadcrumb:
→ GET /api/v2/metrics?range=7d → 200 OK (response.metrics was null)

● Reading src/components/Dashboard/MetricsPanel.tsx…

Line 90–98:
90 │ const processChartData = (response: ApiResponse) => {
91 │ const { metrics } = response
92 │ // metrics can be null when no data for the selected range
93 │ return metrics.data.map((m: Metric) => ({
94 │ label: m.label,
95 │ value: m.value ?? 0,
96 │ }))
97 │ }

● Root cause identified.
API returns { metrics: null } when the selected range has no data. Line 93
dereferences metrics.data without a null guard, throwing at runtime.

● Checking git status…

On branch main · nothing to commit, working tree clean

● Creating fix branch…

$ git checkout -b fix/metrics-panel-null-data-sentry-4821
Switched to a new branch 'fix/metrics-panel-null-data-sentry-4821'

● Applying fix to src/components/Dashboard/MetricsPanel.tsx…

@@ -90,8 +90,8 @@
const processChartData = (response: ApiResponse) => {
const { metrics } = response
- return metrics.data.map((m: Metric) => ({
+ if (!metrics?.data) return []
+ return metrics.data.map((m: Metric) => ({
label: m.label,
value: m.value ?? 0,
}))

● Also updating src/components/Dashboard/MetricsPanel.tsx render guard…

@@ -61,6 +61,7 @@
useEffect(() => {
fetchMetrics(range).then((response) => {
+ if (!response?.metrics) { setChartData([]); return }
setChartData(processChartData(response))
})
}, [range])

● Running tests…

$ pnpm test --testPathPattern=MetricsPanel
PASS src/components/Dashboard/__tests__/MetricsPanel.test.tsx
✓ renders loading state (12ms)
✓ renders chart when data present (34ms)
✓ renders empty state when metrics is null (8ms)
✓ renders empty state when metrics.data is empty array (6ms)

Test Suites: 1 passed, 1 total
Tests: 4 passed, 4 total

● Committing…

$ git add src/components/Dashboard/MetricsPanel.tsx
$ git commit -m "fix(dashboard): guard against null metrics.data in MetricsPanel

Fixes Sentry ISSUE-4821 (1,847 events, 312 users).

The /api/v2/metrics endpoint returns { metrics: null } when no data
exists for the requested range. processChartData() dereferenced
metrics.data without a null check, causing a TypeError at runtime.

- Add early return guard in processChartData(): if !metrics?.data return []
- Add response guard in useEffect to short-circuit setChartData call
- Affected users would see a blank panel crash; now renders empty state

Sentry: ISSUE-4821"

[fix/metrics-panel-null-data-sentry-4821 a3f9c12] fix(dashboard): guard against null metrics.data...
1 file changed, 2 insertions(+), 1 deletion(-)

● Pushing branch and opening PR…

$ git push -u origin fix/metrics-panel-null-data-sentry-4821
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Writing objects: 100% (5/5), 1.02 KiB | 1.02 MiB/s, done.
Branch 'fix/metrics-panel-null-data-sentry-4821' set up to track remote.

$ gh pr create \
--title "fix(dashboard): guard against null metrics.data in MetricsPanel" \
--body "..." \
--base main \
--label "bug,sentry"

✓ Pull request created:
https://github.com/acme-org/acme-web/pull/1138

──────────────────────────────────────────────────

Done. PR #1138 opened · 2 lines changed · 4 tests passing
Sentry ISSUE-4821 will auto-resolve once the deploy goes out.

$