Sign in with Twitter


Rich Harris @Rich_Harris New York, New York

Graphics editor, @nytimes investigations team. Open sourceror

1,793 Following   23,455 Followers   17,030 Tweets

Joined Twitter 1/25/09

@tomasz_ducin @MylesBorins Colloquially it doesn't really have that meaning any more, it's a lot more tongue-in-che…📣 Rollup users and anyone interested in Rollup We're in need of folks who can help with our plugin monorepo - the…
Retweeted by Rich Harris
@wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map @lukastaegert @guybedford thank you for taking the time! @guybedford @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map @lukastaegert It's come up at lea… @guybedford @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map @lukastaegert Right — externalisi… @wycats @samselikoff @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map I'm assuming y is itself ESM, and that we wan… @guybedford @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map @lukastaegert The concrete case i… @RReverser @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map @lukastaegert @guybedford very pos… @wycats @samselikoff @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map basically, yep, though the error wouldn't man… @wycats @samselikoff @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map imagine there's a main.js that includes those… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map Definitely interested in what that would look… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map I think the only time I said something that w… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map Will acknowledge other collaborators may have… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map Apologies, seems we're (almost) of one mind t… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map Cool, thanks. You're right that it could be b… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map I'm not saying the spec is a thing to ignore,… @wycats @robpalmer2 @samselikoff @NicoloRibaudo @tjcrowder @ember_map That's going to be difficult because we have… @wycats @samselikoff @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map I don't know how to explain it other than to…’m now positive that people who claim to have seen aliens have actually just seen baby owls.
Retweeted by Rich Harris @robpalmer2 @wycats @chadhietala @samselikoff @NicoloRibaudo @tjcrowder @ember_map wowowowow @samselikoff @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map Extrapolate that far enough, and you could ea… @samselikoff @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map Of course in 99% of cases that's totally unne… @samselikoff @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map import y from 'y'; window.x = 1; var x = win… @samselikoff @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map Right. To make it as simple as possible, imag… @wycats @chadhietala @samselikoff @NicoloRibaudo @robpalmer2 @tjcrowder @ember_map omg @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @samselikoff @ember_map (or a later consumer could bundle it. we just don't know yet) @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @samselikoff @ember_map As an external, using a strategy that's yet t… @wycats @NicoloRibaudo @robpalmer2 @tjcrowder @samselikoff @ember_map So in a case like this... import x from './x… @samselikoff @tjcrowder @NicoloRibaudo @robpalmer2 @ember_map @wycats its own polyfill, or apps that consume that l… @samselikoff @tjcrowder @NicoloRibaudo @robpalmer2 @ember_map @wycats that's an interesting case. i'd consider 'blo… @dancow @CJR aw bless. software people are adorable @tjcrowder @NicoloRibaudo @robpalmer2 @samselikoff @ember_map @wycats matters in cases involving polyfills (I think… @tjcrowder @NicoloRibaudo @robpalmer2 @samselikoff @ember_map @wycats Yep. There's no way to defer the evaluation o… @NicoloRibaudo @robpalmer2 @tjcrowder @samselikoff @ember_map @wycats Basically it would mean you couldn't bundle a… @adolfojbarreto nice! @_alastair Only if, as logic dictates, we change 'boarding' to 'planing'. "We would like to invite our business cla…
@calebwilliams12 @sveltejs function that generated initial props, and from that point forward you could only use pr… @calebwilliams12 @sveltejs > for better or worse definitely for worse! the idea that you have two parallel interfa… @calebwilliams12 @sveltejs Don't think there is (I thought we'd done it in such a way that props and attributes *we… @mattdesl you're in my head! this is the secret long term master plan @samselikoff @ember_map @wycats lol just got to the bit where yehuda says 'rich harris is choosing to violate the e… is 20 nov, a week today! APPLY APPLY APPLY @JoviDeC @samccone Basically exactly that. Imagine your framework generated code that was equivalent to old-school… @samccone There's a flip side to this though — it's analogous to induced demand. If you hand-wave away the costs wi… @theefer 😂Calling all design system users and advocates: we'd love to get your input on this RFC, which proposes a way to pas…
Retweeted by Rich Harris @theefer Agree. I think replaying events is the worst possible solution — I don't want my rage clicks to have meaning @tomdale Agree that 'tearing' is a suboptimal term — just a shorthand, really. Quite an effective metaphor for illu… @tomdale By orthogonal I mean that you can have an initially disabled state and incrementally-enable or enable-ever… @lihautan @cheeaun @sveltejs afraid I'm not that organised
@LucasHugdahl @sveltejs I've added an issue for this: Probably won't happen any time soon but it's a good idea! @MatthewDeaners @saladass117 yeah, the more i think about this the more i think 'just make it really fast' is the best answer @MatthewDeaners @saladass117 that's the worst of all possible worlds — you just rage-clicked the '+1 quantity' butt… @msavin It's one of those things that's pretty low level and complex and therefore better handled by the framework, if possible @acdlite Sounds wild - look forward to seeing what that looks like when it's accessible outside FB @jeffposnick @sveltejs @Snugug Oh, nice! That's awesome @acdlite Here, the choice is between <main>...</main> <script>DATA={/*several hundred kb*/}</script> <script>hydra… @acdlite Sometimes opting out isn't a possibility, for whatever reason. You *could* use the serialized data while p… @acdlite minute or so (not rendered per req, because of esoteric CMS requirements). You *could* serialize the data… @acdlite Got it, thanks for the explanation. Cases where matching is difficult: simplest case would be <button disa… @acdlite Yep, queue. By distantly controlled I just mean that in the scenario above, does React know that it needs… @JohnMu it was suggested to me that this (the bit about JS-enabled crawlers running less frequently and/or later th… @acdlite That constraint definitely makes me uncomfortable — I've worked on several projects where it would have be… @cramforce @daslaf @robwormald @amacarthur would love to get a peek at it one day @tomdale Strong agree (though I think it's orthogonal to the tearing-or-delay dilemma). A corollary: hydration shou…
@brave_dick you mean infer the props from the markup somehow? it's not possible @brave_dick not sure i understand the question? @lukeed05 ah, gotcha. yeah, that makes sense @lukeed05 doesn't that make tearing likely? The more I think about it, the more I lean tow… @brave_dick In Svelte, yes. It will 'repair' the DOM as it hydrates it, if anything has changed @robmuh SSR means progressive enhancement, more robust pages, faster initial load, streaming content, better search… @adamdbradley @itsmadou This — where interacting with a hydrated component modifies some state visible in an unhydr… @MostFoolhardy @jaffathecake @angustweets heh! it's a good hammer, just not one i have in my toolbox :( @lukeed05 Yeah, perf is the root of the problem. Even with this solution, you potentially hit a point where you hav… @adamdbradley @itsmadou How do you prevent tearing? @MostFoolhardy @jaffathecake @angustweets it *mitigates* the problem at the cost of introducing an architectural co… @lukeed05 I'm not sure we've solved the dilemma — maybe just improved the performance of hydration enough that it no longer matters @lukeed05 I don't think you even need to special-case process.* (since typically that's replaced *before* the compi… @DavidKPiano omg @bahmutov @DavidKPiano sounds complicated! @itsmadou Not to my knowledge @amacarthur Yes, but in this scenario the component that suddenly needs to get prioritised isn't the one you intera… @lukeed05 yeah, I guess even <button disabled={true}> can be marked as needing hydration, as long as you don't try and outwit yourself @DavidKPiano True! Given the choice I'd rather the page be visibly uninteractive (<button disabled> etc) than batch… @CyberAP but that means delaying interactivity, no? @DavidKPiano Tricky! But if you imagine hydration takes a second or two (for the sake of argument), that's potentia… @lukeed05 I think it's easier said than done! E.g. <button disabled={!process.browser}> At SSR time, that DCEs to… @jaffathecake @angustweets For something like a live election results page, you really want that "interactive" (i.e… @CyberAP @mattibarzeev It doesn't — you'd set state based on the result of the fetch, and a remote component that d… @giuseppegurgone ah yep, mentions susceptibility to tearing issues & puts the onus on the app dev to solve. also th… @theKashey how do you mean? 100% SSRed = no interactivity. SPA typically implies 'no SSR' @evilpingwin Yeah. Lately I've been thinking that maybe Svelte's API should make room for some of this stuff: impo… @angustweets I'm not so worried about the result being *eventually* correct — if `increment` is called three times,… @evilpingwin to take an extreme case — say i'm building a video editor. i'd much rather show a 'loading' splash scr… @saladass117 that's impossible by definition. unhydrated = you haven't attached event listeners etc to it @angustweets in this scenario i'm treating option 3 as implicit — the initial SSR'd load is what you're hydrating.… @theKashey on a per-app basis, *maybe*. but it means a lot of assumptions about the devices your users use, and whe… @evilpingwin I think the cases where hydration is unacceptably expensive are where you *do* have a lot of non-inter… @teatimewithlisa @mhkeller @gabrieldance thank you @oneofchris @MattWilcox still needs to be faster though! e.g. if you go to, the main thread…