From 7232057685a67d92a7a595fc7b390f533cdc035f Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 13 Oct 2026 12:34:26 +0200 Subject: [PATCH] Render the registration form with React The server-rendered registration form is replaced by a React island mounted on `/register`, which renders the CAPTCHA in-page, gives live password complexity feedback, and lays out the upstream provider buttons and the sign-in link the way `/login` does. The island owns the whole form, so every variant of the page is rendered from the mount data alone, and the user fills it in one step. Server-side validation errors are threaded back into it through the mount node, so a rejected submission re-renders with the errors attached to the fields they belong to, until the user edits them. `RegisterContext` resolves the provider names and the sign-in link server-side so that the island only has to render them. The sign-in link is derived from the post-auth action in the query string instead of the `PostAuthContext` loaded from the database, which drops a round trip from both the GET and the invalid-form re-render. Registering now requires JavaScript, including on the variant with upstream providers only and on the one without a CAPTCHA: the