Dev#44
Conversation
|
Warning Review limit reached
Next review available in: 35 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
📝 WalkthroughWalkthroughRewrites all five onboarding screens with responsive layouts using safe-area insets, replaces per-screen dot indicators with a shared ChangesOnboarding Flow Redesign
Home & Reflect UI Refresh
Data Safety & Sync Fixes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 11
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/`(onboarding)/onboarding-screen-1.tsx:
- Around line 73-90: The ScrollView in onboarding-screen-1 is applying safe-area
spacing twice because `contentContainerStyle` already uses `insets.top` and
`insets.bottom` while `contentInsetAdjustmentBehavior="automatic"` can add
iOS-adjusted insets again. Update the `ScrollView` configuration so the manual
padding remains the source of truth by switching
`contentInsetAdjustmentBehavior` to `never`, and keep the existing
`contentContainerStyle` logic unchanged.
In `@app/`(onboarding)/onboarding-screen-2.tsx:
- Around line 99-110: The onboarding screen layout is preventing access to the
CTA on short-height devices because the ScrollView in onboarding-screen-2 and
the main column height constraints together disable recovery when content
overflows. Re-enable scrolling in the ScrollView and adjust the main content
sizing in the layout around the main column so it can shrink or scroll on
landscape/tiny-height screens; use the ScrollView wrapper, mainHeight
constraint, and the content container setup in onboarding-screen-2 as the places
to fix.
In `@app/`(onboarding)/onboarding-screen-5.tsx:
- Around line 26-59: The onboarding route is still owning the feature overview
UI and hardcoded feature copy, which should be extracted into reusable pieces.
Move the preview/feature row and any substantial shared UI from
OnboardingScreenFive into components/onboarding, and relocate the featureCards
content into a data module or the extracted component so the app route stays
composition-only. Use OnboardingScreenFive and featureCards as the primary
symbols to find and split the logic, and keep the screen limited to composing
extracted components and hooks/stores.
In `@components/home/home-screen.tsx`:
- Line 142: The home screen greeting in the displayName assignment uses a
hardcoded fallback name, which causes users without a firstName to be shown as
someone else. Update the logic in home-screen.tsx around displayName so it no
longer falls back to a specific person’s name; use an empty or neutral fallback
instead, and keep the greeting behavior consistent wherever displayName is
consumed.
- Around line 143-144: The Home screen greeting is being locked by useMemo with
an empty dependency list, so it never updates when the time of day changes.
Update the greeting logic in home-screen.tsx so the value is recomputed when the
relevant time-based state changes, or remove the memoization entirely and derive
the greeting directly before reading greetingBackgrounds[greeting.period]. Make
sure the Home screen component reflects noon/evening transitions without
requiring an unmount.
In `@components/home/mood/HomeMoodCheckInCard.tsx`:
- Around line 223-227: The decorative heart image in HomeMoodCheckInCard is
being exposed to assistive tech via accessibilityLabel even though it is purely
visual. Update the Image in HomeMoodCheckInCard to remove the accessibilityLabel
and mark it as inaccessible/non-accessible so it is hidden from screen readers
while keeping the existing styling and source unchanged.
In `@components/home/mood/HomeSelectedMood.tsx`:
- Around line 113-132: The unsaved prompt is tied too tightly to savedAt in
HomeSelectedMood, so a mood marked isSaved can still render “Save this as
today’s check-in” when the timestamp is missing. Update the conditional in
HomeSelectedMood to render the saved-state UI based on isSaved first, and make
the “Logged today at …” suffix optional when savedAt is null instead of falling
back to the unsaved prompt. Use the existing isSaved, savedAt, and
formatSavedTime symbols to keep the saved and unsaved states clearly separated.
- Around line 103-129: The status text in HomeSelectedMood is disabling Dynamic
Type, which prevents users with larger accessibility text settings from reading
it comfortably. Update the Text elements in HomeSelectedMood so the main title
and supporting copy allow font scaling, and keep allowFontScaling={false} only
on non-textual/decorative elements where needed. Focus on the Text blocks around
the isSaved/savedAt messaging and preserve sizing behavior with
minimumFontScale/numberOfLines instead of turning scaling off.
In `@components/onboarding/onboarding-insights-preview.tsx`:
- Around line 95-119: The compact preview labels in
onboarding-insights-preview.tsx are mixing Tailwind line-height utilities with
inline lineHeight values, so the leading-6 classes on the two Text elements are
misleading and effectively overridden. Update the Text elements in the preview
label block to keep a single source of truth for line height by removing the
conflicting leading-6 usage where the inline style already controls it, while
preserving the intended compact spacing in the component.
In `@components/onboarding/onboarding-ritual-content.tsx`:
- Around line 82-124: The text blocks in onboarding-ritual-content are mixing
the Tailwind `leading-6` class with smaller explicit `lineHeight` values, so the
rendered typography is inconsistent with the class names. Update the affected
`Text` nodes in `OnboardingRitualContent` to either keep `leading-6` and remove
the inline line-height overrides, or remove `leading-6` where compact custom
leading is intended, and apply the same cleanup to the other affected block
mentioned in the review.
In `@components/ui/scenic-card-background.tsx`:
- Around line 58-68: The Image in scenic-card-background should stop using
inline absolute-fill style objects for static layout. Update the shared
scenic-card-background component to express the fixed positioning and fill
behavior with NativeWind className instead of inline styles, and apply the same
cleanup to the other repeated absolute-fill block referenced in the component.
Keep the existing Image and background rendering logic intact while moving the
static styling onto the relevant JSX elements.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: ced6b4af-7ed3-44d2-a5f4-00f228ff01f6
⛔ Files ignored due to path filters (12)
UI/Onb v2/onbv2 scr2 card.pngis excluded by!**/*.pngUI/Onb v2/scr1.pngis excluded by!**/*.pngUI/Onb v2/scr2.pngis excluded by!**/*.pngUI/Onb v2/scr3.pngis excluded by!**/*.pngUI/Onb v2/scr4.pngis excluded by!**/*.pngUI/Onb v2/scr5.pngis excluded by!**/*.pngassets/images/AI-chat-mockup.pngis excluded by!**/*.pngassets/images/ai-card.pngis excluded by!**/*.pngassets/images/evening-card.pngis excluded by!**/*.pngassets/images/mood card heart.pngis excluded by!**/*.pngassets/images/morning-card.pngis excluded by!**/*.pngassets/images/noon.pngis excluded by!**/*.png
📒 Files selected for processing (21)
AGENTS.mdapp/(auth)/login.tsxapp/(onboarding)/onboarding-screen-1.tsxapp/(onboarding)/onboarding-screen-2.tsxapp/(onboarding)/onboarding-screen-3.tsxapp/(onboarding)/onboarding-screen-4.tsxapp/(onboarding)/onboarding-screen-5.tsxcomponents/auth/auth-screen.tsxcomponents/home/home-screen.tsxcomponents/home/mood/HomeMoodCheckInCard.tsxcomponents/home/mood/HomeSelectedMood.tsxcomponents/onboarding/onboarding-insights-preview.tsxcomponents/onboarding/onboarding-progress-header.tsxcomponents/onboarding/onboarding-ritual-content.tsxcomponents/reflect/reflect-screen.tsxcomponents/ui/scenic-card-background.tsxconstants/images.tsdata/reflect.tshooks/useAIInsightReport.tslib/sync/requestSync.tsstore/useMoodLogStore.ts
💤 Files with no reviewable changes (1)
- data/reflect.ts
Summary by CodeRabbit
New Features
Bug Fixes
Documentation