Invitation signups are now more resilient — no more redundant database work when a new user completes their account.
When someone accepts an invitation and creates their NavEd account, a behind-the-scenes signal fires twice (once when they click the invite link, once when they submit the signup form). Previously, the second firing would scan every active school in the database looking for their data, even though it had already been found and the account was already set up correctly. With many schools on NavEd, this created unnecessary database load on every invited signup.
We've fixed this by teaching the signup handler to recognize the second signal as a no-op and exit cleanly. We also improved invitation cancellation to clean up lookup data properly, so re-inviting someone to a different school always works on the first try.
Fixes and Improvements
- Eliminated 30–60 redundant database queries per invited user signup (Sentry #7334065592)
- Invitation cancellation now removes the fast-path lookup record so future re-invites to different schools resolve correctly
- Improved test coverage: added regression test for the double-fire guard and corrected a misleading test that was named after a scenario it did not actually exercise
Broken transcript links now show a helpful recovery option instead of a confusing error.
If someone followed an old or mis-typed transcript link — or if a search engine crawler stumbled onto an invalid URL — NavEd was logging it as an application error and surfacing it in our monitoring. The link still failed gracefully, but the noise made it harder to spot real problems.
We've fixed this by teaching the transcript viewer to recognize obviously invalid links upfront, without querying the database at all. Valid-looking links that have no matching transcript (expired or never-existed) are now also handled quietly, with a clear message and a recovery form so users can retrieve their link by email. Genuine unexpected errors still alert our team as before.
Fixes and Improvements
- Transcript links containing non-UUID tokens (e.g. bots probing
/transcript/app/) are now rejected immediately — no database query, no Sentry alert
- Expired or missing transcript links now show a user-friendly error page with an email recovery form
- Separated error logging levels: crawler/bot noise is
WARNING, unexpected server errors remain ERROR
- Added regression tests covering all three token states: invalid format, valid UUID but missing record, and genuine server error