midday-ai/midday
Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.
30 files reviewed·July 25, 2026
Top fix
Maintain current token discipline as new components are added
More findings
- No inconsistent spacing or typography patterns found across files
- Component API surface stayed clean with no ad-hoc style overrides
Verdict
Consistency is the whole story here: 30 files, zero issues, one coherent visual language applied without exception. The only risk is complacency, keep auditing as surface area grows so this discipline doesn't erode silently.
Files Rams reviewed
apps/dashboard/src/app/[locale]/(app)/(sidebar)/apps/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/customers/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/inbox/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/invoices/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/layout.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/settings/billing/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/settings/developer/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/settings/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/tracker/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/transactions/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/upgrade/page.tsx
apps/dashboard/src/app/[locale]/(app)/(sidebar)/vault/page.tsx
apps/dashboard/src/app/[locale]/(app)/oauth/authorize/page.tsx
apps/dashboard/src/app/[locale]/(app)/onboarding/page.tsx
apps/dashboard/src/app/[locale]/(app)/teams/page.tsx
apps/dashboard/src/app/[locale]/(public)/connectors/callback/page.tsx
apps/dashboard/src/app/[locale]/(public)/i/[token]/page.tsx
apps/dashboard/src/app/[locale]/(public)/login/page.tsx
apps/dashboard/src/app/[locale]/(public)/oauth-callback/page.tsx
apps/dashboard/src/app/[locale]/(public)/p/[portalId]/page.tsx
apps/dashboard/src/app/[locale]/(public)/r/[linkId]/page.tsx
apps/dashboard/src/app/[locale]/(public)/s/[shortId]/page.tsx
apps/dashboard/src/app/[locale]/layout.tsx
apps/website/src/app/agents/page.tsx
apps/website/src/app/chat/imessage/page.tsx
apps/website/src/app/chat/slack/page.tsx
apps/website/src/app/chat/telegram/page.tsx
apps/website/src/app/chat/whatsapp/page.tsx
apps/website/src/app/compare/[slug]/page.tsx
apps/website/src/app/compare/page.tsx
Working well
- Each summary card (InvoicesOpen, InvoicesOverdue, InvoicesPaid, InvoicePaymentScore) gets its own Suspense boundary rather than one wrapping all four, so cards resolve independently instead of blocking on the slowest query.
- Wrapping DataTable in its own ErrorBoundary and Suspense, separate from the summary cards' Suspense boundaries, means a table fetch failure doesn't take down the summary widgets above it, and vice versa.
- Using Suspense with a matching AppsSkeleton fallback and an ErrorBoundary with a dedicated ErrorFallback is the right shape for handling loading and error states without extra plumbing in this file.
- The trial-state card communicates a major business change ("Midday is joining Ramp") in plain, reassuring language instead of vague status text, telling users exactly what changes for them.
Scored July 25, 2026 with Rams Engine v0.0.3 · Engine changelog
First scored July 21, 2026: 90/100. This rescore on v0.0.3: 98/100.
This page is an automated design review of midday-ai/midday’s UI code: 30 files read against 291 versioned rules covering accessibility, color, typography, spacing, components, UX, motion, and craft. The score is out of 100; confirmed criticals cap it — one at 59, two at 49, three or more at 39.
More design scores
Score your own repo.
Free on public repos, no account. The same engine that scored this page reads your UI code and mints a score page like this one.
Public repos only. The full engine reviews the UI code and mints a public score page — we email you the link too. Already-scored repos open instantly.