Skip to content

Share to X from the waitlist thank-you - #34

Merged
vedantlavale merged 1 commit into
mainfrom
feat/waitlist-share
Sep 30, 2026
Merged

vedantlavale merged 1 commit into
mainfrom
feat/waitlist-share

Conversation

@vedantlavale

Copy link
Copy Markdown
Owner

A signup ends in a blue pill and nothing else, so the one moment a visitor is most likely to tell a friend about billy is the moment we do not ask them to. This adds a share button under the confirmation.

Before and after

Desktop, 1280px:

Before After

Phone, 375px:

Before After

On hover the border and label turn #0070d7. The same shot was taken with prefers-reduced-motion: reduce on, which drops the entrance animation and leaves the block fully visible:

hover

What the button does

It anchors to https://x.com/intent/tweet?text=...&url=https://trybilly.tech, so a click opens X's composer with the text and the link already filled in. Nothing reaches a timeline until the reader presses Post.

The post reads:

I just joined the waitlist for billy, a free invoice editor that runs entirely in your browser. Launching soon, with a surprise for the early birds.

That string is a single constant at the top of the file, so rewording it is a one line edit. The X mark is inline SVG, so the button brings no dependency with it. Nothing about the reader is sent along: the link carries the fixed text and the site URL only, no name, no email, no signup id.

Fitting the page

The button is cut from the form beside it rather than from a generic button library. 44px tall like the Join button and the inputs, 8px radius, a #e5e7eb border that turns #0070d7 on hover, 14px semibold #37352f, and the same 12px #6b6a65 fine print the form already ends on. The block reuses cs-rise, the page's own entrance, so it arrives with the rest of the layout instead of popping in.

Checks

  • bunx tsc --noEmit, clean.
  • bun run lint, 12 problems (2 errors, 10 warnings). The same 12 as main, all in components/ui/, none in the file this touches.
  • bun run build, static export succeeds with 4 routes prerendered. I also served the export and drove the flow: the button renders, the focus ring appears on a real Tab press, and the only console message is the PostHog token warning that fires without a local .env.
  • There is no test runner in this repo, so there is nothing to run on that front.

Two calls worth a look

The button reads "Share on X" and uses the X mark rather than the Twitter bird, since that is what the endpoint serves now. One word to change if you would rather it say Twitter.

The button only shows in the visit where the signup succeeds, so someone who joined earlier sees the form again when they come back. Making it stick would need a flag in localStorage, which I left out: no app code on this branch uses localStorage yet, so that would be the first one.

The confirmation now carries a "Share on X" button. It opens X's intent
URL with the post already written and a card for trybilly.tech, so the
reader can edit it before sending. It is a plain anchor, which means it
works without JavaScript and posts nothing without a click.

The button is cut from the form beside it: 44px tall, 8px radius, a
#e5e7eb border that turns #0070d7 on hover, and the same 16/14/12 type
scale. The block reuses cs-rise, so it lands with the rest of the page.
Copilot AI lite review requested due to automatic review settings September 28, 2026 02:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vercel

vercel Bot commented Sep 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
billy Ready Ready Preview Sep 28, 2026 2:57am UTC

@cloudflare-workers-and-pages

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Failed ❌

View logs ↗
52ee197 2026-09-28T02:57:21.125Z View logs ↗

@cloudflare-workers-and-pages

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Failed ❌

View logs ↗
52ee197 2026-09-28T02:58:30.664Z View logs ↗

@vedantlavale vedantlavale self-assigned this Sep 30, 2026
@vedantlavale
vedantlavale merged commit 8a22c83 into main Sep 30, 2026
2 of 5 checks passed

This branch was successfully deployed

1 active deployment
Preview — 52ee1978 Deployed Sep 28, 2026 by vercel[bot]
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.

2 participants