Skip to content
Centriu
Centriu Vértice

Onboarding Consent Hydration-Race Automation: A Checked Box the Server Would Never See

Centriu Vértice's onboarding includes a document-acceptance step whose entire product purpose is producing an accurate, dated record of what a person actually agreed to — and that step tracked which documents had been accepted using an in-memory application state, rather than reading the browser's own checkbox elements directly at every point in the page's life. Between a server-rendered page's HTML arriving in the browser and the page's own client-side application code actually taking control of it — an unavoidable window, short on a fast connection and genuinely long on a slow one — clicking a native HTML checkbox is pure browser behavior with no application code involved at all: the box visibly checks, and the application's own internal model of what has been accepted never learns anything happened. Measured directly: up to eight checkboxes could appear fully, visibly checked on screen, sitting directly above a call to action reading "Accept all documents to continue," while the application's own internal state — the exact thing that would determine what a submission actually records — reflected none of those clicks at all. The fix does not wait longer, force a page reload, or suppress the platform's own built-in warning for exactly this class of mismatch — three tempting shortcuts the fix's own account explicitly names and rejects. Instead, at the precise moment the application's code takes control of the page, it reads the real, current state of every checkbox directly from the browser's own DOM exactly once, and adopts whatever was genuinely visible at that instant into its own internal model — after which every checkbox becomes fully controlled by the application, and the two states can never diverge again for the remainder of that page's life.
8 checked, 0 recorded
DOM adopted on mount
Onboarding document acceptance screen
A checked box the server would never see.

A server-rendered page has a real, unavoidable moment where the browser is smarter than the application running on it

A modern web page commonly ships its initial HTML from a server so a person sees something immediately, and then "hydrates" — its own client-side application code attaches itself to that already-visible HTML and takes over responding to further interaction. In the window between those two events, the HTML on screen is fully real and fully interactive as far as the BROWSER itself is concerned — a checkbox can be checked, a link can be clicked, a field can be typed into, all using the browser's own native behavior, none of it yet reaching the application's own code at all. For most interactive elements, that native behavior and the application's eventual, controlled behavior end up agreeing by the time it matters. The specific risk is a page design where the application later treats itself as the sole, authoritative source of an element's state — because at that point, whatever a real person did during the hydration window, using nothing but ordinary browser behavior, can simply be invisible to the one system that will actually decide what happens next.

How the underlying problem shows up before you fix it

A page tracks the checked state of one or more checkboxes purely in the client-side application's own in-memory model, initialized to a default value, rather than by reading the actual DOM state at the moment the application takes control of the page.

A native, unstyled HTML form control (a checkbox, in particular) can be interacted with by a real browser using pure built-in behavior, producing a visible change on screen, during a window where the application's own event handlers are not yet attached and cannot observe that interaction at all.

The visible, on-screen state of a control and the application's own internal record of that same control's state can genuinely diverge for a real person, in a way invisible to that person — they see a checked box; the system that will act on their behalf does not know it is checked.

The specific consequence of this divergence is most severe on a screen whose entire product purpose IS accurately recording a person's explicit choice (a consent step, an acceptance step) — the gap between what the screen shows and what a submission would actually carry is not a cosmetic mismatch, it is the complete failure of that screen's one job.

This class of defect is specifically more likely on a slower network connection or a slower device, because the hydration window it depends on is exactly the delay between HTML arriving and an application's own JavaScript finishing execution — meaning the people most likely to encounter it are disproportionately those with the least reliable connections, not a random, uniform sample of visitors.

How a checkbox that looked checked and a state that said otherwise were reconciled

Centriu Vértice's onboarding flow includes a document-acceptance screen listing several required documents, each with its own checkbox, plus a separate control confirming acceptance of the platform's own rules. The screen's entire product purpose is producing an accurate record — with a date and a specific document version — of exactly what a person actually agreed to before proceeding. The screen tracked which documents had been accepted purely through the client-side application's own in-memory state, initialized empty, updated only through the application's own event handler attached to each checkbox.

The defect lived in the real, unavoidable window between the page's server-rendered HTML reaching the browser and the page's own client-side application code actually attaching itself and taking control — a window that is genuinely brief on a fast connection and genuinely not brief at all on a slow one. Clicking a native HTML checkbox during that specific window is pure, built-in browser behavior: the box visually checks itself, and because the application's own event-handling code has not yet attached to the page, that click never reaches the application's own model of what has been accepted at all. The practical, measured result: a real person could see, and did see, up to eight checkboxes fully and visibly checked on screen — directly above a call to action reading "Accept all documents and the rules to continue" — while the application's own internal state, the exact thing that would determine what an eventual form submission actually records, reflected none of those specific clicks. The fix's own account is direct about what this actually is: not a confusing but harmless visual glitch, but the screen's own interface affirming an acceptance that the eventual server request would never carry — on a screen whose sole product purpose is an accurate acceptance record.

The fix's own documentation is explicit about three tempting alternatives it deliberately did not take. It does not simply wait longer before allowing interaction, which would only narrow the window without actually closing it. It does not force a page reload once the application takes over, which would be a jarring, confusing experience for a person who had just genuinely interacted with the page. And it does not suppress the underlying platform's own built-in warning mechanism for exactly this class of client-versus-server rendering mismatch — a mechanism that exists specifically to surface this kind of defect during development, and one the fix's own reasoning treats as a signal to listen to rather than silence.

Instead, the fix reads the real, current, actual state of every relevant checkbox directly from the browser's own DOM at the exact moment the application's code takes control of the page — a one-time reconciliation, run once and never again — and adopts whatever was genuinely visible on screen at that precise instant into the application's own internal model. From that moment forward, every checkbox on the screen is a fully application-controlled element: its visible state and the application's own internal record of that state are, by construction, the same value from then on, and cannot diverge again for the remainder of that page's life. A separate control on the same screen, built from a different underlying component that renders as a button rather than a native input, was confirmed to need no equivalent fix — clicking it before the application takes control produces no visible change at all, because unlike a native checkbox, that specific control's appearance is entirely driven by the application's own code from the very first render, with nothing for the browser's native behavior to act on independently.

What is actually built today

Centriu Vértice's document-acceptance onboarding step reads the actual, real DOM state of every checkbox exactly once, at the precise moment the page's client-side application takes control, and adopts whatever a person genuinely clicked during the hydration window into its own internal model.

From that reconciliation point forward, every checkbox on the screen is fully application-controlled — its visible, on-screen state and the application's own internal record of that state are the same value by construction, for the remainder of the page's life.

The fix requires no delay before the page becomes interactive, no forced reload once the application takes control, and no suppression of the underlying platform's own built-in rendering-mismatch warning — three approaches the fix's own documentation explicitly considered and rejected.

A separate, differently-built control on the same screen (rendered as a button rather than a native checkbox) was confirmed, by design, to already need no equivalent fix — it has no native browser behavior capable of changing its own appearance independently of the application.

The underlying acceptance record a submission actually produces — the date and specific document version a person accepted — now reliably reflects exactly what that person genuinely clicked, including clicks that landed during the hydration window.

Eight checked boxes, an empty record underneath them (illustrative framing of the actual measured finding)

Before the fix, a person moving quickly through Centriu Vértice's onboarding — clicking through each required document's checkbox as the page was still finishing loading, an entirely ordinary way to interact with a page that feels slow to respond — could see all eight checkboxes fully checked on screen, sitting directly above a button inviting them to continue, while the application's own internal state, the one thing that actually determined what a submission would record, reflected none of those specific clicks. After the fix, the exact same fast, early interaction is captured correctly: the application reads the real, current DOM state the instant it takes control, adopts every genuine click that happened before that moment, and the screen and the eventual record agree from that point onward.

What changes operationally

Centriu Vértice's document-acceptance onboarding step now reconciles its own internal consent-tracking state against the real, actual DOM at the precise moment the page's client-side application takes control, adopting any genuine checkbox click that occurred during the unavoidable hydration window — closing a gap where a real, visible checkbox click could be entirely invisible to the exact record an eventual submission would produce.

When this is not the right fit

This automation governs the internal client-side state-management timing of Centriu Vértice's own onboarding consent screen — it does not change what documents a member must accept or what a consent record contains, does not add a customer-facing setting, and is specific to a server-rendered page using native HTML form controls; an application that renders no interactive HTML before its own JavaScript finishes loading (removing the hydration window entirely) would not be exposed to this specific class of timing gap.

Trusting application state alone vs. reconciling it against the real DOM once

Tracking a checkbox's state purely inside the client-side application's own model, updated only through the application's own event handlers, is the more common and simpler pattern, and works correctly for the overwhelming majority of interactions that happen after the application has fully taken control of the page. The gap is specific to the narrow, unavoidable window before that takeover completes, during which native browser behavior can change an element's visible state with no way for a purely application-driven model to know about it. A single, one-time reconciliation against the real DOM at the exact moment of takeover closes that gap without requiring the application to track DOM state continuously for the rest of the page's life.

Related systems

Main system: Centriu Vértice.

What it does NOT do

  • Does not change what documents a Centriu Vértice member must review or accept, or what data a consent record contains — this fix corrects only whether a genuine checkbox click occurring during the hydration window is correctly captured by the application's own internal state.
  • Does not add a delay before the onboarding page becomes interactive, and does not force a page reload once the application takes control — both were explicitly considered and rejected in favor of a one-time state reconciliation at the moment of takeover.
  • Does not suppress or work around the underlying platform's own built-in warning for client-versus-server rendering mismatches — that mechanism remains fully active and is treated as a legitimate signal, not a nuisance to silence.
  • Does not retroactively identify or correct any specific historical consent record that may have been affected by this gap before the fix shipped — a team with that concern would need its own separate historical review, which this fix does not provide.
  • Does not overlap with the other two fixes shipped in the same commit (a database write-boundary correction, and a phone-verification-ceremony removal) — both are covered on their own companion pages and are architecturally unrelated to this client-side rendering-timing fix.

Security and governance

Centriu Vértice's onboarding consent-acceptance step now reconciles its own internal state against the real browser DOM at the exact moment the page's application code takes control, ensuring a genuine checkbox click occurring during the unavoidable server-to-client hydration window is correctly captured in the eventual consent record. Any personal data referenced in consent records remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Available on a single plan. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

What exactly is the "hydration window" this fix addresses?

The real, unavoidable gap between a server-rendered page's HTML reaching the browser and the page's own client-side application code actually attaching itself and taking control of further interaction. It is short on a fast connection and genuinely longer on a slow one — but it always exists to some degree.

How could a checkbox appear checked if the application never registered the click?

Because checking a native HTML checkbox is pure browser behavior that requires no application code at all — the browser changes the element's visible state on its own. If the application's own event handlers are not yet attached when that click happens, the application simply never learns about it.

Was this measured, or a theoretical concern?

Measured directly: up to eight checkboxes could appear fully checked on screen, sitting above a call-to-action inviting the person to continue, while the application's own internal state — what an actual submission would record — reflected none of those clicks.

Why not just add a short delay before the page becomes interactive?

The fix's own documentation explicitly considered and rejected this: a delay only narrows the window during which the gap can occur, it does not close it, and it makes the page feel less responsive for every visitor regardless of whether they happen to click during that window.

Does this affect the actual consent record's content — what documents and versions are recorded?

No — the fix corrects only whether a genuine click occurring during the hydration window is correctly captured. What gets recorded once a click is captured (the document, its version, the date) is unchanged.

What does Centriu Vértice cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Vértice captures a genuine consent click every time

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Vértice — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Vértice — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review