Steve (Builder.io) Profile Banner
Steve (Builder.io) Profile
Steve (Builder.io)

@Steve8708

Followers
86,994
Following
688
Media
874
Statuses
6,487

CEO @builderio - design to production, faster

San Francisco, CA
Joined October 2008
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@Steve8708
Steve (Builder.io)
2 months
Thrilled to announce Visual Copilot V1 AI codegen using YOUR components
20
65
417
@Steve8708
Steve (Builder.io)
8 months
we've been working on something...
191
1K
7K
@Steve8708
Steve (Builder.io)
1 year
these 5 lines of code can add crazy shit to your apps. use them. 🧵:
Tweet media one
104
838
7K
@Steve8708
Steve (Builder.io)
10 months
copilot has had enough today
Tweet media one
39
1K
7K
@Steve8708
Steve (Builder.io)
2 years
Do you know about :is() in CSS? It's pretty handy!
Tweet media one
61
1K
7K
@Steve8708
Steve (Builder.io)
2 years
How do Nike and Apple make such smooth and touch friendly carousels with pure CSS? /* tl;dr */ .carousel { scroll-snap-type: x mandatory; } .carousel .item { scroll-snap-align: start; } More detail 👇
72
981
7K
@Steve8708
Steve (Builder.io)
1 year
A cure for React useState hell? You may not realize how easily you can replace useState with useReducer and simplify your state management You can read more in my latest blog post:
127
852
6K
@Steve8708
Steve (Builder.io)
1 year
You might be using `fetch` wrong...
95
819
6K
@Steve8708
Steve (Builder.io)
1 year
Everything you didn't know you need to know about buttons Yes, buttons More surprises in my full blog post:
118
781
6K
@Steve8708
Steve (Builder.io)
2 years
Perf tip: avoid chained async tasks Parallelize with Promise.all wherever possible
Tweet media one
62
677
5K
@Steve8708
Steve (Builder.io)
1 year
Are you loading images as optimally as you can? Do you know how and when to use decoding=async, loading=lazy, fetchpriority, <picture>, aspect-ratio, or srcset? A deep dive on optimally loading images in my latest blog post:
75
700
5K
@Steve8708
Steve (Builder.io)
2 years
Frosted glass effect in CSS - one of my favorites
Tweet media one
37
519
4K
@Steve8708
Steve (Builder.io)
1 year
Speed up sequential async/await code with promise concurrency But be aware of a couple critical gotchas! Read more in my latest article:
62
587
4K
@Steve8708
Steve (Builder.io)
9 months
top tier debugging
Tweet media one
208
487
4K
@Steve8708
Steve (Builder.io)
5 months
fun fact - you can chain '!' and '?' operators in ts for added drama
Tweet media one
87
356
4K
@Steve8708
Steve (Builder.io)
2 years
PSA: please stop using strings concatination to create and edit URLs in JS All major browsers have great built-in functionality for URL parsing & manipulation:
Tweet media one
44
713
4K
@Steve8708
Steve (Builder.io)
2 years
PSA: number inputs have a `.valueAsNumber` property that you may find handy
Tweet media one
44
634
4K
@Steve8708
Steve (Builder.io)
1 year
If you're still creating and modifying URLs in JavaScript using string concatenation, this is a PSA that there is a better way:
59
551
4K
@Steve8708
Steve (Builder.io)
1 year
This is one you need to know. JS has a built-in function for deep cloning objects called `structuredClone`, which can handle: 😍 Deeply nested objects and arrays 🌎 Many types, like Date, Set, Map, etc ➰ Circular references More in my latest article:
64
579
4K
@Steve8708
Steve (Builder.io)
1 year
AI + VS Code = 🤯
39
655
3K
@Steve8708
Steve (Builder.io)
1 year
8 modern browser APIs you might not know, but really should:
63
601
3K
@Steve8708
Steve (Builder.io)
10 months
use the `gap` css property more please
Tweet media one
113
249
3K
@Steve8708
Steve (Builder.io)
1 year
Do you know about :is() in CSS? It's pretty handy! More on :is(), as well as :where() and :has(), in my full article:
42
417
3K
@Steve8708
Steve (Builder.io)
2 years
Performance tip: do you know about `overflow: clip`? It is a modern alternative to `overflow: hidden` with better performance
Tweet media one
30
443
3K
@Steve8708
Steve (Builder.io)
2 years
Performance tip: if you need to set a lot of dynamic keys to an object, a Map can give you better perf Explanation in 🧵:
Tweet media one
28
564
3K
@Steve8708
Steve (Builder.io)
2 years
A thread of my favorite clever CSS tricks 👇
97
625
3K
@Steve8708
Steve (Builder.io)
2 years
If you aren't using `new URL()` in JS, you really should start:
32
477
3K
@Steve8708
Steve (Builder.io)
1 year
Why are people so obsessed with signals right now? Let me attempt to explain... More in our blog post:
70
359
3K
@Steve8708
Steve (Builder.io)
1 year
If you are reading number and date input values as strings and parsing them manually, there is a better way. More in my latest blog post:
25
300
3K
@Steve8708
Steve (Builder.io)
1 year
If you are creating configuration objects in TS and not using the `satisfies` operator, you are doing it wrong
38
376
3K
@Steve8708
Steve (Builder.io)
10 months
really simple trick to write better html
30
308
2K
@Steve8708
Steve (Builder.io)
2 years
Performance tip: make your page load feel more instant by using priority hints to help the browser prioritize the most critical resources More you can do with priority hints in 🧵:
Tweet media one
23
398
2K
@Steve8708
Steve (Builder.io)
2 years
The `download` attribute in HTML at a glance:
28
365
2K
@Steve8708
Steve (Builder.io)
2 years
Performance tip: try the `decoding` attribute for images to allow decoding to be async and not block the main thread, allowing your content to display faster
Tweet media one
23
416
2K
@Steve8708
Steve (Builder.io)
2 years
How does Tesla make that beautifully smooth full page swipe effect on their homepage? /* tl;dr */ .container { scroll-snap-type: y mandatory; } .section { scroll-snap-align: start; scroll-snap-stop: always; } More detail 👇
34
350
2K
@Steve8708
Steve (Builder.io)
9 months
race condition bugs got you down?
Tweet media one
63
166
2K
@Steve8708
Steve (Builder.io)
9 months
frontend devs when they learn js was invented in 1995
41
286
2K
@Steve8708
Steve (Builder.io)
1 year
The `Intl` object in JS is so valuable, yet so underutilized Learn how to generate friendly relative time strings from a given date - like "in 10 minutes" or "last week" or "tomorrow" - with 0 dependencies in my latest blog post:
34
330
2K
@Steve8708
Steve (Builder.io)
1 year
Do you know about ReturnType in TypeScript? What about Awaited or Parameters? Utility types can unlock a lot of power to keep your code type safe, even when your npm packages aren't perfect More magic you can do with utility types in my latest article:
41
344
2K
@Steve8708
Steve (Builder.io)
1 year
The `satisfies` operator in TypeScript 4.9 is a game changer Here is a quick overview of how it compares to a couple alternative ways of annotating types Learn more about the `satisfies` operator here:
38
381
2K
@Steve8708
Steve (Builder.io)
2 years
How Apple makes those crazy 3D effects as you scroll While this is not the best for performance/usability/accessibility, it's fun to see how they do it
34
273
2K
@Steve8708
Steve (Builder.io)
2 years
Should you use an anchor tag or a button tag for clickable elements in HTML? The answer is surprisingly nuanced:
49
355
2K
@Steve8708
Steve (Builder.io)
1 year
The CSS Working Group is debating over the best way to define nesting in CSS, and want your input! Which do you like best? You can vote in the official poll here:
Tweet media one
637
386
2K
@Steve8708
Steve (Builder.io)
2 years
TIL about the download attribute for anchors, handy!
Tweet media one
16
294
2K
@Steve8708
Steve (Builder.io)
1 year
the first time i had to deal with a huge git rebase conflict
61
423
2K
@Steve8708
Steve (Builder.io)
1 year
JavaScript Maps (new Map()) are more performant, ergonomic, and overall useful than you might think. You may want to consider using them more often than you likely are. Full video is now out!
29
346
2K
@Steve8708
Steve (Builder.io)
2 years
Tip: avoid hard coding relative days and times Try `Intl` to give well formatted messages with great UX and performance Learn more:
Tweet media one
14
301
2K
@Steve8708
Steve (Builder.io)
2 years
How Apple makes their beautiful hamburger menu in *pure CSS* (no JS!) <!-- tl;dr --> <input type="checkbox" ... /> <style> .checkbox:checked + .menu { /* animate */ } </style> More detail 👇
23
244
2K
@Steve8708
Steve (Builder.io)
2 years
CSS has a variety of layout algorithms to choose from It is useful to understand the differences, as some CSS properties behave differently in each layout mode
Tweet media one
17
341
2K
@Steve8708
Steve (Builder.io)
2 years
How does Apple make that awesome frosted glass effect on their site header in CSS? tl;dr backdrop-filter: blur(20px) saturate(180%) Better explanation 👇
15
190
2K
@Steve8708
Steve (Builder.io)
2 years
Wow, how have I not known about the `gap` property for flex layouts How it works in 🧵:
Tweet media one
81
221
2K
@Steve8708
Steve (Builder.io)
1 year
Quick tip: avoid plain objects when you need to frequently create and remove keys, and use a Map instead You can get better performance and ergonomics More cool things you can do with Maps in my latest blog post:
25
210
2K
@Steve8708
Steve (Builder.io)
2 years
How Airbnb makes that cool swipe up drawer on their mobile site in CSS Pretty clever trick! Code example: No-code example:
13
183
2K
@Steve8708
Steve (Builder.io)
1 year
naming conventions, lol
Tweet media one
32
232
2K
@Steve8708
Steve (Builder.io)
1 year
Are you ever debugging in Node.js and realize your terminal leaves a lot to be desired... Did you know that it takes just 2 seconds to connect any Node process to your browser devtools and have fully interactive debugging 🐛? Read on in our article:
27
235
2K
@Steve8708
Steve (Builder.io)
2 years
Make super cool swipe-over sections like Apple in pure CSS! Try it in code: Try it in @builderio :
22
205
2K
@Steve8708
Steve (Builder.io)
25 days
never understood this take, I feel way more productive with TS even for tiny projects
@tibo_maker
Tibo
25 days
Bye TypeScript 👋 Great for big teams but it's slowing me down when working solo or with 1-2 friends Going back full JS
Tweet media one
390
61
2K
129
51
2K
@Steve8708
Steve (Builder.io)
7 months
How does Stripe do that really cool morphing animation with their menus? See how to easily replicate it with React, Tailwind, and AI:
25
173
1K
@Steve8708
Steve (Builder.io)
1 year
I know we get caught up in our micro preferences for frameworks. But let’s not lose sight of the fact that truly: @reactjs is a phenomenal framework @vuejs is a phenomenal framework @nextjs is a phenomenal framework @nuxt_js is a phenomenal framework @sveltejs is a phenomenal…
72
131
1K
@Steve8708
Steve (Builder.io)
2 years
Web perf tip: avoid using background-image in CSS For faster loading images, use <img /> anywhere possible, for better optimization options such as the srcset & sizes attributes
Tweet media one
24
185
1K
@Steve8708
Steve (Builder.io)
2 years
Performance is hard, and there are many things to know That's why I have compiled many tips for image perf into this one cheat sheet! More info in 🧵:
Tweet media one
11
264
1K
@Steve8708
Steve (Builder.io)
2 years
How Apple makes those awesome zooming page transitions as you scroll Code example: Low-code example:
16
161
1K
@Steve8708
Steve (Builder.io)
1 year
If you don't already know... I'm a huge fan of the new `satisfies` operator in TypeScript 4.9 I've compiled the best examples I've found on using the operator, as well as a few helpful notes to make the most of it Latest blog post now live:
22
215
1K
@Steve8708
Steve (Builder.io)
6 months
If you want to build AI products that are truly unique, valuable, and fast, don't do what everybody else is doing. Do this instead:
25
182
1K
@Steve8708
Steve (Builder.io)
2 years
Are you using mix-blend-mode in CSS? It's cool! Source code for this example:
14
161
1K
@Steve8708
Steve (Builder.io)
1 year
"But you can't JSON.stringify maps!" You actually can. It's surprisingly easy to JSON stringify and parse virtually anything in JS using a `replacer`
13
150
1K
@Steve8708
Steve (Builder.io)
1 year
if i brush my teeth while peeing is that concurrency or parallelization
142
74
1K
@Steve8708
Steve (Builder.io)
2 years
Browser-native deep object cloning in JS is finally here, and it's awesome structuredClone() can: - copy deeply nested data - handle many data types like Map/Set/Regex/etc - even handle circular references Performance is great as well ⚡️
17
238
1K
@Steve8708
Steve (Builder.io)
1 year
Do you know the difference between a Map and a WeakMap and when to use which? Or why you would even want to have objects as keys and what use cases this unlocks? More in the full article:
19
130
1K
@Steve8708
Steve (Builder.io)
2 years
Make a text reveal scroll effect like Apple in a few lines of code using IntersectionObserver:
10
141
1K
@Steve8708
Steve (Builder.io)
1 year
Countries with the best food I’ve ever had (subjective): 1. India 2. Thailand 3. Mexico 4. China 5. France 6. Japan 7. Malaysia 8. Brazil 9. Portugal 10. Italy … Absolute worst: England
211
27
1K
@Steve8708
Steve (Builder.io)
11 months
amazing resource to visually learn the node.js event loop: highlights in 🧵:
9
222
1K
@Steve8708
Steve (Builder.io)
1 year
If your code to render data from a CMS is a mess... it doesn't have to be:
23
100
1K
@Steve8708
Steve (Builder.io)
8 months
how to build a drag and drop editable website like
18
176
1K
@Steve8708
Steve (Builder.io)
2 years
Browser-native img lazy loading = 🔥
18
183
1K
@Steve8708
Steve (Builder.io)
28 days
Turns out, Devin is a lie Here's the key things they fabricated:
32
161
1K
@Steve8708
Steve (Builder.io)
1 year
It’s insane what happens when you connect LLMs to a visual editor. Generate responsive designs and apps with AI, edit them with natural language, and convert to code for any framework. This is not a hypothetical future or "private beta", its available right now for everyone:
29
168
1K
@Steve8708
Steve (Builder.io)
2 years
Performance tip: did you know you can make a fast function for relative time strings with ~30 lines of code and 0 dependencies? Code in 🧵:
Tweet media one
16
118
968
@Steve8708
Steve (Builder.io)
1 year
One new way you can make fetch() more elegant is to use the new Error.prototype.cause property in JS: const res = await fetch(...) if (!res.ok) { throw new Error('...', { cause: res }) } ... catch (err) { if (err.cause.status === ...) { // Handle each status } }
11
154
958
@Steve8708
Steve (Builder.io)
1 year
Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it. Just ship it.…
99
96
955
@Steve8708
Steve (Builder.io)
1 year
day in the life
11
97
957
@Steve8708
Steve (Builder.io)
2 years
What is Server-Driven UI? It's an emerging technique for: - more component-driven development - a balance of personalization and performance - better content workflows for teams More in the vid:
47
165
955
@Steve8708
Steve (Builder.io)
2 years
Performance tip: don't forget to dedupe your modules! In many cases, you may be loading the same package multiple times Try `npm dedupe` or `npx yarn-dedupe` to ensure you shed unneeded duplicates
Tweet media one
7
130
950
@Steve8708
Steve (Builder.io)
11 months
Amazing resource to visually learn @nextjs 's new app router:
13
105
924
@Steve8708
Steve (Builder.io)
1 year
if only there was a better way
Tweet media one
79
56
918
@Steve8708
Steve (Builder.io)
10 months
writing js without typescript
39
109
912
@Steve8708
Steve (Builder.io)
2 years
If you're not using border-image in CSS, you are missing out on a very cool effect! Try it:
11
119
906
@Steve8708
Steve (Builder.io)
10 months
look guys i went viral on threads
Tweet media one
24
36
897
@Steve8708
Steve (Builder.io)
2 years
Performance tip: use IntersectionObserver instead of scroll events for a faster way to detect when elements are in the viewport Learn more:
Tweet media one
8
146
894
@Steve8708
Steve (Builder.io)
1 year
My personal likes/dislikes of the popular frameworks: React: I love TSX and hooks. Dislike: useEffect, callback arrays, and over pushing immutability. Vue: I love SFCs, simple proxy-based mutable state management. Dislike: would like to see a solution to having less…
54
63
874
@Steve8708
Steve (Builder.io)
1 year
One cool use case for Maps - creating a simple O(1) LRU cache Given how Maps preserve the order of their keys, implementation is trivial:
Tweet media one
15
85
870
@Steve8708
Steve (Builder.io)
1 year
Civet ( @civetlang ) is a new alternative syntax for TypeScript Init flame war about syntax preferences:
53
99
863
@Steve8708
Steve (Builder.io)
2 years
Deep cloning simple objects/array structures in JS - which is fastest? Do you know? Answer in thread:
Tweet media one
25
121
860
@Steve8708
Steve (Builder.io)
2 years
JS perf tip: date libraries can hurt your site speed more than you expect Consider browser native alternatives under `Intl` for faster execution and smaller bundles
Tweet media one
15
154
859
@Steve8708
Steve (Builder.io)
2 years
How Partytown works thread: 🧵 👇
Tweet media one
13
138
843
@Steve8708
Steve (Builder.io)
2 years
A thread of my favorite frontend performance tips to keep top of mind ⬇
31
185
836
@Steve8708
Steve (Builder.io)
8 months
we just finished porting a major ML project from JS to python only for it to be…. about 100x slower moving it back to JS and using a bit of C where needed has given us an insane perf boost
71
40
828
@Steve8708
Steve (Builder.io)
1 year
I don’t have a college degree of any kind. I’ve never taken a CS class. If you like my content then you agree that you don’t need formal education to have valuable knowledge about coding.
69
40
806
@Steve8708
Steve (Builder.io)
2 years
How makes such beautiful text gradient effects in CSS:
10
96
810
@Steve8708
Steve (Builder.io)
2 years
What image format should you use for the best balance of performance and quality? 👇
16
152
790