KamoCRM

OAuth mode — the standard page untouched, tenant chrome off (IoT SP09)

Featurekamo-login
Shipped
October 18, 2026 at 7:28 AM UTC
Author
Kamo
Commit
9de671c

/?oauth_request=<64 hex> is the OAuth sign-in page by a beforeFiles rewrite in next.config.mjs to /oauth/sign-in (the browser keeps the URL), not by a switch inside app/page.tsx: a switch on the search params makes / either a dynamic render (searchParams) or a client bail-out to an empty Suspense fallback (useSearchParams) — both change the standard page's first render. With the rewrite app/page.tsx is not edited at all, / stays a static prerender, and its HTML is identical to origin/main's but for the random field-name suffix it draws at every build. The has-pattern is mode.mjs's OAUTH_REQUEST_VALUE; Next anchors it and reads the LAST value of a repeated parameter, so isOAuthMode reads the last value too (pinned against Next's own matchHas in tests/oauth-mode). analyticsAnalytics renders nothing in the OAuth context (/oauth/... or the OAuth-mode URL) — checked in the server render too, because an afterInteractive Script still emits a preload <link> for analytics.kamocrm.com there; DynamicMetaLoader and the ribbon's org wording stand down in the same context (effects only). Nothing changes for any other route. The error card is a client component (OAuthErrorView): MUI from a server component hydrated with a mismatch (#418) in the real build.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing