Session Expired Sign In

Timed-out session page: an accent headline over an account strip showing the avatar, address and sign-out timestamp, an autosave reassurance line, and a sign-in seal button beside an account switch link.

PRO

Error27: Session Expired Sign In

The page a timed-out session lands on: an account strip shows who was signed in and when the session closed, a check line confirms the draft was saved, and a seal button takes them back in.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/error27?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/error27?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/error27.tsx, plus the two design-system primitives it renders through: badge6 for the square eyebrow and button1 for the sign-in seal button.

Quick start

The installed file exports error27Demo alongside the block: the exact props behind the preview above. Spread it to get a working session page in one line.

tsx
import { Error27, error27Demo } from "@/components/beste/block/error27";

export default function SessionExpired() {
  return <Error27 {...error27Demo} />;
}

Then pass the account that just timed out, and send them back where they were:

tsx
import { Error27 } from "@/components/beste/block/error27";

export default function SessionExpired({
  user,
  returnTo,
}: {
  user: { name: string; email: string; image: string };
  returnTo: string;
}) {
  return (
    <Error27
      label="Session Expired"
      code="401"
      heading="We signed you out <strong>to keep the desk clean</strong>."
      description="After two hours without activity we close the session on purpose."
      labels={{ savedNote: "Your draft was saved automatically.", signedOutAt: "Signed out" }}
      signedOutAt="23 Jul 2026, 15:52 UTC"
      account={{
        name: user.name,
        email: user.email,
        avatar: { src: user.image, alt: "Portrait of the signed-out account holder" },
      }}
      button={{ label: "Get back in", href: `/sign-in?next=${returnTo}` }}
      switchLink={{ label: "Not you? Use another account", href: "/sign-in" }}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringEyebrow text rendered through the square-marker badge
codestringStatus code shown after the eyebrow divider
headingstringHeadline HTML, rendered as an h1; <strong> marks the accent clause
descriptionstringExplanatory paragraph under the headline
labelsError27Labels{}Autosave line and the caption above the timestamp
signedOutAtstringWhen the session closed, shown on the right of the account strip
accountAccountInfoThe account that was signed out
buttonActionLinkSign-in seal button
switchLinkActionLinkText link beside the sign-in button
classNamestringExtra classes for the outer <section>
ts
type Error27Labels = {
  savedNote?: string;
  signedOutAt?: string;
};

type AccountInfo = {
  name: string;
  email: string;
  avatar: { src: string; alt: string };
};

type ActionLink = {
  label: string;
  href: string;
};

Behavior notes

More Error blocks

View all Error
PRO

error18

Expired Link Recovery

Expired magic-link page with a square eyebrow and status code, a bold accent headline, the expiry timestamp in a bordered strip, a seal button that swaps to a sent confirmation, and a square-bullet list explaining the expiry.

PRO

error15

500 Incident Report

Server error page with a square eyebrow and status code over a hairline rule, a bold accent headline, a bordered incident table of reference, timestamp and service rows, and a retry seal button beside a status page link.

PRO

error17

Maintenance Window Notice

Planned downtime page with a square eyebrow and status code, a bold accent headline, three bordered cells for the maintenance window, a working notify-me email form with a success state, and a live progress link.

PRO

error26

Payment Required Lockout

Billing lockout page: an accent card chip and headline with an update-payment seal button on the left, an unpaid invoice table and a square-bullet list of what stays untouched on the right.

PRO

error25

Rate Limit Cooldown

Too-many-requests page with a square eyebrow and status code, an accent headline, three bordered usage cells, and a live cooldown counter that swaps itself for a retry seal button when it reaches zero.

PRO

error22

Planned Downtime Window

Monochrome maintenance page: a parenthetical eyebrow over a display headline, the downtime window as a ruled three-column record, and a rounded notify-me field with a confirmed state.