Skip to content

Load the booking the way Cal.com does, and add /meeting/ - #28

Merged
silveltman merged 2 commits into
mainfrom
fix/cal-embed-native-skeleton
Oct 12, 2026
Merged

silveltman merged 2 commits into
mainfrom
fix/cal-embed-native-skeleton

Conversation

@silveltman

Copy link
Copy Markdown
Contributor

Sil missed Cal.com's animation now that the booking appeared in one step, wanted the loading space filled better or the spinner higher, and asked for a full-page booking at /meeting/ as on full.dev.

Contact page

  • cal.embed.pageType: user.event.booking.slots makes embed.js draw Cal.com's own skeleton of the booking at once, in the space it takes.
  • The frame shows at linkReady, so the times slide in with Cal.com's animation again. scrolling="no" keeps that animation free of scrollbars.
  • Until linkReady the frame stays out of the layout, under the skeleton. Cal.com sizes its skeleton for a 300px frame below it, so a frame that grew first pushed the box from 572 to 724px for about 100ms.
  • Our spinner shows only until the skeleton is there (about 150ms with the preload), now just below the buttons.
  • The fallbacks are unchanged: the direct link shows when Cal.com fails, is blocked, or is not there after 10 seconds.

/meeting/

  • A meeting page type: Cal.com's own booking page (cal.com/silveltman/meeting?layout=month_view) in a frame across the viewport, without header and footer, as full.dev/meeting/.
  • base.astro takes a bare prop for it, and keeps the head (SEO, favicons, PostHog). Cal.com sends no frame restrictions.

Tested on the local build in Chromium with scrollbars shown:

  • contact, 360 to 1512px:
    • no visible scrollbar;
    • no clipped content;
    • on desktop the box stays 572px from first paint to the end;
    • the link shows when Cal.com is blocked, stalls or fails;
    • no scrollbar while clicking through to the booking form;
  • /meeting/ at 1440×900 and 390×844: the frame fills the viewport, the page itself does not scroll, and there is no header or footer.

🤖 Generated with Claude Code

- The contact page uses Cal.com's own skeleton (cal.embed.pageType),
  which takes the booking's space at once, and shows the frame at
  linkReady, so the times slide in with Cal.com's animation again. The
  frame stays out of the layout until then: Cal.com sizes its skeleton
  for a 300px frame, so a frame that grew first made the box jump. A
  spinner, higher up, shows only until the skeleton is there.
- /meeting/ shows Cal.com's own booking page in a frame across the
  viewport, without header and footer, as full.dev/meeting/. Base takes
  a bare prop for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@netlify

netlify Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for silveltman ready!

Name Link
🔨 Latest commit 9244e24
🔍 Latest deploy log https://app.netlify.com/projects/silveltman/deploys/6acd30c1f7746f616fcfbe39
😎 Deploy Preview https://deploy-preview-28--silveltman.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Cal.com keeps its frame hidden after linkFailed, so a later linkReady
no longer hides the link and leaves an empty space.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@silveltman
silveltman merged commit fbb4e82 into main Oct 12, 2026
7 checks passed
@silveltman
silveltman deleted the fix/cal-embed-native-skeleton branch October 12, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant