Commit Graph

1866 Commits

Author SHA1 Message Date
Jan Kassens e2d47342be Use default runtimeModule setting in Snap tests (#2940)
Lots of updated snapshots. The only updated code is resolving this TODO:

https://github.com/facebook/react-forget/blob/2b14805f98e47acdf4b83c7d078fe6727800b3f9/packages/snap/src/compiler.ts#L41
2024-05-06 19:57:37 -04:00
Jan Kassens 3708c36cbd [easy] remove unstable_useMemoCache reference from a snapshot file (#2937)
This file is intended to test that the test will skip if it was already compiled.

This updates the import to remove the no longer used name `unstable_useMemoCache`.
2024-05-06 19:54:13 -04:00
Jan Kassens e63d3d1491 Upgrade to React 19 beta (#2938)
- Updated all directly defined dependencies to the latest React 19 Beta
- `package.json`: used `resolutions` to force React 19 for `react-is` transitive dependency
- `package.json`: postinstall script to patch fbt for the React 19 element Symbol
- Match on the message in Snap to exclude a React 19 warning that `act` should be imported from `react` instead (from inside `@testing-library/react`)
- Some updated snapshots, I think due to now recovering behavior of `useMemoCache`, please review.

In a next step, we can do the following. I excluded it since it from here as it made the PR unreviewable on GitHub.

- Snapshots now use `react/compiler-runtime` as in prod, so the different default in Snap is no longer needed.
2024-05-06 19:48:39 -04:00
Joe Savona 95ba7dcff5 Update readme and other docs
ghstack-source-id: b25cc2a481dc1508bbb710dff472f2d23667ec98
Pull Request resolved: https://github.com/facebook/react-forget/pull/2939
2024-05-06 14:53:47 -07:00
Jan Kassens e1771545a2 Remove domain from playground font sources (#2934) 2024-05-06 12:00:55 -04:00
Pieter Vanderwerff 738ddf7419 Support <fbs> in addition to <fbt>
ghstack-source-id: 1ab99ebb5cef3f42399682a338feb12c4cf55f4c
Pull Request resolved: https://github.com/facebook/react-forget/pull/2933
2024-05-03 13:27:51 -07:00
Joe Savona 90863beaa8 Expand the architecture doc
ghstack-source-id: 6ab453a3c5e23677d0c178cf4ea464c7a9e7ebf6
Pull Request resolved: https://github.com/facebook/react-forget/pull/2932
2024-05-03 10:46:36 -07:00
Joe Savona 82137ec184 Rename react-compiler-runtime
ghstack-source-id: c6c825f5efdb4f9c413050b22b7713966871338c
Pull Request resolved: https://github.com/facebook/react-forget/pull/2931
2024-05-02 17:14:26 -07:00
Joe Savona 1c8f8bfb89 Rename ReactForgetBabelPlugin locals
ghstack-source-id: 9cd5fe41ae322632dfeb3d5c7468268678006d94
Pull Request resolved: https://github.com/facebook/react-forget/pull/2929
2024-05-02 17:14:25 -07:00
Joe Savona 95e3cdcfa1 Rename {r,R}unReactForgetBabelPlugin
ghstack-source-id: e7f00aab61dd749dc6ba11ce7e4d14603bfeeab9
Pull Request resolved: https://github.com/facebook/react-forget/pull/2928
2024-05-02 17:14:24 -07:00
Joe Savona b844766e6c Update references to Forget to React Compiler
ghstack-source-id: cce73f26b7b3903b8d79b70dbc24cbee09693d81
Pull Request resolved: https://github.com/facebook/react-forget/pull/2927
2024-05-02 14:28:06 -07:00
Joe Savona 48e0c70292 Rename babel plugin
ghstack-source-id: bb66913e2d3c814696311371ed655f3da03d1199
Pull Request resolved: https://github.com/facebook/react-forget/pull/2926
2024-05-02 14:12:33 -07:00
Lauren Tan fddc0151fe Remove duplicated hermes-parser
ghstack-source-id: 79f3319d87909d05731ef821d0ffe86cb01b0432
Pull Request resolved: https://github.com/facebook/react-forget/pull/2920
2024-04-30 21:34:36 -04:00
Lauren Tan f93529e0be Don't compile node_modules by default
To make a first time setup of the compiler truly config-less, default to
not compiling node_modules unless a user provided `sources` (advanced
option) is provided

ghstack-source-id: b0798052404d772ce6ee471e577699d4b0871d56
Pull Request resolved: https://github.com/facebook/react-forget/pull/2919
2024-04-30 21:34:33 -04:00
Jan Kassens ebe58ee619 Update babel plugin to use runtime from react/compiler-runtime (#2918)
This uses the compiler runtime from `react/compiler-runtime` by default unless `compilerRuntime` is specifified in the Babel options which then imports the runtime from there. The `useMemoCache` hook is now named `c` in accordance with https://github.com/facebook/react/commit/4508873393058e86bed308b56e49ec883ece59d1

Unfortunately, I couldn't figure out how to import `react@beta` which already has that import as various react verstions were conflicting. If someone can figure this out it'd be fantastic. As a result, I had to update the default for the test runner to default the `compilerRuntime` option to `react` to preserve the previous behavior to import from `react`. Once upgraded to React 19, we should be able to remove that override.
2024-05-01 13:53:44 -04:00
Sathya Gunsasekaran 85e6e9b469 [hir] Mark MethodCalls as escaping
Treat MethodCalls similar to general CallExpressions and mark them
as escaping in PruneNonEscapingScopes pass.

ghstack-source-id: 3c81bdb17f58fbeef8be24e7cb363172d1867217
Pull Request resolved: https://github.com/facebook/react-forget/pull/2925
2024-05-01 15:58:57 +01:00
Sathya Gunsasekaran 4ce5c56fee [healthcheck] Refactor checks into separate files
Makes it easier to extend later, if we want to add more checks.

ghstack-source-id: 6fb3435555f1b988e1a185bfda8be9418eb622c5
Pull Request resolved: https://github.com/facebook/react-forget/pull/2924
2024-05-01 16:05:11 +01:00
Sathya Gunsasekaran c464445b91 [healthcheck] Check for incompatible libraries
Add a configurable list of known incompatible libraries.

Check all package.jsons for any uses of known incompatible libraries and
warn if found.

ghstack-source-id: 7329e3792b57458e681780cba3140a14a9b1a60d
Pull Request resolved: https://github.com/facebook/react-forget/pull/2923
2024-05-01 15:34:40 +01:00
Sathya Gunsasekaran 36d775596f [healthcheck] Check for StrictMode
ghstack-source-id: f05222073be785b77346c4e8760bf4d0bb4d658e
Pull Request resolved: https://github.com/facebook/react-forget/pull/2922
2024-05-01 13:35:06 +01:00
Sathya Gunsasekaran c88d356603 [healthcheck] Add status message
Show compiling status message and not just block
UI.

ghstack-source-id: 67761c5d32216e105c4aa6404dfa07d76ae22583
Pull Request resolved: https://github.com/facebook/react-forget/pull/2921
2024-05-01 13:35:03 +01:00
Lauren Tan 86e0f87a5b Dynamically detect reanimated plugin
Enables the Reanimated flag automatically if we find reanimated in the
user's list of plugins

ghstack-source-id: 20e83374612362a30d6c8cc7a903d9320e8cc23a
Pull Request resolved: https://github.com/facebook/react-forget/pull/2915
2024-04-30 14:24:03 -04:00
Lauren Tan 1181043d80 Disable ValidateNoCapitalizedCalls by default
As discussed earlier, let's disable this validation pass by default for
oss since it still has many false positives

ghstack-source-id: fa3c21dde7cc4c3e4bb91dfa707e64bc7a9e088b
Pull Request resolved: https://github.com/facebook/react-forget/pull/2908
2024-04-25 14:19:21 -04:00
Mofei Zhang 18f4a388a9 [hir-rewrite] Remove breaks to HIR ScopeTerminal after converting to reactiveFunction IR
ghstack-source-id: 67e979e1533b23ced762973e239a4290111e2242
Pull Request resolved: https://github.com/facebook/react-forget/pull/2911
2024-04-29 14:08:30 -04:00
Mofei Zhang 6db5f36aa7 [tests] Add fixtures showing HIR rewrite changes
ghstack-source-id: 5e8b1680e95d112e1e5b2cb8c4e6c414360e0a77
Pull Request resolved: https://github.com/facebook/react-forget/pull/2900
2024-04-29 14:08:29 -04:00
Mofei Zhang 2b2d305199 [hir] Rewrite buildReactiveBlocks -> buildReactiveScopeTerminalsHIR
ghstack-source-id: 1e804dd31d4b5f74070c94c0ea56f55539e46703
Pull Request resolved: https://github.com/facebook/react-forget/pull/2853
2024-04-29 14:08:29 -04:00
Joe Savona 1c7e34cdb6 Stop reporting errors on mutations of primitives (and associated false positives)
ghstack-source-id: 4dc9b3c51953f8ed2184ebc5e438bc877959b5d0
Pull Request resolved: https://github.com/facebook/react-forget/pull/2903
2024-04-25 09:39:20 -07:00
Joe Savona 0a7f4427f1 Fix invariant on mutable context values
ghstack-source-id: cb105318bf66d876a546b1c52e28286839d30032
Pull Request resolved: https://github.com/facebook/react-forget/pull/2904
2024-04-25 08:00:56 -07:00
Mofei Zhang 59e37b088b [HIR] Detect more cases of invalid block nesting
ghstack-source-id: 9e08fa69807ee1b5e99675f9aefc8acd13c16827
Pull Request resolved: https://github.com/facebook/react-forget/pull/2899
2024-04-26 12:40:36 -04:00
Mofei Zhang a44559b0a5 [hir] Re-implement mergeOverlappingReactiveScopes (+ bugfix)
ghstack-source-id: 06d49edffe5ae3c31eb6ef642078752c056c617c
Pull Request resolved: https://github.com/facebook/react-forget/pull/2852
2024-04-26 12:40:35 -04:00
Mofei Zhang f196e1f703 [hir][patch] Fix small bug in duplicate scope merging logic
ghstack-source-id: 98966dd4c2b264329acad077427febc2a34a5edc
Pull Request resolved: https://github.com/facebook/react-forget/pull/2906
2024-04-25 11:07:22 -04:00
Mofei Zhang f22dd62ab8 [HIR] Followup to pruneUnusedLabelsHIR (#2866)
Followup to https://github.com/facebook/react-forget/pull/2866

ghstack-source-id: 087d5da53787cb7cff6495b6a791326ff8a952b4
Pull Request resolved: https://github.com/facebook/react-forget/pull/2896
2024-04-23 19:58:31 +01:00
Joe Savona 2d569a3353 Add detection of dynamic hooks
ghstack-source-id: 3acfa4fde5dfd65353fa407378057ca937ee3599
Pull Request resolved: https://github.com/facebook/react-forget/pull/2901
2024-04-24 15:15:34 -07:00
Lauren Tan 89f2f7fcef Make DropManualMemoization error message more accurate
This was probably a leftover from a previous time, but since this error
message throws when the dependency list is not an array literal, and not
just when its a rest spread, this PR updates the message to match.

ghstack-source-id: 28f2338212e56a67d3d477cea5abb6e9f3826488
Pull Request resolved: https://github.com/facebook/react-forget/pull/2902
2024-04-25 10:19:29 -04:00
Joe Savona 08b777d6dc [be] Rename NextIterableOf -> AdvanceIterator
ghstack-source-id: 024ec00511483cf342d851fde001c96348a2d3c6
Pull Request resolved: https://github.com/facebook/react-forget/pull/2898
2024-04-24 14:59:09 -07:00
Joe Savona 21b2af8ba0 More precisely model for..of semantics with separate init/test blocks
ghstack-source-id: 827c35466d04f7b7143ddf1adefeff926d4b22cd
Pull Request resolved: https://github.com/facebook/react-forget/pull/2893
2024-04-24 14:59:08 -07:00
Joe Savona da004f1885 Add GetIterator instruction
ghstack-source-id: 8ed2deed7606c48414de74cb2781a5fde6cd6f59
Pull Request resolved: https://github.com/facebook/react-forget/pull/2892
2024-04-24 14:59:08 -07:00
Joe Savona 6304e98902 Repro for for..of scoping bug
ghstack-source-id: 6147b6e70d24203350664e8ab24691d1ec5c5b2a
Pull Request resolved: https://github.com/facebook/react-forget/pull/2891
2024-04-24 14:59:07 -07:00
Sathya Gunsasekaran f8c0363a92 [healthcheck] Rename package to healthcheck
Make it one word, instead of two words and a hyphen.

ghstack-source-id: ef05e8acbd7cf17e2dd04c362dcee785eda79e82
Pull Request resolved: https://github.com/facebook/react-forget/pull/2895
2024-04-23 12:33:51 +01:00
Sathya Gunsasekaran e0dbe47ad6 [healthcheck] Only count actionable failures
It's not useful to output count of all failures,
as it's not actionable for the developer.

We'll still capture all failures in case we want
to add a rage option to this script.

ghstack-source-id: 4d5a1dd6a9616e6fd5e1166bb97fa047829b9273
Pull Request resolved: https://github.com/facebook/react-forget/pull/2889
2024-04-23 12:28:43 +01:00
Sathya Gunsasekaran dff05237c5 [healthcheck] Compile sources
Run the compiler on the globbed soruces.

The logger is used to capture the success and
failure compilation cases at the component level.
(If we were to compile the entire file directly,
we wouldn't get this granularity)

For now, we just log the number of success and
failures. In the future, we can provide a better
report building on this.

ghstack-source-id: 6d2d918190b6ed5d42b795491bbce29a950b9741
Pull Request resolved: https://github.com/facebook/react-forget/pull/2888
2024-04-23 12:28:42 +01:00
Sathya Gunsasekaran 8d234c64eb [hir] Remove hermes parser
Exporting the hermes parser breaks the playground
as the hermes parser can not work in the browser.

No one is using this directly anyway -- snap and
others bundle hermes parser on their own, so,
let's remove it.

ghstack-source-id: d448c346eb137f8ba6ada4ad113e41a90b29baff
Pull Request resolved: https://github.com/facebook/react-forget/pull/2890
2024-04-23 12:28:42 +01:00
Sathya Gunsasekaran 9e15ade177 [healthcheck] Read files from globbed path
ghstack-source-id: a79336c2b1c85ae4d5b941ffbeffb3df10816448
Pull Request resolved: https://github.com/facebook/react-forget/pull/2887
2024-04-23 12:28:41 +01:00
Sathya Gunsasekaran a6cc5bc874 [healthcheck] Read glob of src path
Use yargs to parse input of glob expression
matching the path of src files to compile.

ghstack-source-id: 6a35e958428cd08ef5c96e0014e072d3faf04064
Pull Request resolved: https://github.com/facebook/react-forget/pull/2886
2024-04-23 12:28:41 +01:00
Sathya Gunsasekaran 706e04722f [healthcheck] Init tsconfig
ghstack-source-id: 52339f8e5cde29d4e132762de2e4e4b31f25f8c1
Pull Request resolved: https://github.com/facebook/react-forget/pull/2885
2024-04-23 12:28:40 +01:00
Sathya Gunsasekaran 6019ef0a43 [healthcheck] New package for checking violations
This package will be used to check for violations
of the rules of react and other heuristics to
determine the health of a codebase.

The health of a codebase gives an expectation of
how easy it will be onboard on to the compiler.

ghstack-source-id: b52fc4e44f704e0544f15066d8905825a256dc4a
Pull Request resolved: https://github.com/facebook/react-forget/pull/2884
2024-04-23 12:28:40 +01:00
Mofei Zhang 10e11c4a88 [HIR] Assert program blocks and scopes are properly nested
ghstack-source-id: e3fe9b5fb8d1314e16e562581f40ca2b2a555b97
Pull Request resolved: https://github.com/facebook/react-forget/pull/2867
2024-04-23 10:18:50 +01:00
Mofei Zhang 40474b8eaf [HIR] Naive implementation of pruneUnusedLabels in HIR
ghstack-source-id: 6d55db3d5c0fd7736a59d48c6afb2de9b5729d16
Pull Request resolved: https://github.com/facebook/react-forget/pull/2866
2024-04-23 10:18:50 +01:00
Mofei Zhang 555100ca83 [HIR] Nonnullable block fallthroughs
ghstack-source-id: 6f24b60056c741e5d4e9836f91bc4fce0f9e8fdd
Pull Request resolved: https://github.com/facebook/react-forget/pull/2865
2024-04-23 10:18:49 +01:00
Mofei Zhang 1efb3cae0a [HIR] Add new unreachable terminal
ghstack-source-id: cffdbbbd78a0aa7e1587a234ce27366ea626ee5e
Pull Request resolved: https://github.com/facebook/react-forget/pull/2864
2024-04-23 10:18:48 +01:00
Mofei Zhang d87ba1b9df [be] Stabilize block ids
ghstack-source-id: 83aedf9f086ccb4819655eab803f25f944b75c7b
Pull Request resolved: https://github.com/facebook/react-forget/pull/2851
2024-04-23 10:18:48 +01:00