Skip to content

e2e: fabric#883

Draft
kirillzyusko wants to merge 2 commits intomainfrom
e2e/fabric
Draft

e2e: fabric#883
kirillzyusko wants to merge 2 commits intomainfrom
e2e/fabric

Conversation

@kirillzyusko
Copy link
Owner

@kirillzyusko kirillzyusko commented Mar 26, 2025

To Do

iOS

  • scroll view - input doesn't grow
  • interactive keyboard - different text calculation
  • over keyboard view (random hang)
  • chat flat list (different messages)
  • toolbar (different pixels output, images are transparent, wtf?)
  • focused input handlers (different selection)
  • keyboard extender - color of bottom line (system)

📜 Description

💡 Motivation and Context

📢 Changelog

JS

iOS

Android

🤔 How Has This Been Tested?

📸 Screenshots (if appropriate):

📝 Checklist

  • CI successfully passed
  • I added new mocks and corresponding unit-tests if library API was changed

@kirillzyusko kirillzyusko added 🏭 fabric Changes specific to new (fabric/jsi) architecture e2e Anything about E2E tests labels Mar 26, 2025
@kirillzyusko kirillzyusko self-assigned this Mar 26, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Mar 26, 2025

📊 Package size report

Current size Target Size Difference
223806 bytes 223806 bytes 0 bytes 📉

kirillzyusko added a commit that referenced this pull request Feb 1, 2026
## 📜 Description

Use `ScrollViewWithBottomPadding` component for
`KeyboardAwareScrollView` to optimize performance and fix other issues
that were caused by the fact of usage additional view inside
`ScrollView`.

## 💡 Motivation and Context

In this PR I'm moving away from the idea of having a fake view in the
end of the `ScrollView` and instead start to use
`ScrollViewWithBottomPadding` component to achieve a desired visual
effect.

The additional view causes many issues such as:
- unintended layout shift if `flex: 1` style is used;
- broken auto-grow for multiline input;
- unexpected styling issues if you use `gap`/`justifyContent:
"space-between"` and other properties.

In this PR I'm switching to the component that has been added in
#1294
With its new power I can achieve cross-platform behavior and:
- without layout modification add a scrollable padding;
- get the same behavior on both iOS/Android;
- don't use any hidden children that can break something.

This PR has been opened for a long time, but finally can be merged
because I got working version on Android.

Closes
#794
#645
#929
#168

Potentially:
#748
software-mansion/react-native-reanimated#5567
#719

Unlocks one item from
#883

## 📢 Changelog

<!-- High level overview of important changes -->
<!-- For example: fixed status bar manipulation; added new types
declarations; -->
<!-- If your changes don't affect one of platform/language below - then
remove this platform/language -->

### JS

- added `useScrollState` hook;
- use `ScrollViewWithBottomPadding` component in
`KeyboardAwareScrollView`;
- added `removeGhostPadding` in `KeyboardAwareScrollView` and use it
there.

### E2E

- update assets for `KeyboardToolbarClosed` test-case.

## 🤔 How Has This Been Tested?

Tested manually on:
- iPhone 17 Pro (iOS 26.2, simulator);
- Pixel 7 Pro (API 36, real device);
- e2e_emulator_28 (API 28, emulator);;
- all e2e devices;

## 📸 Screenshots (if appropriate):

|iOS|Android|
|---|--------|
|<video
src="https://github.com/user-attachments/assets/adb98eb9-6ac0-436f-a5cc-3c795722401e">|<video
src="https://github.com/user-attachments/assets/07c4b5db-da79-4167-9d3e-c064817bf6f3">|

## 📝 Checklist

- [x] CI successfully passed
- [x] I added new mocks and corresponding unit-tests if library API was
changed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e2e Anything about E2E tests 🏭 fabric Changes specific to new (fabric/jsi) architecture

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant