Ryan Florence Profile Banner
Ryan Florence Profile
Ryan Florence

@ryanflorence

Followers
20,250
Following
250
Media
713
Statuses
7,846

React Router, @remix_run , @shopify . Throttle your network

Joined May 2023
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
@ryanflorence
Ryan Florence
8 months
I present: $100 of groceries.
Tweet media one
2K
958
8K
@ryanflorence
Ryan Florence
9 months
I’m tired of native apps. > download this app to register your kid for tennis > download this other app to see your the tennis schedule > download this app to pay your bill > download our app > download our app! > download our app!! Websites are great, btw
169
378
5K
@ryanflorence
Ryan Florence
11 months
After 26 years of CSS experience, I'll take the left every single time.
@xirclebox
xirclebox
11 months
On the left, HTML and Tailwind a dev authored with the idea it would be easier to read. VS. On the right, I rewrote the markup using vanilla CSS classes. #webDev #frontEnd #CSS
Tweet media one
Tweet media two
509
214
2K
229
355
4K
@ryanflorence
Ryan Florence
3 months
frontend: <input type="email" /> backend: str.includes("@") The only way to know if an email address is valid is to send an email. Stop using regexes that don't let people use valid emails 😂
@krishakalola
Krisha Kalola
3 months
Is it true? 🙄
Tweet media one
275
115
2K
157
184
3K
@ryanflorence
Ryan Florence
8 months
@Trees73Fu Are you saying the inflation is because of what I bought?
60
24
3K
@ryanflorence
Ryan Florence
8 months
Wonder if I removed the watermelon and said $95 if people would still say skill issue.
127
30
3K
@ryanflorence
Ryan Florence
8 months
@Tschudi_Davai Totally. But I know folks who are struggling with this 25% inflation in 3 years.
40
27
3K
@ryanflorence
Ryan Florence
26 days
Folks should really think harder about when they use "time ago" dates instead of just giving me the actual date:
Tweet media one
36
90
2K
@ryanflorence
Ryan Florence
8 months
@Angie_Bopeepers Can you buy berries on the vine or how do you get it or packaged?
36
6
2K
@ryanflorence
Ryan Florence
6 months
Thanks to `flushSync`, you can finally manage focus in React again 🙌 (but I will always love this.setState)
90
178
2K
@ryanflorence
Ryan Florence
8 months
@EatMoreBrisket @literElly The point is inflation, doesn’t matter if you shop like me and Gwyneth Paltrow (my favorite offense slung at me over this) or you “try”. Even the most frugal shopper is paying 25% more now. Really sucks cause a lot of people can’t make ends meet anymore.
49
21
1K
@ryanflorence
Ryan Florence
3 months
I will never get over how little developers care about the user experience they create and how much they care about what their code looks like
97
114
1K
@ryanflorence
Ryan Florence
2 months
Tweet media one
30
53
1K
@ryanflorence
Ryan Florence
9 months
You should always have this on when developing user interfaces in the browser.
Tweet media one
89
58
1K
@ryanflorence
Ryan Florence
5 months
There were no server actions when we created Remix. So we created route actions. Now React has server actions. There was no way to fetch data in components on the server before Remix, so we created route loaders. Now React can fetch data in components for SSR with RSC. React…
49
110
1K
@ryanflorence
Ryan Florence
8 months
The real benefit of pairing is seeing people do things like: $ cd - They don't even think about it anymore but your mind is blown.
82
71
1K
@ryanflorence
Ryan Florence
3 months
<a href=mailto:> links should copy to clipboard at this point
31
47
1K
@ryanflorence
Ryan Florence
8 months
Here's my soundcloud: "a decade of inflation in 3 years"
Tweet media one
26
80
1K
@ryanflorence
Ryan Florence
2 months
Somebody at google is learning flexbox and they let them ship their work 5 minutes in to the tutorial
@AustinTByrd
Austin Byrd
2 months
this was shipped by a 1.84 trillion dollar company
Tweet media one
205
192
4K
36
41
1K
@ryanflorence
Ryan Florence
2 months
CALL THE COPS!
Tweet media one
70
14
958
@ryanflorence
Ryan Florence
2 months
*slaps roof of car* this little input can fit so much UX in it
Tweet media one
19
37
887
@ryanflorence
Ryan Florence
7 months
@housecor This is one major reason I hate the backend/frontend split on teams. The argument was that I was adding "tech debt" to the backend when we already had "APIs for this data". The absolute disaster of fetches and joining all the REST fetches together into a data set I could use…
44
54
860
@ryanflorence
Ryan Florence
6 months
> Will Remix stick around? We work for a 17 year old, $80B company We've maintained React Router for a decade as a two-man business It's got more production deployments than any alternative in the JS ecosystem and React Router is 90% of Remix Yes, Remix will stick around 🫶
Tweet media one
25
56
824
@ryanflorence
Ryan Florence
6 months
The biggest risk of tool development is accidentally convincing yourself that incidental complexity your abstraction created is essential complexity of the problem space. And then you think workarounds for the incidental complexity are features you’re proud of.
42
86
808
@ryanflorence
Ryan Florence
11 months
Y’all @kentcdodds is the real deal. Drove up to my house last night unannounced to drop off a delicious meal for tonight, the day of my surgery. He doesn’t really live close either. He is so much more genuine than everybody it’s hard to believe.
23
7
785
@ryanflorence
Ryan Florence
4 months
REACT! Just got caught up on all the posts 😅 I'm near the top of the list of people who could justifiably complain about how they've handled communication, community, and technical details of the project But I'm not going to 🤗 With a spotlight as big as theirs, you're gonna…
30
79
785
@ryanflorence
Ryan Florence
2 months
In React, how would you fix the performance of this black bar animation that's dropping frames when the new page renders?
148
25
768
@ryanflorence
Ryan Florence
8 months
Had my one year review after joining Shopify today and I seriously can't have imagined a better outcome for Remix than this. Remix today is better than I imagined when we set out to build it, and the future we're working on is looking even better. Imagining a world where we…
43
25
771
@ryanflorence
Ryan Florence
7 months
@housecor I had this argument with a “backend dev” on our team. I made an endpoint specifically for the UI I was building and only needed 2 (complicated but efficient) DB queries to get it. He insisted I use the existing REST endpoints and blocked my PR. So I did it his way and made 13…
53
45
770
@ryanflorence
Ryan Florence
4 months
@thdxr
dax
4 months
we’re re-enacting the plot to silicon valley with LLMs we’ve been gifted the best way to search over compressed data ever invented but everyone is building the same chatbot over and over we built a 100% open source demo of something more practical check the thread
Tweet media one
138
151
3K
28
25
745
@ryanflorence
Ryan Florence
5 months
GitHub stars are bookmarks for stuff you don’t use and probably won’t
53
43
659
@ryanflorence
Ryan Florence
30 days
Sincerely, typos are my favorite PRs
@Siddhant_K_code
Siddhant Khare
1 month
What would you do to PRs like these as an OSS project maintainer?
Tweet media one
177
4
248
29
22
719
@ryanflorence
Ryan Florence
8 months
@vituperativeerb Seriously? I got a great deal! I expected it to be like $200? I dunno, my butler is on vacation and I haven't bought groceries myself in years.
19
1
692
@ryanflorence
Ryan Florence
6 months
Somebody's having a bad day with z-index today. Godspeed!
Tweet media one
21
19
696
@ryanflorence
Ryan Florence
8 months
12
0
683
@ryanflorence
Ryan Florence
2 months
Nobody wants the macOS camera effect nonsense Nobody wants to search YouTube videos by color What wild incentive structures and product (non)ownership creates this crap?
62
21
675
@ryanflorence
Ryan Florence
26 days
I mean if it’s working I’d just keep adding features
@nicknisi
Nick Nisi
27 days
You inherit a JavaScript project. No types. No tests. Which one do you add first? Which one is more beneficial?
38
1
20
17
29
663
@ryanflorence
Ryan Florence
7 months
Look up a customer email address? Bro, I could literally log in as a customer to our app and act as them completely. We called it "masquerade" and it was really hard to spell correctly in the code.
63
15
658
@ryanflorence
Ryan Florence
3 months
I wondered if RSC made Remix and Next too similar to even bother with two frameworks and just take the W for influencing React with a lot Remixisms and go contribute instead Now that we see most of the Next/Vercel flavor, I’m confident our flavor is also needed to keep pushing…
38
22
645
@ryanflorence
Ryan Florence
2 months
Next election I’m voting for whoever makes this illegal
27
24
624
@ryanflorence
Ryan Florence
16 days
Look at that, Remix no longer needs `defer` and `Await`, just `React.use` (Gonna be a bit tricky to reconcile all the existing Remix APIs with the new, overlapping React APIs, but it feels good!)
Tweet media one
23
50
620
@ryanflorence
Ryan Florence
6 months
What I love about being at Shopify is - we build Ecommerce sites - we build admin dashboards - we build web apps that build Ecommerce websites - we build no-code web apps that build websites - our merchants build custom storefronts. - our partners build embedded apps for the…
@mjackson
MJ
6 months
Don’t miss what’s happening here. Shopify is using Remix for our most critical apps. That’s HUGE. 🙌
6
5
221
18
31
597
@ryanflorence
Ryan Florence
6 months
Most awkward tech talk moment I've ever had. I expected people to laugh, but instead they clapped. I think about this moment regularly, the realization that most devs don't care about the product, just the tech, and that stresses me out.
72
34
593
@ryanflorence
Ryan Florence
7 months
I love server actions. Remix has them except you have to configure the route/url yourself. I loved the “function becomes a URL” API when I first saw solid start do it. My only issue is these things used to be announced at React Conf.
18
29
595
@ryanflorence
Ryan Florence
3 months
I think I’ve had it with apple. The web could be so much better for app development, I’ve just been kinda patiently waiting for safari to stop lagging but they really don’t care and it shows. A few people there have been apple to push css stuff forward but nothing we really need
@mysk_co
Mysk 🇨🇦🇩🇪
3 months
It's official. iOS will not support Progressive Web Apps in the EU. It would be great if Apple provides the basis of this claim: "We expect this change to affect a small number of users"
Tweet media one
66
120
589
45
48
594
@ryanflorence
Ryan Florence
6 months
Web dev is going two directions that I'm super interested in: Local first: Put the database in the client. RSC: Put the client in the database. Me:
42
33
588
@ryanflorence
Ryan Florence
6 months
Every time I try to manage focus with useEffect I have bugs. Every time I manage focus with flushSync, it works perfectly. I should write a bit more about this.
27
15
584
@ryanflorence
Ryan Florence
4 months
Been using Apple Music on my laptop for the lossless audio and this app feels completely unmaintained - Times New Roman in popups - Basic features like add to playlist don't work - Navigation is impossible Am I the only one? This feels like crazy town after years of Spotify
Tweet media one
82
10
579
@ryanflorence
Ryan Florence
2 months
I appreciate all the calls to be nicer unfortunately I am going to keep my high expectations of our industry and try to do it with a playful tone that's often sarcastic/teasing If you read it as toxic then we simply come from different cultures and I ask that you respect mine
64
6
575
@ryanflorence
Ryan Florence
6 months
Was looking at buying a custom font for the remix and react router websites. Bill would be $60,000. Looks like we'll stick with "system-ui".
48
1
572
@ryanflorence
Ryan Florence
6 months
🤩 So hyped on this @remix_run demo I had to record something NOW, notwithstanding the wrong recording equipment and disheveled beard. Few more details to clean up and then I'll record some official Remix singles on this.
32
45
559
@ryanflorence
Ryan Florence
6 months
You should still initiate the fetch in the owner component, but await it in the child, otherwise you’re slowing down the page.
@asidorenko_
Alex Sidorenko
6 months
"My Suspense fallback doesn't show up" Make sure you fetch data in the component you suspend.
10
79
649
24
31
551
@ryanflorence
Ryan Florence
22 days
OSS websites, you should all make a `/brand` url so that I don't have to find crappy versions of your logo
28
26
554
@ryanflorence
Ryan Florence
8 months
I don’t even know which iPhone I have. I get a new one when the battery starts to suck. If they actually wanted to decrease their environmental impact they’d make a replaceable battery.
Tweet media one
42
22
540
@ryanflorence
Ryan Florence
9 months
I love react, but the fact we haven’t collectively landed on one or two component libs after a decade is surprising. Is it our fault? react’s fault? The web platform’s fault?
195
17
518
@ryanflorence
Ryan Florence
2 months
the web is so cool, you can just make a thing and put it out there, nobody can stop you
25
44
516
@ryanflorence
Ryan Florence
7 months
I learned rails before Ruby. I learned MooTools before JavaScript. When you’re new you can’t see the framework from the language. Even simple stuff like {} — could be MooTools, could be JS, it’s all just magic characters. I can remember the slow realization “ohh!! I know Ruby!”
@ThePrimeagen
ThePrimeagen
7 months
"i learned react before javascript" is a nonsense phrase
182
65
1K
42
22
501
@ryanflorence
Ryan Florence
2 months
Sad to see folks get frustrated with Next just bail on React completely Give Remix a shot It gives you the majority of the benefits of RSC already, and you probably already use 90% of it anyway w/ React Router, plus RSC is coming but I think you'll like it in Remix
37
38
501
@ryanflorence
Ryan Florence
2 months
twitter web devs
Tweet media one
@ryanflorence
Ryan Florence
2 months
In React, how would you fix the performance of this black bar animation that's dropping frames when the new page renders?
148
25
768
11
15
501
@ryanflorence
Ryan Florence
13 days
JS haters will also hate the facts. JS frameworks are the pinnacle of the accessible web In an audit of 1M websites by the company I trust most to survey accessibility: 1st image: Next.js is at the top spot, far above laravel 2nd image: Looking at Stimulus as a proxy for rails…
Tweet media one
Tweet media two
@jonoalderson
Jono Alderson
13 days
Progress? Hardly. JS frameworks remain an antithesis to a performant, accessible, indexable web. We must decry this absurdity.
10
3
42
39
42
501
@ryanflorence
Ryan Florence
3 months
I think I made money giving 💵 to a beggar just now. He was at the corner of a freeway exit, I handed him some cash out my window. Moments later a cop pulled me over because my registration is way expired 🙃 He said he was only giving me a warning because “you were honest…
22
7
492
@ryanflorence
Ryan Florence
3 months
Why does nearly everyone (developers and users) prefer web apps on macOS but native on iOS?
258
16
480
@ryanflorence
Ryan Florence
7 months
RSC is farther from production-ready than I thought. Time to get back to work on current Remix APIs. I'm genuinely excited about RSC though. It's given us a clearer view to build migration paths from React Router+SPA to Remix+RSC and we can start now. No rewrites required.
17
22
484
@ryanflorence
Ryan Florence
2 months
Somebody built a Trellix clone with Next 14 (my little kanban Remix demo) I give it a D+, buggy, slower, missing details Please build better websites! Send me a Trellix clone that's just as good or even better 🔥
54
25
475
@ryanflorence
Ryan Florence
11 months
You can’t hover the classes in your editor to know what they do, you can’t find all instances to remove unused css, and you’ll eventually ignorantly evolve your css to utility classes to fix all of these problems until you realize you built a crappy, undocumented tailwind
15
7
470
@ryanflorence
Ryan Florence
11 months
First, someone will change .previous__button in some other UI and break this one and nobody will know until it’s in production, and maybe not for a while.
12
7
467
@ryanflorence
Ryan Florence
6 months
Outside of React you can just do this like a normal person would think to do it 😆 So that @RyanCarniato and everybody else building and using libraries with coarse updates don't have to say it, I will!
@ryanflorence
Ryan Florence
6 months
Thanks to `flushSync`, you can finally manage focus in React again 🙌 (but I will always love this.setState)
90
178
2K
14
31
472
@ryanflorence
Ryan Florence
13 days
Look at that! Remix no longer needs route links and meta exports nor <Links> and <Meta> components React 19 now floats those kinds of tags to the <head> automatically, even for initial SSR
Tweet media one
@ryanflorence
Ryan Florence
16 days
Look at that, Remix no longer needs `defer` and `Await`, just `React.use` (Gonna be a bit tricky to reconcile all the existing Remix APIs with the new, overlapping React APIs, but it feels good!)
Tweet media one
23
50
620
14
23
469
@ryanflorence
Ryan Florence
4 months
I put in a blu ray and it was 86 billion times better both audio and video than alleged 4K HD audio streaming of the same movie. Do any streaming/download services actually download blu ray quality? (AV weirdos with egregious home theaters are encouraged to reply)
78
4
467
@ryanflorence
Ryan Florence
3 months
I think RSC is the best swing at crossing the network gap ever, I can find parallels with every stack I’ve worked with my whole career and it’s always better It deserves a careful implementation. That’s what we’re attempting in Remix right now We’re not going to rush it
18
16
462
@ryanflorence
Ryan Florence
6 months
Just learned my kids are in the top 10% of Fortnite players. I don't know if I should be proud or get rid of screens.
47
1
457
@ryanflorence
Ryan Florence
4 months
My take: - Top level folders are independent feature folders (vertical bars) + shared folder (horizontal) - Stuff is co-located in feature folders (vertical bars) until it's shared, then it's moved to shared (and can have vertical bars there too)
Tweet media one
17
29
454
@ryanflorence
Ryan Florence
3 months
Married 19 years today! Took the whole family to Disneyland for the week to celebrate. My wife was 19 when we got married 🫣 so this poor woman has nearly spent most of her life with me. (What’s that guy in the back staring at? The family is having a debate)
Tweet media one
35
1
443
@ryanflorence
Ryan Florence
5 months
LAMP is the only stack I know that has pulled this off, assuming your host didn’t break something. None of my abandoned rails, code igniter, nanoc, or gatsby apps run (or build) anymore Frameworks aren’t designed for abandoned apps, but I often wonder how LAMP pulled it off
@jasonleowsg
Jason Leow
5 months
I wish there's a framework where I can leave it for 10 years and it still runs
143
14
228
57
22
442
@ryanflorence
Ryan Florence
10 months
This deserves your attention.
@plutoniummm_
Manav
10 months
error: HTTP GET accepts no body
Tweet media one
42
269
2K
10
21
440
@ryanflorence
Ryan Florence
6 months
React Server Components on the Remix roadmap. We have a *lot* more to write up than what's in the discussion, but it's officially planned on the roadmap.
19
36
433
@ryanflorence
Ryan Florence
9 months
TDD is like marrying somebody without getting to know them.
44
41
432
@ryanflorence
Ryan Florence
6 months
I’ve never seen a like/bookmark ratio like this before. Very glad they let you post long videos now. Still wish I could make a playlist that’s highlighted on my profile.
Tweet media one
31
1
430
@ryanflorence
Ryan Florence
8 months
@tarellel Apparently it’s a skill issue.
13
1
417
@ryanflorence
Ryan Florence
8 months
@RickyWhitmore8 @Trees73Fu You can't counter it if you were already buying the cheaper food.
13
2
418
@ryanflorence
Ryan Florence
4 months
@tlakomy What takes more effort? 1. Scrolling right 2. Figuring out which file has a class name and then opening it and then finding the selectors that apply to the element
44
6
428
@ryanflorence
Ryan Florence
4 months
Ai isn’t going to replace programmers anytime soon One programmer good at programming and Ai will replace a team of programmers though The speed that I can build with Remix + co-pilot is kinda crazy, but it’s only as good as the first tokens I give it, and then it reads my mind
24
19
410
@ryanflorence
Ryan Florence
4 months
When we decided to build remix, I sold my house and moved my family into a little townhouse with cash from the equity. No mortgage, minimal expenses, and good chunk of savings. It didn’t take long for our early revenue to cover all of my expenses, but still I was ready to build.
17
14
423
@ryanflorence
Ryan Florence
2 months
I had to lay off our team when Covid decimated our business, people sent me terrible DMs and criticized me here Layoffs suck, but you probably don’t know enough to get all self-righteous about it until you’ve sat there looking at a spreadsheet and realizing what you have to do😔
19
5
419
@ryanflorence
Ryan Florence
7 months
Look at this thing on 3G throttling! I'm more proud of Remix's `useFetcher` than anything I've ever built, and proud of a great team that cleaned up my initial implementation of it. 1. On drop, kick off a fetcher w/ the card, column, order in the form body 2. When rendering,…
22
30
414
@ryanflorence
Ryan Florence
10 months
Deactivated my twitter account to take a break, then twitter deleted it. Had activity within weeks, let alone several years! Through a connection, asked a VP to reactivate, said they can't. Hard to believe it's not just a status field in the DB @elonmusk
@elonmusk
Elon Musk
1 year
We’re purging accounts that have had no activity at all for several years, so you will probably see follower count drop
34K
38K
385K
22
35
413
@ryanflorence
Ryan Florence
5 months
Yeesh ... Cloudflare D1 is making it hard to care about making a local first search demo with Remix clientLoader when it's returning responses in fractions of a second querying 36,000 records.
25
24
410
@ryanflorence
Ryan Florence
8 months
@danagasta1 Regardless of how you shop, inflation gets you.
9
7
405
@ryanflorence
Ryan Florence
11 days
const ... is stupid and you're using it wrong My talk at Epic Web: do what you want, but let me be 😂
90
44
488
@ryanflorence
Ryan Florence
11 months
As a framework author, stable means “API is not going to change”. It does not mean no bugs. There are always bugs. This is what we call “stable” in Remix too.
@fredkisss
Fredkisss 😘👨🏾‍💻
11 months
They say @nextjs app router is stable, but there are still weird bugs with parallel and interception routes, should we consider them as experimental or alpha like server actions ?
6
1
46
11
24
405
@ryanflorence
Ryan Florence
11 months
Next, the naming will be inconsistent and the team will argue about names for thousands of elements that never should have been named instead of shipping better designs
8
6
398
@ryanflorence
Ryan Florence
8 months
@DavidKPiano 90% of that could be solved with a simple new FormData(event.currentTarget) I’ve never understood the gravitation to controlled components just to get form values to make a fetch.
21
18
402
@ryanflorence
Ryan Florence
8 months
I hope to one day understand why min-height: 0px makes the overflow scrolling of child elements work with flexbox. But not today.
22
10
399
@ryanflorence
Ryan Florence
18 days
Click through to see what 10 years of open source in the React ecosystem does to you
Tweet media one
16
5
399
@ryanflorence
Ryan Florence
7 months
You might not have heard we recently shipped Remix v2. It was boring for everybody. That’s because the features and changes made it into v1 as small, incrementally adoptable changes alongside the v1 API. Those changes were originated from public GitHub discussions before they…
20
31
395
@ryanflorence
Ryan Florence
4 months
Kent said "Ryan, let's go snowboarding on April 11th" and I said "Okay!" And then after I confirmed, he followed up with "j/k you're speaking at my conference now that I know you're free!"
@kentcdodds
Kent C. Dodds 🌌
4 months
📣 I'm excited to announce Epic Web Conf! Happening April 11th in Park City, Utah 🏔 My goal is to bring people together to learn, network, and collaborate on making the web a better place to build software. And you're on the guest list! 🎉 See you there!
29
38
305
21
2
391
@ryanflorence
Ryan Florence
2 months
If you want to understand React you have to first understand that the only sacred thing is composition Everything else is rejected or takes a back seat as an acceptable tradeoff
11
22
386
@ryanflorence
Ryan Florence
7 months
flushSync is my default in React these days. The vast majority of my state updates (in Remix apps anyway) need to be followed up by transactional—not synchronization—effects, typically focus management and scroll positions. I've tried for years to do it with useEffect + refs +…
Tweet media one
18
27
380
@ryanflorence
Ryan Florence
11 months
Then folks will be afraid to change any existing css like .previous__button and will write new css for both new UI *and* the UI that introduced it until you’re shipping hundreds if not thousands of KB of CSS
9
7
371
@ryanflorence
Ryan Florence
11 months
Rate limiting is a great way to mitigate bad scroll logic mixed with useEffect to keep you from DDoSing yourself after a deploy to prod 🤭
10
29
365