Skip to content

feat(web): change mobile CTA from Download to Get reminder#2148

Merged
ComputelessComputer merged 1 commit intomainfrom
devin/1764932504-mobile-get-reminder
Dec 6, 2025
Merged

feat(web): change mobile CTA from Download to Get reminder#2148
ComputelessComputer merged 1 commit intomainfrom
devin/1764932504-mobile-get-reminder

Conversation

@ComputelessComputer
Copy link
Collaborator

@ComputelessComputer ComputelessComputer commented Dec 5, 2025

Summary

Updates the mobile header CTA buttons to always show "Get reminder" for mobile users, which redirects to the home page hero section with the email form. Previously, the mobile check happened after the download action check, which could result in mobile users seeing "Download" in certain cases.

Changes made:

  • CTAButton: Added early return for mobile users to show "Get reminder" before checking download action
  • MobileMenuCTAs: Restructured conditional to check platform === "mobile" first

Review & Testing Checklist for Human

  • Test on actual mobile device: Verify the header CTA shows "Get reminder" (not "Download") on iOS/Android browsers
  • Test the redirect: Clicking "Get reminder" should scroll to the hero section with the email form
  • Test desktop behavior: Verify Mac users still see "Download" button that links to /download/apple-silicon
  • Test mobile menu: Open the hamburger menu on mobile and verify the CTA there also shows "Get reminder"

Notes

Requested by: john@hyprnote.com (@ComputelessComputer)
Link to Devin run: https://app.devin.ai/sessions/6bc3d25c510c4fc684d184400759081c

- Update CTAButton to show 'Get reminder' for mobile users
- Update MobileMenuCTAs to show 'Get reminder' for mobile users
- Both buttons now redirect to home hero section with email form

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Dec 5, 2025

Deploy Preview for hyprnote-storybook ready!

Name Link
🔨 Latest commit 22706dd
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/6932bbb854f1e00008d53958
😎 Deploy Preview https://deploy-preview-2148--hyprnote-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

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

@netlify
Copy link

netlify bot commented Dec 5, 2025

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 22706dd
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/6932bbb8f1069200087287f5
😎 Deploy Preview https://deploy-preview-2148--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 5, 2025

📝 Walkthrough

Walkthrough

The changes modify the header component to add mobile-specific behavior for call-to-action buttons, including a dedicated "Get reminder" link for mobile platform, scroll-to-hero behavior, and menu-close handlers.

Changes

Cohort / File(s) Summary
Mobile CTA and Menu Behavior
apps/web/src/components/header.tsx
Adds mobile-specific early return in CTAButton rendering a "Get reminder" link; replaces conditional label rendering with direct platformCTA.label usage; extends MobileMenuCTAs to inject full-width "Get reminder" link for mobile platform with scroll-to-hero and menu-close handlers.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Verify mobile platform detection logic and early returns
  • Confirm scroll-to-hero and menu-close event handlers function correctly across mobile and desktop flows
  • Check for CSS/styling implications with full-width link injection in MobileMenuCTAs

Possibly related PRs

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately summarizes the main change: updating mobile CTAs from 'Download' to 'Get reminder', which aligns with the file changes that restructure button rendering for mobile users.
Description check ✅ Passed The pull request description is related to the changeset and provides context about the mobile CTA changes, including specific modifications to CTAButton and MobileMenuCTAs components and testing guidance.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1764932504-mobile-get-reminder

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/web/src/components/header.tsx (1)

615-627: Duplicate logic - see comment on lines 395-401.

This mobile platform handling duplicates the logic in CTAButton (lines 395-401). Consider consolidating as suggested in the earlier comment.

🧹 Nitpick comments (1)
apps/web/src/components/header.tsx (1)

395-401: Consider extracting the mobile platform logic to reduce duplication.

This "Get reminder" logic for mobile platforms is duplicated in MobileMenuCTAs (lines 615-627). The hard-coded text and behavior appear in both places, making maintenance harder.

Consider creating a helper function or consolidating the logic:

const getMobileCTA = (platform: string | undefined) => {
  return platform === "mobile" 
    ? { label: "Get reminder", action: "scroll" as const }
    : null;
};

Then use it in both CTAButton and MobileMenuCTAs:

 function CTAButton({
   platformCTA,
   platform,
   mobile = false,
 }: {
   platformCTA: ReturnType<typeof getPlatformCTA>;
   platform?: string;
   mobile?: boolean;
 }) {
   const baseClass = mobile
     ? "px-4 h-8 flex items-center text-sm bg-linear-to-t from-stone-600 to-stone-500 text-white rounded-full shadow-md active:scale-[98%] transition-all"
     : "px-4 h-8 flex items-center text-sm bg-linear-to-t from-stone-600 to-stone-500 text-white rounded-full shadow-md hover:shadow-lg hover:scale-[102%] active:scale-[98%] transition-all";
 
+  const mobileCTA = mobile ? getMobileCTA(platform) : null;
-  if (mobile && platform === "mobile") {
+  if (mobileCTA) {
     return (
       <Link to="/" hash="hero" onClick={scrollToHero} className={baseClass}>
-        Get reminder
+        {mobileCTA.label}
       </Link>
     );
   }
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6420965 and 22706dd.

📒 Files selected for processing (1)
  • apps/web/src/components/header.tsx (4 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: Avoid creating a bunch of types/interfaces if they are not shared. Especially for function props, just inline them instead.
Never do manual state management for form/mutation. Use useForm (from tanstack-form) and useQuery/useMutation (from tanstack-query) instead for 99% of cases. Avoid patterns like setError.
If there are many classNames with conditional logic, use cn (import from @hypr/utils). It is similar to clsx. Always pass an array and split by logical grouping.
Use motion/react instead of framer-motion.

Files:

  • apps/web/src/components/header.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: Redirect rules - hyprnote
  • GitHub Check: Header rules - hyprnote
  • GitHub Check: Pages changed - hyprnote
  • GitHub Check: Redirect rules - hyprnote-storybook
  • GitHub Check: Header rules - hyprnote-storybook
  • GitHub Check: Pages changed - hyprnote-storybook
  • GitHub Check: fmt
  • GitHub Check: ci
  • GitHub Check: Devin
🔇 Additional comments (3)
apps/web/src/components/header.tsx (3)

411-415: LGTM - Cleaner label rendering.

Using platformCTA.label directly is cleaner than conditional rendering.


636-648: LGTM - Consistent with CTAButton.

Using platformCTA.label directly is cleaner and consistent with the similar change in CTAButton.


395-401: Unable to verify: File not found in repository.

The file apps/web/src/components/header.tsx referenced at lines 395-401 and 615-627 could not be located in the current repository. Verification of the platform detection logic cannot proceed without access to the actual implementation of the usePlatform() hook and its return values. Ensure the correct repository and file path are being reviewed.

@ComputelessComputer ComputelessComputer merged commit cb65254 into main Dec 6, 2025
13 of 14 checks passed
@ComputelessComputer ComputelessComputer deleted the devin/1764932504-mobile-get-reminder branch December 6, 2025 05:03
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