Skip to content

refactor(stackflow): scope swipe-back DOM writes to individual elements#1359

Closed
manNomi wants to merge 1 commit intodaangn:fix/scope-swipe-back-varsfrom
manNomi:fix/scrope-swipe-back-vars-dom
Closed

refactor(stackflow): scope swipe-back DOM writes to individual elements#1359
manNomi wants to merge 1 commit intodaangn:fix/scope-swipe-back-varsfrom
manNomi:fix/scrope-swipe-back-vars-dom

Conversation

@manNomi
Copy link
Copy Markdown

@manNomi manNomi commented Mar 18, 2026

안녕하세요!

앱스크린 마이그레이션 작업에서 성능개선을 위해찾아왔어요

stack 루트에 CSS 변수를 설정하는 방식 대신,
개별 요소(topLayer, dim, behindLayer, appBar)에 inline style을 직접 조작하도록 변경했어요!

Replace CSS variable cascade on stack root with direct inline style
manipulation on specific elements (topLayer, dim, behindLayer, appBar).
This avoids full subtree style recalculation on iOS WebKit which was
resetting scroll positions on the behind activity during swipe-back.

- Group 6 individual DOM refs into single SwipeElements ref object
- Extract INITIAL_SWIPE_CONTEXT constant and computeDisplacement helper
- Unify swiped/canceling branches in endSwipeBack via finalTarget
- Keep CSS vars only on appBar for appBar-specific styling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 18, 2026

⚠️ No Changeset found

Latest commit: d54fba1

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 18, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9268c0e3-d52a-492c-a70a-9ae5379f363b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

You can make CodeRabbit's review stricter and more nitpicky using the `assertive` profile, if that's what you prefer.

Change the reviews.profile setting to assertive to make CodeRabbit's nitpick more issues in your PRs.

@junghyeonsu
Copy link
Copy Markdown
Contributor

/snapshot

@github-actions
Copy link
Copy Markdown
Contributor

📦 Snapshot Release

@seed-design/cli: https://pkg.pr.new/@seed-design/cli@d54fba1
@seed-design/codemod: https://pkg.pr.new/@seed-design/codemod@d54fba1
@seed-design/css: https://pkg.pr.new/@seed-design/css@d54fba1
@seed-design/design-token: https://pkg.pr.new/@seed-design/design-token@d54fba1
@seed-design/docs-mcp: https://pkg.pr.new/@seed-design/docs-mcp@d54fba1
@seed-design/figma: https://pkg.pr.new/@seed-design/figma@d54fba1
@seed-design/mcp: https://pkg.pr.new/@seed-design/mcp@d54fba1
@seed-design/migration-index: https://pkg.pr.new/@seed-design/migration-index@d54fba1
@seed-design/react: https://pkg.pr.new/@seed-design/react@d54fba1
@seed-design/rootage-artifacts: https://pkg.pr.new/@seed-design/rootage-artifacts@d54fba1
@seed-design/rsbuild-plugin: https://pkg.pr.new/@seed-design/rsbuild-plugin@d54fba1
@seed-design/stackflow: https://pkg.pr.new/@seed-design/stackflow@d54fba1
@seed-design/stylesheet: https://pkg.pr.new/@seed-design/stylesheet@d54fba1
@seed-design/tailwind3-plugin: https://pkg.pr.new/@seed-design/tailwind3-plugin@d54fba1
@seed-design/tailwind4-theme: https://pkg.pr.new/@seed-design/tailwind4-theme@d54fba1
@seed-design/vite-plugin: https://pkg.pr.new/@seed-design/vite-plugin@d54fba1
@seed-design/webpack-plugin: https://pkg.pr.new/@seed-design/webpack-plugin@d54fba1
@seed-design/react-avatar: https://pkg.pr.new/@seed-design/react-avatar@d54fba1
@seed-design/react-checkbox: https://pkg.pr.new/@seed-design/react-checkbox@d54fba1
@seed-design/react-collapsible: https://pkg.pr.new/@seed-design/react-collapsible@d54fba1
@seed-design/react-dialog: https://pkg.pr.new/@seed-design/react-dialog@d54fba1
@seed-design/react-drawer: https://pkg.pr.new/@seed-design/react-drawer@d54fba1
@seed-design/react-field: https://pkg.pr.new/@seed-design/react-field@d54fba1
@seed-design/react-field-button: https://pkg.pr.new/@seed-design/react-field-button@d54fba1
@seed-design/react-fieldset: https://pkg.pr.new/@seed-design/react-fieldset@d54fba1
@seed-design/react-image: https://pkg.pr.new/@seed-design/react-image@d54fba1
@seed-design/react-popover: https://pkg.pr.new/@seed-design/react-popover@d54fba1
@seed-design/react-portal: https://pkg.pr.new/@seed-design/react-portal@d54fba1
@seed-design/react-primitive: https://pkg.pr.new/@seed-design/react-primitive@d54fba1
@seed-design/react-progress: https://pkg.pr.new/@seed-design/react-progress@d54fba1
@seed-design/react-pull-to-refresh: https://pkg.pr.new/@seed-design/react-pull-to-refresh@d54fba1
@seed-design/react-radio-group: https://pkg.pr.new/@seed-design/react-radio-group@d54fba1
@seed-design/react-scrollable: https://pkg.pr.new/@seed-design/react-scrollable@d54fba1
@seed-design/react-segmented-control: https://pkg.pr.new/@seed-design/react-segmented-control@d54fba1
@seed-design/react-slider: https://pkg.pr.new/@seed-design/react-slider@d54fba1
@seed-design/react-snackbar: https://pkg.pr.new/@seed-design/react-snackbar@d54fba1
@seed-design/react-supports: https://pkg.pr.new/@seed-design/react-supports@d54fba1
@seed-design/react-switch: https://pkg.pr.new/@seed-design/react-switch@d54fba1
@seed-design/react-tabs: https://pkg.pr.new/@seed-design/react-tabs@d54fba1
@seed-design/react-text-field: https://pkg.pr.new/@seed-design/react-text-field@d54fba1
@seed-design/react-toggle: https://pkg.pr.new/@seed-design/react-toggle@d54fba1
@seed-design/react-use-controllable-state: https://pkg.pr.new/@seed-design/react-use-controllable-state@d54fba1
@seed-design/dom-utils: https://pkg.pr.new/@seed-design/dom-utils@d54fba1

Triggered by @junghyeonsu via /snapshot

@junghyeonsu junghyeonsu self-assigned this Mar 23, 2026
@junghyeonsu junghyeonsu marked this pull request as draft March 25, 2026 02:22
@junghyeonsu
Copy link
Copy Markdown
Contributor

will resolve in #1444

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.

2 participants