Skip to content

[jules] ux: Complete skeleton loading for HomeScreen groups#299

Open
Devasy wants to merge 1 commit intomainfrom
jules-ux-homescreen-skeleton-11739445088885371149
Open

[jules] ux: Complete skeleton loading for HomeScreen groups#299
Devasy wants to merge 1 commit intomainfrom
jules-ux-homescreen-skeleton-11739445088885371149

Conversation

@Devasy
Copy link
Owner

@Devasy Devasy commented Mar 9, 2026

Replaced native ActivityIndicator with modern skeleton cards

  • Created reusable Skeleton primitive using Animated.loop
  • Created GroupListSkeleton specifically for HomeScreen group layout
  • Improved perceived loading time and overall user experience
  • Updated .Jules/todo.md and .Jules/changelog.md

PR created automatically by Jules for task 11739445088885371149 started by @Devasy23

Summary by CodeRabbit

  • New Features
    • Implemented skeleton loading animations to enhance loading experiences
    • Loading screens now display animated placeholder cards matching the final layout instead of spinners
    • Created reusable skeleton components for consistent loading states across the application

- Replaced native `ActivityIndicator` with modern skeleton cards
- Created reusable `Skeleton` primitive using `Animated.loop`
- Created `GroupListSkeleton` specifically for `HomeScreen` group layout
- Improved perceived loading time and overall user experience
- Updated `.Jules/todo.md` and `.Jules/changelog.md`

Co-authored-by: Devasy23 <110348311+Devasy23@users.noreply.github.com>
@Devasy Devasy requested a review from vrajpatelll as a code owner March 9, 2026 19:50
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@netlify
Copy link

netlify bot commented Mar 9, 2026

Deploy Preview for split-but-wiser canceled.

Name Link
🔨 Latest commit 222b12f
🔍 Latest deploy log https://app.netlify.com/projects/split-but-wiser/deploys/69af249a34d4e80008b1b9e3

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 9, 2026

Walkthrough

Implements skeleton loading for HomeScreen groups by introducing a reusable Skeleton component with pulsing animation and a GroupListSkeleton layout. Replaces ActivityIndicator with skeleton cards during data loading. Updates documentation accordingly.

Changes

Cohort / File(s) Summary
Documentation Updates
.Jules/changelog.md, .Jules/todo.md
Updated changelog and task tracker to document completion of skeleton loading implementation with affected files and completion timestamp.
Skeleton Components
mobile/components/ui/Skeleton.js, mobile/components/skeletons/GroupListSkeleton.js
Added reusable Skeleton component with pulsing opacity animation and GroupListSkeleton layout composed of Card-based skeleton elements.
HomeScreen Integration
mobile/screens/HomeScreen.js
Replaced ActivityIndicator with GroupListSkeleton for loading state, removing previous loader container styles.

Suggested reviewers

  • vrajpatelll
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: completing skeleton loading implementation for HomeScreen groups, which aligns with all file changes including new Skeleton component, GroupListSkeleton component, and HomeScreen integration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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.

@codecov
Copy link

codecov bot commented Mar 9, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@9404621). Learn more about missing BASE report.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #299   +/-   ##
=======================================
  Coverage        ?   63.55%           
=======================================
  Files           ?       21           
  Lines           ?     2456           
  Branches        ?      254           
=======================================
  Hits            ?     1561           
  Misses          ?      831           
  Partials        ?       64           
Components Coverage Δ
Authentication System 71.35% <ø> (?)
Expense Management 70.15% <ø> (?)
Group Management 73.78% <ø> (?)
User Management 97.16% <ø> (?)
Backend Core 70.78% <ø> (?)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
mobile/screens/HomeScreen.js (1)

4-4: ⚠️ Potential issue | 🟡 Minor

Remove unused ActivityIndicator import.

ActivityIndicator is imported on line 4 but is not used anywhere in this file. It was replaced with GroupListSkeleton for the loading state.

Proposed fix
 import {
-  ActivityIndicator,
   Appbar,
   Avatar,
   Modal,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@mobile/screens/HomeScreen.js` at line 4, Remove the unused ActivityIndicator
import from the HomeScreen component import list: locate the import statement
that includes "ActivityIndicator" in mobile/screens/HomeScreen.js and delete
that identifier (or the entire import line if it only contains
ActivityIndicator) so only used imports (like GroupListSkeleton) remain; ensure
no other references to ActivityIndicator exist in the file before committing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@mobile/components/ui/Skeleton.js`:
- Around line 42-55: The Skeleton component's Animated.View is being announced
by screen readers; update the Animated.View in Skeleton to be hidden from the
accessibility tree by adding accessible={false},
accessibilityElementsHidden={true}, and
importantForAccessibility="no-hide-descendants" (place these props after
{...props} so they override any incoming accessibility props) so individual
placeholders are not announced while the parent GroupListSkeleton retains
accessibilityRole="progressbar" and accessibilityLabel="Loading groups".

---

Outside diff comments:
In `@mobile/screens/HomeScreen.js`:
- Line 4: Remove the unused ActivityIndicator import from the HomeScreen
component import list: locate the import statement that includes
"ActivityIndicator" in mobile/screens/HomeScreen.js and delete that identifier
(or the entire import line if it only contains ActivityIndicator) so only used
imports (like GroupListSkeleton) remain; ensure no other references to
ActivityIndicator exist in the file before committing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6c5ef5aa-bda9-4296-889f-28264fe827b6

📥 Commits

Reviewing files that changed from the base of the PR and between 9404621 and 222b12f.

📒 Files selected for processing (5)
  • .Jules/changelog.md
  • .Jules/todo.md
  • mobile/components/skeletons/GroupListSkeleton.js
  • mobile/components/ui/Skeleton.js
  • mobile/screens/HomeScreen.js

Comment on lines +42 to +55
return (
<Animated.View
style={[
{
width,
height,
borderRadius,
backgroundColor: skeletonColor,
opacity: opacityAnim,
},
style,
]}
{...props}
/>
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Consider hiding skeleton elements from accessibility tree.

Individual skeleton elements should not be announced by screen readers since the parent GroupListSkeleton already has accessibilityRole="progressbar" and accessibilityLabel="Loading groups". Adding accessibility props here prevents VoiceOver/TalkBack from announcing each placeholder.

♻️ Proposed fix
   return (
     <Animated.View
+      accessible={false}
+      importantForAccessibility="no-hide-descendants"
       style={[
         {
           width,
           height,
           borderRadius,
           backgroundColor: skeletonColor,
           opacity: opacityAnim,
         },
         style,
       ]}
       {...props}
     />
   );
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return (
<Animated.View
style={[
{
width,
height,
borderRadius,
backgroundColor: skeletonColor,
opacity: opacityAnim,
},
style,
]}
{...props}
/>
return (
<Animated.View
accessible={false}
importantForAccessibility="no-hide-descendants"
style={[
{
width,
height,
borderRadius,
backgroundColor: skeletonColor,
opacity: opacityAnim,
},
style,
]}
{...props}
/>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@mobile/components/ui/Skeleton.js` around lines 42 - 55, The Skeleton
component's Animated.View is being announced by screen readers; update the
Animated.View in Skeleton to be hidden from the accessibility tree by adding
accessible={false}, accessibilityElementsHidden={true}, and
importantForAccessibility="no-hide-descendants" (place these props after
{...props} so they override any incoming accessibility props) so individual
placeholders are not announced while the parent GroupListSkeleton retains
accessibilityRole="progressbar" and accessibilityLabel="Loading groups".

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