Skip to content

feat(giveback): gate the page for geo-unavailable regions#6324

Closed
tsahimatsliah wants to merge 7 commits into
mainfrom
feat/giveback-geo-gate
Closed

feat(giveback): gate the page for geo-unavailable regions#6324
tsahimatsliah wants to merge 7 commits into
mainfrom
feat/giveback-geo-gate

Conversation

@tsahimatsliah

@tsahimatsliah tsahimatsliah commented Jul 15, 2026

Copy link
Copy Markdown
Member

What

Ports the GeoGateFallback screen to the live Giveback page. When Giveback isn't available in the visitor's region, the whole page is replaced with a single explicit gate that still explains what the campaign is:

Giveback is not available in your country yet
Giveback turns part of our growth budget into donations for causes the community picks, funded by daily.dev, at no cost to you.
It's in beta and rolling out to more countries soon.

The component originally lived on feat/giveback-mvp (design mock-up, never merged) driven by mock context state. This wires it to real data on main.

Why

The Giveback FAQ already promises this — "If it isn't live where you are yet, you'll see a notice" — but no notice was ever rendered. Geo-blocked visitors currently just get the hero with no explanation. This closes that gap.

Wiring

  • Gate signal is the campaign-wide status.enabled field (resolves for anonymous visitors too, unlike per-user eligible which is null until sign-in).
  • Only gates after status resolves (!!status && !status.enabled) so the fallback never flashes before the campaign body while the overview query is in flight.
  • The funnel overlay and campaign body are both suppressed when geo-blocked.

Test plan

  • New GeoGateFallback.spec.tsx (provider-light render assertion) passes
  • typecheck-strict-changed.js clean
  • ESLint clean on changed files

🤖 Generated with Claude Code

Preview domain

https://feat-giveback-geo-gate.preview.app.daily.dev

Ports the GeoGateFallback screen (originally on feat/giveback-mvp, never
merged) to the live Giveback page. When the campaign isn't enabled for
the visitor's region we replace the whole experience with a single
explicit "not available in your country yet" gate that still explains
what Giveback is.

Wired to the campaign-wide `status.enabled` field (resolves for
anonymous visitors too), only after status resolves so the fallback
never flashes before the campaign body. The FAQ already promised this
notice; this delivers it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 15, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Jul 15, 2026 8:50am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Jul 15, 2026 8:50am

Request Review

Renders GeoGateFallback in a dark, full-screen frame so the geo-blocked
state is viewable without triggering the backend availability flag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The gate copy overflowed the viewport on mobile because it used fixed
LargeTitle/Title3 sizes. Switch to mobile-first typography that scales up
(Title2 -> tablet Title1 -> laptop LargeTitle; Callout -> tablet Title3),
bound the text column with w-full, and tighten spacing/glow on small
screens. Verified no horizontal overflow at 360/390/768/1280.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
DO NOT MERGE this commit. Forces geoBlocked=true so the geo gate can be
reviewed in the real app layout (header/sidebar/footer nav) on the
webapp preview. Revert before the PR is ready.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits July 15, 2026 11:34
Small hopeful Punchy render above the copy on the geo-unavailable gate.
Real alpha, so it floats on the dark surface without mix-blend-screen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Double the mascot size (h-20/24 -> h-40/48) so it reads as the focal
point of the gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
h-40/48 -> h-32/36 so the mascot stays prominent without dominating.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tsahimatsliah

Copy link
Copy Markdown
Member Author

Superseded by #6325 — a clean engineering PR off main with the TEMP-REVIEW geo-block force removed (geoBlocked = !!status && !status.enabled) and squashed into a single commit. All CI green there. Closing this mock-up.

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