Joe Savona

2.9K posts

Joe Savona

Joe Savona

@en_JS

React team at Meta

Katılım Nisan 2007
181 Takip Edilen12.6K Takipçiler
Joe Savona
Joe Savona@en_JS·
@trevorlasn I orchestrated the port to not just ensure that all tests pass, but to ensure the intermediate representation is identical after every compiler pass (~50 of them). So the logic is right, the gap is around data structure choices and code style.
English
1
0
0
55
Trevor I. Lasn
Trevor I. Lasn@trevorlasn·
@en_JS ai cleaning up its own mess, love it. is the gap mostly style stuff or does it actually get logic wrong too?
English
1
0
0
40
Joe Savona
Joe Savona@en_JS·
React Compiler: Rust edition is coming soon. We've ported the majority of the passes using AI. When the initial port finishes we'll do some updates to get the code in a state we're happy to maintain, then extensive testing and look at performance. More to come soon
English
28
89
1.1K
71.3K
Joe Savona
Joe Savona@en_JS·
@trevorlasn it needs a decent bit of cleanup, but i'm just automating that too
English
1
0
1
196
Trevor I. Lasn
Trevor I. Lasn@trevorlasn·
@en_JS using AI to port the compiler that will optimize AI-generated code. that's a nice recursive loop. curious how much manual cleanup the AI port actually needed, or if the Rust type system caught most of the issues on its own?
English
1
0
2
298
Joe Savona
Joe Savona@en_JS·
@tomasz_ducin I understand it, since it's close enough to the original code. We definitely expect to iterate on it though, i'll probably go over every single file and make edits (by adding code comments, telling AI to fix)
English
1
0
12
1.1K
Tomasz Ducin
Tomasz Ducin@tomasz_ducin·
@en_JS Genuine question: how much does the team understand the new Rust implementation? ("using AI")
English
1
0
8
1.5K
Joe Savona
Joe Savona@en_JS·
@kurtextrem We use our own intermediate representation since the analysis and optimization we do is comparable to that of optimizing compiler for static languages. We'll work with partners to create bindings for all the various build tools.
English
0
0
7
1.5K
Joe Savona
Joe Savona@en_JS·
@Meligy @yongsk0066 Yeah all the new lint rules are also powered by the compiler so this means the lint rules too
English
0
0
13
1.9K
Meligy
Meligy@Meligy·
This is awesome news. Thank you so much. Any chance of linting rules are also rust based? Or else, would that rust compiler improve the speed of existing react ESLint hooks plugin? On my monorepo, oxlint without the JS plugin finishes with type aware and type checking in <3s, but with it, 18-26s Double that I think on CI. CC @boshen_c
English
1
0
11
4.7K
Joe Savona
Joe Savona@en_JS·
@bcherny Command approval is so broken. I'll approve two independent commands, and then get asked for permission to do `cm1 && cmd2`, or run an approved command in a loop
English
0
0
0
243
Boris Cherny
Boris Cherny@bcherny·
5/ Pre-approve common permissions Claude Code uses a sophisticated permission system with a combo of prompt injection detection, static analysis, sandboxing, and human oversight. Out of the box, we pre-approve a small set of safe commands. To pre-approve more, run /permissions and add to the allow and block lists. Check these into your team's settings.json. We support full wildcard syntax. Try "Bash(bun run *)" or "Edit(/docs/**)" code.claude.com/docs/en/permis…
Boris Cherny tweet media
English
6
4
164
36K
Boris Cherny
Boris Cherny@bcherny·
Reflecting on what engineers love about Claude Code, one thing that jumps out is its customizability: hooks, plugins, LSPs, MCPs, skills, effort, custom agents, status lines, output styles, etc. Every engineer uses their tools differently. We built Claude Code from the ground up to not just have great defaults, but to also be incredibly customizable. This is a reason why developers fall in love with the product, and why Claude Code's growth continues to accelerate. I wanted to share a few ways we're seeing people and teams customize their Claudes.
English
168
389
4.4K
580.5K
Joe Savona
Joe Savona@en_JS·
Feels like subconsciously trying to retain control — "sure maybe i won't code but i'll retain control of the tasks". I think we have to let go of code and low-level tasks, direct the architecture and goals.
English
1
0
6
2.1K
Joe Savona
Joe Savona@en_JS·
There are so many takes on the "give the agent a DAG of tasks" idea. But the reality is that task lists were always an attempt to impose order against fundamentally chaotic systems. You find the dependencies by doing tasks as often as you realize them in advance.
English
2
0
10
2.6K
Joe Savona
Joe Savona@en_JS·
@teemu_taskula @rickyfm If i'm reading the Babel docs correctly globs should work in overrides. Can you file a GitHub issue?
English
0
0
1
196
Teemu Taskula
Teemu Taskula@teemu_taskula·
Might be a skill-issue but it seems that the docs for React Compiler's "Directory-Based Adoption with Babel Overrides" don't quite work The `test` glob pattern for the override doesn't work but if I change it to be a regex pattern it works @en_JS @rickyfm
Teemu Taskula tweet media
English
1
0
0
244
Ray Thurn Void
Ray Thurn Void@raythurnvoid·
@rickyfm Why does the react compiler care if i use ref during render? I understand it's not reactive but why skip compilation in this case? I believe i found a bug where the compiler thinks i'm doing this illegal thing but i'm not and as a result the component is de-optimized
Ray Thurn Void tweet media
English
2
0
0
174
Joe Savona
Joe Savona@en_JS·
@tan_stack This is "kicking myself we didn't build it" level good
English
1
2
23
2.2K
TANSTACK
TANSTACK@tan_stack·
🚀 TanStack DB 0.5 is here with Query-Driven Sync Your component's query IS the API call. No custom endpoints. No GraphQL resolvers. Just write your query and DB figures out exactly what to fetch. Details 🧵👇
TANSTACK tweet media
English
40
78
755
236.7K
Shanon Jackson
Shanon Jackson@Shanshrew·
Literally can't replicate it; In fact seeing the opposite now where it's the same or faster. Feel like I'm in that Blackmirror episode. My deepest apologies @en_JS; Until I can replicate will delete original post Maybe my computer decided to run something heavy right as I swapped from false -> true.
English
2
0
4
222
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg Our recommendation is to default enable, opt-out where necessary. I'd love to learn more about your specific use-case and understand why you saw such a large regression on startup since that is inconsistent with what we've seen generally. Any way to distill down to a repro?
English
1
0
0
602
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg > I have a yet unproven theory that only applications that abuse useMemo / useCallback / memo will benefit from react-compiler We have lots of data that confirms this is not the case. Exceedingly well memoized apps may see less benefit, most apps see an improvement.
English
1
0
0
621
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg A couple things here. First, JavaScript generally allocates objects on the heap - the examples you gave don't use stack allocation. Second, most of the data is still going to be referenced anyway - at minimum the content of the element, etc.
English
1
0
0
78
Shanon Jackson
Shanon Jackson@Shanshrew·
I honestly find this suprising. If you just navigate here which is the react compiler playground playground.react.dev You look at the "return
Hello world
" example; That div now ends up being stored on the heap via $[0], where-as before it was stored in stack memory. The other reason I find it surprising; Is that conceptually there is NO memoization without heap memory. If we retain a reference to something outside of render, it's on the heap. So therefore how can react-compiler possibly be neutral on memory if it's memorizing everything.
English
1
0
0
86
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg We've tested on different products with varied amounts of memoization: overall found neutral memory impact. If you have extreme cases of no memoization you might see a slight increase, but there would also be more of a chance it significantly improves update perf
English
1
0
0
69
Shanon Jackson
Shanon Jackson@Shanshrew·
@en_JS Thanks for getting back to me would love to pick your brain a bit Memory - Are you testing this in applications predominantly where they have a convention to useMemo / useCallback everything? or are you also testing on applications that sparsely (and I would argue correctly) use useMemo / useCallback / memo [if not not at all]
English
1
0
0
80
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg Obv if the compiler made your specific app slower, then maybe don't use it! But overall the points you raised don't align with what we've seen for most apps. We're curious to hear from more folks though, we definitely want to make the compiler work for as many cases as we can :-)
English
1
0
0
213
Joe Savona
Joe Savona@en_JS·
@Shanshrew @rauchg For #4: Separate builds for SSR actually make a lot of sense, since there's a lot of code that is only executed on the client such as effects. A SSR specific build could eliminate dependencies only used by effects, event handlers, etc. This is on our backlog.
English
1
0
2
278