-
Notifications
You must be signed in to change notification settings - Fork 67
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
FED-3253 Officially support Dart 3 #409
Conversation
Security InsightsNo security relevant content was detected by automated scans. Action Items
Questions or Comments? Reach out on Slack: #support-infosec. |
QA+1 CI passes. Verified that Dart 3 CI runs actually run on Dart 3 and analyzer 6. |
can ignore semgrep ❌ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+10
@Workiva/release-management-p |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 from RM
Related over_react PR: Workiva/over_react#958
Motivation
We should support Dart 3.
react-dart can currently be consumed in Dart 3, despite not supporting it in its SDK constraints, due to the way Dart 3 treats null-safe packages as compatible.
However, we don't officially support Dart 3, and our automated CI checks don't validate that it works properly in Dart 3.
Also, we still need to support Dart 2 for the time being, so ideally we'd be able to support both Dart 2 and 3 in the same react-dart version, and run CI against each Dart version.
Changes
Caution
There's a bug in Dart >=3.3.0 <3.5.0 that breaks the behavior in DDC of certain functions passed to components, such as refs and potentially JS callback props: dart-lang/sdk#56897
We can't prevent users on those versions from pulling in react-dart, since they can already resolve to null-safe versions that have already been published.
So, consumers will just have to avoid those versions of Dart, or use dart2js during development or tests.
If needed, we could potentially follow up with a warning that detects this bug and provides a helpful error.
QA Checklist