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,101
58,210
Tobias Lehwalder retweeted
xiaomi - the Chinese company that makes phones, rice cookers and electric vehicles - has forked OpenCode
126
92
44
3,221
228,560
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,477
327,980
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
287
39
2,183
210,993
Tobias Lehwalder retweeted
Yessssss! Node just shipped the ability to run TypeScript files directly!
87
418
76
3,234
217,915
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
11
518
15
10,499
9,245,791
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,447
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
426
37
3,889
269,008
Tobias Lehwalder retweeted
𝗟𝗲𝗮𝗿𝗻 𝗝𝗪𝗧 𝗹𝗶𝗸𝗲 𝘆𝗼𝘂'𝗹𝗹 𝗻𝗲𝘃𝗲𝗿 𝗳𝗼𝗿𝗴𝗲𝘁. 🧵
39
306
16
1,640
253,602
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
379
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,317
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,670
453,946
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,335
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
582
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