software engineer 🧑‍💻 react, javascript & typescript ⚡️

Frankfurt
Joined November 2017
Tobias Lehwalder retweeted
🆕 Introducing the MDN MCP server! Bring MDN's docs and browser compat data straight into your AI agent or IDE for accurate, up-to-date answers about the web platform. No more outdated guesses from training data. Learn more 👇 developer.mozilla.org/en-US/…
15
189
13
1,102
58,178
Tobias Lehwalder retweeted
xiaomi - the Chinese company that makes phones, rice cookers and electric vehicles - has forked OpenCode
126
92
44
3,222
228,524
Tobias Lehwalder retweeted
Here's the post I wish I had when I first started programming. If you know someone just beginning to code (especially students), maybe pass this along? Would've saved me a lot of head-scratching and "why didn't anyone tell me this earlier?" moments. endler.dev/2025/best-program…
14
2
32
2,249
Tobias Lehwalder retweeted
New syntax incoming! github.com/arthurfiorette/pr… I think I love it.
146
132
131
1,476
327,977
Tobias Lehwalder retweeted
Node 22.6.0 just added TypeScript support 🔥 if you're planning to use it, you'll need these two lines in your tsconfig.json. Brief explainer in a 🧵
30
288
39
2,184
210,988
Tobias Lehwalder retweeted
Yessssss! Node just shipped the ability to run TypeScript files directly!
87
418
76
3,237
217,913
Tobias Lehwalder retweeted
This dude implemented the websocket protocol from scratch in C -- 700 views, kino $2 microphone, really great walkthrough and code on github
12
518
15
10,507
9,245,788
My books are free to read online: – Exploring JavaScript (ES2024 edition) – Deep JavaScript – Tackling TypeScript – Shell scripting with Node.js Retweets appreciated! exploringjs.com/
9
194
5
487
42,446
Tobias Lehwalder retweeted
Code smell: Setting state twice in a row Example: Solution: Eliminate showDialog state. Derive state instead. If userToEdit has a value, show the dialog. If userToEdit is null, hide the dialog. Benefits: -Less state to manage -Avoids illogical combinations (it's illogical for userToEdit to be null when showDialog is true).
22
12
3
243
25,824
Tobias Lehwalder retweeted
Tutanota is now Tuta! 🥳 All of the features you have come to know and love, now with a sleek new domain name. 😎 Threats to your privacy won't be going away, but neither are we. 💪 Learn more and create your new Tuta account here 👇 tutanota.com/blog/tutanota-i… #privacy #email
36
48
5
388
26,354
Tobias Lehwalder retweeted
40
427
37
3,888
269,007
Tobias Lehwalder retweeted
𝗟𝗲𝗮𝗿𝗻 𝗝𝗪𝗧 𝗹𝗶𝗸𝗲 𝘆𝗼𝘂'𝗹𝗹 𝗻𝗲𝘃𝗲𝗿 𝗳𝗼𝗿𝗴𝗲𝘁. 🧵
39
306
16
1,642
253,601
MSW (mswjs.io/) can actually have an enormous impact on a test setup. easy setup and straightforward usage @ApiMocking
MSW is the most recent tool to make an enormous impact on my test AND development productivity.
1
1
8
1,786
Tobias Lehwalder retweeted
Problem: You need to represent an empty number. Hack: Use 0, -1, or "". The real solution: Use null. That's what it's for. Null says, "This has no value". 0, -1, and "" are a lie.
57
35
8
380
84,981
Tobias Lehwalder retweeted
Problem: 🚫 Your project has unused files. 🚫 It has unused npm dependencies. 🚫 It has unused TypeScript exports. But you haven't noticed, because these things are hard to spot. Solution: knip I just used knip to find and resolve dozens of issues. github.com/webpro/knip
14
142
4
903
107,316
Tobias Lehwalder retweeted
🤩 [1/4] Coming soon in @ChromeDevTools - You can overrides API response (Fetch/XHR) and more! Imagine you can mock APIs in frontend without waiting for the backend changes! Not only that...
60
485
80
2,671
453,943
Tobias Lehwalder retweeted
Problem: When you deploy a new version of your SPA, users with a tab open will keep using the old SPA code. Yesterday, I shared one solution. People suggested dozens of useful variations and alternatives. 🙏 So, here are the best options in the massive thread. 6 ways to tell the SPA a new release is available, simplest options first: 1. Write the version from package.json into index.html as part of the build process. Poll index.html every x minutes and compare the server's index.html to the client's index.html. 2. Create an endpoint on the UI web server that reads the package.json version, and returns it. Poll this every x minutes. This is more efficient than option 1, because the payload is smaller. 3. Use web sockets or server sent events to push a notification to the UI after a deploy instead. This is especially attractive if you’re already using these technologies. 4. Use a service worker to notify the user when the UI is stale. For example, Vite's PWA plugin supports this. 5. Use an API proxy like Cloudfront to fetch the version without involving the backend. More here: rehanvdm.com/blog/using-a-cl… 6. Specify the app version in each HTTP call from the UI via a x-app-version header (or whatever name you like). Validate the x-app-version header on the API server. If x-app-version doesn't match the server's version, notify the UI in the response, either via an HTTP 205, 400, or 422 (the HTTP response you return depends on whether you want calls from a “stale” UI to succeed).
14
74
6
529
97,291
Tobias Lehwalder retweeted
State of JS 2022 is OUT NOW! 😱 Should I live-tweet the interesting bits? 2022.stateofjs.com
12
248
20
1,338
269,583
Tobias Lehwalder retweeted
Sometimes, a performance problem is actually a design problem. Example: “How do we fix the performance of this page showing 1,000+ items?" Answer: Stop showing so much stuff at once. What user can absorb 1,000’s of items? Make it easy for the user to find what they need.
30
76
9
583
92,705
Tobias Lehwalder retweeted
"While frameworks provide abstractions and opinionated choices, at the end of the day, you spend the majority of your time writing React code. And that React code is portable between other React-based frameworks. This optionality is great for developers." leerob.substack.com/p/react-…
4
17
1
99
16,673