Version Packages - #142
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
September 7, 2026 21:08
7d5ef4d to
4814afb
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
September 7, 2026 22:40
4814afb to
640665d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@seamless-auth/react@0.11.0
Minor Changes
bd26c22: Read the
returnToan OAuth sign-in asked for, and land on it.startOAuthLoginhas taken areturnTosince OAuth landed here, and nothing ever read oneback. The auth server validated it against the configured origins and signed it into the
state, but
finishOAuthLoginwas typed as a bareMessageResult, so the whole callback bodywas discarded and an adopter had no way to learn where the flow had been asked to end up.
finishOAuthLoginnow resolves toFinishOAuthLoginResult, the completed OAuth responseminus its session material, for the same reason
LoginStartResultdrops it: sessions arecarried by cookies, so there is no reason to hand an adopter raw tokens. The new field on it
is
returnTo, absent when the caller asked for nothing.The bundled
OAuthCallbackview lands there instead of always going to/. This is the samegap the magic link redirect closed in 0.10.0: the headless client could reach the feature and
an application using
AuthRoutescould not, which is the audience least likely to be wiringup its own client.
The view only follows a destination on its own origin. That is not the guard against an open
redirect, which the auth server already applied before signing the state; it is that these
views route with react-router, which cannot leave the application. An adopter that wants to
send someone to another origin reads
returnTooff the result and navigates itself.Requires
@seamless-auth/types0.20.0, which carries the response field and holds bothreturnTofields to a scheme that can be a link destination.74f17d2: Let the bundled screens choose where a magic link lands.
requestMagicLink(redirectUri)arrived in 0.10.0, but only the headless clientpath could reach it. An application using
AuthRouteshad no way to set one, sothe deployment-wide destination was the only option for the audience least likely
to be wiring up its own client.
AuthProvidernow takesmagicLinkRedirectUri, anduseAuthClient()hands it tothe client as the default for every send.
SeamlessAuthClientOptionscarries thesame field, so a directly constructed client can do this too.
The destination lives on the client rather than at each call site on purpose. The
sign-in screen and the resend on the "check your email" screen both send with no
argument, so they cannot disagree about where the link goes. A resend that landed
somewhere other than the link it repeats would be a confusing failure and an easy
one to miss in review.
Nothing changes if you omit it: the same empty body is sent and the deployment's
own destination still applies. An explicit
requestMagicLink(uri)still wins overthe configured default.
eb10397: Stop painting the disabled submit button as a filled grey primary.
On the sign-in and MFA screens the submit button was disabled until its field
validated, and while disabled it was filled with
--seamless-disabledwhile thelabel kept
--seamless-accent-contrast. Those two colours were chosen indifferent places, so no value a themed app could supply worked in both a light
and a dark theme: lighten the fill and the label washed out, darken it and the
label went near-black on dark. The result read as a primary button that had
broken rather than a control waiting on input.
The disabled state is now the enabled button at reduced opacity. Label and
background stay on the accent pair the app already tuned, so their contrast
cannot invert with the theme, and the control reads as inactive instead of
broken. This matches how the magic-link and passkey screens already draw their
disabled buttons.
--seamless-disabledis no longer read anywhere and has been dropped from thetoken table. If you set it, remove it; every other token behaves as before.
The sign-in screen now also says why the button is refusing, in a live region
below it that reports whether the field is empty, incomplete, or ready. A
disabled button is not focusable and is passed over by screen readers, so the
refusal was previously silent for the people least able to guess the reason.
Fixing that surfaced a related bug: a valid email typed in registration left the
Login button enabled after switching to sign-in, even with the identifier field
empty, because the submit check fell through to the registration field. Each
mode now checks only its own field.