Skip to content

feat: reduce animation frame rate on low-end devices and battery save…#454

Merged
RUKAYAT-CODER merged 3 commits into
rinafcode:mainfrom
Markadrian6399:feature/adaptive-animation-frame-rate
May 28, 2026
Merged

feat: reduce animation frame rate on low-end devices and battery save…#454
RUKAYAT-CODER merged 3 commits into
rinafcode:mainfrom
Markadrian6399:feature/adaptive-animation-frame-rate

Conversation

@Markadrian6399
Copy link
Copy Markdown

…r mode

Adds useAdaptiveFrameRate hook that detects low-end hardware (deviceYearClass < 2018 or totalMemory < 2 GB via expo-device) and battery saver mode (iOS Low Power / Android Power Saver via expo-battery), then returns a durationMultiplier (1 or 2) used to double animation durations and halve effective frame rate to ~30 fps under constrained conditions.

Updates Skeleton, OfflineIndicatorProvider, PullToRefresh (RN Animated), and FilterSheet (Reanimated withTiming) to scale their timing values through the hook. Adds expo-battery dependency and 12 unit tests covering all detection branches.

closes #252

…r mode

Adds useAdaptiveFrameRate hook that detects low-end hardware (deviceYearClass
< 2018 or totalMemory < 2 GB via expo-device) and battery saver mode (iOS Low
Power / Android Power Saver via expo-battery), then returns a durationMultiplier
(1 or 2) used to double animation durations and halve effective frame rate to
~30 fps under constrained conditions.

Updates Skeleton, OfflineIndicatorProvider, PullToRefresh (RN Animated), and
FilterSheet (Reanimated withTiming) to scale their timing values through the
hook. Adds expo-battery dependency and 12 unit tests covering all detection
branches.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 28, 2026

@Markadrian6399 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Markodiba and others added 2 commits May 28, 2026 13:39
Resolved conflicts:
- jest.setup.js: kept expo-battery mock (our addition), dropped duplicate
  expo-device/constants/linking stubs already present earlier in the file
- package-lock.json: regenerated after accepting upstream lockfile, then
  reinstalling to re-integrate expo-battery

Also fixed pre-existing lint warnings in upstream files merged from main:
- abTesting.ts, performanceExperiments.ts, tests/services/abTesting.test.ts:
  switch to named imports to satisfy import/no-named-as-default + import/order

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@RUKAYAT-CODER RUKAYAT-CODER merged commit 2d3a29e into rinafcode:main May 28, 2026
0 of 4 checks passed
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.

Reduce animation frame rate on low-end devices or when battery saver enabled

3 participants