Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for longer tasks with explicit yielding in LongTask API #45471

Closed
wants to merge 3 commits into from

Conversation

rubennorte
Copy link
Contributor

Summary:
Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Differential Revision: D55647992

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner labels Jul 16, 2024
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

@analysis-bot
Copy link

analysis-bot commented Jul 16, 2024

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 21,355,294 +463
android hermes armeabi-v7a n/a --
android hermes x86 n/a --
android hermes x86_64 n/a --
android jsc arm64-v8a 24,550,153 +170
android jsc armeabi-v7a n/a --
android jsc x86 n/a --
android jsc x86_64 n/a --

Base commit: c82edec
Branch: main

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 16, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

1 similar comment
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
Differential Revision: D59820241
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 18, 2024
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
rubennorte and others added 2 commits July 18, 2024 02:51
Differential Revision: D55491870
…acebook#45471)

Summary:
Pull Request resolved: facebook#45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55647992

@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Jul 18, 2024
@facebook-github-bot
Copy link
Contributor

This pull request has been merged in 15b8ac8.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported Merged This PR has been merged. p: Facebook Partner: Facebook Partner
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants